From c06f7ee0a40255214c477e13d9b956a7e07c2900 Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Sat, 14 Oct 2023 15:05:55 +0800 Subject: postcss,(plugins): nanocss, postcss-preset-env --- .../postcss-ordered-values/src/rules/border.js | 60 ++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 node_modules/postcss-ordered-values/src/rules/border.js (limited to 'node_modules/postcss-ordered-values/src/rules/border.js') diff --git a/node_modules/postcss-ordered-values/src/rules/border.js b/node_modules/postcss-ordered-values/src/rules/border.js new file mode 100644 index 00000000..33bf0d47 --- /dev/null +++ b/node_modules/postcss-ordered-values/src/rules/border.js @@ -0,0 +1,60 @@ +'use strict'; +const { unit, stringify } = require('postcss-value-parser'); +const mathFunctions = require('../lib/mathfunctions.js'); + +// border: || || +// outline: || || + +const borderWidths = new Set(['thin', 'medium', 'thick']); + +const borderStyles = new Set([ + 'none', + 'auto', // only in outline-style + 'hidden', + 'dotted', + 'dashed', + 'solid', + 'double', + 'groove', + 'ridge', + 'inset', + 'outset', +]); + +/** + * @param {import('postcss-value-parser').ParsedValue} border + * @return {string} + */ +module.exports = function normalizeBorder(border) { + const order = { width: '', style: '', color: '' }; + + border.walk((node) => { + const { type, value } = node; + if (type === 'word') { + if (borderStyles.has(value.toLowerCase())) { + order.style = value; + return false; + } + if (borderWidths.has(value.toLowerCase()) || unit(value.toLowerCase())) { + if (order.width !== '') { + order.width = `${order.width} ${value}`; + return false; + } + order.width = value; + return false; + } + order.color = value; + return false; + } + if (type === 'function') { + if (mathFunctions.has(value.toLowerCase())) { + order.width = stringify(node); + } else { + order.color = stringify(node); + } + return false; + } + }); + + return `${order.width} ${order.style} ${order.color}`.trim(); +}; -- cgit v1.2.3