summaryrefslogtreecommitdiff
path: root/node_modules/svgo/plugins/cleanupListOfValues.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:10:59 +0800
committerlittleblack111 <littleblack11111@gmail.com>2026-05-18 23:41:44 +0800
commitfc87c009806dcc98867f6b58efe29b042aa01dee (patch)
tree8f59b3f4a5b66e9dfef2d40c8d318e258a521228 /node_modules/svgo/plugins/cleanupListOfValues.js
parent3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff)
node: updatemain
Diffstat (limited to 'node_modules/svgo/plugins/cleanupListOfValues.js')
-rw-r--r--node_modules/svgo/plugins/cleanupListOfValues.js147
1 files changed, 0 insertions, 147 deletions
diff --git a/node_modules/svgo/plugins/cleanupListOfValues.js b/node_modules/svgo/plugins/cleanupListOfValues.js
deleted file mode 100644
index 618fd062..00000000
--- a/node_modules/svgo/plugins/cleanupListOfValues.js
+++ /dev/null
@@ -1,147 +0,0 @@
-'use strict';
-
-const { removeLeadingZero } = require('../lib/svgo/tools.js');
-
-exports.name = 'cleanupListOfValues';
-exports.description = 'rounds list of values to the fixed precision';
-
-const regNumericValues =
- /^([-+]?\d*\.?\d+([eE][-+]?\d+)?)(px|pt|pc|mm|cm|m|in|ft|em|ex|%)?$/;
-const regSeparator = /\s+,?\s*|,\s*/;
-const absoluteLengths = {
- // relative to px
- cm: 96 / 2.54,
- mm: 96 / 25.4,
- in: 96,
- pt: 4 / 3,
- pc: 16,
- px: 1,
-};
-
-/**
- * Round list of values to the fixed precision.
- *
- * @example
- * <svg viewBox="0 0 200.28423 200.28423" enable-background="new 0 0 200.28423 200.28423">
- * ⬇
- * <svg viewBox="0 0 200.284 200.284" enable-background="new 0 0 200.284 200.284">
- *
- * <polygon points="208.250977 77.1308594 223.069336 ... "/>
- * ⬇
- * <polygon points="208.251 77.131 223.069 ... "/>
- *
- * @author kiyopikko
- *
- * @type {import('./plugins-types').Plugin<'cleanupListOfValues'>}
- */
-exports.fn = (_root, params) => {
- const {
- floatPrecision = 3,
- leadingZero = true,
- defaultPx = true,
- convertToPx = true,
- } = params;
-
- /**
- * @type {(lists: string) => string}
- */
- const roundValues = (lists) => {
- const roundedList = [];
-
- for (const elem of lists.split(regSeparator)) {
- const match = elem.match(regNumericValues);
- const matchNew = elem.match(/new/);
-
- // 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 = '';
- }
-
- roundedList.push(str + units);
- }
- // if attribute value is "new"(only enable-background).
- else if (matchNew) {
- roundedList.push('new');
- } else if (elem) {
- roundedList.push(elem);
- }
- }
-
- return roundedList.join(' ');
- };
-
- return {
- element: {
- enter: (node) => {
- if (node.attributes.points != null) {
- node.attributes.points = roundValues(node.attributes.points);
- }
-
- if (node.attributes['enable-background'] != null) {
- node.attributes['enable-background'] = roundValues(
- node.attributes['enable-background'],
- );
- }
-
- if (node.attributes.viewBox != null) {
- node.attributes.viewBox = roundValues(node.attributes.viewBox);
- }
-
- if (node.attributes['stroke-dasharray'] != null) {
- node.attributes['stroke-dasharray'] = roundValues(
- node.attributes['stroke-dasharray'],
- );
- }
-
- if (node.attributes.dx != null) {
- node.attributes.dx = roundValues(node.attributes.dx);
- }
-
- if (node.attributes.dy != null) {
- node.attributes.dy = roundValues(node.attributes.dy);
- }
-
- if (node.attributes.x != null) {
- node.attributes.x = roundValues(node.attributes.x);
- }
-
- if (node.attributes.y != null) {
- node.attributes.y = roundValues(node.attributes.y);
- }
- },
- },
- };
-};