swc_css_compat/compiler/
color_alpha_parameter.rs

1use 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}