diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
| commit | c06f7ee0a40255214c477e13d9b956a7e07c2900 (patch) | |
| tree | f5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/csso/cjs/replace/Dimension.cjs | |
| parent | 3fd9400d4dccc25aa29b5702216732e0b7542073 (diff) | |
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/csso/cjs/replace/Dimension.cjs')
| -rw-r--r-- | node_modules/csso/cjs/replace/Dimension.cjs | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/node_modules/csso/cjs/replace/Dimension.cjs b/node_modules/csso/cjs/replace/Dimension.cjs new file mode 100644 index 00000000..20ad193c --- /dev/null +++ b/node_modules/csso/cjs/replace/Dimension.cjs @@ -0,0 +1,67 @@ +'use strict'; + +const _Number = require('./Number.cjs'); + +const MATH_FUNCTIONS = new Set([ + 'calc', + 'min', + 'max', + 'clamp' +]); +const LENGTH_UNIT = new Set([ + // absolute length units + 'px', + 'mm', + 'cm', + 'in', + 'pt', + 'pc', + + // relative length units + 'em', + 'ex', + 'ch', + 'rem', + + // viewport-percentage lengths + 'vh', + 'vw', + 'vmin', + 'vmax', + 'vm' +]); + +function compressDimension(node, item) { + const value = _Number.packNumber(node.value); + + node.value = value; + + if (value === '0' && this.declaration !== null && this.atrulePrelude === null) { + const unit = node.unit.toLowerCase(); + + // only length values can be compressed + if (!LENGTH_UNIT.has(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.has(this.function.name)) { + return; + } + + item.data = { + type: 'Number', + loc: node.loc, + value + }; + } +} + +module.exports = compressDimension; |
