diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2024-08-30 17:21:18 +0800 |
| commit | efbc2ffe6a1ee5ec38a4396305561d6515d0943e (patch) | |
| tree | 2b4c94f18f2c792dfda813050755d5c0273fae22 /node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js | |
| parent | 43acceb75957c880a5ba5a31aae221394a36d5f6 (diff) | |
node fixes, updates
Diffstat (limited to 'node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js')
| -rw-r--r-- | node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js b/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js new file mode 100644 index 00000000..0e60346a --- /dev/null +++ b/node_modules/clean-css/lib/optimizer/level-1/value-optimizers/zero.js @@ -0,0 +1,49 @@ +var split = require('../../../utils/split'); + +var ANY_FUNCTION_PATTERN = /^(-(?:moz|ms|o|webkit)-[a-z-]+|[a-z-]+)\((.+)\)$/; +var SKIP_FUNCTION_PATTERN = /^(?:-moz-calc|-webkit-calc|calc|rgb|hsl|rgba|hsla|min|max|clamp|expression)\(/; +var TOKEN_SEPARATOR_PATTERN = /([\s,/])/; + +function removeRecursively(value, options) { + var functionTokens; + var tokens; + + if (SKIP_FUNCTION_PATTERN.test(value)) { + return value; + } + + functionTokens = ANY_FUNCTION_PATTERN.exec(value); + + if (!functionTokens) { + return removeZeros(value, options); + } + + tokens = split(functionTokens[2], TOKEN_SEPARATOR_PATTERN) + .map(function(token) { return removeRecursively(token, options); }); + + return functionTokens[1] + '(' + tokens.join('') + ')'; +} + +function removeZeros(value, options) { + return value + .replace(options.unitsRegexp, '$10$2') + .replace(options.unitsRegexp, '$10$2'); +} + +var plugin = { + level1: { + value: function zero(name, value, options) { + if (!options.compatibility.properties.zeroUnits) { + return value; + } + + if (value.indexOf('%') > 0 && (name == 'height' || name == 'max-height' || name == 'width' || name == 'max-width')) { + return value; + } + + return removeRecursively(value, options); + } + } +}; + +module.exports = plugin; |
