summaryrefslogtreecommitdiff
path: root/node_modules/postcss-minify-font-values/src/lib/minify-font.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:05:55 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-10-14 15:05:55 +0800
commitc06f7ee0a40255214c477e13d9b956a7e07c2900 (patch)
treef5982a568ef8fab865d0142e71c7494fea3e4c1b /node_modules/postcss-minify-font-values/src/lib/minify-font.js
parent3fd9400d4dccc25aa29b5702216732e0b7542073 (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.js64
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);
+};