From fee47f6414cc3ae9a88f3ee0ed20f1d6f2d9f556 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:58:02 +0800 Subject: added plugin from postcss: postcss-fixes rucksack-css --- node_modules/postcss-hexrgba/index.js | 66 +++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 node_modules/postcss-hexrgba/index.js (limited to 'node_modules/postcss-hexrgba/index.js') diff --git a/node_modules/postcss-hexrgba/index.js b/node_modules/postcss-hexrgba/index.js new file mode 100644 index 00000000..19967d62 --- /dev/null +++ b/node_modules/postcss-hexrgba/index.js @@ -0,0 +1,66 @@ +'use strict'; + +const postcss = require('postcss'); + +module.exports = postcss.plugin('postcss-hexrgba', () => { + + /** + * Hex to RGB converter + * @param {string} hex hexidecimal string without # + * @return {array} RGB values + */ + function hexRgb(hex){ + let shorthandCheck = /^([a-f\d])([a-f\d])([a-f\d])$/i, + rgbRegex = /^([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i, + rgb; + + hex = hex.replace(shorthandCheck, function(m, r, g, b) { + return r + r + g + g + b + b; + }); + + rgb = hex.replace(/^\s+|\s+$/g, '').match(rgbRegex); + + // Convert it + return rgb ? [ + parseInt(rgb[1], 16), + parseInt(rgb[2], 16), + parseInt(rgb[3], 16) + ] : false; + } + + /** + * CSS rule handler + * @param {string} decl CSS delcaration + */ + function ruleHandler(decl, result) { + let input = decl.value; + + // Get the raw hex values and replace them + let output = input.replace(/rgba\(#(.*?),/g, (match, hex) => { + let rgb = hexRgb(hex), + matchHex = new RegExp('#' + hex); + + // If conversion fails, emit a warning + if (!rgb) { + result.warn('not a valid hex', { node: decl }); + return match; + } + + rgb = rgb.toString(); + + return match.replace(matchHex, rgb); + }); + + decl.value = output; + } + + return function(css, result) { + css.walkDecls(decl => { + if (typeof decl.value === 'undefined' || decl.value.indexOf('rgba') === -1) { + return; + } + + ruleHandler(decl, result); + }); + }; +}); -- cgit v1.2.3