Files
T
Tim van der Lippe d8dbc41c38 Update build optimization packages
This updates Rollup, SVGO and clean-css. Only clean-css had reported
breaking changes, but we are not affected (Node compatibility removals
and changes to features we don't use).

R=jacktfranklin@chromium.org

Bug: none
Change-Id: I94c293e128d1ddb81f12036421a715da210e7633
Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/3060704
Commit-Queue: Tim van der Lippe <tvanderlippe@chromium.org>
Reviewed-by: Paul Lewis <aerotwist@chromium.org>
2021-07-30 10:46:16 +00:00

50 lines
1.3 KiB
JavaScript

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, '$1' + '0' + '$2')
.replace(options.unitsRegexp, '$1' + '0' + '$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;