1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 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
- };
- }
- };
|