swc_css_compat/compiler/
color_alpha_parameter.rs1use swc_atoms::atom;
2use swc_css_ast::{AbsoluteColorBase, ComponentValue, FunctionName};
3
4use crate::compiler::Compiler;
5
6impl Compiler {
7 pub(crate) fn process_color_alpha_parameter(&mut self, n: &mut AbsoluteColorBase) {
8 if let AbsoluteColorBase::Function(function) = n {
9 if let Some(ComponentValue::AlphaValue(_) | ComponentValue::Function(_)) =
10 function.value.last()
11 {
12 let name = match &mut function.name {
13 FunctionName::Ident(name) => name,
14 _ => {
15 return;
16 }
17 };
18
19 if name.value.eq_ignore_ascii_case("rgb") {
20 name.value = atom!("rgba");
21 name.raw = None;
22 } else if name.value.eq_ignore_ascii_case("hsl") {
23 name.value = atom!("hsla");
24 name.raw = None;
25 }
26 } else {
27 let name = match &mut function.name {
28 FunctionName::Ident(name) => name,
29 _ => {
30 return;
31 }
32 };
33
34 if name.value.eq_ignore_ascii_case("rgba") {
35 name.value = atom!("rgb");
36 name.raw = None;
37 } else if name.value.eq_ignore_ascii_case("hsla") {
38 name.value = atom!("hsl");
39 name.raw = None;
40 }
41 }
42 }
43 }
44}