diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:10:59 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2026-05-18 23:41:44 +0800 |
| commit | fc87c009806dcc98867f6b58efe29b042aa01dee (patch) | |
| tree | 8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/svgo/plugins/cleanupNumericValues.js | |
| parent | 3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff) | |
node: updatemain
Diffstat (limited to 'node_modules/svgo/plugins/cleanupNumericValues.js')
| -rw-r--r-- | node_modules/svgo/plugins/cleanupNumericValues.js | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/node_modules/svgo/plugins/cleanupNumericValues.js b/node_modules/svgo/plugins/cleanupNumericValues.js deleted file mode 100644 index 9b782c3d..00000000 --- a/node_modules/svgo/plugins/cleanupNumericValues.js +++ /dev/null @@ -1,106 +0,0 @@ -'use strict'; - -const { removeLeadingZero } = require('../lib/svgo/tools'); - -exports.name = 'cleanupNumericValues'; -exports.description = - 'rounds numeric values to the fixed precision, removes default ‘px’ units'; - -const regNumericValues = - /^([-+]?\d*\.?\d+([eE][-+]?\d+)?)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/; - -const absoluteLengths = { - // relative to px - cm: 96 / 2.54, - mm: 96 / 25.4, - in: 96, - pt: 4 / 3, - pc: 16, - px: 1, -}; - -/** - * Round numeric values to the fixed precision, - * remove default 'px' units. - * - * @author Kir Belevich - * - * @type {import('./plugins-types').Plugin<'cleanupNumericValues'>} - */ -exports.fn = (_root, params) => { - const { - floatPrecision = 3, - leadingZero = true, - defaultPx = true, - convertToPx = true, - } = params; - - return { - element: { - enter: (node) => { - if (node.attributes.viewBox != null) { - const nums = node.attributes.viewBox.split(/\s,?\s*|,\s*/g); - node.attributes.viewBox = nums - .map((value) => { - const num = Number(value); - return Number.isNaN(num) - ? value - : Number(num.toFixed(floatPrecision)); - }) - .join(' '); - } - - for (const [name, value] of Object.entries(node.attributes)) { - // The `version` attribute is a text string and cannot be rounded - if (name === 'version') { - continue; - } - - const match = value.match(regNumericValues); - - // if attribute value matches regNumericValues - if (match) { - // round it to the fixed precision - let num = Number(Number(match[1]).toFixed(floatPrecision)); - /** - * @type {any} - */ - let matchedUnit = match[3] || ''; - /** - * @type{'' | keyof typeof absoluteLengths} - */ - let units = matchedUnit; - - // convert absolute values to pixels - if (convertToPx && units !== '' && units in absoluteLengths) { - const pxNum = Number( - (absoluteLengths[units] * Number(match[1])).toFixed( - floatPrecision, - ), - ); - if (pxNum.toString().length < match[0].length) { - num = pxNum; - units = 'px'; - } - } - - // and remove leading zero - let str; - if (leadingZero) { - str = removeLeadingZero(num); - } else { - str = num.toString(); - } - - // remove default 'px' units - if (defaultPx && units === 'px') { - units = ''; - } - - node.attributes[name] = str + units; - } - } - }, - }, - }; -}; |
