swc_css_minifier/compressor/
angle.rs1use swc_atoms::atom;
2use swc_css_ast::*;
3use swc_css_utils::angle_to_deg;
4
5use super::Compressor;
6
7impl Compressor {
8 pub(super) fn compress_angle_in_component_value(
9 &mut self,
10 component_value: &mut ComponentValue,
11 ) {
12 if !self.ctx.in_transform_function {
13 return;
14 }
15
16 if let Some(span) = component_value
17 .as_dimension()
18 .and_then(|dimension| dimension.as_angle())
19 .filter(|angle| angle.value.value == 0.0)
20 .map(|angle| angle.span)
21 {
22 *component_value = ComponentValue::Number(Box::new(Number {
23 span,
24 value: 0.0,
25 raw: None,
26 }));
27 }
28 }
29
30 pub(super) fn compress_angle(&mut self, angle: &mut Angle) {
31 if self.ctx.in_keyframe_block {
32 return;
33 }
34
35 let deg = angle_to_deg(angle.value.value, &angle.unit.value);
36
37 if deg.fract() != 0.0 {
38 return;
39 }
40
41 angle.value = Number {
42 value: deg,
43 raw: None,
44 span: angle.span,
45 };
46
47 angle.unit = Ident {
48 span: angle.unit.span,
49 value: atom!("deg"),
50 raw: None,
51 };
52 }
53}