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-minify-font-values/src/lib/minify-font.js | |
| parent | 3fd9400d4dccc25aa29b5702216732e0b7542073 (diff) | |
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/postcss-minify-font-values/src/lib/minify-font.js')
| -rw-r--r-- | node_modules/postcss-minify-font-values/src/lib/minify-font.js | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/node_modules/postcss-minify-font-values/src/lib/minify-font.js b/node_modules/postcss-minify-font-values/src/lib/minify-font.js new file mode 100644 index 00000000..82cd0e49 --- /dev/null +++ b/node_modules/postcss-minify-font-values/src/lib/minify-font.js @@ -0,0 +1,64 @@ +'use strict'; +const { unit } = require('postcss-value-parser'); +const keywords = require('./keywords'); +const minifyFamily = require('./minify-family'); +const minifyWeight = require('./minify-weight'); + +/** + * @param {import('postcss-value-parser').Node[]} nodes + * @param {import('../index').Options} opts + * @return {import('postcss-value-parser').Node[]} + */ +module.exports = function (nodes, opts) { + let i, max, node, family; + let familyStart = NaN; + let hasSize = false; + + for (i = 0, max = nodes.length; i < max; i += 1) { + node = nodes[i]; + + if (node.type === 'word') { + if (hasSize) { + continue; + } + + const value = node.value.toLowerCase(); + + if ( + value === 'normal' || + value === 'inherit' || + value === 'initial' || + value === 'unset' + ) { + familyStart = i; + } else if (keywords.style.has(value) || unit(value)) { + familyStart = i; + } else if (keywords.variant.has(value)) { + familyStart = i; + } else if (keywords.weight.has(value)) { + node.value = minifyWeight(value); + familyStart = i; + } else if (keywords.stretch.has(value)) { + familyStart = i; + } else if (keywords.size.has(value) || unit(value)) { + familyStart = i; + hasSize = true; + } + } else if ( + node.type === 'function' && + nodes[i + 1] && + nodes[i + 1].type === 'space' + ) { + familyStart = i; + } else if (node.type === 'div' && node.value === '/') { + familyStart = i + 1; + break; + } + } + + familyStart += 2; + + family = minifyFamily(nodes.slice(familyStart), opts); + + return nodes.slice(0, familyStart).concat(family); +}; |
