1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
| var packNumber = require('./Number').pack;
| var MATH_FUNCTIONS = {
| 'calc': true,
| 'min': true,
| 'max': true,
| 'clamp': true
| };
| var LENGTH_UNIT = {
| // absolute length units
| 'px': true,
| 'mm': true,
| 'cm': true,
| 'in': true,
| 'pt': true,
| 'pc': true,
|
| // relative length units
| 'em': true,
| 'ex': true,
| 'ch': true,
| 'rem': true,
|
| // viewport-percentage lengths
| 'vh': true,
| 'vw': true,
| 'vmin': true,
| 'vmax': true,
| 'vm': true
| };
|
| module.exports = function compressDimension(node, item) {
| var value = packNumber(node.value, item);
|
| node.value = value;
|
| if (value === '0' && this.declaration !== null && this.atrulePrelude === null) {
| var unit = node.unit.toLowerCase();
|
| // only length values can be compressed
| if (!LENGTH_UNIT.hasOwnProperty(unit)) {
| return;
| }
|
| // issue #362: shouldn't remove unit in -ms-flex since it breaks flex in IE10/11
| // issue #200: shouldn't remove unit in flex since it breaks flex in IE10/11
| if (this.declaration.property === '-ms-flex' ||
| this.declaration.property === 'flex') {
| return;
| }
|
| // issue #222: don't remove units inside calc
| if (this.function && MATH_FUNCTIONS.hasOwnProperty(this.function.name)) {
| return;
| }
|
| item.data = {
| type: 'Number',
| loc: node.loc,
| value: value
| };
| }
| };
|
|