summaryrefslogtreecommitdiff
path: root/node_modules/postcss-minify-gradients/src
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/postcss-minify-gradients/src
parent3336b2356ee6152d9c6ae59bd9b87ccbc0958407 (diff)
node: updatemain
Diffstat (limited to 'node_modules/postcss-minify-gradients/src')
-rw-r--r--node_modules/postcss-minify-gradients/src/index.js224
-rw-r--r--node_modules/postcss-minify-gradients/src/isColorStop.js62
2 files changed, 0 insertions, 286 deletions
diff --git a/node_modules/postcss-minify-gradients/src/index.js b/node_modules/postcss-minify-gradients/src/index.js
deleted file mode 100644
index a04ce12a..00000000
--- a/node_modules/postcss-minify-gradients/src/index.js
+++ /dev/null
@@ -1,224 +0,0 @@
-'use strict';
-const valueParser = require('postcss-value-parser');
-const { getArguments } = require('cssnano-utils');
-const isColorStop = require('./isColorStop.js');
-
-const angles = {
- top: '0deg',
- right: '90deg',
- bottom: '180deg',
- left: '270deg',
-};
-
-/**
- * @param {valueParser.Dimension} a
- * @param {valueParser.Dimension} b
- * @return {boolean}
- */
-function isLessThan(a, b) {
- return (
- a.unit.toLowerCase() === b.unit.toLowerCase() &&
- parseFloat(a.number) >= parseFloat(b.number)
- );
-}
-/**
- * @param {import('postcss').Declaration} decl
- * @return {void}
- */
-function optimise(decl) {
- const value = decl.value;
-
- if (!value) {
- return;
- }
-
- const normalizedValue = value.toLowerCase();
-
- if (normalizedValue.includes('var(') || normalizedValue.includes('env(')) {
- return;
- }
-
- if (!normalizedValue.includes('gradient')) {
- return;
- }
-
- decl.value = valueParser(value)
- .walk((node) => {
- if (node.type !== 'function' || !node.nodes.length) {
- return false;
- }
-
- const lowerCasedValue = node.value.toLowerCase();
-
- if (
- lowerCasedValue === 'linear-gradient' ||
- lowerCasedValue === 'repeating-linear-gradient' ||
- lowerCasedValue === '-webkit-linear-gradient' ||
- lowerCasedValue === '-webkit-repeating-linear-gradient'
- ) {
- let args = getArguments(node);
-
- if (
- node.nodes[0].value.toLowerCase() === 'to' &&
- args[0].length === 3
- ) {
- node.nodes = node.nodes.slice(2);
- node.nodes[0].value =
- angles[
- /** @type {'top'|'right'|'bottom'|'left'}*/ (
- node.nodes[0].value.toLowerCase()
- )
- ];
- }
-
- /** @type {valueParser.Dimension | false} */
- let lastStop;
-
- args.forEach((arg, index) => {
- if (arg.length !== 3) {
- return;
- }
-
- let isFinalStop = index === args.length - 1;
- let thisStop = valueParser.unit(arg[2].value);
-
- if (lastStop === undefined) {
- lastStop = thisStop;
-
- if (
- !isFinalStop &&
- lastStop &&
- lastStop.number === '0' &&
- lastStop.unit.toLowerCase() !== 'deg'
- ) {
- arg[1].value = arg[2].value = '';
- }
-
- return;
- }
-
- if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
- arg[2].value = '0';
- }
-
- lastStop = thisStop;
-
- if (isFinalStop && arg[2].value === '100%') {
- arg[1].value = arg[2].value = '';
- }
- });
-
- return false;
- }
-
- if (
- lowerCasedValue === 'radial-gradient' ||
- lowerCasedValue === 'repeating-radial-gradient'
- ) {
- let args = getArguments(node);
- /** @type {valueParser.Dimension | false} */
- let lastStop;
-
- const hasAt = args[0].find((n) => n.value.toLowerCase() === 'at');
-
- args.forEach((arg, index) => {
- if (!arg[2] || (!index && hasAt)) {
- return;
- }
-
- let thisStop = valueParser.unit(arg[2].value);
-
- if (!lastStop) {
- lastStop = thisStop;
-
- return;
- }
-
- if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
- arg[2].value = '0';
- }
-
- lastStop = thisStop;
- });
-
- return false;
- }
-
- if (
- lowerCasedValue === '-webkit-radial-gradient' ||
- lowerCasedValue === '-webkit-repeating-radial-gradient'
- ) {
- let args = getArguments(node);
- /** @type {valueParser.Dimension | false} */
- let lastStop;
-
- args.forEach((arg) => {
- let color;
- let stop;
-
- if (arg[2] !== undefined) {
- if (arg[0].type === 'function') {
- color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`;
- } else {
- color = arg[0].value;
- }
-
- if (arg[2].type === 'function') {
- stop = `${arg[2].value}(${valueParser.stringify(arg[2].nodes)})`;
- } else {
- stop = arg[2].value;
- }
- } else {
- if (arg[0].type === 'function') {
- color = `${arg[0].value}(${valueParser.stringify(arg[0].nodes)})`;
- }
-
- color = arg[0].value;
- }
-
- color = color.toLowerCase();
-
- const colorStop =
- stop !== undefined
- ? isColorStop(color, stop.toLowerCase())
- : isColorStop(color);
-
- if (!colorStop || !arg[2]) {
- return;
- }
-
- let thisStop = valueParser.unit(arg[2].value);
-
- if (!lastStop) {
- lastStop = thisStop;
-
- return;
- }
-
- if (lastStop && thisStop && isLessThan(lastStop, thisStop)) {
- arg[2].value = '0';
- }
-
- lastStop = thisStop;
- });
-
- return false;
- }
- })
- .toString();
-}
-/**
- * @type {import('postcss').PluginCreator<void>}
- * @return {import('postcss').Plugin}
- */
-function pluginCreator() {
- return {
- postcssPlugin: 'postcss-minify-gradients',
- OnceExit(css) {
- css.walkDecls(optimise);
- },
- };
-}
-
-pluginCreator.postcss = true;
-module.exports = pluginCreator;
diff --git a/node_modules/postcss-minify-gradients/src/isColorStop.js b/node_modules/postcss-minify-gradients/src/isColorStop.js
deleted file mode 100644
index f6be174e..00000000
--- a/node_modules/postcss-minify-gradients/src/isColorStop.js
+++ /dev/null
@@ -1,62 +0,0 @@
-'use strict';
-const { unit } = require('postcss-value-parser');
-const { colord, extend } = require('colord');
-const namesPlugin = require('colord/plugins/names');
-
-extend([/** @type {any} */ (namesPlugin)]);
-
-/* Code derived from https://github.com/pigcan/is-color-stop */
-
-const lengthUnits = new Set([
- 'PX',
- 'IN',
- 'CM',
- 'MM',
- 'EM',
- 'REM',
- 'POINTS',
- 'PC',
- 'EX',
- 'CH',
- 'VW',
- 'VH',
- 'VMIN',
- 'VMAX',
- '%',
-]);
-
-/**
- * @param {string} input
- * @return {boolean}
- */
-function isCSSLengthUnit(input) {
- return lengthUnits.has(input.toUpperCase());
-}
-/**
- * @param {string|undefined} str
- * @return {boolean}
- */
-function isStop(str) {
- if (str) {
- let stop = false;
- const node = unit(str);
- if (node) {
- const number = Number(node.number);
- if (number === 0 || (!isNaN(number) && isCSSLengthUnit(node.unit))) {
- stop = true;
- }
- } else {
- stop = /^calc\(\S+\)$/g.test(str);
- }
- return stop;
- }
- return true;
-}
-/**
- * @param {string} color
- * @param {string} [stop]
- * @return {boolean}
- */
-module.exports = function isColorStop(color, stop) {
- return colord(color).isValid() && isStop(stop);
-};