diff options
| author | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
|---|---|---|
| committer | littleblack111 <littleblack11111@gmail.com> | 2023-10-14 15:05:55 +0800 |
| commit | c06f7ee0a40255214c477e13d9b956a7e07c2900 (patch) | |
| tree | f5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/postcss-ordered-values/src/rules/border.js | |
| parent | 3fd9400d4dccc25aa29b5702216732e0b7542073 (diff) | |
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/postcss-ordered-values/src/rules/border.js')
| -rw-r--r-- | node_modules/postcss-ordered-values/src/rules/border.js | 60 |
1 files changed, 60 insertions, 0 deletions
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: <line-width> || <line-style> || <color> +// outline: <outline-color> || <outline-style> || <outline-width> + +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(); +}; |
