diff --git a/crates/swc_atoms/words.txt b/crates/swc_atoms/words.txt index 7d2c95e95dcb..f1fed1474c67 100644 --- a/crates/swc_atoms/words.txt +++ b/crates/swc_atoms/words.txt @@ -1,18 +1,259 @@ * +-moz-animation +-moz-animation-delay +-moz-animation-direction +-moz-animation-duration +-moz-animation-fill-mode +-moz-animation-iteration-count +-moz-animation-name +-moz-animation-play-state +-moz-animation-timing-function -moz-any +-moz-appearance +-moz-backface-visibility +-moz-background-origin +-moz-background-size +-moz-border-end +-moz-border-image +-moz-border-radius +-moz-border-radius-bottomleft +-moz-border-radius-bottomright +-moz-border-radius-topleft +-moz-border-radius-topright +-moz-border-start +-moz-box-align +-moz-box-direction +-moz-box-flex +-moz-box-ordinal-group +-moz-box-orient +-moz-box-pack +-moz-box-shadow +-moz-box-sizing -moz-calc +-moz-column-count +-moz-column-fill +-moz-column-gap +-moz-column-rule +-moz-column-rule-color +-moz-column-rule-style +-moz-column-rule-width +-moz-column-span +-moz-column-width +-moz-columns -moz-document +-moz-font-feature-settings +-moz-font-language-override +-moz-font-variant-ligatures +-moz-hyphens -moz-keyframes +-moz-margin-end +-moz-margin-start +-moz-padding-end +-moz-padding-start +-moz-perspective +-moz-perspective-origin +-moz-tab-size +-moz-text-align-last +-moz-text-decoration +-moz-text-decoration-color +-moz-text-decoration-line +-moz-text-decoration-style +-moz-text-size-adjust +-moz-transform +-moz-transform-origin +-moz-transform-style +-moz-transition +-moz-transition-delay +-moz-transition-duration +-moz-transition-timing-function +-moz-user-select +-ms-appearance +-ms-flex +-ms-flex-align +-ms-flex-direction +-ms-flex-flow +-ms-flex-item-align +-ms-flex-line-pack +-ms-flex-negative +-ms-flex-order +-ms-flex-pack +-ms-flex-positive +-ms-flex-preferred-size +-ms-flex-wrap +-ms-flow-from +-ms-flow-into +-ms-high-contrast-adjust +-ms-hyphens +-ms-interpolation-mode -ms-keyframes +-ms-region-fragment +-ms-scroll-chaining +-ms-scroll-snap-coordinate +-ms-scroll-snap-destination +-ms-scroll-snap-points-x +-ms-scroll-snap-points-y +-ms-scroll-snap-type +-ms-text-size-adjust +-ms-text-spacing +-ms-touch-action +-ms-transform +-ms-transform-origin +-ms-user-select -ms-viewport +-ms-writing-mode +-o-animation +-o-animation-delay +-o-animation-direction +-o-animation-duration +-o-animation-fill-mode +-o-animation-iteration-count +-o-animation-name +-o-animation-play-state +-o-animation-timing-function +-o-background-origin +-o-background-size +-o-border-image -o-keyframes +-o-object-fit +-o-object-position +-o-tab-size +-o-text-overflow +-o-transform +-o-transform-origin +-o-transition +-o-transition-delay +-o-transition-duration +-o-transition-timing-function -o-viewport +-webkit-align-content +-webkit-align-items +-webkit-align-self +-webkit-animation +-webkit-animation-delay +-webkit-animation-direction +-webkit-animation-duration +-webkit-animation-fill-mode +-webkit-animation-iteration-count +-webkit-animation-name +-webkit-animation-play-state +-webkit-animation-timing-function -webkit-any +-webkit-appearance +-webkit-backdrop-filter +-webkit-backface-visibility +-webkit-background-clip +-webkit-background-origin +-webkit-background-size +-webkit-border-after +-webkit-border-before +-webkit-border-bottom-left-radius +-webkit-border-bottom-right-radius +-webkit-border-end +-webkit-border-image +-webkit-border-radius +-webkit-border-start +-webkit-border-top-left-radius +-webkit-border-top-right-radius +-webkit-box-align +-webkit-box-decoration-break +-webkit-box-direction +-webkit-box-flex +-webkit-box-ordinal-group +-webkit-box-orient +-webkit-box-pack +-webkit-box-shadow +-webkit-box-sizing -webkit-calc +-webkit-clip-path +-webkit-column-break-after +-webkit-column-break-before +-webkit-column-break-inside +-webkit-column-count +-webkit-column-fill +-webkit-column-gap +-webkit-column-rule +-webkit-column-rule-color +-webkit-column-rule-style +-webkit-column-rule-width +-webkit-column-span +-webkit-column-width +-webkit-columns +-webkit-filter +-webkit-flex +-webkit-flex-basis +-webkit-flex-direction +-webkit-flex-flow +-webkit-flex-grow +-webkit-flex-shrink +-webkit-flex-wrap +-webkit-flow-from +-webkit-flow-into +-webkit-font-feature-settings +-webkit-font-kerning +-webkit-font-language-override +-webkit-font-variant-ligatures +-webkit-hyphens +-webkit-justify-content -webkit-keyframes -webkit-line-clamp +-webkit-margin-after +-webkit-margin-before +-webkit-margin-end +-webkit-margin-start +-webkit-mask +-webkit-mask-border-repeat +-webkit-mask-border-source +-webkit-mask-box-image +-webkit-mask-box-image-outset -webkit-mask-box-image-repeat +-webkit-mask-box-image-slice +-webkit-mask-box-image-width +-webkit-mask-clip +-webkit-mask-composite +-webkit-mask-image +-webkit-mask-origin +-webkit-mask-position -webkit-mask-repeat +-webkit-mask-size +-webkit-order +-webkit-padding-after +-webkit-padding-before +-webkit-padding-end +-webkit-padding-start +-webkit-perspective +-webkit-perspective-origin +-webkit-print-color-adjust +-webkit-region-fragment +-webkit-scroll-snap-coordinate +-webkit-scroll-snap-destination +-webkit-scroll-snap-points-x +-webkit-scroll-snap-points-y +-webkit-scroll-snap-type +-webkit-shape-image-threshold +-webkit-shape-margin +-webkit-shape-outside +-webkit-text-decoration +-webkit-text-decoration-color +-webkit-text-decoration-line +-webkit-text-decoration-skip +-webkit-text-decoration-skip-ink +-webkit-text-decoration-style +-webkit-text-emphasis +-webkit-text-emphasis-color +-webkit-text-emphasis-position +-webkit-text-emphasis-style +-webkit-text-orientation +-webkit-text-size-adjust +-webkit-transform +-webkit-transform-origin +-webkit-transform-style +-webkit-transition +-webkit-transition-delay +-webkit-transition-duration +-webkit-transition-property +-webkit-transition-timing-function +-webkit-user-select +-webkit-writing-mode AbortController AbortSignal AnalyserNode @@ -611,6 +852,7 @@ altGlyph altGlyphDef altGlyphItem alternate +alternate-reverse altglyph altglyphdef altglyphitem @@ -629,6 +871,7 @@ animation-duration animation-fill-mode animation-iteration-count animation-name +animation-play-state animation-timeline animation-timing-function annotation @@ -666,10 +909,12 @@ attributetype audio auto autocomplete +avoid await azimuth b backdrop-filter +backface-visibility background-attachment background-blend-mode background-clip @@ -705,9 +950,11 @@ body bold boolean border-block-color +border-block-end border-block-end-color border-block-end-style border-block-end-width +border-block-start border-block-start-color border-block-start-style border-block-start-width @@ -722,15 +969,18 @@ border-box border-collapse border-end-end-radius border-end-start-radius +border-image border-image-outset border-image-repeat border-image-slice border-image-source border-image-width border-inline-color +border-inline-end border-inline-end-color border-inline-end-style border-inline-end-width +border-inline-start border-inline-start-color border-inline-start-style border-inline-start-width @@ -739,6 +989,7 @@ border-inline-width border-left-color border-left-style border-left-width +border-radius border-right-color border-right-style border-right-width @@ -800,19 +1051,25 @@ col colgroup collection color +color-adjust color-index color-mix color-profile color-scheme cols colspan +column column-count +column-fill column-gap +column-reverse +column-rule column-rule-color column-rule-style column-rule-width column-span column-width +columns command concat const @@ -980,11 +1237,14 @@ flat flex flex-basis flex-direction +flex-flow flex-grow flex-shrink flex-wrap float flow +flow-from +flow-into flow-root font font-face @@ -1047,6 +1307,7 @@ grid-column-start grid-row-end grid-row-gap grid-row-start +grid-template grid-template-areas grid-template-columns grid-template-rows @@ -1178,6 +1439,7 @@ line-break line-clamp line-height line-height-step +line-through linear linearGradient lineargradient @@ -1224,6 +1486,7 @@ markerunits markerwidth marquee mask +mask-border mask-border-mode mask-border-outset mask-border-repeat @@ -1325,6 +1588,7 @@ number numoctaves object object-fit +object-position odd of offset-anchor @@ -1455,6 +1719,7 @@ overflow-block overflow-clip-margin overflow-inline overflow-wrap +overline override overscroll-behavior overscroll-behavior-block @@ -1497,6 +1762,7 @@ patterntransform patternunits pc perspective +perspective-origin picture ping place-content @@ -1524,6 +1790,7 @@ preservealpha preserveaspectratio primitiveUnits primitiveunits +print-color-adjust private process profile @@ -1547,6 +1814,7 @@ refX refY refx refy +region-fragment rel rem repeat @@ -1564,6 +1832,7 @@ requiredfeatures resize resolution return +reverse revert revert-layer rex @@ -1588,6 +1857,7 @@ rotatez round row row-gap +row-reverse rows rowspan rp @@ -1637,6 +1907,7 @@ scroll-padding-right scroll-padding-top scroll-snap-align scroll-snap-coordinate +scroll-snap-destination scroll-snap-points-x scroll-snap-points-y scroll-snap-stop @@ -1748,11 +2019,14 @@ template text text-align-last text-combine-upright +text-decoration text-decoration-color text-decoration-line +text-decoration-skip text-decoration-skip-ink text-decoration-style text-decoration-thickness +text-emphasis text-emphasis-color text-emphasis-position text-emphasis-style @@ -1762,6 +2036,8 @@ text-orientation text-overflow text-rendering text-shadow +text-size-adjust +text-spacing text-transform text-underline-offset text-underline-position @@ -1797,6 +2073,7 @@ transform transform-box transform-origin transform-style +transition transition-delay transition-duration transition-property @@ -1820,6 +2097,7 @@ u ul undefined under +underline unicode-bidi unique unknown @@ -1863,6 +2141,8 @@ woff2 word-break word-spacing word-wrap +wrap +wrap-reverse writing-mode x xChannelSelector diff --git a/crates/swc_css_parser/tests/recovery/vercel/004/span.swc-stderr b/crates/swc_css_parser/tests/recovery/vercel/004/span.swc-stderr index 6f06ca9808f3..44d42e2347d5 100644 --- a/crates/swc_css_parser/tests/recovery/vercel/004/span.swc-stderr +++ b/crates/swc_css_parser/tests/recovery/vercel/004/span.swc-stderr @@ -224,7 +224,7 @@ 5 | color: white; `---- - x Ident { value: Atom('border-radius' type=dynamic), raw: "border-radius" } + x Ident { value: Atom('border-radius' type=static), raw: "border-radius" } ,-[$DIR/tests/recovery/vercel/004/input.css:3:1] 3 | __ident__ 4 | border-radius: 7px; diff --git a/crates/swc_css_parser/tests/recovery/vercel/005/span.swc-stderr b/crates/swc_css_parser/tests/recovery/vercel/005/span.swc-stderr index 4a6e2949e60d..f66401190d13 100644 --- a/crates/swc_css_parser/tests/recovery/vercel/005/span.swc-stderr +++ b/crates/swc_css_parser/tests/recovery/vercel/005/span.swc-stderr @@ -168,7 +168,7 @@ 5 | color: white; `---- - x Ident { value: Atom('border-radius' type=dynamic), raw: "border-radius" } + x Ident { value: Atom('border-radius' type=static), raw: "border-radius" } ,-[$DIR/tests/recovery/vercel/005/input.css:3:1] 3 | __ident__ 4 | border-radius: 7px; diff --git a/crates/swc_css_prefixer/src/prefixer.rs b/crates/swc_css_prefixer/src/prefixer.rs index a8b006e779a9..bf6fb7193a55 100644 --- a/crates/swc_css_prefixer/src/prefixer.rs +++ b/crates/swc_css_prefixer/src/prefixer.rs @@ -1507,7 +1507,7 @@ impl VisitMut for Prefixer { }); let properties = Lazy::new(|| { - let mut properties: AHashSet<&str> = AHashSet::default(); + let mut properties: AHashSet<&JsWord> = AHashSet::default(); for declaration in declarations.iter() { if let DeclarationName::Ident(ident) = &declaration.name { @@ -1522,7 +1522,9 @@ impl VisitMut for Prefixer { // TODO avoid duplication insert macro_rules! add_declaration { ($prefix:expr,$property:expr, $value:expr) => {{ - if should_prefix($property, self.env, true) { + let property: JsWord = $property; + + if should_prefix(&*property, self.env, true) { // Use only specific prefix in prefixed at-rules or rule, i.e. // don't use `-moz` prefix for properties in `@-webkit-keyframes` at-rule if self.rule_prefix == Some($prefix) || self.rule_prefix.is_none() { @@ -1530,7 +1532,7 @@ impl VisitMut for Prefixer { if !properties.contains(&$property) { let name = DeclarationName::Ident(Ident { span: DUMMY_SP, - value: $property.into(), + value: property, raw: None, }); @@ -1564,10 +1566,12 @@ impl VisitMut for Prefixer { }}; ($property:expr, $value:expr) => {{ - if should_prefix($property, self.env, true) { + let property: JsWord = $property; + + if should_prefix(&*property, self.env, true) { let name = DeclarationName::Ident(Ident { span: DUMMY_SP, - value: $property.into(), + value: property, raw: None, }); @@ -1592,163 +1596,197 @@ impl VisitMut for Prefixer { }}; } - let property_name: &str = name; - - match property_name { - "appearance" => { - add_declaration!(Prefix::Webkit, "-webkit-appearance", None); - add_declaration!(Prefix::Moz, "-moz-appearance", None); - add_declaration!(Prefix::Ms, "-ms-appearance", None); + match *name { + js_word!("appearance") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-appearance"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-appearance"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-appearance"), None); } - "animation" => { + js_word!("animation") => { let need_prefix = n.value.iter().all(|n| match n { ComponentValue::Ident(ident) => !matches!( - &*ident.value.to_ascii_lowercase(), - "reverse" | "alternate-reverse" + ident.value.to_ascii_lowercase(), + js_word!("reverse") | js_word!("alternate-reverse") ), _ => true, }); if need_prefix { - add_declaration!(Prefix::Webkit, "-webkit-animation", None); - add_declaration!(Prefix::Moz, "-moz-animation", None); - add_declaration!(Prefix::O, "-o-animation", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-animation"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-animation"), None); + add_declaration!(Prefix::O, js_word!("-o-animation"), None); } } - "animation-name" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-name", None); - add_declaration!(Prefix::Moz, "-moz-animation-name", None); - add_declaration!(Prefix::O, "-o-animation-name", None); + js_word!("animation-name") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-animation-name"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-animation-name"), None); + add_declaration!(Prefix::O, js_word!("-o-animation-name"), None); } - "animation-duration" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-duration", None); - add_declaration!(Prefix::Moz, "-moz-animation-duration", None); - add_declaration!(Prefix::O, "-o-animation-duration", None); + js_word!("animation-duration") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-animation-duration"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-animation-duration"), None); + add_declaration!(Prefix::O, js_word!("-o-animation-duration"), None); } - "animation-delay" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-delay", None); - add_declaration!(Prefix::Moz, "-moz-animation-delay", None); - add_declaration!(Prefix::O, "-o-animation-delay", None); + js_word!("animation-delay") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-animation-delay"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-animation-delay"), None); + add_declaration!(Prefix::O, js_word!("-o-animation-delay"), None); } - "animation-direction" => { + js_word!("animation-direction") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "alternate-reverse" | "reverse" => {} + match ident.value.to_ascii_lowercase() { + js_word!("alternate-reverse") | js_word!("reverse") => {} _ => { - add_declaration!(Prefix::Webkit, "-webkit-animation-direction", None); - add_declaration!(Prefix::Moz, "-moz-animation-direction", None); - add_declaration!(Prefix::O, "-o-animation-direction", None); + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-animation-direction"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-animation-direction"), + None + ); + add_declaration!(Prefix::O, js_word!("-o-animation-direction"), None); } } } } - "animation-fill-mode" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-fill-mode", None); - add_declaration!(Prefix::Moz, "-moz-animation-fill-mode", None); - add_declaration!(Prefix::O, "-o-animation-fill-mode", None); + js_word!("animation-fill-mode") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-animation-fill-mode"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-animation-fill-mode"), None); + add_declaration!(Prefix::O, js_word!("-o-animation-fill-mode"), None); } - "animation-iteration-count" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-iteration-count", None); - add_declaration!(Prefix::Moz, "-moz-animation-iteration-count", None); - add_declaration!(Prefix::O, "-o-animation-iteration-count", None); + js_word!("animation-iteration-count") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-animation-iteration-count"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-animation-iteration-count"), + None + ); + add_declaration!(Prefix::O, js_word!("-o-animation-iteration-count"), None); } - "animation-play-state" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-play-state", None); - add_declaration!(Prefix::Moz, "-moz-animation-play-state", None); - add_declaration!(Prefix::O, "-o-animation-play-state", None); + js_word!("animation-play-state") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-animation-play-state"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-animation-play-state"), None); + add_declaration!(Prefix::O, js_word!("-o-animation-play-state"), None); } - "animation-timing-function" => { - add_declaration!(Prefix::Webkit, "-webkit-animation-timing-function", None); - add_declaration!(Prefix::Moz, "-moz-animation-timing-function", None); - add_declaration!(Prefix::O, "-o-animation-timing-function", None); + js_word!("animation-timing-function") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-animation-timing-function"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-animation-timing-function"), + None + ); + add_declaration!(Prefix::O, js_word!("-o-animation-timing-function"), None); } - "background-clip" => { + js_word!("background-clip") => { if let ComponentValue::Ident(ident) = &n.value[0] { - if &*ident.value.to_ascii_lowercase() == "text" { - add_declaration!(Prefix::Webkit, "-webkit-background-clip", None); + if ident.value.eq_ignore_ascii_case(&js_word!("text")) { + add_declaration!(Prefix::Webkit, js_word!("-webkit-background-clip"), None); } } } - "box-decoration-break" => { - add_declaration!(Prefix::Webkit, "-webkit-box-decoration-break", None); + js_word!("box-decoration-break") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-box-decoration-break"), + None + ); } - "box-sizing" => { - add_declaration!(Prefix::Webkit, "-webkit-box-sizing", None); - add_declaration!(Prefix::Moz, "-moz-box-sizing", None); + js_word!("box-sizing") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-box-sizing"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-box-sizing"), None); } - "color-adjust" => { - add_declaration!(Prefix::Webkit, "-webkit-print-color-adjust", None); + js_word!("color-adjust") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-print-color-adjust"), None); } - "print-color-adjust" => { - add_declaration!(Prefix::Moz, "color-adjust", None); - add_declaration!(Prefix::Webkit, "-webkit-print-color-adjust", None); + js_word!("print-color-adjust") => { + add_declaration!(Prefix::Moz, js_word!("color-adjust"), None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-print-color-adjust"), None); } - "columns" => { - add_declaration!(Prefix::Webkit, "-webkit-columns", None); - add_declaration!(Prefix::Moz, "-moz-columns", None); + js_word!("columns") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-columns"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-columns"), None); } - "column-width" => { - add_declaration!(Prefix::Webkit, "-webkit-column-width", None); - add_declaration!(Prefix::Moz, "-moz-column-width", None); + js_word!("column-width") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-width"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-width"), None); } - "column-gap" => { - add_declaration!(Prefix::Webkit, "-webkit-column-gap", None); - add_declaration!(Prefix::Moz, "-moz-column-gap", None); + js_word!("column-gap") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-gap"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-gap"), None); } - "column-rule" => { - add_declaration!(Prefix::Webkit, "-webkit-column-rule", None); - add_declaration!(Prefix::Moz, "-moz-column-rule", None); + js_word!("column-rule") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-rule"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-rule"), None); } - "column-rule-color" => { - add_declaration!(Prefix::Webkit, "-webkit-column-rule-color", None); - add_declaration!(Prefix::Moz, "-moz-column-rule-color", None); + js_word!("column-rule-color") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-rule-color"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-rule-color"), None); } - "column-rule-width" => { - add_declaration!(Prefix::Webkit, "-webkit-column-rule-width", None); - add_declaration!(Prefix::Moz, "-moz-column-rule-width", None); + js_word!("column-rule-width") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-rule-width"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-rule-width"), None); } - "column-count" => { - add_declaration!(Prefix::Webkit, "-webkit-column-count", None); - add_declaration!(Prefix::Moz, "-moz-column-count", None); + js_word!("column-count") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-count"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-count"), None); } - "column-rule-style" => { - add_declaration!(Prefix::Webkit, "-webkit-column-rule-style", None); - add_declaration!(Prefix::Moz, "-moz-column-rule-style", None); + js_word!("column-rule-style") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-rule-style"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-rule-style"), None); } - "column-span" => { - add_declaration!(Prefix::Webkit, "-webkit-column-span", None); - add_declaration!(Prefix::Moz, "-moz-column-span", None); + js_word!("column-span") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-span"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-span"), None); } - "column-fill" => { - add_declaration!(Prefix::Webkit, "-webkit-column-fill", None); - add_declaration!(Prefix::Moz, "-moz-column-fill", None); + js_word!("column-fill") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-column-fill"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-column-fill"), None); } - "cursor" => { + js_word!("cursor") => { if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { if should_prefix("-o-repeating-radial-gradient()", self.env, false) { replace_ident(&mut webkit_value, "zoom-in", "-webkit-zoom-in"); @@ -1786,7 +1824,7 @@ impl VisitMut for Prefixer { } } - "display" => { + js_word!("display") => { if n.value.len() == 1 { if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { let mut old_spec_webkit_value = webkit_value.clone(); @@ -1852,112 +1890,112 @@ impl VisitMut for Prefixer { (&js_word!("block"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("block")] })) ); } (&js_word!("block"), &js_word!("flow-root")) | (&js_word!("flow-root"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("flow-root")] })) ); } (&js_word!("inline"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline")] })) ); } (&js_word!("inline"), &js_word!("flow-root")) | (&js_word!("flow-root"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline-block")] })) ); } (&js_word!("run-in"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("run-in")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("run-in")] })) ); } (&js_word!("block"), &js_word!("flex")) | (&js_word!("flex"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("flex")] })) ); } (&js_word!("inline"), &js_word!("flex")) | (&js_word!("flex"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline-flex")] })) ); } (&js_word!("block"), &js_word!("grid")) | (&js_word!("grid"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("grid")] })) ); } (&js_word!("inline"), &js_word!("grid")) | (&js_word!("grid"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline-grid")] })) ); } (&js_word!("inline"), &js_word!("ruby")) | (&js_word!("ruby"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("ruby")] })) ); } (&js_word!("block"), &js_word!("table")) | (&js_word!("table"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("table")] })) ); } (&js_word!("inline"), &js_word!("table")) | (&js_word!("table"), &js_word!("inline")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline-table")] })) ); } (&js_word!("table-cell"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("table-cell")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("table-cell")] })) ); } (&js_word!("table-caption"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("table-caption")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("table-caption")] })) ); } (&js_word!("ruby-base"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("ruby-base")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("ruby-base")] })) ); } (&js_word!("ruby-text"), &js_word!("flow")) | (&js_word!("flow"), &js_word!("ruby-text")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("ruby-text")] })) ); } @@ -1981,7 +2019,7 @@ impl VisitMut for Prefixer { | (&js_word!("flow"), &js_word!("block"), &js_word!("list-item")) | (&js_word!("flow"), &js_word!("list-item"), &js_word!("block")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("list-item")] })) ); } @@ -1992,7 +2030,7 @@ impl VisitMut for Prefixer { | (&js_word!("list-item"), &js_word!("flow"), &js_word!("inline")) | (&js_word!("list-item"), &js_word!("inline"), &js_word!("flow")) => { add_declaration!( - "display", + js_word!("display"), Some(Box::new(|| { vec![to_ident!("inline"), to_ident!("list-item")] })) @@ -2004,10 +2042,10 @@ impl VisitMut for Prefixer { } } - "flex" => { + js_word!("flex") => { let spec_2009_value = match n.value.get(0) { Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("none") => + if ident.value.eq_ignore_ascii_case(&js_word!("none")) => { Some(ComponentValue::Integer(Box::new(Integer { span: ident.span, @@ -2016,7 +2054,7 @@ impl VisitMut for Prefixer { }))) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("auto") => + if ident.value.eq_ignore_ascii_case(&js_word!("auto")) => { Some(ComponentValue::Integer(Box::new(Integer { span: ident.span, @@ -2031,29 +2069,29 @@ impl VisitMut for Prefixer { if let Some(spec_2009_value) = &spec_2009_value { add_declaration!( Prefix::Webkit, - "-webkit-box-flex", + js_word!("-webkit-box-flex"), Some(Box::new(|| { vec![spec_2009_value.clone()] })) ); } else { - add_declaration!(Prefix::Webkit, "-webkit-box-flex", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-box-flex"), None); } - add_declaration!(Prefix::Webkit, "-webkit-flex", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex"), None); if let Some(spec_2009_value) = &spec_2009_value { add_declaration!( Prefix::Moz, - "-moz-box-flex", + js_word!("-moz-box-flex"), Some(Box::new(|| { vec![spec_2009_value.clone()] })) ); } else { - add_declaration!(Prefix::Webkit, "-moz-box-flex", None); + add_declaration!(Prefix::Webkit, js_word!("-moz-box-flex"), None); } if n.value.len() == 3 { add_declaration!( Prefix::Ms, - "-ms-flex", + js_word!("-ms-flex"), Some(Box::new(|| { let mut value = ms_value.clone(); @@ -2084,46 +2122,48 @@ impl VisitMut for Prefixer { })) ); } else { - add_declaration!(Prefix::Ms, "-ms-flex", None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex"), None); } } - "flex-grow" => { - add_declaration!(Prefix::Webkit, "-webkit-box-flex", None); - add_declaration!(Prefix::Webkit, "-webkit-flex-grow", None); - add_declaration!(Prefix::Moz, "-moz-box-flex", None); - add_declaration!(Prefix::Ms, "-ms-flex-positive", None); + js_word!("flex-grow") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-box-flex"), None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-grow"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-box-flex"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-positive"), None); } - "flex-shrink" => { - add_declaration!(Prefix::Webkit, "-webkit-flex-shrink", None); - add_declaration!(Prefix::Ms, "-ms-flex-negative", None); + js_word!("flex-shrink") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-shrink"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-negative"), None); } - "flex-basis" => { - add_declaration!(Prefix::Webkit, "-webkit-flex-basis", None); - add_declaration!(Prefix::Ms, "-ms-flex-preferred-size", None); + js_word!("flex-basis") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-basis"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-preferred-size"), None); } - "flex-direction" => { + js_word!("flex-direction") => { let old_values = match n.value.get(0) { Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("row") => + if ident.value.eq_ignore_ascii_case(&js_word!("row")) => { Some(("horizontal", "normal")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("column") => + if ident.value.eq_ignore_ascii_case(&js_word!("column")) => { Some(("vertical", "normal")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("row-reverse") => + if ident.value.eq_ignore_ascii_case(&js_word!("row-reverse")) => { Some(("horizontal", "reverse")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("column-reverse") => + if ident + .value + .eq_ignore_ascii_case(&js_word!("column-reverse")) => { Some(("vertical", "reverse")) } @@ -2133,44 +2173,44 @@ impl VisitMut for Prefixer { if let Some((orient, direction)) = old_values { add_declaration!( Prefix::Webkit, - "-webkit-box-orient", + js_word!("-webkit-box-orient"), Some(Box::new(|| { vec![to_ident!(orient)] })) ); add_declaration!( Prefix::Webkit, - "-webkit-box-direction", + js_word!("-webkit-box-direction"), Some(Box::new(|| { vec![to_ident!(direction)] })) ); } - add_declaration!(Prefix::Webkit, "-webkit-flex-direction", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-direction"), None); if let Some((orient, direction)) = old_values { add_declaration!( Prefix::Moz, - "-moz-box-orient", + js_word!("-moz-box-orient"), Some(Box::new(|| { vec![to_ident!(orient)] })) ); add_declaration!( Prefix::Webkit, - "-moz-box-direction", + js_word!("-moz-box-direction"), Some(Box::new(|| { vec![to_ident!(direction)] })) ); } - add_declaration!(Prefix::Ms, "-ms-flex-direction", None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-direction"), None); } - "flex-wrap" => { - add_declaration!(Prefix::Webkit, "-webkit-flex-wrap", None); - add_declaration!(Prefix::Ms, "-ms-flex-wrap", None); + js_word!("flex-wrap") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-wrap"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-wrap"), None); } - "flex-flow" => { + js_word!("flex-flow") => { let is_single_flex_wrap = matches!(n.value.get(0), Some(ComponentValue::Ident(box Ident { value, .. })) if n.value.len() == 1 && matches!( - &*value.to_ascii_lowercase(), - "wrap" | "nowrap" | "wrap-reverse" + value.to_ascii_lowercase(), + js_word!("wrap") | js_word!("nowrap") | js_word!("wrap-reverse") )); let old_values = match is_single_flex_wrap { @@ -2178,22 +2218,24 @@ impl VisitMut for Prefixer { _ => { let get_old_values = |index: usize| match n.value.get(index) { Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("row") => + if ident.value.eq_ignore_ascii_case(&js_word!("row")) => { Some(("horizontal", "normal")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("column") => + if ident.value.eq_ignore_ascii_case(&js_word!("column")) => { Some(("vertical", "normal")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("row-reverse") => + if ident.value.eq_ignore_ascii_case(&js_word!("row-reverse")) => { Some(("horizontal", "reverse")) } Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("column-reverse") => + if ident + .value + .eq_ignore_ascii_case(&js_word!("column-reverse")) => { Some(("vertical", "reverse")) } @@ -2207,41 +2249,44 @@ impl VisitMut for Prefixer { if let Some((orient, direction)) = old_values { add_declaration!( Prefix::Webkit, - "-webkit-box-orient", + js_word!("-webkit-box-orient"), Some(Box::new(|| { vec![to_ident!(orient)] })) ); add_declaration!( Prefix::Webkit, - "-webkit-box-direction", + js_word!("-webkit-box-direction"), Some(Box::new(|| { vec![to_ident!(direction)] })) ); } - add_declaration!(Prefix::Webkit, "-webkit-flex-flow", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-flex-flow"), None); if let Some((orient, direction)) = old_values { add_declaration!( Prefix::Moz, - "-moz-box-orient", + js_word!("-moz-box-orient"), Some(Box::new(|| { vec![to_ident!(orient)] })) ); add_declaration!( Prefix::Moz, - "-moz-box-direction", + js_word!("-moz-box-direction"), Some(Box::new(|| { vec![to_ident!(direction)] })) ); } - add_declaration!(Prefix::Ms, "-ms-flex-flow", None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-flow"), None); } - "justify-content" => { - let need_old_spec = !matches!(n.value.get(0), Some(ComponentValue::Ident(box Ident { value, .. })) if value.as_ref().eq_ignore_ascii_case("space-around")); + js_word!("justify-content") => { + let need_old_spec = !matches!( + n.value.get(0), + Some(ComponentValue::Ident(box Ident { value, .. })) if value.eq_ignore_ascii_case(&js_word!("space-around")) + ); if need_old_spec { add_declaration!( Prefix::Webkit, - "-webkit-box-pack", + js_word!("-webkit-box-pack"), Some(Box::new(|| { let mut old_spec_webkit_new_value = webkit_value.clone(); @@ -2258,12 +2303,12 @@ impl VisitMut for Prefixer { ); } - add_declaration!(Prefix::Webkit, "-webkit-justify-content", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-justify-content"), None); if need_old_spec { add_declaration!( Prefix::Moz, - "-moz-box-pack", + js_word!("-moz-box-pack"), Some(Box::new(|| { let mut old_spec_moz_value = moz_value.clone(); @@ -2278,7 +2323,7 @@ impl VisitMut for Prefixer { add_declaration!( Prefix::Ms, - "-ms-flex-pack", + js_word!("-ms-flex-pack"), Some(Box::new(|| { let mut old_spec_ms_value = ms_value.clone(); @@ -2292,7 +2337,7 @@ impl VisitMut for Prefixer { ); } - "opacity" if should_prefix("opacity", self.env, true) => { + js_word!("opacity") if should_prefix("opacity", self.env, true) => { let old_value = match n.value.get(0) { Some(ComponentValue::Percentage(percentage)) => Some(percentage.value.value), _ => None, @@ -2302,13 +2347,13 @@ impl VisitMut for Prefixer { let rounded_alpha = (old_value * 1000.0).round() / 100000.0; add_declaration!( - "opacity", + js_word!("opacity"), Some(Box::new(|| { vec![to_number!(rounded_alpha)] })) ); } } - "order" => { + js_word!("order") => { let old_spec_num = match n.value.get(0) { Some(ComponentValue::Integer(integer)) => Some(integer.value + 1), _ => None, @@ -2318,37 +2363,41 @@ impl VisitMut for Prefixer { Some(old_spec_num) if n.value.len() == 1 => { add_declaration!( Prefix::Webkit, - "-webkit-box-ordinal-group", + js_word!("-webkit-box-ordinal-group"), Some(Box::new(|| { vec![to_integer!(old_spec_num)] })) ); } _ => { - add_declaration!(Prefix::Webkit, "-webkit-box-ordinal-group", None); + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-box-ordinal-group"), + None + ); } } - add_declaration!(Prefix::Webkit, "-webkit-order", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-order"), None); match old_spec_num { Some(old_spec_num) if n.value.len() == 1 => { add_declaration!( Prefix::Moz, - "-moz-box-ordinal-group", + js_word!("-moz-box-ordinal-group"), Some(Box::new(|| { vec![to_integer!(old_spec_num)] })) ); } _ => { - add_declaration!(Prefix::Webkit, "-moz-box-ordinal-group", None); + add_declaration!(Prefix::Webkit, js_word!("-moz-box-ordinal-group"), None); } } - add_declaration!(Prefix::Ms, "-ms-flex-order", None); + add_declaration!(Prefix::Ms, js_word!("-ms-flex-order"), None); } - "align-items" => { + js_word!("align-items") => { add_declaration!( Prefix::Webkit, - "-webkit-box-align", + js_word!("-webkit-box-align"), Some(Box::new(|| { let mut old_spec_webkit_new_value = webkit_value.clone(); @@ -2358,10 +2407,10 @@ impl VisitMut for Prefixer { old_spec_webkit_new_value })) ); - add_declaration!(Prefix::Webkit, "-webkit-align-items", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-align-items"), None); add_declaration!( Prefix::Moz, - "-moz-box-align", + js_word!("-moz-box-align"), Some(Box::new(|| { let mut old_spec_moz_value = moz_value.clone(); @@ -2373,7 +2422,7 @@ impl VisitMut for Prefixer { ); add_declaration!( Prefix::Ms, - "-ms-flex-align", + js_word!("-ms-flex-align"), Some(Box::new(|| { let mut old_spec_ms_value = ms_value.clone(); @@ -2385,11 +2434,11 @@ impl VisitMut for Prefixer { ); } - "align-self" => { - add_declaration!(Prefix::Webkit, "-webkit-align-self", None); + js_word!("align-self") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-align-self"), None); add_declaration!( Prefix::Ms, - "-ms-flex-item-align", + js_word!("-ms-flex-item-align"), Some(Box::new(|| { let mut spec_2012_ms_value = ms_value.clone(); @@ -2401,11 +2450,11 @@ impl VisitMut for Prefixer { ); } - "align-content" => { - add_declaration!(Prefix::Webkit, "-webkit-align-content", None); + js_word!("align-content") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-align-content"), None); add_declaration!( Prefix::Ms, - "-ms-flex-line-pack", + js_word!("-ms-flex-line-pack"), Some(Box::new(|| { let mut spec_2012_ms_value = ms_value.clone(); @@ -2419,7 +2468,7 @@ impl VisitMut for Prefixer { ); } - "image-rendering" => { + js_word!("image-rendering") => { if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { if should_prefix("-webkit-optimize-contrast:fallback", self.env, false) { // Fallback to nearest-neighbor algorithm @@ -2459,147 +2508,163 @@ impl VisitMut for Prefixer { if !ms_value.eq_ignore_span(&old_spec_ms_value) { add_declaration!( Prefix::Ms, - "-ms-interpolation-mode", + js_word!("-ms-interpolation-mode"), Some(Box::new(|| { old_spec_ms_value.clone() })) ); } } } - "filter" => match &n.value[0] { + js_word!("filter") => match &n.value[0] { ComponentValue::PreservedToken(_) => {} ComponentValue::Function(function) - if function.name.value.as_ref().eq_ignore_ascii_case("alpha") => {} + if function.name.value.eq_ignore_ascii_case(&js_word!("alpha")) => {} _ => { - add_declaration!(Prefix::Webkit, "-webkit-filter", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-filter"), None); } }, - "backdrop-filter" => { - add_declaration!(Prefix::Webkit, "-webkit-backdrop-filter", None); + js_word!("backdrop-filter") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-backdrop-filter"), None); } - "mask-clip" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-clip", None); + js_word!("mask-clip") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-clip"), None); } // Fix me https://github.com/postcss/autoprefixer/blob/main/lib/hacks/mask-composite.js - "mask-composite" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-composite", None); + js_word!("mask-composite") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-composite"), None); } - "mask-image" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-image", None); + js_word!("mask-image") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-image"), None); } - "mask-origin" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-origin", None); + js_word!("mask-origin") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-origin"), None); } - "mask-repeat" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-repeat", None); + js_word!("mask-repeat") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-repeat"), None); } - "mask-border-repeat" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-border-repeat", None); + js_word!("mask-border-repeat") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-border-repeat"), None); } - "mask-border-source" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-border-source", None); + js_word!("mask-border-source") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-border-source"), None); } - "mask" => { - add_declaration!(Prefix::Webkit, "-webkit-mask", None); + js_word!("mask") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask"), None); } - "mask-position" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-position", None); + js_word!("mask-position") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-position"), None); } - "mask-size" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-size", None); + js_word!("mask-size") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-size"), None); } - "mask-border" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-box-image", None); + js_word!("mask-border") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-mask-box-image"), None); } - "mask-border-outset" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-box-image-outset", None); + js_word!("mask-border-outset") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-mask-box-image-outset"), + None + ); } - "mask-border-width" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-box-image-width", None); + js_word!("mask-border-width") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-mask-box-image-width"), + None + ); } - "mask-border-slice" => { - add_declaration!(Prefix::Webkit, "-webkit-mask-box-image-slice", None); + js_word!("mask-border-slice") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-mask-box-image-slice"), + None + ); } - "border-inline-start" => { - add_declaration!(Prefix::Webkit, "-webkit-border-start", None); - add_declaration!(Prefix::Moz, "-moz-border-start", None); + js_word!("border-inline-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-start"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-border-start"), None); } - "border-inline-end" => { - add_declaration!(Prefix::Webkit, "-webkit-border-end", None); - add_declaration!(Prefix::Moz, "-moz-border-end", None); + js_word!("border-inline-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-end"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-border-end"), None); } - "margin-inline-start" => { - add_declaration!(Prefix::Webkit, "-webkit-margin-start", None); - add_declaration!(Prefix::Moz, "-moz-margin-start", None); + js_word!("margin-inline-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-margin-start"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-margin-start"), None); } - "margin-inline-end" => { - add_declaration!(Prefix::Webkit, "-webkit-margin-end", None); - add_declaration!(Prefix::Moz, "-moz-margin-end", None); + js_word!("margin-inline-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-margin-end"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-margin-end"), None); } - "padding-inline-start" => { - add_declaration!(Prefix::Webkit, "-webkit-padding-start", None); - add_declaration!(Prefix::Moz, "-moz-padding-start", None); + js_word!("padding-inline-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-padding-start"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-padding-start"), None); } - "padding-inline-end" => { - add_declaration!(Prefix::Webkit, "-webkit-padding-end", None); - add_declaration!(Prefix::Moz, "-moz-padding-end", None); + js_word!("padding-inline-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-padding-end"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-padding-end"), None); } - "border-block-start" => { - add_declaration!(Prefix::Webkit, "-webkit-border-before", None); + js_word!("border-block-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-before"), None); } - "border-block-end" => { - add_declaration!(Prefix::Webkit, "-webkit-border-after", None); + js_word!("border-block-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-after"), None); } - "margin-block-start" => { - add_declaration!(Prefix::Webkit, "-webkit-margin-before", None); + js_word!("margin-block-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-margin-before"), None); } - "margin-block-end" => { - add_declaration!(Prefix::Webkit, "-webkit-margin-after", None); + js_word!("margin-block-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-margin-after"), None); } - "padding-block-start" => { - add_declaration!(Prefix::Webkit, "-webkit-padding-before", None); + js_word!("padding-block-start") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-padding-before"), None); } - "padding-block-end" => { - add_declaration!(Prefix::Webkit, "-webkit-padding-after", None); + js_word!("padding-block-end") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-padding-after"), None); } - "backface-visibility" => { - add_declaration!(Prefix::Webkit, "-webkit-backface-visibility", None); - add_declaration!(Prefix::Moz, "-moz-backface-visibility", None); + js_word!("backface-visibility") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-backface-visibility"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-backface-visibility"), None); } - "clip-path" => { - add_declaration!(Prefix::Webkit, "-webkit-clip-path", None); + js_word!("clip-path") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-clip-path"), None); } - "position" if n.value.len() == 1 => { + js_word!("position") if n.value.len() == 1 => { if should_prefix("-webkit-sticky", self.env, false) && (self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none()) { @@ -2607,30 +2672,30 @@ impl VisitMut for Prefixer { } } - "user-select" => { - add_declaration!(Prefix::Webkit, "-webkit-user-select", None); - add_declaration!(Prefix::Moz, "-moz-user-select", None); + js_word!("user-select") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-user-select"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-user-select"), None); if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "contain" => { + match ident.value.to_ascii_lowercase() { + js_word!("contain") => { add_declaration!( Prefix::Ms, - "-ms-user-select", + js_word!("-ms-user-select"), Some(Box::new(|| { vec![to_ident!("element")] })) ); } - "all" => {} + js_word!("all") => {} _ => { - add_declaration!(Prefix::Ms, "-ms-user-select", None); + add_declaration!(Prefix::Ms, js_word!("-ms-user-select"), None); } } } } - "transform" => { - add_declaration!(Prefix::Webkit, "-webkit-transform", None); - add_declaration!(Prefix::Moz, "-moz-transform", None); + js_word!("transform") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-transform"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-transform"), None); let has_3d_function = n.value.iter().any(|n| match n { ComponentValue::Function(function) @@ -2655,99 +2720,119 @@ impl VisitMut for Prefixer { if !has_3d_function { if !self.in_keyframe_block { - add_declaration!(Prefix::Ms, "-ms-transform", None); + add_declaration!(Prefix::Ms, js_word!("-ms-transform"), None); } - add_declaration!(Prefix::O, "-o-transform", None); + add_declaration!(Prefix::O, js_word!("-o-transform"), None); } } - "transform-origin" => { - add_declaration!(Prefix::Webkit, "-webkit-transform-origin", None); - add_declaration!(Prefix::Moz, "-moz-transform-origin", None); + js_word!("transform-origin") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-transform-origin"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-transform-origin"), None); if !self.in_keyframe_block { - add_declaration!(Prefix::Ms, "-ms-transform-origin", None); + add_declaration!(Prefix::Ms, js_word!("-ms-transform-origin"), None); } - add_declaration!(Prefix::O, "-o-transform-origin", None); + add_declaration!(Prefix::O, js_word!("-o-transform-origin"), None); } - "transform-style" => { - add_declaration!(Prefix::Webkit, "-webkit-transform-style", None); - add_declaration!(Prefix::Moz, "-moz-transform-style", None); + js_word!("transform-style") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-transform-style"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-transform-style"), None); } - "perspective" => { - add_declaration!(Prefix::Webkit, "-webkit-perspective", None); - add_declaration!(Prefix::Moz, "-moz-perspective", None); + js_word!("perspective") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-perspective"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-perspective"), None); } - "perspective-origin" => { - add_declaration!(Prefix::Webkit, "-webkit-perspective-origin", None); - add_declaration!(Prefix::Moz, "-moz-perspective-origin", None); + js_word!("perspective-origin") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-perspective-origin"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-perspective-origin"), None); } - "text-decoration" => { + js_word!("text-decoration") => { if n.value.len() == 1 { match &n.value[0] { ComponentValue::Ident(ident) if matches!( - &*ident.value.to_ascii_lowercase(), - "none" - | "underline" - | "overline" - | "line-through" - | "blink" - | "inherit" - | "initial" - | "revert" - | "unset" + ident.value.to_ascii_lowercase(), + js_word!("none") + | js_word!("underline") + | js_word!("overline") + | js_word!("line-through") + | js_word!("blink") + | js_word!("inherit") + | js_word!("initial") + | js_word!("revert") + | js_word!("unset") ) => {} _ => { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration", None); - add_declaration!(Prefix::Moz, "-moz-text-decoration", None); + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-decoration"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-text-decoration"), None); } } } else { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration", None); - add_declaration!(Prefix::Moz, "-moz-text-decoration", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-text-decoration"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-text-decoration"), None); } } - "text-decoration-style" => { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration-style", None); - add_declaration!(Prefix::Moz, "-moz-text-decoration-style", None); + js_word!("text-decoration-style") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-decoration-style"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-text-decoration-style"), None); } - "text-decoration-color" => { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration-color", None); - add_declaration!(Prefix::Moz, "-moz-text-decoration-color", None); + js_word!("text-decoration-color") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-decoration-color"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-text-decoration-color"), None); } - "text-decoration-line" => { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration-line", None); - add_declaration!(Prefix::Moz, "-moz-text-decoration-line", None); + js_word!("text-decoration-line") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-decoration-line"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-text-decoration-line"), None); } - "text-decoration-skip" => { - add_declaration!(Prefix::Webkit, "-webkit-text-decoration-skip", None); + js_word!("text-decoration-skip") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-decoration-skip"), + None + ); } - "text-decoration-skip-ink" => { + js_word!("text-decoration-skip-ink") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "auto" => { + match ident.value.to_ascii_lowercase() { + js_word!("auto") => { add_declaration!( Prefix::Webkit, - "-webkit-text-decoration-skip", + js_word!("-webkit-text-decoration-skip"), Some(Box::new(|| { vec![to_ident!("ink")] })) ); } _ => { add_declaration!( Prefix::Webkit, - "-webkit-text-decoration-skip-ink", + js_word!("-webkit-text-decoration-skip-ink"), None ); } @@ -2755,19 +2840,23 @@ impl VisitMut for Prefixer { } } - "text-size-adjust" if n.value.len() == 1 => { + js_word!("text-size-adjust") if n.value.len() == 1 => { if let ComponentValue::Ident(ident) = &n.value[0] { - if &*ident.value.to_ascii_lowercase() == "none" { - add_declaration!(Prefix::Webkit, "-webkit-text-size-adjust", None); - add_declaration!(Prefix::Moz, "-moz-text-size-adjust", None); - add_declaration!(Prefix::Ms, "-ms-text-size-adjust", None); + if ident.value.eq_ignore_ascii_case(&js_word!("none")) { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-size-adjust"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-text-size-adjust"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-text-size-adjust"), None); } } } // TODO improve me for `filter` values https://github.com/postcss/autoprefixer/blob/main/test/cases/transition.css#L6 // TODO https://github.com/postcss/autoprefixer/blob/main/lib/transition.js - "transition" => { + js_word!("transition") => { if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { if should_prefix("-webkit-transform", self.env, false) { replace_ident(&mut webkit_value, "transform", "-webkit-transform"); @@ -2778,7 +2867,7 @@ impl VisitMut for Prefixer { } } - add_declaration!(Prefix::Webkit, "-webkit-transition", None); + add_declaration!(Prefix::Webkit, js_word!("-webkit-transition"), None); if should_prefix("-moz-transform", self.env, false) && (self.rule_prefix == Some(Prefix::Moz) || self.rule_prefix.is_none()) @@ -2786,7 +2875,7 @@ impl VisitMut for Prefixer { replace_ident(&mut moz_value, "transform", "-moz-transform"); } - add_declaration!(Prefix::Moz, "-moz-transition", None); + add_declaration!(Prefix::Moz, js_word!("-moz-transition"), None); if should_prefix("-o-transform", self.env, false) && (self.rule_prefix == Some(Prefix::O) || self.rule_prefix.is_none()) @@ -2794,10 +2883,10 @@ impl VisitMut for Prefixer { replace_ident(&mut o_value, "transform", "-o-transform"); } - add_declaration!(Prefix::O, "-o-transition", None); + add_declaration!(Prefix::O, js_word!("-o-transition"), None); } - "transition-property" => { + js_word!("transition-property") => { if should_prefix("-webkit-transform", self.env, false) && (self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none()) { @@ -2822,39 +2911,59 @@ impl VisitMut for Prefixer { replace_ident(&mut o_value, "transform", "-o-transform"); } - add_declaration!(Prefix::Webkit, "-webkit-transition-property", None); - add_declaration!(Prefix::Moz, "-moz-transition-timing-function", None); - add_declaration!(Prefix::O, "-o-transition-timing-function", None); + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-transition-property"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-transition-timing-function"), + None + ); + add_declaration!(Prefix::O, js_word!("-o-transition-timing-function"), None); } - "transition-duration" => { - add_declaration!(Prefix::Webkit, "-webkit-transition-duration", None); - add_declaration!(Prefix::Moz, "-moz-transition-duration", None); - add_declaration!(Prefix::O, "-o-transition-duration", None); + js_word!("transition-duration") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-transition-duration"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-transition-duration"), None); + add_declaration!(Prefix::O, js_word!("-o-transition-duration"), None); } - "transition-delay" => { - add_declaration!(Prefix::Webkit, "-webkit-transition-delay", None); - add_declaration!(Prefix::Moz, "-moz-transition-delay", None); - add_declaration!(Prefix::O, "-o-transition-delay", None); + js_word!("transition-delay") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-transition-delay"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-transition-delay"), None); + add_declaration!(Prefix::O, js_word!("-o-transition-delay"), None); } - "transition-timing-function" => { - add_declaration!(Prefix::Webkit, "-webkit-transition-timing-function", None); - add_declaration!(Prefix::Moz, "-moz-transition-timing-function", None); - add_declaration!(Prefix::O, "-o-transition-timing-function", None); + js_word!("transition-timing-function") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-transition-timing-function"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-transition-timing-function"), + None + ); + add_declaration!(Prefix::O, js_word!("-o-transition-timing-function"), None); } - "writing-mode" if n.value.len() == 1 => { + js_word!("writing-mode") if n.value.len() == 1 => { let direction = match declarations.iter().rev().find(|declaration| { matches!(&****declaration, Declaration { name: DeclarationName::Ident(Ident { value, .. }), .. - } if value.as_ref().eq_ignore_ascii_case("direction")) + } if value.eq_ignore_ascii_case(&js_word!("direction"))) }) { Some(box Declaration { value, .. }) => match value.get(0) { Some(ComponentValue::Ident(ident)) - if ident.value.as_ref().eq_ignore_ascii_case("rtl") => + if ident.value.eq_ignore_ascii_case(&js_word!("rtl")) => { Some("rtl") } @@ -2864,22 +2973,26 @@ impl VisitMut for Prefixer { }; if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "vertical-lr" => { - add_declaration!(Prefix::Webkit, "-webkit-writing-mode", None); + match ident.value.to_ascii_lowercase() { + js_word!("vertical-lr") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-writing-mode"), + None + ); match direction { Some("ltr") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("tb-lr")] })) ); } Some("rtl") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("bt-lr")] })) ); } @@ -2887,21 +3000,25 @@ impl VisitMut for Prefixer { } } - "vertical-rl" => { - add_declaration!(Prefix::Webkit, "-webkit-writing-mode", None); + js_word!("vertical-rl") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-writing-mode"), + None + ); match direction { Some("ltr") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("tb-rl")] })) ); } Some("rtl") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("bt-rl")] })) ); } @@ -2909,21 +3026,25 @@ impl VisitMut for Prefixer { } } - "horizontal-tb" => { - add_declaration!(Prefix::Webkit, "-webkit-writing-mode", None); + js_word!("horizontal-tb") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-writing-mode"), + None + ); match direction { Some("ltr") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("lr-tb")] })) ); } Some("rtl") => { add_declaration!( Prefix::Ms, - "-ms-writing-mode", + js_word!("-ms-writing-mode"), Some(Box::new(|| { vec![to_ident!("rl-tb")] })) ); } @@ -2931,44 +3052,52 @@ impl VisitMut for Prefixer { } } - "sideways-rl" | "sideways-lr" => { - add_declaration!(Prefix::Webkit, "-webkit-writing-mode", None); + js_word!("sideways-rl") | js_word!("sideways-lr") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-writing-mode"), + None + ); } _ => { - add_declaration!(Prefix::Webkit, "-webkit-writing-mode", None); - add_declaration!(Prefix::Ms, "-ms-writing-mode", None); + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-writing-mode"), + None + ); + add_declaration!(Prefix::Ms, js_word!("-ms-writing-mode"), None); } } } } - "width" - | "min-width" - | "max-width" - | "height" - | "min-height" - | "max-height" - | "inline-size" - | "min-inline-size" - | "max-inline-size" - | "block-size" - | "min-block-size" - | "max-block-size" - | "grid" - | "grid-template" - | "grid-template-rows" - | "grid-template-columns" - | "grid-auto-columns" - | "grid-auto-rows" => { + js_word!("width") + | js_word!("min-width") + | js_word!("max-width") + | js_word!("height") + | js_word!("min-height") + | js_word!("max-height") + | js_word!("inline-size") + | js_word!("min-inline-size") + | js_word!("max-inline-size") + | js_word!("block-size") + | js_word!("min-block-size") + | js_word!("max-block-size") + | js_word!("grid") + | js_word!("grid-template") + | js_word!("grid-template-rows") + | js_word!("grid-template-columns") + | js_word!("grid-auto-columns") + | js_word!("grid-auto-rows") => { let is_grid_property = matches!( - property_name, - "grid" - | "grid-template" - | "grid-template-rows" - | "grid-template-columns" - | "grid-auto-columns" - | "grid-auto-rows" + *name, + js_word!("grid") + | js_word!("grid-template") + | js_word!("grid-template-rows") + | js_word!("grid-template-columns") + | js_word!("grid-auto-columns") + | js_word!("grid-auto-rows") ); if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { @@ -3018,10 +3147,10 @@ impl VisitMut for Prefixer { } } - "touch-action" => { + js_word!("touch-action") => { add_declaration!( Prefix::Ms, - "-ms-touch-action", + js_word!("-ms-touch-action"), Some(Box::new(|| { let mut new_ms_value = ms_value.clone(); @@ -3057,14 +3186,14 @@ impl VisitMut for Prefixer { })) ); - add_declaration!(Prefix::Ms, "-ms-touch-action", None); + add_declaration!(Prefix::Ms, js_word!("-ms-touch-action"), None); } - "text-orientation" => { - add_declaration!(Prefix::Webkit, "-webkit-text-orientation", None); + js_word!("text-orientation") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-text-orientation"), None); } - "unicode-bidi" => { + js_word!("unicode-bidi") => { if self.rule_prefix == Some(Prefix::Webkit) || self.rule_prefix.is_none() { if should_prefix("-moz-isolate", self.env, false) { replace_ident(&mut moz_value, "isolate", "-moz-isolate"); @@ -3096,202 +3225,254 @@ impl VisitMut for Prefixer { } } - "text-spacing" => { - add_declaration!(Prefix::Ms, "-ms-text-spacing", None); + js_word!("text-spacing") => { + add_declaration!(Prefix::Ms, js_word!("-ms-text-spacing"), None); } - "text-emphasis" => { - add_declaration!(Prefix::Webkit, "-webkit-text-emphasis", None); + js_word!("text-emphasis") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-text-emphasis"), None); } - "text-emphasis-position" => { - add_declaration!(Prefix::Webkit, "-webkit-text-emphasis-position", None); + js_word!("text-emphasis-position") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-emphasis-position"), + None + ); } - "text-emphasis-style" => { - add_declaration!(Prefix::Webkit, "-webkit-text-emphasis-style", None); + js_word!("text-emphasis-style") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-emphasis-style"), + None + ); } - "text-emphasis-color" => { - add_declaration!(Prefix::Webkit, "-webkit-text-emphasis-color", None); + js_word!("text-emphasis-color") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-text-emphasis-color"), + None + ); } - "flow-into" => { - add_declaration!(Prefix::Webkit, "-webkit-flow-into", None); - add_declaration!(Prefix::Ms, "-ms-flow-into", None); + js_word!("flow-into") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-flow-into"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flow-into"), None); } - "flow-from" => { - add_declaration!(Prefix::Webkit, "-webkit-flow-from", None); - add_declaration!(Prefix::Ms, "-ms-flow-from", None); + js_word!("flow-from") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-flow-from"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-flow-from"), None); } - "region-fragment" => { - add_declaration!(Prefix::Webkit, "-webkit-region-fragment", None); - add_declaration!(Prefix::Ms, "-ms-region-fragment", None); + js_word!("region-fragment") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-region-fragment"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-region-fragment"), None); } - "scroll-snap-type" => { - add_declaration!(Prefix::Webkit, "-webkit-scroll-snap-type", None); - add_declaration!(Prefix::Ms, "-ms-scroll-snap-type", None); + js_word!("scroll-snap-type") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-scroll-snap-type"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-snap-type"), None); } - "scroll-snap-coordinate" => { - add_declaration!(Prefix::Webkit, "-webkit-scroll-snap-coordinate", None); - add_declaration!(Prefix::Ms, "-ms-scroll-snap-coordinate", None); + js_word!("scroll-snap-coordinate") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-scroll-snap-coordinate"), + None + ); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-snap-coordinate"), None); } - "scroll-snap-destination" => { - add_declaration!(Prefix::Webkit, "-webkit-scroll-snap-destination", None); - add_declaration!(Prefix::Ms, "-ms-scroll-snap-destination", None); + js_word!("scroll-snap-destination") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-scroll-snap-destination"), + None + ); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-snap-destination"), None); } - "scroll-snap-points-x" => { - add_declaration!(Prefix::Webkit, "-webkit-scroll-snap-points-x", None); - add_declaration!(Prefix::Ms, "-ms-scroll-snap-points-x", None); + js_word!("scroll-snap-points-x") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-scroll-snap-points-x"), + None + ); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-snap-points-x"), None); } - "scroll-snap-points-y" => { - add_declaration!(Prefix::Webkit, "-webkit-scroll-snap-points-y", None); - add_declaration!(Prefix::Ms, "-ms-scroll-snap-points-y", None); + js_word!("scroll-snap-points-y") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-scroll-snap-points-y"), + None + ); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-snap-points-y"), None); } - "text-align-last" => { - add_declaration!(Prefix::Moz, "-moz-text-align-last", None); + js_word!("text-align-last") => { + add_declaration!(Prefix::Moz, js_word!("-moz-text-align-last"), None); } - "text-overflow" => { - add_declaration!(Prefix::O, "-o-text-overflow", None); + js_word!("text-overflow") => { + add_declaration!(Prefix::O, js_word!("-o-text-overflow"), None); } - "shape-margin" => { - add_declaration!(Prefix::Webkit, "-webkit-shape-margin", None); + js_word!("shape-margin") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-shape-margin"), None); } - "shape-outside" => { - add_declaration!(Prefix::Webkit, "-webkit-shape-outside", None); + js_word!("shape-outside") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-shape-outside"), None); } - "shape-image-threshold" => { - add_declaration!(Prefix::Webkit, "-webkit-shape-image-threshold", None); + js_word!("shape-image-threshold") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-shape-image-threshold"), + None + ); } - "object-fit" => { - add_declaration!(Prefix::O, "-o-object-fit", None); + js_word!("object-fit") => { + add_declaration!(Prefix::O, js_word!("-o-object-fit"), None); } - "object-position" => { - add_declaration!(Prefix::O, "-o-object-position", None); + js_word!("object-position") => { + add_declaration!(Prefix::O, js_word!("-o-object-position"), None); } - "overflow-wrap" => { - add_declaration!("word-wrap", None); + js_word!("overflow-wrap") => { + add_declaration!(js_word!("word-wrap"), None); } - "tab-size" => { - add_declaration!(Prefix::Moz, "-moz-tab-size", None); - add_declaration!(Prefix::O, "-o-tab-size", None); + js_word!("tab-size") => { + add_declaration!(Prefix::Moz, js_word!("-moz-tab-size"), None); + add_declaration!(Prefix::O, js_word!("-o-tab-size"), None); } - "hyphens" => { - add_declaration!(Prefix::Webkit, "-webkit-hyphens", None); - add_declaration!(Prefix::Moz, "-moz-hyphens", None); - add_declaration!(Prefix::Ms, "-ms-hyphens", None); + js_word!("hyphens") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-hyphens"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-hyphens"), None); + add_declaration!(Prefix::Ms, js_word!("-ms-hyphens"), None); } - "border-image" => { - add_declaration!(Prefix::Webkit, "-webkit-border-image", None); - add_declaration!(Prefix::Moz, "-moz-border-image", None); - add_declaration!(Prefix::O, "-o-border-image", None); + js_word!("border-image") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-image"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-border-image"), None); + add_declaration!(Prefix::O, js_word!("-o-border-image"), None); } - "font-kerning" => { - add_declaration!(Prefix::Webkit, "-webkit-font-kerning", None); + js_word!("font-kerning") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-font-kerning"), None); } - "font-feature-settings" => { - add_declaration!(Prefix::Webkit, "-webkit-font-feature-settings", None); - add_declaration!(Prefix::Moz, "-moz-font-feature-settings", None); + js_word!("font-feature-settings") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-font-feature-settings"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-font-feature-settings"), None); } - "font-variant-ligatures" => { - add_declaration!(Prefix::Webkit, "-webkit-font-variant-ligatures", None); - add_declaration!(Prefix::Moz, "-moz-font-variant-ligatures", None); + js_word!("font-variant-ligatures") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-font-variant-ligatures"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-font-variant-ligatures"), None); } - "font-language-override" => { - add_declaration!(Prefix::Webkit, "-webkit-font-language-override", None); - add_declaration!(Prefix::Moz, "-moz-font-language-override", None); + js_word!("font-language-override") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-font-language-override"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-font-language-override"), None); } - "background-origin" => { - add_declaration!(Prefix::Webkit, "-webkit-background-origin", None); - add_declaration!(Prefix::Moz, "-moz-background-origin", None); - add_declaration!(Prefix::O, "-o-background-origin", None); + js_word!("background-origin") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-background-origin"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-background-origin"), None); + add_declaration!(Prefix::O, js_word!("-o-background-origin"), None); } - "background-size" => { - add_declaration!(Prefix::Webkit, "-webkit-background-size", None); - add_declaration!(Prefix::Moz, "-moz-background-size", None); - add_declaration!(Prefix::O, "-o-background-size", None); + js_word!("background-size") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-background-size"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-background-size"), None); + add_declaration!(Prefix::O, js_word!("-o-background-size"), None); } - "overscroll-behavior" => { + js_word!("overscroll-behavior") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "auto" => { + match ident.value.to_ascii_lowercase() { + js_word!("auto") => { add_declaration!( Prefix::Ms, - "-ms-scroll-chaining", + js_word!("-ms-scroll-chaining"), Some(Box::new(|| { vec![to_ident!("chained")] })) ); } - "none" | "contain" => { + js_word!("none") | js_word!("contain") => { add_declaration!( Prefix::Ms, - "-ms-scroll-chaining", + js_word!("-ms-scroll-chaining"), Some(Box::new(|| { vec![to_ident!("none")] })) ); } _ => { - add_declaration!(Prefix::Ms, "-ms-scroll-chaining", None); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-chaining"), None); } } } else { - add_declaration!(Prefix::Ms, "-ms-scroll-chaining", None); + add_declaration!(Prefix::Ms, js_word!("-ms-scroll-chaining"), None); } } - "box-shadow" => { - add_declaration!(Prefix::Webkit, "-webkit-box-shadow", None); - add_declaration!(Prefix::Moz, "-moz-box-shadow", None); + js_word!("box-shadow") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-box-shadow"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-box-shadow"), None); } - "forced-color-adjust" => { - add_declaration!(Prefix::Ms, "-ms-high-contrast-adjust", None); + js_word!("forced-color-adjust") => { + add_declaration!(Prefix::Ms, js_word!("-ms-high-contrast-adjust"), None); } - "break-inside" => { + js_word!("break-inside") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "auto" | "avoid" => { - add_declaration!(Prefix::Webkit, "-webkit-column-break-inside", None); + match ident.value.to_ascii_lowercase() { + js_word!("auto") | js_word!("avoid") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-column-break-inside"), + None + ); } _ => {} } } } - "break-before" => { + js_word!("break-before") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "auto" | "avoid" => { - add_declaration!(Prefix::Webkit, "-webkit-column-break-before", None); + match ident.value.to_ascii_lowercase() { + js_word!("auto") | js_word!("avoid") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-column-break-before"), + None + ); } - "column" => { + js_word!("column") => { add_declaration!( Prefix::Webkit, - "-webkit-column-break-before", + js_word!("-webkit-column-break-before"), Some(Box::new(|| { vec![to_ident!("always")] })) ); } @@ -3300,16 +3481,20 @@ impl VisitMut for Prefixer { } } - "break-after" => { + js_word!("break-after") => { if let ComponentValue::Ident(ident) = &n.value[0] { - match &*ident.value.to_ascii_lowercase() { - "auto" | "avoid" => { - add_declaration!(Prefix::Webkit, "-webkit-column-break-after", None); + match ident.value.to_ascii_lowercase() { + js_word!("auto") | js_word!("avoid") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-column-break-after"), + None + ); } - "column" => { + js_word!("column") => { add_declaration!( Prefix::Webkit, - "-webkit-column-break-after", + js_word!("-webkit-column-break-after"), Some(Box::new(|| { vec![to_ident!("always")] })) ); } @@ -3318,32 +3503,52 @@ impl VisitMut for Prefixer { } } - "border-radius" => { - add_declaration!(Prefix::Webkit, "-webkit-border-radius", None); - add_declaration!(Prefix::Moz, "-moz-border-radius", None); + js_word!("border-radius") => { + add_declaration!(Prefix::Webkit, js_word!("-webkit-border-radius"), None); + add_declaration!(Prefix::Moz, js_word!("-moz-border-radius"), None); } - "border-top-left-radius" => { - add_declaration!(Prefix::Webkit, "-webkit-border-top-left-radius", None); - add_declaration!(Prefix::Moz, "-moz-border-radius-topleft", None); + js_word!("border-top-left-radius") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-border-top-left-radius"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-border-radius-topleft"), None); } - "border-top-right-radius" => { - add_declaration!(Prefix::Webkit, "-webkit-border-top-right-radius", None); - add_declaration!(Prefix::Moz, "-moz-border-radius-topright", None); + js_word!("border-top-right-radius") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-border-top-right-radius"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-border-radius-topright"), None); } - "border-bottom-right-radius" => { - add_declaration!(Prefix::Webkit, "-webkit-border-bottom-right-radius", None); - add_declaration!(Prefix::Moz, "-moz-border-radius-bottomright", None); + js_word!("border-bottom-right-radius") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-border-bottom-right-radius"), + None + ); + add_declaration!( + Prefix::Moz, + js_word!("-moz-border-radius-bottomright"), + None + ); } - "border-bottom-left-radius" => { - add_declaration!(Prefix::Webkit, "-webkit-border-bottom-left-radius", None); - add_declaration!(Prefix::Moz, "-moz-border-radius-bottomleft", None); + js_word!("border-bottom-left-radius") => { + add_declaration!( + Prefix::Webkit, + js_word!("-webkit-border-bottom-left-radius"), + None + ); + add_declaration!(Prefix::Moz, js_word!("-moz-border-radius-bottomleft"), None); } - "src" if should_prefix("font-face-format-ident", self.env, true) => { + js_word!("src") if should_prefix("font-face-format-ident", self.env, true) => { let mut new_declaration = n.clone(); font_face_format_old_syntax(&mut new_declaration);