diff options
Diffstat (limited to 'node_modules/csso/lib/compressor/compress/Dimension.js')
| -rw-r--r-- | node_modules/csso/lib/compressor/compress/Dimension.js | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/node_modules/csso/lib/compressor/compress/Dimension.js b/node_modules/csso/lib/compressor/compress/Dimension.js new file mode 100644 index 00000000..e614ad08 --- /dev/null +++ b/node_modules/csso/lib/compressor/compress/Dimension.js @@ -0,0 +1,54 @@ +var packNumber = require('./Number.js').pack; +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); + + node.value = value; + + if (value === '0' && this.declaration) { + var unit = node.unit.toLowerCase(); + + // only length values can be compressed + if (!LENGTH_UNIT.hasOwnProperty(unit)) { + return; + } + + // issue #200: don't remove units in flex property as it could change value meaning + if (this.declaration.property.name === 'flex') { + return; + } + + // issue #222: don't remove units inside calc + if (this['function'] && this['function'].name === 'calc') { + return; + } + + item.data = { + type: 'Number', + info: node.info, + value: value + }; + } +}; |
