mirror of
https://github.com/swc-project/swc.git
synced 2024-12-24 14:16:12 +03:00
refactor(css/parser): Remove value normalization (#8434)
**Related issue :** - https://linear.app/vercel/issue/PACK-2154
This commit is contained in:
parent
68b9646681
commit
85be8a4de1
@ -137,6 +137,15 @@ impl PartialEq<JsWord> for FunctionName {
|
||||
}
|
||||
}
|
||||
|
||||
impl FunctionName {
|
||||
pub fn as_str(&self) -> &str {
|
||||
match self {
|
||||
FunctionName::DashedIdent(v) => &v.value,
|
||||
FunctionName::Ident(v) => &v.value,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[ast_node("Function")]
|
||||
#[derive(Eq, Hash, EqIgnoreSpan)]
|
||||
pub struct Function {
|
||||
|
@ -11,7 +11,7 @@ use swc_css_codegen::{
|
||||
};
|
||||
use swc_css_parser::parse_file;
|
||||
use swc_css_visit::{VisitMut, VisitMutWith};
|
||||
use testing::{assert_eq, run_test2, NormalizedOutput};
|
||||
use testing::{run_test2, NormalizedOutput};
|
||||
|
||||
fn run(input: &Path, minify: bool) {
|
||||
let dir = input.parent().unwrap();
|
||||
@ -80,6 +80,12 @@ fn run(input: &Path, minify: bool) {
|
||||
.compare_to_file(output)
|
||||
.unwrap();
|
||||
|
||||
if minify {
|
||||
// We lowercase identifiers to make gzip compression rate better, so we cannot
|
||||
// make the output equal to the input
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let mut errors = vec![];
|
||||
let mut stylesheet_output: Stylesheet =
|
||||
parse_file(&fm_output, None, Default::default(), &mut errors).map_err(|err| {
|
||||
|
@ -1,8 +1,8 @@
|
||||
@keyframes slidein {
|
||||
from {
|
||||
transform: translatex(0%);
|
||||
transform: translateX(0%);
|
||||
}
|
||||
to {
|
||||
transform: translatex(100%);
|
||||
transform: translateX(100%);
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
@keyframes "foo" {
|
||||
from {
|
||||
transform: translatex(0%);
|
||||
transform: translateX(0%);
|
||||
}
|
||||
to {
|
||||
transform: translatex(100%);
|
||||
transform: translateX(100%);
|
||||
}
|
||||
}
|
||||
|
@ -7,10 +7,10 @@
|
||||
}
|
||||
}
|
||||
@keyframes ONE_TWO_THREE {
|
||||
from {
|
||||
transform: translatex(0%);
|
||||
FROM {
|
||||
transform: translateX(0%);
|
||||
}
|
||||
to {
|
||||
transform: translatex(100%);
|
||||
TO {
|
||||
transform: translateX(100%);
|
||||
}
|
||||
}
|
||||
|
@ -111,9 +111,9 @@
|
||||
@media func(100px) {}
|
||||
@media screen and func(100px) {}
|
||||
@media (max-width: 650px), calc(150px + 150px) {}
|
||||
@media all {}
|
||||
@media (prefers-reduced-motion: no-preference) {
|
||||
:root {
|
||||
@MEDIA ALL {}
|
||||
@MEDIA (PREFERS-reduced-motion: no-preference) {
|
||||
:ROOT {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
@media screen{}@media screen{}@media all{}@media screen{}@media print{}@media screen and (color){}@media screen and (color),projection and (color){}@media screen and (color),projection and (color){}@media print and (min-resolution:118dpcm){}@media all{}@media screen and (color){}@media screen and (color){}@media not all and (monochrome){}@media not screen and (color),print and (color){}@media not (device-aspect-ratio:16/9){}@media not (device-aspect-ratio:16/9){}@media not all{}@media not all{}@media only screen and (color){}@media only screen and (color){}@media(min-width:20px){}@media(min-width:20px){}@media(min-width:20px){}@media(device-aspect-ratio:16/9){}@media(device-aspect-ratio:16/9){}@media(grid)and (max-width:15em){}@media(monochrome){}@media(min-width:20em)and (min-width:20em){}@media(min-width:20em)and (min-width:20em){}@media(min-width:1024px)and (min-width:1024px)and (min-width:1024px){}@media(min-width:20em)and (min-width:20em){}@media(min-width:20em)and (min-width:20em){}@media(update:slow)or (hover:none){}@media(update:slow)or (hover:none){}@media(update:slow)or (hover:none){}@media(height<600px){}@media(height<=600px){}@media(height>600px){}@media(height>=600px){}@media(height=600px){}@media(height<600px){}@media(height<=600px){}@media(height>600px){}@media(height>=600px){}@media(height=600px){}@media(height=600px){}@media(height>=600px){}@media(600px<height){}@media(600px<=height){}@media(600px>height){}@media(600px>=height){}@media(600px=height){}@media(600px<height){}@media(600px<=height){}@media(600px>height){}@media(600px>=height){}@media(600px=height){}@media(600px=height){}@media(600px>=height){}@media(400px<width<700px){}@media(400px<=width<700px){}@media(400px<width<=700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<700px){}@media(400px<width<=700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<=700px){}@media(400px>width>700px){}@media(400px>=width>700px){}@media(400px>width>=700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>700px){}@media(400px>width>=700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>=700px){}@media(--modern)and (min-width:1024px){}@media(not (color))or (hover){}@media(not (color))or (hover){}@media((color)or (hover))and (width>1024px){}@media(((color))or ((hover)))and (width>1024px){}@media(((((color))or ((hover)))))and (width>1024px){}@media(((((color))or ((hover)))))and (width>1024px){}@media((min-width:800px)and (min-width:800px))or (min-width:800px){}@media(min-width:800px)and ((min-width:800px)or (min-width:800px)){}@media not all{}@media only screen and (color){}@media((min-width:800px)and (min-width:800px))or (min-width:800px){}@media(min-width:800px)and ((min-width:800px)or (min-width:800px)){}@media{}@media{}@media not (min-width:100px){}@media((color)or (hover))and (min-width:1024px){.a{color:green}}@media(height << 600px){}@media(height foo bar){}@media(height foo("bar")){}@media(height + 600px){}@media screen and (min-width: ){}@media(aspect-ratio: 12/){}@media func(100px){}@media screen and func(100px){}@media(max-width:650px),calc(150px + 150px){}@media all{}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}
|
||||
@media screen{}@media screen{}@media all{}@media screen{}@media print{}@media screen and (color){}@media screen and (color),projection and (color){}@media screen and (color),projection and (color){}@media print and (min-resolution:118dpcm){}@media all{}@media screen and (color){}@media screen and (color){}@media not all and (monochrome){}@media not screen and (color),print and (color){}@media not (device-aspect-ratio:16/9){}@media not (device-aspect-ratio:16/9){}@media not all{}@media not all{}@media only screen and (color){}@media only screen and (color){}@media(min-width:20px){}@media(min-width:20px){}@media(min-width:20px){}@media(device-aspect-ratio:16/9){}@media(device-aspect-ratio:16/9){}@media(grid)and (max-width:15em){}@media(monochrome){}@media(min-width:20em)and (min-width:20em){}@media(min-width:20em)and (min-width:20em){}@media(min-width:1024px)and (min-width:1024px)and (min-width:1024px){}@media(min-width:20em)and (min-width:20em){}@media(min-width:20em)and (min-width:20em){}@media(update:slow)or (hover:none){}@media(update:slow)or (hover:none){}@media(update:slow)or (hover:none){}@media(height<600px){}@media(height<=600px){}@media(height>600px){}@media(height>=600px){}@media(height=600px){}@media(height<600px){}@media(height<=600px){}@media(height>600px){}@media(height>=600px){}@media(height=600px){}@media(height=600px){}@media(height>=600px){}@media(600px<height){}@media(600px<=height){}@media(600px>height){}@media(600px>=height){}@media(600px=height){}@media(600px<height){}@media(600px<=height){}@media(600px>height){}@media(600px>=height){}@media(600px=height){}@media(600px=height){}@media(600px>=height){}@media(400px<width<700px){}@media(400px<=width<700px){}@media(400px<width<=700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<700px){}@media(400px<width<=700px){}@media(400px<=width<=700px){}@media(400px<width<700px){}@media(400px<=width<=700px){}@media(400px>width>700px){}@media(400px>=width>700px){}@media(400px>width>=700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>700px){}@media(400px>width>=700px){}@media(400px>=width>=700px){}@media(400px>width>700px){}@media(400px>=width>=700px){}@media(--modern)and (min-width:1024px){}@media(not (color))or (hover){}@media(not (color))or (hover){}@media((color)or (hover))and (width>1024px){}@media(((color))or ((hover)))and (width>1024px){}@media(((((color))or ((hover)))))and (width>1024px){}@media(((((color))or ((hover)))))and (width>1024px){}@media((min-width:800px)and (min-width:800px))or (min-width:800px){}@media(min-width:800px)and ((min-width:800px)or (min-width:800px)){}@media not all{}@media only screen and (color){}@media((min-width:800px)and (min-width:800px))or (min-width:800px){}@media(min-width:800px)and ((min-width:800px)or (min-width:800px)){}@media{}@media{}@media not (min-width:100px){}@media((color)or (hover))and (min-width:1024px){.a{color:green}}@media(height << 600px){}@media(height foo bar){}@media(height foo("bar")){}@media(height + 600px){}@media screen and (min-width: ){}@media(aspect-ratio: 12/){}@media func(100px){}@media screen and func(100px){}@media(max-width:650px),calc(150px + 150px){}@media all{}@media(PREFERS-reduced-motion:no-preference){:root{scroll-behavior:smooth}}
|
||||
|
@ -44,6 +44,6 @@
|
||||
@page :blank:first {}
|
||||
@page :first {}
|
||||
@page toc, index {}
|
||||
@page :first {
|
||||
@page :FIRST {
|
||||
margin: 2cm;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
background: red;
|
||||
}
|
||||
}
|
||||
@supports selector(a > b) {}
|
||||
@supports selector(A > B) {}
|
||||
@supports (display: grid) and (not (display: inline-grid)) {}
|
||||
@supports (display: table-cell) and (display: list-item) and (display: contents) {}
|
||||
@supports not ((text-align-last: justify) or (-moz-text-align-last: justify)) {}
|
||||
@ -32,4 +32,4 @@
|
||||
@supports ((display: flex) or (display: -webkit-box) or (display: -webkit-flex) or (display: -moz-box) or (display: -ms-flexbox)) or (display: -webkit-box) {}
|
||||
@supports ((display: flex) and (display: -webkit-box) and (display: -webkit-flex) and (display: -moz-box) and (display: -ms-flexbox)) and (display: -webkit-box) {}
|
||||
@supports ((display: flex) and (display: -webkit-box) and (display: -webkit-flex) and (display: -moz-box) and (display: -ms-flexbox)) or (display: -webkit-box) {}
|
||||
@supports not (not (transform-origin: 2px)) {}
|
||||
@supports not (not (Transform-origin: 2px)) {}
|
||||
|
@ -3,7 +3,7 @@ div {
|
||||
width: calc(100px + 100px);
|
||||
width: calc(100px * 2);
|
||||
width: calc(100px / 2);
|
||||
width: calc(100px / 2);
|
||||
width: calc(100px / 2);
|
||||
width: CALC(100px / 2);
|
||||
WIDTH: CALC(100px / 2);
|
||||
font-size: max(10 * (1vw + 1vh) / 2, 12px);
|
||||
}
|
||||
|
@ -2344,17 +2344,17 @@ textarea.form-control-lg {
|
||||
}
|
||||
.form-floating > .form-control:not(:-moz-placeholder-shown) ~ label {
|
||||
opacity: 0.65;
|
||||
transform: scale(0.85) translatey(-0.5rem) translatex(0.15rem);
|
||||
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
|
||||
}
|
||||
.form-floating > .form-control:focus ~ label,
|
||||
.form-floating > .form-control:not(:placeholder-shown) ~ label,
|
||||
.form-floating > .form-select ~ label {
|
||||
opacity: 0.65;
|
||||
transform: scale(0.85) translatey(-0.5rem) translatex(0.15rem);
|
||||
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
|
||||
}
|
||||
.form-floating > .form-control:-webkit-autofill ~ label {
|
||||
opacity: 0.65;
|
||||
transform: scale(0.85) translatey(-0.5rem) translatex(0.15rem);
|
||||
transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem);
|
||||
}
|
||||
.input-group {
|
||||
position: relative;
|
||||
@ -5707,11 +5707,11 @@ fieldset:disabled .btn {
|
||||
}
|
||||
.carousel-item-next:not(.carousel-item-start),
|
||||
.active.carousel-item-end {
|
||||
transform: translatex(100%);
|
||||
transform: translateX(100%);
|
||||
}
|
||||
.carousel-item-prev:not(.carousel-item-end),
|
||||
.active.carousel-item-start {
|
||||
transform: translatex(-100%);
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
.carousel-fade .carousel-item {
|
||||
opacity: 0;
|
||||
@ -5975,14 +5975,14 @@ fieldset:disabled .btn {
|
||||
left: 0;
|
||||
width: 400px;
|
||||
border-right: 1px solid rgba(0, 0, 0, 0.2);
|
||||
transform: translatex(-100%);
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
.offcanvas-end {
|
||||
top: 0;
|
||||
right: 0;
|
||||
width: 400px;
|
||||
border-left: 1px solid rgba(0, 0, 0, 0.2);
|
||||
transform: translatex(100%);
|
||||
transform: translateX(100%);
|
||||
}
|
||||
.offcanvas-top {
|
||||
top: 0;
|
||||
@ -5991,7 +5991,7 @@ fieldset:disabled .btn {
|
||||
height: 30vh;
|
||||
max-height: 100%;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
|
||||
transform: translatey(-100%);
|
||||
transform: translateY(-100%);
|
||||
}
|
||||
.offcanvas-bottom {
|
||||
right: 0;
|
||||
@ -5999,7 +5999,7 @@ fieldset:disabled .btn {
|
||||
height: 30vh;
|
||||
max-height: 100%;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.2);
|
||||
transform: translatey(100%);
|
||||
transform: translateY(100%);
|
||||
}
|
||||
.offcanvas.show {
|
||||
transform: none;
|
||||
@ -6406,10 +6406,10 @@ fieldset:disabled .btn {
|
||||
transform: translate(-50%, -50%) !important;
|
||||
}
|
||||
.translate-middle-x {
|
||||
transform: translatex(-50%) !important;
|
||||
transform: translateX(-50%) !important;
|
||||
}
|
||||
.translate-middle-y {
|
||||
transform: translatey(-50%) !important;
|
||||
transform: translateY(-50%) !important;
|
||||
}
|
||||
.border {
|
||||
border: 1px solid #dee2e6 !important;
|
||||
|
@ -177,7 +177,7 @@ fieldset[disabled] .pagination-ellipsis {
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translatex(-50%) translatey(-50%) rotate(45deg);
|
||||
transform: translateX(-50%) translateY(-50%) rotate(45deg);
|
||||
transform-origin: center center;
|
||||
}
|
||||
.delete::before,
|
||||
@ -2859,7 +2859,7 @@ div.icon-text {
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translatex(-50%) translatey(-50%) rotate(45deg);
|
||||
transform: translateX(-50%) translateY(-50%) rotate(45deg);
|
||||
transform-origin: center center;
|
||||
}
|
||||
.tag:not(body).is-delete::before {
|
||||
@ -5605,13 +5605,13 @@ body.has-navbar-fixed-bottom {
|
||||
background-color: rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.navbar-burger.is-active span:nth-child(1) {
|
||||
transform: translatey(5px) rotate(45deg);
|
||||
transform: translateY(5px) rotate(45deg);
|
||||
}
|
||||
.navbar-burger.is-active span:nth-child(2) {
|
||||
opacity: 0;
|
||||
}
|
||||
.navbar-burger.is-active span:nth-child(3) {
|
||||
transform: translatey(-5px) rotate(-45deg);
|
||||
transform: translateY(-5px) rotate(-45deg);
|
||||
}
|
||||
.navbar-menu {
|
||||
display: none;
|
||||
@ -5838,7 +5838,7 @@ a.navbar-item.is-active,
|
||||
.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
transform: translatey(0);
|
||||
transform: translateY(0);
|
||||
}
|
||||
.navbar-menu {
|
||||
flex-grow: 1;
|
||||
@ -5891,7 +5891,7 @@ a.navbar-item.is-active,
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
top: calc(100% + (-4px));
|
||||
transform: translatey(-5px);
|
||||
transform: translateY(-5px);
|
||||
transition-duration: 86ms;
|
||||
transition-property: opacity, transform;
|
||||
}
|
||||
|
@ -4218,9 +4218,9 @@ a.button:focus {
|
||||
.slider-handle {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
-webkit-transform: translatey(-50%);
|
||||
-ms-transform: translatey(-50%);
|
||||
transform: translatey(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
left: 0;
|
||||
z-index: 1;
|
||||
cursor: -webkit-grab;
|
||||
@ -4272,9 +4272,9 @@ a.button:focus {
|
||||
left: 50%;
|
||||
width: 1.4rem;
|
||||
height: 1.4rem;
|
||||
-webkit-transform: translatex(-50%);
|
||||
-ms-transform: translatex(-50%);
|
||||
transform: translatex(-50%);
|
||||
-webkit-transform: translateX(-50%);
|
||||
-ms-transform: translateX(-50%);
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.switch {
|
||||
position: relative;
|
||||
@ -4342,9 +4342,9 @@ input:disabled ~ .switch-paddle {
|
||||
.switch-inactive {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
-webkit-transform: translatey(-50%);
|
||||
-ms-transform: translatey(-50%);
|
||||
transform: translatey(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.switch-active {
|
||||
left: 8%;
|
||||
@ -4809,9 +4809,9 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover {
|
||||
}
|
||||
.tooltip.bottom.align-center::before {
|
||||
left: 50%;
|
||||
-webkit-transform: translatex(-50%);
|
||||
-ms-transform: translatex(-50%);
|
||||
transform: translatex(-50%);
|
||||
-webkit-transform: translateX(-50%);
|
||||
-ms-transform: translateX(-50%);
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.tooltip.top::before {
|
||||
display: block;
|
||||
@ -4827,9 +4827,9 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover {
|
||||
}
|
||||
.tooltip.top.align-center::before {
|
||||
left: 50%;
|
||||
-webkit-transform: translatex(-50%);
|
||||
-ms-transform: translatex(-50%);
|
||||
transform: translatex(-50%);
|
||||
-webkit-transform: translateX(-50%);
|
||||
-ms-transform: translateX(-50%);
|
||||
transform: translateX(-50%);
|
||||
}
|
||||
.tooltip.left::before {
|
||||
display: block;
|
||||
@ -4845,9 +4845,9 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover {
|
||||
.tooltip.left.align-center::before {
|
||||
bottom: auto;
|
||||
top: 50%;
|
||||
-webkit-transform: translatey(-50%);
|
||||
-ms-transform: translatey(-50%);
|
||||
transform: translatey(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.tooltip.right::before {
|
||||
display: block;
|
||||
@ -4864,9 +4864,9 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover {
|
||||
.tooltip.right.align-center::before {
|
||||
bottom: auto;
|
||||
top: 50%;
|
||||
-webkit-transform: translatey(-50%);
|
||||
-ms-transform: translatey(-50%);
|
||||
transform: translatey(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
}
|
||||
.tooltip.align-top::before {
|
||||
bottom: auto;
|
||||
@ -5030,9 +5030,9 @@ table.hover:not(.unstriped) tr:nth-of-type(even):hover {
|
||||
.orbit-next {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
-webkit-transform: translatey(-50%);
|
||||
-ms-transform: translatey(-50%);
|
||||
transform: translatey(-50%);
|
||||
-webkit-transform: translateY(-50%);
|
||||
-ms-transform: translateY(-50%);
|
||||
transform: translateY(-50%);
|
||||
z-index: 10;
|
||||
padding: 1rem;
|
||||
color: #fefefe;
|
||||
@ -5682,9 +5682,9 @@ a.thumbnail image {
|
||||
margin: auto;
|
||||
}
|
||||
.submenu-toggle[aria-expanded='true']::after {
|
||||
-webkit-transform: scaley(-1);
|
||||
-ms-transform: scaley(-1);
|
||||
transform: scaley(-1);
|
||||
-webkit-transform: scaleY(-1);
|
||||
-ms-transform: scaleY(-1);
|
||||
transform: scaleY(-1);
|
||||
-webkit-transform-origin: 50% 50%;
|
||||
-ms-transform-origin: 50% 50%;
|
||||
transform-origin: 50% 50%;
|
||||
@ -5729,14 +5729,14 @@ a.thumbnail image {
|
||||
.drilldown .is-drilldown-submenu.is-active {
|
||||
z-index: 1;
|
||||
display: block;
|
||||
-webkit-transform: translatex(-100%);
|
||||
-ms-transform: translatex(-100%);
|
||||
transform: translatex(-100%);
|
||||
-webkit-transform: translateX(-100%);
|
||||
-ms-transform: translateX(-100%);
|
||||
transform: translateX(-100%);
|
||||
}
|
||||
.drilldown .is-drilldown-submenu.is-closing {
|
||||
-webkit-transform: translatex(100%);
|
||||
-ms-transform: translatex(100%);
|
||||
transform: translatex(100%);
|
||||
-webkit-transform: translateX(100%);
|
||||
-ms-transform: translateX(100%);
|
||||
transform: translateX(100%);
|
||||
}
|
||||
.drilldown .is-drilldown-submenu a {
|
||||
padding: 0.7rem 1rem;
|
||||
@ -6200,14 +6200,14 @@ a.thumbnail image {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
width: 250px;
|
||||
-webkit-transform: translatex(-250px);
|
||||
-ms-transform: translatex(-250px);
|
||||
transform: translatex(-250px);
|
||||
-webkit-transform: translateX(-250px);
|
||||
-ms-transform: translateX(-250px);
|
||||
transform: translateX(-250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-left {
|
||||
-webkit-transform: translatex(-250px);
|
||||
-ms-transform: translatex(-250px);
|
||||
transform: translatex(-250px);
|
||||
-webkit-transform: translateX(-250px);
|
||||
-ms-transform: translateX(-250px);
|
||||
transform: translateX(-250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-left.is-transition-overlap.is-open {
|
||||
-webkit-transform: translate(0, 0);
|
||||
@ -6215,9 +6215,9 @@ a.thumbnail image {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.off-canvas-content.is-open-left.has-transition-push {
|
||||
-webkit-transform: translatex(250px);
|
||||
-ms-transform: translatex(250px);
|
||||
transform: translatex(250px);
|
||||
-webkit-transform: translateX(250px);
|
||||
-ms-transform: translateX(250px);
|
||||
transform: translateX(250px);
|
||||
}
|
||||
.position-left.is-transition-push {
|
||||
-webkit-box-shadow: inset -13px 0 20px -13px rgba(10, 10, 10, 0.25);
|
||||
@ -6230,14 +6230,14 @@ a.thumbnail image {
|
||||
overflow-y: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
width: 250px;
|
||||
-webkit-transform: translatex(250px);
|
||||
-ms-transform: translatex(250px);
|
||||
transform: translatex(250px);
|
||||
-webkit-transform: translateX(250px);
|
||||
-ms-transform: translateX(250px);
|
||||
transform: translateX(250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-right {
|
||||
-webkit-transform: translatex(250px);
|
||||
-ms-transform: translatex(250px);
|
||||
transform: translatex(250px);
|
||||
-webkit-transform: translateX(250px);
|
||||
-ms-transform: translateX(250px);
|
||||
transform: translateX(250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-right.is-transition-overlap.is-open {
|
||||
-webkit-transform: translate(0, 0);
|
||||
@ -6245,9 +6245,9 @@ a.thumbnail image {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.off-canvas-content.is-open-right.has-transition-push {
|
||||
-webkit-transform: translatex(-250px);
|
||||
-ms-transform: translatex(-250px);
|
||||
transform: translatex(-250px);
|
||||
-webkit-transform: translateX(-250px);
|
||||
-ms-transform: translateX(-250px);
|
||||
transform: translateX(-250px);
|
||||
}
|
||||
.position-right.is-transition-push {
|
||||
-webkit-box-shadow: inset 13px 0 20px -13px rgba(10, 10, 10, 0.25);
|
||||
@ -6260,14 +6260,14 @@ a.thumbnail image {
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
height: 250px;
|
||||
-webkit-transform: translatey(-250px);
|
||||
-ms-transform: translatey(-250px);
|
||||
transform: translatey(-250px);
|
||||
-webkit-transform: translateY(-250px);
|
||||
-ms-transform: translateY(-250px);
|
||||
transform: translateY(-250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-top {
|
||||
-webkit-transform: translatey(-250px);
|
||||
-ms-transform: translatey(-250px);
|
||||
transform: translatey(-250px);
|
||||
-webkit-transform: translateY(-250px);
|
||||
-ms-transform: translateY(-250px);
|
||||
transform: translateY(-250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-top.is-transition-overlap.is-open {
|
||||
-webkit-transform: translate(0, 0);
|
||||
@ -6275,9 +6275,9 @@ a.thumbnail image {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.off-canvas-content.is-open-top.has-transition-push {
|
||||
-webkit-transform: translatey(250px);
|
||||
-ms-transform: translatey(250px);
|
||||
transform: translatey(250px);
|
||||
-webkit-transform: translateY(250px);
|
||||
-ms-transform: translateY(250px);
|
||||
transform: translateY(250px);
|
||||
}
|
||||
.position-top.is-transition-push {
|
||||
-webkit-box-shadow: inset 0 -13px 20px -13px rgba(10, 10, 10, 0.25);
|
||||
@ -6290,14 +6290,14 @@ a.thumbnail image {
|
||||
overflow-x: auto;
|
||||
-webkit-overflow-scrolling: touch;
|
||||
height: 250px;
|
||||
-webkit-transform: translatey(250px);
|
||||
-ms-transform: translatey(250px);
|
||||
transform: translatey(250px);
|
||||
-webkit-transform: translateY(250px);
|
||||
-ms-transform: translateY(250px);
|
||||
transform: translateY(250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-bottom {
|
||||
-webkit-transform: translatey(250px);
|
||||
-ms-transform: translatey(250px);
|
||||
transform: translatey(250px);
|
||||
-webkit-transform: translateY(250px);
|
||||
-ms-transform: translateY(250px);
|
||||
transform: translateY(250px);
|
||||
}
|
||||
.off-canvas-content .off-canvas.position-bottom.is-transition-overlap.is-open {
|
||||
-webkit-transform: translate(0, 0);
|
||||
@ -6305,9 +6305,9 @@ a.thumbnail image {
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
.off-canvas-content.is-open-bottom.has-transition-push {
|
||||
-webkit-transform: translatey(-250px);
|
||||
-ms-transform: translatey(-250px);
|
||||
transform: translatey(-250px);
|
||||
-webkit-transform: translateY(-250px);
|
||||
-ms-transform: translateY(-250px);
|
||||
transform: translateY(-250px);
|
||||
}
|
||||
.position-bottom.is-transition-push {
|
||||
-webkit-box-shadow: inset 0 13px 20px -13px rgba(10, 10, 10, 0.25);
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -386,7 +386,7 @@ html {
|
||||
padding: 0.5em 1em;
|
||||
color: rgba(0, 0, 0, 0.80);
|
||||
border: none rgba(0, 0, 0, 0);
|
||||
background-color: #e6e6e6;
|
||||
background-color: #E6E6E6;
|
||||
text-decoration: none;
|
||||
border-radius: 2px;
|
||||
}
|
||||
@ -498,17 +498,17 @@ a.pure-button-selected {
|
||||
.pure-form select:focus,
|
||||
.pure-form textarea:focus {
|
||||
outline: 0;
|
||||
border-color: #129fea;
|
||||
border-color: #129FEA;
|
||||
}
|
||||
.pure-form input:not([type]):focus {
|
||||
outline: 0;
|
||||
border-color: #129fea;
|
||||
border-color: #129FEA;
|
||||
}
|
||||
.pure-form input[type="file"]:focus,
|
||||
.pure-form input[type="radio"]:focus,
|
||||
.pure-form input[type="checkbox"]:focus {
|
||||
outline: thin solid #129fea;
|
||||
outline: 1px auto #129fea;
|
||||
outline: thin solid #129FEA;
|
||||
outline: 1px auto #129FEA;
|
||||
}
|
||||
.pure-form .pure-checkbox,
|
||||
.pure-form .pure-radio {
|
||||
|
File diff suppressed because one or more lines are too long
@ -2928,8 +2928,8 @@ code,
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
-webkit-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
transition: -webkit-transform .25s ease-out;
|
||||
transition: transform .25s ease-out;
|
||||
transition: transform .25s ease-out, -webkit-transform .25s ease-out;
|
||||
@ -2947,8 +2947,8 @@ code,
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-backface-visibility: hidden;
|
||||
backface-visibility: hidden;
|
||||
-webkit-transform: translatez(0);
|
||||
transform: translatez(0);
|
||||
-webkit-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
transition: -webkit-transform .25s ease-in-out;
|
||||
transition: transform .25s ease-in-out;
|
||||
transition: transform .25s ease-in-out, -webkit-transform .25s ease-in-out;
|
||||
|
@ -257,46 +257,46 @@
|
||||
}
|
||||
.translate-x-5 {
|
||||
--tw-translate-x: 1.25rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.-translate-x-4 {
|
||||
--tw-translate-x: -1rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.translate-y-6 {
|
||||
--tw-translate-y: 1.5rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.-translate-x-3 {
|
||||
--tw-translate-x: -0.75rem;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.rotate-3 {
|
||||
--tw-rotate: 3deg;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.skew-y-12 {
|
||||
--tw-skew-y: 12deg;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.skew-x-12 {
|
||||
--tw-skew-x: 12deg;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.scale-95 {
|
||||
--tw-scale-x: 0.95;
|
||||
--tw-scale-y: 0.95;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.-scale-x-100 {
|
||||
--tw-scale-x: -1;
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.transform {
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.transform-gpu {
|
||||
transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewx(var(--tw-skew-x)) skewy(var(--tw-skew-y)) scalex(var(--tw-scale-x)) scaley(var(--tw-scale-y));
|
||||
transform: translate3d(var(--tw-translate-x), var(--tw-translate-y), 0) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
|
||||
}
|
||||
.transform-none {
|
||||
transform: none;
|
||||
|
@ -9,9 +9,9 @@
|
||||
[href$=".org"] {}
|
||||
[href*="example"] {}
|
||||
[href*="insensitive" i] {}
|
||||
[href*="insensitive" i] {}
|
||||
[href*="cAsE" s] {}
|
||||
[href*="insensitive" I] {}
|
||||
[href*="cAsE" s] {}
|
||||
[href*="cAsE" S] {}
|
||||
[foo|att=val] {}
|
||||
[*|att] {}
|
||||
[*|att] {}
|
||||
@ -31,5 +31,5 @@ a[class="test"] {}
|
||||
[🐈] {}
|
||||
[🐈=🐈] {}
|
||||
[🐈|🐈=🐈] {}
|
||||
[frame=hsides i] {}
|
||||
[href*="cAsE" s] {}
|
||||
[frame=hsides I] {}
|
||||
[href*="cAsE" S] {}
|
||||
|
@ -79,7 +79,7 @@ p:nth-child(-n+1) {
|
||||
p:nth-child(even) {
|
||||
color: blue;
|
||||
}
|
||||
p:nth-child(even) {
|
||||
p:nth-child(EVEN) {
|
||||
color: blue;
|
||||
}
|
||||
p:nth-child(2n) {
|
||||
|
@ -1 +1 @@
|
||||
p:nth-child(1){color:blue}p:nth-child(7){color:blue}p:nth-child(5n){color:blue}p:nth-child(n+7){color:blue}p:nth-child(3n+4){color:blue}p:nth-child(3n+4){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n){color:blue}p:nth-child(n){color:blue}p:nth-child(-n){color:blue}p:nth-child(1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(-2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(-n+1){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(-n+1){color:blue}p:nth-child(even){color:blue}p:nth-child(even){color:blue}p:nth-child(2n){color:blue}p:nth-child(1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+5){color:blue}p:nth-child(0n-5){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n-3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(n+0){color:blue}p:nth-child(n+0){color:blue}p:nth-child(-n+0){color:blue}p:nth-child(5n+0){color:blue}p:nth-child(-5n+0){color:blue}p:nth-child(5n+0){color:blue}p:nth-child(-2n+1){color:blue}p:nth-of-type(2n+1){color:blue}p:nth-last-col(2n+1){color:blue}p:nth-col(2n+1){color:blue}p:nth-child(n+0){color:blue}p:nth-child(n+0){color:blue}p:nth-child(5){color:blue}p:nth-child(5){color:blue}p:nth-child(-5){color:blue}
|
||||
p:nth-child(1){color:blue}p:nth-child(7){color:blue}p:nth-child(5n){color:blue}p:nth-child(n+7){color:blue}p:nth-child(3n+4){color:blue}p:nth-child(3n+4){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n){color:blue}p:nth-child(n){color:blue}p:nth-child(-n){color:blue}p:nth-child(1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(-2n+1){color:blue}p:nth-child(2n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(-n+1){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(n+1){color:blue}p:nth-child(n+1){color:blue}p:nth-child(-n+1){color:blue}p:nth-child(even){color:blue}p:nth-child(EVEN){color:blue}p:nth-child(2n){color:blue}p:nth-child(1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+1){color:blue}p:nth-child(0n+5){color:blue}p:nth-child(0n-5){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(-n+3){color:blue}p:nth-child(n+3){color:blue}p:nth-child(n-3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(0n+3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(0n-3){color:blue}p:nth-child(n+0){color:blue}p:nth-child(n+0){color:blue}p:nth-child(-n+0){color:blue}p:nth-child(5n+0){color:blue}p:nth-child(-5n+0){color:blue}p:nth-child(5n+0){color:blue}p:nth-child(-2n+1){color:blue}p:nth-of-type(2n+1){color:blue}p:nth-last-col(2n+1){color:blue}p:nth-col(2n+1){color:blue}p:nth-child(n+0){color:blue}p:nth-child(n+0){color:blue}p:nth-child(5){color:blue}p:nth-child(5){color:blue}p:nth-child(-5){color:blue}
|
||||
|
@ -15,6 +15,6 @@ a:has( <> img, > img) {}
|
||||
a:has(> img, <> img) {}
|
||||
a:has(> img, <> img ) {}
|
||||
a:has(> img, <> img , > img) {}
|
||||
a:has(> img) {
|
||||
color: RED;
|
||||
A:has(> IMG) {
|
||||
COLOR: RED;
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ foo|* {}
|
||||
|h1 {}
|
||||
*|h1 {}
|
||||
h1 {}
|
||||
body {}
|
||||
html {}
|
||||
td {}
|
||||
template {}
|
||||
BODY {}
|
||||
HTML {}
|
||||
TD {}
|
||||
TEMPLATE {}
|
||||
|
@ -51,7 +51,7 @@ _::selection,
|
||||
html > body .selector {}
|
||||
*:first-child + html .selector {}
|
||||
.selector,
|
||||
x:-ie7 {}
|
||||
x:-IE7 {}
|
||||
* + html .selector {}
|
||||
body *.selector {}
|
||||
.selector\ {}
|
||||
|
@ -1,8 +1,8 @@
|
||||
div {
|
||||
color: #fff;
|
||||
color: #ffffff;
|
||||
color: #fff;
|
||||
color: #ffffff;
|
||||
color: #FFF;
|
||||
color: #FFFFFF;
|
||||
color: #dc143c;
|
||||
color: #ff0000;
|
||||
color: #ff0000ff;
|
||||
@ -22,6 +22,6 @@ div {
|
||||
border: thick double #32a1ce;
|
||||
}
|
||||
.bar {
|
||||
color: #123abcff;
|
||||
color: #123f;
|
||||
color: #123abcFF;
|
||||
color: #123F;
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
div{color:#fff;color:#fff;color:#fff;color:#fff;color:#dc143c;color:#f00;color:#f00;color:#f09;color:#f09;color:#0f38;color:#0f38;color:#0a0a0a;color:#0a0a0afa}div{background:url("starsolid.gif")#99f repeat-y fixed;background:url("starsolid.gif")repeat-y fixed#99f;background:url("starsolid.gif")repeat-y 12#99f}.foo{border:thick double#32a1ce}.bar{color:#123abcff;color:#123f}
|
||||
div{color:#fff;color:#fff;color:#FFF;color:#FFF;color:#dc143c;color:#f00;color:#f00;color:#f09;color:#f09;color:#0f38;color:#0f38;color:#0a0a0a;color:#0a0a0afa}div{background:url("starsolid.gif")#99f repeat-y fixed;background:url("starsolid.gif")repeat-y fixed#99f;background:url("starsolid.gif")repeat-y 12#99f}.foo{border:thick double#32a1ce}.bar{color:#123abcFF;color:#123F}
|
||||
|
@ -11,8 +11,8 @@ div {
|
||||
width: 0.00254cm;
|
||||
}
|
||||
.foo {
|
||||
width: 100px;
|
||||
transform: rotate(45deg);
|
||||
width: 100PX;
|
||||
TRANSFORM: ROTATE(45DEG);
|
||||
}
|
||||
a {
|
||||
width: 10e\30px;
|
||||
|
@ -4,8 +4,8 @@ div {
|
||||
background: url(https://example.com/image.png);
|
||||
background: url("https://example.com/image.png");
|
||||
background: url('https://example.com/image.png');
|
||||
background: url('https://example.com/image.png');
|
||||
background: url('https://example.com/image.png');
|
||||
background: URL('https://example.com/image.png');
|
||||
background: URL('https://example.com/image.png');
|
||||
background: url(data:image/png;base64,iRxVB0);
|
||||
background: url(#IDofSVGpath);
|
||||
background: url("//aa.com/img.svg" prefetch);
|
||||
@ -16,7 +16,7 @@ div {
|
||||
background: url('');
|
||||
--foo: "http://www.example.com/pinkish.gif";
|
||||
background: src("http://www.example.com/pinkish.gif");
|
||||
background: src("http://www.example.com/pinkish.gif");
|
||||
background: SRC("http://www.example.com/pinkish.gif");
|
||||
background: src(var(--foo));
|
||||
background: url(https://example.com/image.png);
|
||||
background: url(https://example.com/image.png);
|
||||
|
@ -15,10 +15,10 @@ impl Compiler {
|
||||
}
|
||||
};
|
||||
|
||||
if name.value == "rgb" {
|
||||
if name.value.eq_ignore_ascii_case("rgb") {
|
||||
name.value = "rgba".into();
|
||||
name.raw = None;
|
||||
} else if name.value == "hsl" {
|
||||
} else if name.value.eq_ignore_ascii_case("hsl") {
|
||||
name.value = "hsla".into();
|
||||
name.raw = None;
|
||||
}
|
||||
@ -30,10 +30,10 @@ impl Compiler {
|
||||
}
|
||||
};
|
||||
|
||||
if name.value == "rgba" {
|
||||
if name.value.eq_ignore_ascii_case("rgba") {
|
||||
name.value = "rgb".into();
|
||||
name.raw = None;
|
||||
} else if name.value == "hsla" {
|
||||
} else if name.value.eq_ignore_ascii_case("hsla") {
|
||||
name.value = "hsl".into();
|
||||
name.raw = None;
|
||||
}
|
||||
|
@ -27,6 +27,9 @@ impl Compiler {
|
||||
.and_then(|color| color.as_mut_absolute_color_base())
|
||||
.and_then(|color| color.as_mut_hex_color())
|
||||
{
|
||||
hex_color.value = hex_color.value.to_ascii_lowercase();
|
||||
hex_color.raw = None;
|
||||
|
||||
if hex_color.value.len() != 4 && hex_color.value.len() != 8 {
|
||||
return;
|
||||
}
|
||||
|
@ -1,7 +1,9 @@
|
||||
use std::mem::take;
|
||||
|
||||
use swc_common::DUMMY_SP;
|
||||
use swc_css_ast::{matches_eq, AbsoluteColorBase, ComponentValue, Delimiter, DelimiterValue};
|
||||
use swc_css_ast::{
|
||||
matches_eq_ignore_ascii_case, AbsoluteColorBase, ComponentValue, Delimiter, DelimiterValue,
|
||||
};
|
||||
|
||||
use crate::compiler::Compiler;
|
||||
|
||||
@ -11,7 +13,8 @@ impl Compiler {
|
||||
n: &mut AbsoluteColorBase,
|
||||
) {
|
||||
if let AbsoluteColorBase::Function(function) = n {
|
||||
if !matches_eq!(function.name, "rgb", "rgba", "hsl", "hsla") {
|
||||
if !matches_eq_ignore_ascii_case!(function.name.as_str(), "rgb", "rgba", "hsl", "hsla")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -16,13 +16,10 @@ pub(super) struct CustomMediaHandler {
|
||||
|
||||
impl CustomMediaHandler {
|
||||
pub(crate) fn store_custom_media(&mut self, n: &mut AtRule) {
|
||||
if let AtRuleName::Ident(name) = &n.name {
|
||||
if name.value == "custom-media" {
|
||||
if let Some(AtRulePrelude::CustomMediaPrelude(prelude)) =
|
||||
&mut n.prelude.as_deref_mut()
|
||||
{
|
||||
self.medias.push(prelude.take());
|
||||
}
|
||||
if let AtRuleName::Ident(..) = &n.name {
|
||||
if let Some(AtRulePrelude::CustomMediaPrelude(prelude)) = &mut n.prelude.as_deref_mut()
|
||||
{
|
||||
self.medias.push(prelude.take());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -30,7 +27,10 @@ impl CustomMediaHandler {
|
||||
pub(crate) fn process_rules(&mut self, n: &mut Vec<Rule>) {
|
||||
n.retain(|n| match n {
|
||||
Rule::AtRule(n) => {
|
||||
if matches!(&n.name, AtRuleName::Ident(ident) if ident.value == "custom-media") {
|
||||
if matches!(
|
||||
n.prelude.as_deref(),
|
||||
Some(AtRulePrelude::CustomMediaPrelude(..))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,8 @@
|
||||
use std::f64::consts::PI;
|
||||
|
||||
use swc_css_ast::{
|
||||
matches_eq, AbsoluteColorBase, AlphaValue, Angle, ComponentValue, Number, Percentage,
|
||||
matches_eq_ignore_ascii_case, AbsoluteColorBase, AlphaValue, Angle, ComponentValue, Number,
|
||||
Percentage,
|
||||
};
|
||||
use swc_css_utils::{clamp_unit_f64, round_alpha};
|
||||
|
||||
@ -10,8 +11,8 @@ use crate::compiler::Compiler;
|
||||
impl Compiler {
|
||||
pub(crate) fn process_rgb_and_hsl(&mut self, n: &mut AbsoluteColorBase) {
|
||||
if let AbsoluteColorBase::Function(function) = n {
|
||||
let is_rgb = matches_eq!(function.name, "rgb", "rgba");
|
||||
let is_hsl = matches_eq!(function.name, "hsl", "hsla");
|
||||
let is_rgb = matches_eq_ignore_ascii_case!(function.name.as_str(), "rgb", "rgba");
|
||||
let is_hsl = matches_eq_ignore_ascii_case!(function.name.as_str(), "hsl", "hsla");
|
||||
|
||||
if is_rgb {
|
||||
function.value = function
|
||||
|
@ -0,0 +1,3 @@
|
||||
body {
|
||||
transform: translateY(-50%);
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
body {
|
||||
transform: translateY(-50%);
|
||||
}
|
@ -9,10 +9,10 @@
|
||||
}
|
||||
.test-rgba {
|
||||
color: rgb(178, 34, 34);
|
||||
color: rgba(178, 34, 34, 1);
|
||||
color: rgbA(178, 34, 34, 1);
|
||||
color: rgba(178, 34, 34, .5);
|
||||
color: rgba(178, 34, 34, var(--alpha-50));
|
||||
color: rgba(178, 34, 34, calc(1 / 2));
|
||||
color: rgba(178, 34, 34, VaR(--alpha-50));
|
||||
color: rgba(178, 34, 34, CaLC(1 / 2));
|
||||
}
|
||||
.test-rgb-percentages {
|
||||
color: rgb(179, 34, 34);
|
||||
@ -79,7 +79,7 @@
|
||||
.test-ignore {
|
||||
color: rgba(0, 0, 0, 0.1);
|
||||
color: rgba(0, 0, 0, 0.2);
|
||||
color: rgb(178, 34, 34);
|
||||
color: rGB(178, 34, 34);
|
||||
}
|
||||
.order-0 {
|
||||
order: rgba(178, 34, 34, 1) !important;
|
||||
|
@ -202,3 +202,24 @@ fn test_color_hwb(input: PathBuf) {
|
||||
})
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
#[testing::fixture("tests/all/**/*.css", exclude("expect.css"))]
|
||||
fn test_all(input: PathBuf) {
|
||||
let output = input.with_extension("expect.css");
|
||||
|
||||
testing::run_test(false, |cm, _| {
|
||||
let fm = cm.load_file(&input).unwrap();
|
||||
let mut ss = parse_stylesheet(&fm);
|
||||
|
||||
ss.visit_mut_with(&mut Compiler::new(Config {
|
||||
process: Features::all(),
|
||||
}));
|
||||
|
||||
let s = print_stylesheet(&ss);
|
||||
|
||||
NormalizedOutput::from(s).compare_to_file(&output).unwrap();
|
||||
|
||||
Ok(())
|
||||
})
|
||||
.unwrap();
|
||||
}
|
||||
|
@ -2,7 +2,7 @@ body {
|
||||
order: 1;
|
||||
}
|
||||
body,
|
||||
not {
|
||||
Not {
|
||||
order: 2;
|
||||
}
|
||||
em[attr=:not],
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
x Hex color value '#fff' should be written into: '#ffffff'.
|
||||
x Hex color value '#FFF' should be written into: '#FFFFFF'.
|
||||
,-[$DIR/tests/rules/fail/color-hex-length/long/input.css:1:1]
|
||||
1 | a {
|
||||
2 | color: #FFF;
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
x Hex color value '#ffffff' should be written into: '#fff'.
|
||||
x Hex color value '#FFFFFF' should be written into: '#FFF'.
|
||||
,-[$DIR/tests/rules/fail/color-hex-length/short/input.css:1:1]
|
||||
1 | a {
|
||||
2 | color: #FFFFFF;
|
||||
|
@ -5,7 +5,9 @@ use super::Compressor;
|
||||
|
||||
impl Compressor {
|
||||
pub(super) fn compress_declaration(&self, declaration: &mut Declaration) {
|
||||
if let DeclarationName::Ident(Ident { value: name, .. }) = &declaration.name {
|
||||
if let DeclarationName::Ident(Ident { value: name, .. }) = &mut declaration.name {
|
||||
*name = name.to_ascii_lowercase();
|
||||
|
||||
match &**name {
|
||||
"display" if declaration.value.len() > 1 => {
|
||||
let mut outside = None;
|
||||
@ -484,15 +486,19 @@ impl Compressor {
|
||||
|
||||
match (node_1, node_2) {
|
||||
(ComponentValue::Dimension(dimension_1), ComponentValue::Dimension(dimension_2)) => {
|
||||
let result_1 = dimension_1
|
||||
.as_length()
|
||||
.map(|length| (&length.value.value, &length.unit.value));
|
||||
let Some(result_1) = dimension_1.as_length() else {
|
||||
return false;
|
||||
};
|
||||
|
||||
let result_2 = dimension_2
|
||||
.as_length()
|
||||
.map(|length| (&length.value.value, &length.unit.value));
|
||||
let Some(result_2) = dimension_2.as_length() else {
|
||||
return false;
|
||||
};
|
||||
|
||||
result_1.is_some() && result_1 == result_2
|
||||
result_1.value.value == result_2.value.value
|
||||
&& result_1
|
||||
.unit
|
||||
.value
|
||||
.eq_ignore_ascii_case(&result_2.unit.value)
|
||||
}
|
||||
(
|
||||
ComponentValue::Percentage(percentage_1),
|
||||
|
@ -32,6 +32,10 @@ impl Compressor {
|
||||
}
|
||||
|
||||
pub(super) fn compress_keyframe_selector(&mut self, keyframe_selector: &mut KeyframeSelector) {
|
||||
if let KeyframeSelector::Ident(i) = keyframe_selector {
|
||||
i.value = i.value.to_ascii_lowercase();
|
||||
}
|
||||
|
||||
match keyframe_selector {
|
||||
KeyframeSelector::Ident(i) if i.value == "from" => {
|
||||
*keyframe_selector = KeyframeSelector::Percentage(Percentage {
|
||||
|
@ -54,46 +54,111 @@ impl VisitMut for Compressor {
|
||||
self.compress_alpha_value(n);
|
||||
}
|
||||
|
||||
fn visit_mut_stylesheet(&mut self, n: &mut Stylesheet) {
|
||||
fn visit_mut_an_plus_b(&mut self, n: &mut AnPlusB) {
|
||||
if let AnPlusB::Ident(n) = n {
|
||||
n.value = n.value.to_ascii_lowercase();
|
||||
n.raw = None;
|
||||
}
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_stylesheet(n);
|
||||
self.compress_an_plus_b(n);
|
||||
}
|
||||
|
||||
if !self.need_utf8_at_rule
|
||||
&& n.rules
|
||||
.first()
|
||||
.and_then(|rule| rule.as_at_rule())
|
||||
.and_then(|at_rule| at_rule.prelude.as_ref())
|
||||
.and_then(|prelude| prelude.as_charset_prelude())
|
||||
.filter(|x| x.value.eq_ignore_ascii_case("utf-8"))
|
||||
.is_some()
|
||||
{
|
||||
n.rules.remove(0);
|
||||
fn visit_mut_angle(&mut self, n: &mut Angle) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_angle(n);
|
||||
}
|
||||
|
||||
fn visit_mut_at_rule(&mut self, n: &mut AtRule) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_keyframes_at_rule(n);
|
||||
}
|
||||
|
||||
fn visit_mut_at_rule_name(&mut self, n: &mut AtRuleName) {
|
||||
if let AtRuleName::Ident(n) = n {
|
||||
n.value = n.value.to_ascii_lowercase();
|
||||
n.raw = None;
|
||||
}
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
|
||||
fn visit_mut_attribute_selector(&mut self, n: &mut AttributeSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_attribute_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_calc_sum(&mut self, n: &mut CalcSum) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_math_function: true,
|
||||
..self.ctx
|
||||
}));
|
||||
|
||||
// Don't touch `@supports`, it can be used to check a browser's support for one
|
||||
// or more specific CSS features
|
||||
if !self.in_supports_condition {
|
||||
self.compress_calc_sum(n);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_simple_block(&mut self, n: &mut SimpleBlock) {
|
||||
fn visit_mut_color(&mut self, n: &mut Color) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_simple_block(n);
|
||||
self.compress_color(n);
|
||||
}
|
||||
|
||||
fn visit_mut_time(&mut self, n: &mut Time) {
|
||||
fn visit_mut_component_value(&mut self, n: &mut ComponentValue) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_time(n);
|
||||
if self.in_supports_condition {
|
||||
return;
|
||||
}
|
||||
|
||||
self.compress_calc_sum_in_component_value(n);
|
||||
|
||||
self.compress_alpha_value_in_component_value(n);
|
||||
|
||||
self.compress_component_value_for_length(n);
|
||||
|
||||
self.compress_easing_function(n);
|
||||
|
||||
self.compress_transform_function(n);
|
||||
|
||||
self.compress_angle_in_component_value(n);
|
||||
}
|
||||
|
||||
fn visit_mut_unicode_range(&mut self, n: &mut UnicodeRange) {
|
||||
fn visit_mut_compound_selector(&mut self, n: &mut CompoundSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_unicode_range(n);
|
||||
self.compress_compound_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_url(&mut self, n: &mut Url) {
|
||||
n.visit_mut_children_with(self);
|
||||
fn visit_mut_custom_ident(&mut self, custom_ident: &mut CustomIdent) {
|
||||
custom_ident.visit_mut_children_with(self);
|
||||
|
||||
self.compress_url(n);
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&custom_ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_custom_property_name(&mut self, custom_property_name: &mut CustomPropertyName) {
|
||||
custom_property_name.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&custom_property_name.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_dashed_ident(&mut self, dashed_ident: &mut DashedIdent) {
|
||||
dashed_ident.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&dashed_ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_declaration(&mut self, n: &mut Declaration) {
|
||||
@ -125,22 +190,64 @@ impl VisitMut for Compressor {
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_color(&mut self, n: &mut Color) {
|
||||
fn visit_mut_forgiving_relative_selector_list(
|
||||
&mut self,
|
||||
n: &mut ForgivingRelativeSelectorList,
|
||||
) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_color(n);
|
||||
self.compress_forgiving_relative_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_forgiving_selector_list(&mut self, n: &mut ForgivingSelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_forgiving_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_frequency(&mut self, n: &mut Frequency) {
|
||||
n.unit.value = n.unit.value.to_ascii_lowercase();
|
||||
n.unit.raw = None;
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_frequency(n);
|
||||
}
|
||||
|
||||
fn visit_mut_at_rule(&mut self, n: &mut AtRule) {
|
||||
n.visit_mut_children_with(self);
|
||||
fn visit_mut_function(&mut self, n: &mut Function) {
|
||||
if let FunctionName::Ident(n) = &mut n.name {
|
||||
n.value = n.value.to_ascii_lowercase();
|
||||
n.raw = None;
|
||||
}
|
||||
|
||||
self.compress_keyframes_at_rule(n);
|
||||
if matches_eq!(
|
||||
n.name, "rotate", "skew", "skewx", "skewy", "rotate3d", "rotatex", "rotatey", "rotatez"
|
||||
) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_transform_function: true,
|
||||
..self.ctx
|
||||
}));
|
||||
} else {
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_hex_color(&mut self, n: &mut HexColor) {
|
||||
let new = n.value.to_ascii_lowercase();
|
||||
if new != n.value {
|
||||
n.value = new;
|
||||
n.raw = None;
|
||||
}
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
|
||||
fn visit_mut_ident(&mut self, ident: &mut Ident) {
|
||||
ident.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_import_href(&mut self, n: &mut ImportHref) {
|
||||
@ -149,10 +256,26 @@ impl VisitMut for Compressor {
|
||||
self.compress_import_href(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_query_list(&mut self, n: &mut MediaQueryList) {
|
||||
fn visit_mut_keyframe_block(&mut self, n: &mut KeyframeBlock) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_keyframe_block: true,
|
||||
..self.ctx
|
||||
}));
|
||||
}
|
||||
|
||||
fn visit_mut_keyframe_selector(&mut self, n: &mut KeyframeSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_media_query_list(n);
|
||||
self.compress_keyframe_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_length(&mut self, n: &mut Length) {
|
||||
n.unit.value = n.unit.value.to_ascii_lowercase();
|
||||
n.unit.raw = None;
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_length(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_condition(&mut self, n: &mut MediaCondition) {
|
||||
@ -167,12 +290,6 @@ impl VisitMut for Compressor {
|
||||
self.compress_media_condition_without_or(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_in_parens(&mut self, n: &mut MediaInParens) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_media_in_parens(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_feature(&mut self, n: &mut MediaFeature) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
@ -186,6 +303,114 @@ impl VisitMut for Compressor {
|
||||
self.compress_media_feature_value_length(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_in_parens(&mut self, n: &mut MediaInParens) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_media_in_parens(n);
|
||||
}
|
||||
|
||||
fn visit_mut_media_query_list(&mut self, n: &mut MediaQueryList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_media_query_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_pseudo_class_selector(&mut self, n: &mut PseudoClassSelector) {
|
||||
match &mut n.name {
|
||||
Ident { value, .. }
|
||||
if matches_eq_ignore_ascii_case!(
|
||||
&**value,
|
||||
"not",
|
||||
"is",
|
||||
"where",
|
||||
"matches",
|
||||
"-moz-any",
|
||||
"-webkit-any"
|
||||
) =>
|
||||
{
|
||||
n.name.value = n.name.value.to_ascii_lowercase();
|
||||
n.name.raw = None;
|
||||
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_logic_combinator_selector: true,
|
||||
..self.ctx
|
||||
}));
|
||||
}
|
||||
_ => {
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_pseudo_element_selector(&mut self, n: &mut PseudoElementSelector) {
|
||||
n.name.value = n.name.value.to_ascii_lowercase();
|
||||
n.name.raw = None;
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
|
||||
fn visit_mut_relative_selector_list(&mut self, n: &mut RelativeSelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_relative_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_selector_list(&mut self, n: &mut SelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_simple_block(&mut self, n: &mut SimpleBlock) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_simple_block(n);
|
||||
}
|
||||
|
||||
fn visit_mut_size_feature_value(&mut self, n: &mut SizeFeatureValue) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_calc_sum_in_size_feature_value(n);
|
||||
self.compress_size_feature_value_length(n);
|
||||
}
|
||||
|
||||
fn visit_mut_str(&mut self, string: &mut Str) {
|
||||
string.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&string.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_stylesheet(&mut self, n: &mut Stylesheet) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_stylesheet(n);
|
||||
|
||||
if !self.need_utf8_at_rule
|
||||
&& n.rules
|
||||
.first()
|
||||
.and_then(|rule| rule.as_at_rule())
|
||||
.and_then(|at_rule| at_rule.prelude.as_ref())
|
||||
.and_then(|prelude| prelude.as_charset_prelude())
|
||||
.filter(|x| x.value.eq_ignore_ascii_case("utf-8"))
|
||||
.is_some()
|
||||
{
|
||||
n.rules.remove(0);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_subclass_selector(&mut self, n: &mut SubclassSelector) {
|
||||
if let SubclassSelector::PseudoClass(PseudoClassSelector { name, .. }) = n {
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
name.raw = None;
|
||||
}
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_subclass_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_supports_condition(&mut self, n: &mut SupportsCondition) {
|
||||
let old_in_support_condition = self.in_supports_condition;
|
||||
|
||||
@ -204,192 +429,17 @@ impl VisitMut for Compressor {
|
||||
self.compress_supports_in_parens(n);
|
||||
}
|
||||
|
||||
fn visit_mut_size_feature_value(&mut self, n: &mut SizeFeatureValue) {
|
||||
fn visit_mut_tag_name_selector(&mut self, n: &mut TagNameSelector) {
|
||||
n.name.value.value = n.name.value.value.to_ascii_lowercase();
|
||||
n.name.value.raw = None;
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
|
||||
fn visit_mut_time(&mut self, n: &mut Time) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_calc_sum_in_size_feature_value(n);
|
||||
self.compress_size_feature_value_length(n);
|
||||
}
|
||||
|
||||
fn visit_mut_keyframe_selector(&mut self, n: &mut KeyframeSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_keyframe_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_calc_sum(&mut self, n: &mut CalcSum) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_math_function: true,
|
||||
..self.ctx
|
||||
}));
|
||||
|
||||
// Don't touch `@supports`, it can be used to check a browser's support for one
|
||||
// or more specific CSS features
|
||||
if !self.in_supports_condition {
|
||||
self.compress_calc_sum(n);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_component_value(&mut self, n: &mut ComponentValue) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
if self.in_supports_condition {
|
||||
return;
|
||||
}
|
||||
|
||||
self.compress_calc_sum_in_component_value(n);
|
||||
|
||||
self.compress_alpha_value_in_component_value(n);
|
||||
|
||||
self.compress_component_value_for_length(n);
|
||||
|
||||
self.compress_easing_function(n);
|
||||
|
||||
self.compress_transform_function(n);
|
||||
|
||||
self.compress_angle_in_component_value(n);
|
||||
}
|
||||
|
||||
fn visit_mut_length(&mut self, n: &mut Length) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_length(n);
|
||||
}
|
||||
|
||||
fn visit_mut_pseudo_class_selector(&mut self, n: &mut PseudoClassSelector) {
|
||||
match &n.name {
|
||||
Ident { value, .. }
|
||||
if matches!(
|
||||
&**value,
|
||||
"not" | "is" | "where" | "matches" | "-moz-any" | "-webkit-any"
|
||||
) =>
|
||||
{
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_logic_combinator_selector: true,
|
||||
..self.ctx
|
||||
}));
|
||||
}
|
||||
_ => {
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_selector_list(&mut self, n: &mut SelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_forgiving_selector_list(&mut self, n: &mut ForgivingSelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_forgiving_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_relative_selector_list(&mut self, n: &mut RelativeSelectorList) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_relative_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_forgiving_relative_selector_list(
|
||||
&mut self,
|
||||
n: &mut ForgivingRelativeSelectorList,
|
||||
) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_forgiving_relative_selector_list(n);
|
||||
}
|
||||
|
||||
fn visit_mut_an_plus_b(&mut self, n: &mut AnPlusB) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_an_plus_b(n);
|
||||
}
|
||||
|
||||
fn visit_mut_subclass_selector(&mut self, n: &mut SubclassSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_subclass_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_compound_selector(&mut self, n: &mut CompoundSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_compound_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_attribute_selector(&mut self, n: &mut AttributeSelector) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_attribute_selector(n);
|
||||
}
|
||||
|
||||
fn visit_mut_keyframe_block(&mut self, n: &mut KeyframeBlock) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_keyframe_block: true,
|
||||
..self.ctx
|
||||
}));
|
||||
}
|
||||
|
||||
fn visit_mut_function(&mut self, n: &mut Function) {
|
||||
if matches_eq!(
|
||||
n.name, "rotate", "skew", "skewx", "skewy", "rotate3d", "rotatex", "rotatey", "rotatez"
|
||||
) {
|
||||
n.visit_mut_children_with(&mut *self.with_ctx(Ctx {
|
||||
in_transform_function: true,
|
||||
..self.ctx
|
||||
}));
|
||||
} else {
|
||||
n.visit_mut_children_with(self);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_angle(&mut self, n: &mut Angle) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_angle(n);
|
||||
}
|
||||
|
||||
fn visit_mut_ident(&mut self, ident: &mut Ident) {
|
||||
ident.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_custom_ident(&mut self, custom_ident: &mut CustomIdent) {
|
||||
custom_ident.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&custom_ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_dashed_ident(&mut self, dashed_ident: &mut DashedIdent) {
|
||||
dashed_ident.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&dashed_ident.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_str(&mut self, string: &mut Str) {
|
||||
string.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&string.value);
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_custom_property_name(&mut self, custom_property_name: &mut CustomPropertyName) {
|
||||
custom_property_name.visit_mut_children_with(self);
|
||||
|
||||
if !self.need_utf8_at_rule {
|
||||
self.need_utf8_at_rule = !contains_only_ascii_characters(&custom_property_name.value);
|
||||
}
|
||||
self.compress_time(n);
|
||||
}
|
||||
|
||||
fn visit_mut_token_and_span(&mut self, token_and_span: &mut TokenAndSpan) {
|
||||
@ -421,6 +471,21 @@ impl VisitMut for Compressor {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_unicode_range(&mut self, n: &mut UnicodeRange) {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_unicode_range(n);
|
||||
}
|
||||
|
||||
fn visit_mut_url(&mut self, n: &mut Url) {
|
||||
n.name.value = n.name.value.to_ascii_lowercase();
|
||||
n.name.raw = None;
|
||||
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
self.compress_url(n);
|
||||
}
|
||||
}
|
||||
|
||||
fn contains_only_ascii_characters(string: &str) -> bool {
|
||||
|
@ -4,6 +4,11 @@ use super::Compressor;
|
||||
|
||||
impl Compressor {
|
||||
pub(super) fn compress_unicode_range(&self, unicode_range: &mut UnicodeRange) {
|
||||
unicode_range.start = unicode_range.start.to_ascii_lowercase();
|
||||
if let Some(end) = &mut unicode_range.end {
|
||||
*end = end.to_ascii_lowercase();
|
||||
}
|
||||
|
||||
if unicode_range.end.is_none() {
|
||||
unicode_range.start = self.remove_leading_zeros(&unicode_range.start).into();
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
@import url(test.css);
|
||||
@import url('test.css');
|
||||
@import url("test.css");
|
||||
@import url(test.css);
|
||||
@IMPORT url(test.css);
|
||||
@import url(test.css);
|
||||
@import url(test.css);
|
||||
@import url(test.css);
|
||||
@ -21,7 +21,7 @@
|
||||
@import url('');
|
||||
@import url("");
|
||||
@import url(test.css) screen and (orientation: landscape);
|
||||
@import url(test.css) screen and (orientation: landscape);
|
||||
@import url(test.css) SCREEN and (ORIENTATION: LANDSCAPE);
|
||||
@import url(test.css) screen and (orientation: landscape);
|
||||
@import url(test.css) screen and (orientation: landscape);
|
||||
@import url(test-media.css) screen and (orientation: landscape);
|
||||
@ -141,7 +141,7 @@ st.css');
|
||||
@import url("./test.css") layer(default) supports(display: flex) screen and (min-width: 400px);
|
||||
@import url("./test.css") screen and (min-width: 400px);
|
||||
@import url("./test.css") layer(default) supports(display: flex) screen and (min-width: 400px);
|
||||
@import url("./test.css") layer(DEFAULT) supports(display: FLEX) screen and (min-width: 400px);
|
||||
@import url("./test.css") LAYER(DEFAULT) SUPPORTS(DISPLAY: FLEX) SCREEN and (MIN-WIDTH: 400PX);
|
||||
@import url("./test.css") layer(default) supports(display: flex) screen and (min-width: 400px);
|
||||
@import url(test.css);
|
||||
@import url(test.css);
|
||||
|
@ -3,21 +3,21 @@
|
||||
}
|
||||
@keyframes __local__bounce {
|
||||
0% {
|
||||
transform: translatey(-100%);
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
5% {
|
||||
transform: translatey(-100%);
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes __local__bounce2 {
|
||||
0% {
|
||||
transform: translatey(-100%);
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
5% {
|
||||
transform: translatey(-100%);
|
||||
transform: translateY(-100%);
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
@value small from './file.css';
|
||||
@media small {
|
||||
.__local__header {
|
||||
box-shadow: 0 0 4px #1f4f7f;
|
||||
box-shadow: 0 0 4px #1F4F7F;
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
@value small: (max-width: 599px);
|
||||
@media small {
|
||||
.__local__header {
|
||||
box-shadow: 0 0 4px #1f4f7f;
|
||||
box-shadow: 0 0 4px #1F4F7F;
|
||||
}
|
||||
}
|
||||
|
@ -31,9 +31,7 @@ where
|
||||
if value.starts_with("--") {
|
||||
ColorProfileName::DashedIdent(self.parse()?)
|
||||
} else {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
ColorProfileName::Ident(name)
|
||||
}
|
||||
@ -904,11 +902,10 @@ where
|
||||
fn parse(&mut self) -> PResult<KeyframeSelector> {
|
||||
match cur!(self) {
|
||||
tok!("ident") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
let ident: Ident = self.parse()?;
|
||||
let lower = ident.value.to_ascii_lowercase();
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
|
||||
if ident.value != "from" && ident.value != "to" {
|
||||
if lower != "from" && lower != "to" {
|
||||
return Err(Error::new(
|
||||
ident.span,
|
||||
ErrorKind::Expected("'from' or 'to' idents"),
|
||||
@ -1020,9 +1017,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("not") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1054,9 +1049,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("and") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1088,9 +1081,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("or") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1432,9 +1423,7 @@ where
|
||||
fn parse(&mut self) -> PResult<MediaType> {
|
||||
match cur!(self) {
|
||||
_ if !is_one_of_case_insensitive_ident!(self, "not", "and", "or", "only", "layer") => {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
Ok(MediaType::Ident(name))
|
||||
}
|
||||
@ -1558,9 +1547,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("not") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1592,9 +1579,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("and") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1626,9 +1611,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("or") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -1907,9 +1890,7 @@ where
|
||||
Ok(MediaFeatureValue::Number(left))
|
||||
}
|
||||
tok!("ident") => {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
Ok(MediaFeatureValue::Ident(name))
|
||||
}
|
||||
@ -2036,9 +2017,7 @@ where
|
||||
Token::Ident { value, .. }
|
||||
if matches_eq_ignore_ascii_case!(value, "left", "right", "first", "blank") =>
|
||||
{
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
name
|
||||
}
|
||||
@ -2192,9 +2171,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("not") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -2226,9 +2203,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("and") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -2260,9 +2235,7 @@ where
|
||||
let span = self.input.cur_span();
|
||||
let keyword = match cur!(self) {
|
||||
Token::Ident { value, .. } if value.as_ref().eq_ignore_ascii_case("or") => {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
Some(ident)
|
||||
}
|
||||
@ -2519,9 +2492,7 @@ where
|
||||
Ok(SizeFeatureValue::Number(left))
|
||||
}
|
||||
tok!("ident") => {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
Ok(SizeFeatureValue::Ident(name))
|
||||
}
|
||||
|
@ -493,9 +493,7 @@ where
|
||||
|
||||
match cur!(self) {
|
||||
tok!("ident") => {
|
||||
let mut value: Ident = self.parse()?;
|
||||
|
||||
value.value = value.value.to_ascii_lowercase();
|
||||
let value: Ident = self.parse()?;
|
||||
|
||||
return Ok(TypeSelector::TagName(TagNameSelector {
|
||||
span: span!(self, span.lo),
|
||||
@ -828,9 +826,7 @@ where
|
||||
|
||||
match cur!(self) {
|
||||
tok!("ident") => {
|
||||
let mut value: Ident = self.parse()?;
|
||||
|
||||
value.value = value.value.to_ascii_lowercase();
|
||||
let value: Ident = self.parse()?;
|
||||
|
||||
Ok(AttributeSelectorModifier {
|
||||
span: span!(self, span.lo),
|
||||
@ -892,9 +888,7 @@ where
|
||||
"dir" => {
|
||||
self.input.skip_ws();
|
||||
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
self.input.skip_ws();
|
||||
|
||||
@ -994,9 +988,7 @@ where
|
||||
self.input.skip_ws();
|
||||
|
||||
if is!(self, "ident") {
|
||||
let mut of: Ident = self.parse()?;
|
||||
|
||||
of.value = of.value.to_ascii_lowercase();
|
||||
let of: Ident = self.parse()?;
|
||||
|
||||
children.push(PseudoClassSelectorChildren::Ident(of));
|
||||
|
||||
@ -1059,9 +1051,7 @@ where
|
||||
children: Some(children),
|
||||
})
|
||||
} else if is!(self, Ident) {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
Ok(PseudoClassSelector {
|
||||
span: span!(self, span.lo),
|
||||
@ -1183,9 +1173,7 @@ where
|
||||
children: Some(children),
|
||||
})
|
||||
} else if is!(self, Ident) {
|
||||
let mut name: Ident = self.parse()?;
|
||||
|
||||
name.value = name.value.to_ascii_lowercase();
|
||||
let name: Ident = self.parse()?;
|
||||
|
||||
Ok(PseudoElementSelector {
|
||||
span: span!(self, span.lo),
|
||||
@ -1212,9 +1200,8 @@ where
|
||||
Token::Ident { value, .. }
|
||||
if matches_eq_ignore_ascii_case!(value, "odd", "even") =>
|
||||
{
|
||||
let mut ident: Ident = self.parse()?;
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
|
||||
Ok(AnPlusB::Ident(ident))
|
||||
}
|
||||
|
@ -157,7 +157,7 @@ where
|
||||
} else {
|
||||
AtRuleName::Ident(Ident {
|
||||
span: Span::new(span.lo + BytePos(1), span.hi, Default::default()),
|
||||
value: at_keyword_name.0.to_ascii_lowercase(),
|
||||
value: at_keyword_name.0,
|
||||
raw: Some(at_keyword_name.1),
|
||||
})
|
||||
};
|
||||
@ -616,9 +616,7 @@ where
|
||||
|
||||
DeclarationName::DashedIdent(ident)
|
||||
} else {
|
||||
let mut ident: Ident = self.parse()?;
|
||||
|
||||
ident.value = ident.value.to_ascii_lowercase();
|
||||
let ident: Ident = self.parse()?;
|
||||
|
||||
DeclarationName::Ident(ident)
|
||||
};
|
||||
@ -940,7 +938,7 @@ where
|
||||
} else {
|
||||
FunctionName::Ident(Ident {
|
||||
span: Span::new(span.lo, span.hi - BytePos(1), Default::default()),
|
||||
value: function_name.0.to_ascii_lowercase(),
|
||||
value: function_name.0,
|
||||
raw: Some(function_name.1),
|
||||
})
|
||||
};
|
||||
|
@ -197,7 +197,9 @@ where
|
||||
|
||||
let mut values = vec![];
|
||||
|
||||
match &**function_name {
|
||||
let lower_fname = function_name.to_ascii_lowercase();
|
||||
|
||||
match &*lower_fname {
|
||||
"calc" | "-moz-calc" | "-webkit-calc" | "sin" | "cos" | "tan" | "asin" | "acos"
|
||||
| "atan" | "sqrt" | "exp" | "abs" | "sign" => {
|
||||
self.input.skip_ws();
|
||||
@ -402,7 +404,7 @@ where
|
||||
_ => {}
|
||||
}
|
||||
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"rgb" | "rgba" => {
|
||||
let percentage_or_number_or_none = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -515,7 +517,7 @@ where
|
||||
is_legacy_syntax = false;
|
||||
}
|
||||
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"rgb" | "rgba" => {
|
||||
let percentage_or_number = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -631,7 +633,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"rgb" | "rgba" => {
|
||||
let percentage_or_number = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -819,7 +821,7 @@ where
|
||||
match cur!(self) {
|
||||
Token::Ident { value, .. }
|
||||
if matches_eq_ignore_ascii_case!(value, "from")
|
||||
&& *function_name != "device-cmyk" =>
|
||||
&& lower_fname != "device-cmyk" =>
|
||||
{
|
||||
values.push(ComponentValue::Ident(self.parse()?));
|
||||
|
||||
@ -839,7 +841,7 @@ where
|
||||
_ => {}
|
||||
}
|
||||
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"hwb" => {
|
||||
let hue_or_none = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -947,7 +949,7 @@ where
|
||||
}
|
||||
|
||||
if !is_one_of!(self, EOF, "/") {
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"hwb" => {
|
||||
let percentage_or_none = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -1064,7 +1066,7 @@ where
|
||||
}
|
||||
|
||||
if !is_one_of!(self, EOF, "/") {
|
||||
match &**function_name {
|
||||
match &*lower_fname {
|
||||
"hwb" => {
|
||||
let percentage_or_none = self.try_parse_variable_function(
|
||||
|parser, has_variable_before| match cur!(parser) {
|
||||
@ -1226,7 +1228,7 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
if !is_one_of!(self, EOF, "/") && function_name == "device-cmyk" {
|
||||
if !is_one_of!(self, EOF, "/") && lower_fname == "device-cmyk" {
|
||||
let cmyk_component = self.try_parse_variable_function(
|
||||
|parser, _| Ok(Some(ComponentValue::CmykComponent(parser.parse()?))),
|
||||
&mut has_variable,
|
||||
@ -1252,7 +1254,7 @@ where
|
||||
Token::Function { value, .. } if is_math_function(value) => {
|
||||
Ok(Some(ComponentValue::Function(parser.parse()?)))
|
||||
}
|
||||
tok!("ident") if !matches!(&**function_name, "device-cmyk") => {
|
||||
tok!("ident") if !matches!(&*lower_fname, "device-cmyk") => {
|
||||
let ident: Box<Ident> = parser.parse()?;
|
||||
|
||||
if ident.value.eq_ignore_ascii_case("none") {
|
||||
@ -1539,7 +1541,7 @@ where
|
||||
Token::Function { value, .. } if is_math_function(value) => {
|
||||
Ok(Some(ComponentValue::Function(parser.parse()?)))
|
||||
}
|
||||
tok!("ident") if !matches!(&**function_name, "device-cmyk") => {
|
||||
tok!("ident") if !matches!(&*lower_fname, "device-cmyk") => {
|
||||
let ident: Box<Ident> = parser.parse()?;
|
||||
|
||||
if ident.value.eq_ignore_ascii_case("none") {
|
||||
@ -2027,7 +2029,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2078,7 +2080,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2126,7 +2128,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2174,7 +2176,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2225,7 +2227,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2273,7 +2275,7 @@ where
|
||||
},
|
||||
unit: Ident {
|
||||
span: Span::new(span.hi - BytePos(unit_len), span.hi, Default::default()),
|
||||
value: unit.to_ascii_lowercase(),
|
||||
value: unit,
|
||||
raw: Some(raw_unit),
|
||||
},
|
||||
})
|
||||
@ -2424,7 +2426,7 @@ where
|
||||
|
||||
Ok(HexColor {
|
||||
span,
|
||||
value: value.to_ascii_lowercase(),
|
||||
value,
|
||||
raw: Some(raw),
|
||||
})
|
||||
}
|
||||
@ -2620,7 +2622,7 @@ where
|
||||
|
||||
let name = Ident {
|
||||
span: Span::new(span.lo, span.hi - BytePos(1), Default::default()),
|
||||
value: function_name.to_ascii_lowercase(),
|
||||
value: function_name,
|
||||
raw: Some(raw_function_name),
|
||||
};
|
||||
|
||||
@ -2905,7 +2907,7 @@ where
|
||||
next = chars.next();
|
||||
}
|
||||
Some(c @ 'A'..='F') | Some(c @ 'a'..='f') => {
|
||||
start.push(c.to_ascii_lowercase());
|
||||
start.push(c);
|
||||
|
||||
next = chars.next();
|
||||
}
|
||||
@ -3005,7 +3007,7 @@ where
|
||||
next = chars.next();
|
||||
}
|
||||
Some(c @ 'A'..='F') | Some(c @ 'a'..='f') => {
|
||||
end.push(c.to_ascii_lowercase());
|
||||
end.push(c);
|
||||
next = chars.next();
|
||||
}
|
||||
_ => {
|
||||
|
@ -224,7 +224,7 @@
|
||||
"end": 250,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "device-cmyk",
|
||||
"value": "DEVICE-CMYK",
|
||||
"raw": "DEVICE-CMYK"
|
||||
},
|
||||
"block": {
|
||||
|
@ -7198,7 +7198,7 @@
|
||||
"end": 2486,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "width",
|
||||
"value": "WIDTH",
|
||||
"raw": "WIDTH"
|
||||
},
|
||||
"comparison": "<=",
|
||||
|
@ -272,7 +272,7 @@
|
||||
"end": 136,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "import",
|
||||
"value": "IMPORT",
|
||||
"raw": "IMPORT"
|
||||
},
|
||||
"prelude": {
|
||||
@ -412,7 +412,7 @@
|
||||
"end": 194,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "url",
|
||||
"value": "URL",
|
||||
"raw": "URL"
|
||||
},
|
||||
"value": {
|
||||
@ -1057,7 +1057,7 @@
|
||||
"end": 494,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "layer",
|
||||
"value": "LAYER",
|
||||
"raw": "LAYER"
|
||||
},
|
||||
"value": [
|
||||
@ -1547,7 +1547,7 @@
|
||||
"end": 709,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "supports",
|
||||
"value": "SUPPORTS",
|
||||
"raw": "SUPPORTS"
|
||||
},
|
||||
"value": [
|
||||
@ -2016,7 +2016,7 @@
|
||||
"end": 904,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "import",
|
||||
"value": "IMPORT",
|
||||
"raw": "IMPORT"
|
||||
},
|
||||
"prelude": {
|
||||
@ -3160,7 +3160,7 @@
|
||||
"end": 1318,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "screen",
|
||||
"value": "SCREEN",
|
||||
"raw": "SCREEN"
|
||||
},
|
||||
"keyword": {
|
||||
@ -3195,7 +3195,7 @@
|
||||
"end": 1335,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "orientation",
|
||||
"value": "ORIENTATION",
|
||||
"raw": "ORIENTATION"
|
||||
},
|
||||
"value": {
|
||||
@ -3205,7 +3205,7 @@
|
||||
"end": 1346,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "landscape",
|
||||
"value": "LANDSCAPE",
|
||||
"raw": "LANDSCAPE"
|
||||
}
|
||||
}
|
||||
@ -9192,7 +9192,7 @@
|
||||
"end": 4755,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "layer",
|
||||
"value": "LAYER",
|
||||
"raw": "LAYER"
|
||||
},
|
||||
"value": [
|
||||
@ -9239,7 +9239,7 @@
|
||||
"end": 4773,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "supports",
|
||||
"value": "SUPPORTS",
|
||||
"raw": "SUPPORTS"
|
||||
},
|
||||
"value": [
|
||||
@ -9257,7 +9257,7 @@
|
||||
"end": 4781,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "display",
|
||||
"value": "DISPLAY",
|
||||
"raw": "DISPLAY"
|
||||
},
|
||||
"value": [
|
||||
@ -9299,7 +9299,7 @@
|
||||
"end": 4795,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "screen",
|
||||
"value": "SCREEN",
|
||||
"raw": "SCREEN"
|
||||
},
|
||||
"keyword": {
|
||||
@ -9334,7 +9334,7 @@
|
||||
"end": 4810,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "min-width",
|
||||
"value": "MIN-WIDTH",
|
||||
"raw": "MIN-WIDTH"
|
||||
},
|
||||
"value": {
|
||||
@ -9361,7 +9361,7 @@
|
||||
"end": 4817,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "px",
|
||||
"value": "PX",
|
||||
"raw": "PX"
|
||||
}
|
||||
}
|
||||
|
@ -256,7 +256,7 @@
|
||||
"end": 158,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "translatex",
|
||||
"value": "translateX",
|
||||
"raw": "translateX"
|
||||
},
|
||||
"value": [
|
||||
@ -354,7 +354,7 @@
|
||||
"end": 209,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "translatex",
|
||||
"value": "translateX",
|
||||
"raw": "translateX"
|
||||
},
|
||||
"value": [
|
||||
@ -1513,7 +1513,7 @@
|
||||
"end": 686,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "from",
|
||||
"value": "fRoM",
|
||||
"raw": "fRoM"
|
||||
}
|
||||
],
|
||||
@ -1566,7 +1566,7 @@
|
||||
"end": 718,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "translatex",
|
||||
"value": "translateX",
|
||||
"raw": "translateX"
|
||||
},
|
||||
"value": [
|
||||
@ -1611,7 +1611,7 @@
|
||||
"end": 737,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "to",
|
||||
"value": "tO",
|
||||
"raw": "tO"
|
||||
}
|
||||
],
|
||||
@ -1664,7 +1664,7 @@
|
||||
"end": 769,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "translatex",
|
||||
"value": "translateX",
|
||||
"raw": "translateX"
|
||||
},
|
||||
"value": [
|
||||
|
@ -12558,7 +12558,7 @@
|
||||
"end": 3814,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "and",
|
||||
"value": "AND",
|
||||
"raw": "AND"
|
||||
},
|
||||
"condition": {
|
||||
@ -12624,7 +12624,7 @@
|
||||
"end": 3837,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "or",
|
||||
"value": "OR",
|
||||
"raw": "OR"
|
||||
},
|
||||
"condition": {
|
||||
@ -12801,7 +12801,7 @@
|
||||
"end": 3889,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "and",
|
||||
"value": "AND",
|
||||
"raw": "AND"
|
||||
},
|
||||
"condition": {
|
||||
@ -12872,7 +12872,7 @@
|
||||
"end": 3912,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "or",
|
||||
"value": "OR",
|
||||
"raw": "OR"
|
||||
},
|
||||
"condition": {
|
||||
@ -13614,7 +13614,7 @@
|
||||
"end": 4122,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "not",
|
||||
"value": "NOT",
|
||||
"raw": "NOT"
|
||||
},
|
||||
"condition": {
|
||||
@ -13652,7 +13652,7 @@
|
||||
"end": 4134,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "or",
|
||||
"value": "OR",
|
||||
"raw": "OR"
|
||||
},
|
||||
"condition": {
|
||||
@ -16835,7 +16835,7 @@
|
||||
"end": 4837,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "screen",
|
||||
"value": "SCREEN",
|
||||
"raw": "SCREEN"
|
||||
},
|
||||
"keyword": {
|
||||
@ -16870,7 +16870,7 @@
|
||||
"end": 4849,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "update",
|
||||
"value": "UPDATE",
|
||||
"raw": "UPDATE"
|
||||
},
|
||||
"value": {
|
||||
@ -16880,7 +16880,7 @@
|
||||
"end": 4855,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "slow",
|
||||
"value": "SLOW",
|
||||
"raw": "SLOW"
|
||||
}
|
||||
},
|
||||
@ -16898,7 +16898,7 @@
|
||||
"end": 4860,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "and",
|
||||
"value": "AND",
|
||||
"raw": "AND"
|
||||
},
|
||||
"condition": {
|
||||
@ -16915,7 +16915,7 @@
|
||||
"end": 4867,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "width",
|
||||
"value": "WIDTH",
|
||||
"raw": "WIDTH"
|
||||
},
|
||||
"comparison": ">",
|
||||
@ -17505,7 +17505,7 @@
|
||||
"end": 5019,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "media",
|
||||
"value": "MEDIA",
|
||||
"raw": "MEDIA"
|
||||
},
|
||||
"prelude": {
|
||||
@ -17531,7 +17531,7 @@
|
||||
"end": 5023,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "all",
|
||||
"value": "ALL",
|
||||
"raw": "ALL"
|
||||
},
|
||||
"keyword": null,
|
||||
@ -17572,7 +17572,7 @@
|
||||
"end": 5033,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "media",
|
||||
"value": "MEDIA",
|
||||
"raw": "MEDIA"
|
||||
},
|
||||
"prelude": {
|
||||
@ -17615,7 +17615,7 @@
|
||||
"end": 5057,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "prefers-reduced-motion",
|
||||
"value": "PREFERS-reduced-motion",
|
||||
"raw": "PREFERS-reduced-motion"
|
||||
},
|
||||
"value": {
|
||||
@ -17698,7 +17698,7 @@
|
||||
"end": 5085,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "root",
|
||||
"value": "ROOT",
|
||||
"raw": "ROOT"
|
||||
},
|
||||
"children": null
|
||||
|
@ -3236,7 +3236,7 @@
|
||||
"end": 1066,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "first",
|
||||
"value": "FIRST",
|
||||
"raw": "FIRST"
|
||||
}
|
||||
}
|
||||
@ -3311,7 +3311,7 @@
|
||||
"end": 1081,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "left",
|
||||
"value": "LEFT",
|
||||
"raw": "LEFT"
|
||||
}
|
||||
}
|
||||
|
@ -825,7 +825,7 @@
|
||||
"end": 330,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "supports",
|
||||
"value": "SUPPORTS",
|
||||
"raw": "SUPPORTS"
|
||||
},
|
||||
"prelude": {
|
||||
@ -2930,7 +2930,7 @@
|
||||
"end": 1255,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "not",
|
||||
"value": "NOT",
|
||||
"raw": "NOT"
|
||||
},
|
||||
"condition": {
|
||||
@ -3064,7 +3064,7 @@
|
||||
"end": 1317,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "or",
|
||||
"value": "OR",
|
||||
"raw": "OR"
|
||||
},
|
||||
"condition": {
|
||||
@ -3115,7 +3115,7 @@
|
||||
"end": 1344,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "and",
|
||||
"value": "AND",
|
||||
"raw": "AND"
|
||||
},
|
||||
"condition": {
|
||||
@ -3279,7 +3279,7 @@
|
||||
"end": 1416,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "or",
|
||||
"value": "OR",
|
||||
"raw": "OR"
|
||||
},
|
||||
"condition": {
|
||||
@ -3335,7 +3335,7 @@
|
||||
"end": 1443,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "and",
|
||||
"value": "AND",
|
||||
"raw": "AND"
|
||||
},
|
||||
"condition": {
|
||||
@ -3479,7 +3479,7 @@
|
||||
"end": 1489,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "not",
|
||||
"value": "NOT",
|
||||
"raw": "NOT"
|
||||
},
|
||||
"condition": {
|
||||
|
@ -269,7 +269,7 @@
|
||||
"end": 229,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "url",
|
||||
"value": "URL",
|
||||
"raw": "URL"
|
||||
},
|
||||
"value": {
|
||||
|
@ -174,7 +174,7 @@
|
||||
"end": 57,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "ffffff",
|
||||
"value": "FFFFFF",
|
||||
"raw": "FFFFFF"
|
||||
}
|
||||
],
|
||||
@ -236,7 +236,7 @@
|
||||
"end": 97,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "0000ffcc",
|
||||
"value": "0000FFCC",
|
||||
"raw": "0000FFCC"
|
||||
}
|
||||
],
|
||||
@ -329,7 +329,7 @@
|
||||
"end": 142,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "fff",
|
||||
"value": "FFF",
|
||||
"raw": "FFF"
|
||||
}
|
||||
],
|
||||
@ -422,7 +422,7 @@
|
||||
"end": 190,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "ffff",
|
||||
"value": "FFFF",
|
||||
"raw": "FFFF"
|
||||
}
|
||||
],
|
||||
@ -484,7 +484,7 @@
|
||||
"end": 217,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "ff",
|
||||
"value": "FF",
|
||||
"raw": "FF"
|
||||
}
|
||||
],
|
||||
|
@ -1253,7 +1253,7 @@
|
||||
"end": 232,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "i",
|
||||
"value": "I",
|
||||
"raw": "I"
|
||||
}
|
||||
}
|
||||
@ -1497,7 +1497,7 @@
|
||||
"end": 272,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "s",
|
||||
"value": "S",
|
||||
"raw": "S"
|
||||
}
|
||||
}
|
||||
|
@ -6002,7 +6002,7 @@
|
||||
"end": 1373,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "odd",
|
||||
"value": "ODD",
|
||||
"raw": "ODD"
|
||||
}
|
||||
]
|
||||
@ -6090,7 +6090,7 @@
|
||||
"end": 1392,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "odd",
|
||||
"value": "oDd",
|
||||
"raw": "oDd"
|
||||
}
|
||||
]
|
||||
@ -6266,7 +6266,7 @@
|
||||
"end": 1432,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "even",
|
||||
"value": "eVeN",
|
||||
"raw": "eVeN"
|
||||
}
|
||||
]
|
||||
@ -6354,7 +6354,7 @@
|
||||
"end": 1452,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "even",
|
||||
"value": "EVEN",
|
||||
"raw": "EVEN"
|
||||
}
|
||||
]
|
||||
|
@ -502,7 +502,7 @@
|
||||
"end": 75,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "input",
|
||||
"value": "iNpUt",
|
||||
"raw": "iNpUt"
|
||||
}
|
||||
}
|
||||
@ -2373,7 +2373,7 @@
|
||||
"end": 461,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "hover",
|
||||
"value": "hOvEr",
|
||||
"raw": "hOvEr"
|
||||
},
|
||||
"children": null
|
||||
|
@ -416,7 +416,7 @@
|
||||
"end": 76,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "rtl",
|
||||
"value": "RTL",
|
||||
"raw": "RTL"
|
||||
}
|
||||
]
|
||||
|
@ -682,7 +682,7 @@
|
||||
"end": 83,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "foo",
|
||||
"value": "FOO",
|
||||
"raw": "FOO"
|
||||
}
|
||||
}
|
||||
@ -3120,7 +3120,7 @@
|
||||
"end": 399,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "foo",
|
||||
"value": "FOO",
|
||||
"raw": "FOO"
|
||||
}
|
||||
}
|
||||
|
@ -1771,7 +1771,7 @@
|
||||
"end": 366,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "before",
|
||||
"value": "bEfOrE",
|
||||
"raw": "bEfOrE"
|
||||
},
|
||||
"children": null
|
||||
|
@ -414,7 +414,7 @@
|
||||
"end": 75,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "span",
|
||||
"value": "SPAN",
|
||||
"raw": "SPAN"
|
||||
}
|
||||
}
|
||||
|
@ -941,7 +941,7 @@
|
||||
"end": 100,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "foreignobject",
|
||||
"value": "foreignObject",
|
||||
"raw": "foreignObject"
|
||||
}
|
||||
}
|
||||
@ -1070,7 +1070,7 @@
|
||||
"end": 117,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "textpath",
|
||||
"value": "textPath",
|
||||
"raw": "textPath"
|
||||
}
|
||||
}
|
||||
|
@ -491,7 +491,7 @@
|
||||
"end": 171,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "rgb",
|
||||
"value": "rGb",
|
||||
"raw": "rGb"
|
||||
},
|
||||
"value": [
|
||||
@ -2419,7 +2419,7 @@
|
||||
"end": 812,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "rgba",
|
||||
"value": "rGbA",
|
||||
"raw": "rGbA"
|
||||
},
|
||||
"value": [
|
||||
@ -3850,7 +3850,7 @@
|
||||
"end": 1299,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "hsl",
|
||||
"value": "HsL",
|
||||
"raw": "HsL"
|
||||
},
|
||||
"value": [
|
||||
|
@ -276,7 +276,7 @@
|
||||
"end": 79,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "px",
|
||||
"value": "PX",
|
||||
"raw": "PX"
|
||||
}
|
||||
}
|
||||
|
@ -129,7 +129,7 @@
|
||||
"end": 20,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "hz",
|
||||
"value": "Hz",
|
||||
"raw": "Hz"
|
||||
}
|
||||
}
|
||||
@ -178,7 +178,7 @@
|
||||
"end": 36,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "khz",
|
||||
"value": "kHz",
|
||||
"raw": "kHz"
|
||||
}
|
||||
}
|
||||
|
@ -276,7 +276,7 @@
|
||||
"end": 78,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "px",
|
||||
"value": "PX",
|
||||
"raw": "PX"
|
||||
}
|
||||
}
|
||||
@ -325,7 +325,7 @@
|
||||
"end": 96,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "px",
|
||||
"value": "pX",
|
||||
"raw": "pX"
|
||||
}
|
||||
}
|
||||
|
@ -213,7 +213,7 @@
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "0",
|
||||
"end": "7f",
|
||||
"end": "7F",
|
||||
"raw": "U+0-7F"
|
||||
}
|
||||
],
|
||||
@ -245,7 +245,7 @@
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "0025",
|
||||
"end": "00ff",
|
||||
"end": "00FF",
|
||||
"raw": "U+0025-00FF"
|
||||
}
|
||||
],
|
||||
@ -309,7 +309,7 @@
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "0025",
|
||||
"end": "00ff",
|
||||
"end": "00FF",
|
||||
"raw": "U+0025-00FF"
|
||||
},
|
||||
{
|
||||
@ -360,7 +360,7 @@
|
||||
"end": 398,
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "a5",
|
||||
"start": "A5",
|
||||
"end": null,
|
||||
"raw": "U+A5"
|
||||
},
|
||||
@ -380,8 +380,8 @@
|
||||
"end": 411,
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "4e00",
|
||||
"end": "9fff",
|
||||
"start": "4E00",
|
||||
"end": "9FFF",
|
||||
"raw": "U+4E00-9FFF"
|
||||
},
|
||||
{
|
||||
@ -420,8 +420,8 @@
|
||||
"end": 432,
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "ff00",
|
||||
"end": "ff9f",
|
||||
"start": "FF00",
|
||||
"end": "FF9F",
|
||||
"raw": "U+FF00-FF9F"
|
||||
}
|
||||
],
|
||||
@ -613,7 +613,7 @@
|
||||
"ctxt": 0
|
||||
},
|
||||
"start": "1e1ee1",
|
||||
"end": "ffffff",
|
||||
"end": "FFFFFF",
|
||||
"raw": "U+1e1ee1-FFFFFF"
|
||||
}
|
||||
],
|
||||
|
@ -369,7 +369,7 @@
|
||||
"end": 291,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "url",
|
||||
"value": "URL",
|
||||
"raw": "URL"
|
||||
},
|
||||
"value": {
|
||||
@ -419,7 +419,7 @@
|
||||
"end": 346,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "url",
|
||||
"value": "URL",
|
||||
"raw": "\\URL"
|
||||
},
|
||||
"value": {
|
||||
@ -1087,7 +1087,7 @@
|
||||
"end": 948,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "src",
|
||||
"value": "SRC",
|
||||
"raw": "SRC"
|
||||
},
|
||||
"value": {
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 17,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "abcd",
|
||||
"value": "ABCD",
|
||||
"raw": "ABCD"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "abbbccdd",
|
||||
"value": "ABBBCCDD",
|
||||
"raw": "ABBBCCDD"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbccff",
|
||||
"value": "AABBCCFF",
|
||||
"raw": "AABBCCFF"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabcccdd",
|
||||
"value": "AABCCCDD",
|
||||
"raw": "AABCCCDD"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 19,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "abbbcc",
|
||||
"value": "ABBBCC",
|
||||
"raw": "ABBBCC"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 19,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabccc",
|
||||
"value": "AABCCC",
|
||||
"raw": "AABCCC"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbccde",
|
||||
"value": "AABBCCDE",
|
||||
"raw": "AABBCCDE"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbccef",
|
||||
"value": "AABBCCEF",
|
||||
"raw": "AABBCCEF"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 17,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "abcf",
|
||||
"value": "ABCF",
|
||||
"raw": "ABCF"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 19,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbcd",
|
||||
"value": "AABBCD",
|
||||
"raw": "AABBCD"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbccdd",
|
||||
"value": "AABBCCDD",
|
||||
"raw": "AABBCCDD"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbcdff",
|
||||
"value": "AABBCDFF",
|
||||
"raw": "AABBCDFF"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabcccff",
|
||||
"value": "AABCCCFF",
|
||||
"raw": "AABCCCFF"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbcddd",
|
||||
"value": "AABBCDDD",
|
||||
"raw": "AABBCDDD"
|
||||
}
|
||||
],
|
||||
|
@ -98,7 +98,7 @@
|
||||
"end": 11,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "i",
|
||||
"value": "I",
|
||||
"raw": "I"
|
||||
}
|
||||
}
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 19,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "aabbcc",
|
||||
"value": "AABBCC",
|
||||
"raw": "AABBCC"
|
||||
}
|
||||
],
|
||||
|
@ -112,7 +112,7 @@
|
||||
"end": 21,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "abbbccff",
|
||||
"value": "ABBBCCFF",
|
||||
"raw": "ABBBCCFF"
|
||||
}
|
||||
],
|
||||
|
@ -651,7 +651,7 @@
|
||||
"end": 234,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "content",
|
||||
"value": "CONTENT",
|
||||
"raw": "CONTENT"
|
||||
},
|
||||
"value": [
|
||||
@ -685,7 +685,7 @@
|
||||
"end": 255,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "margin-left",
|
||||
"value": "MARGIN-LEFT",
|
||||
"raw": "MARGIN-LEFT"
|
||||
},
|
||||
"value": [
|
||||
|
@ -55,7 +55,7 @@
|
||||
"end": 17,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "display",
|
||||
"value": "DISPLAY",
|
||||
"raw": "DISPLAY"
|
||||
},
|
||||
"value": [
|
||||
|
@ -1181,7 +1181,7 @@
|
||||
"end": 239,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "s",
|
||||
"value": "S",
|
||||
"raw": "S"
|
||||
}
|
||||
}
|
||||
|
@ -5942,7 +5942,7 @@
|
||||
"end": 1980,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "-ie7",
|
||||
"value": "-IE7",
|
||||
"raw": "-IE7"
|
||||
},
|
||||
"children": null
|
||||
|
@ -456,7 +456,7 @@
|
||||
"end": 172,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "blur",
|
||||
"value": "Blur",
|
||||
"raw": "Blur"
|
||||
},
|
||||
"value": [
|
||||
@ -608,7 +608,7 @@
|
||||
"end": 227,
|
||||
"ctxt": 0
|
||||
},
|
||||
"value": "wheel",
|
||||
"value": "Wheel",
|
||||
"raw": "Wheel"
|
||||
},
|
||||
"value": [
|
||||
|
@ -566,7 +566,7 @@ impl VisitMut for CalcReplacer<'_> {
|
||||
return;
|
||||
}
|
||||
|
||||
let is_calc = n.name == "calc";
|
||||
let is_calc = n.name.as_str().eq_ignore_ascii_case("calc");
|
||||
|
||||
self.inside_calc = is_calc || is_webkit_calc || is_moz_calc;
|
||||
|
||||
|
@ -4,6 +4,6 @@ input:-webkit-autofill {
|
||||
input:autofill {
|
||||
border: 3px solid blue;
|
||||
}
|
||||
input:autofill {
|
||||
input:AUTOFILL {
|
||||
border: 3px solid blue;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
input:autofill {
|
||||
border: 3px solid blue;
|
||||
}
|
||||
input:autofill {
|
||||
input:AUTOFILL {
|
||||
border: 3px solid blue;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user