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 --- .../csso/lib/replace/property/background.js | 50 ++++++++++++++++++++++ node_modules/csso/lib/replace/property/border.js | 16 +++++++ .../csso/lib/replace/property/font-weight.js | 22 ++++++++++ node_modules/csso/lib/replace/property/font.js | 30 +++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 node_modules/csso/lib/replace/property/background.js create mode 100644 node_modules/csso/lib/replace/property/border.js create mode 100644 node_modules/csso/lib/replace/property/font-weight.js create mode 100644 node_modules/csso/lib/replace/property/font.js (limited to 'node_modules/csso/lib/replace/property') diff --git a/node_modules/csso/lib/replace/property/background.js b/node_modules/csso/lib/replace/property/background.js new file mode 100644 index 00000000..847a8cff --- /dev/null +++ b/node_modules/csso/lib/replace/property/background.js @@ -0,0 +1,50 @@ +import { List } from 'css-tree'; + +export default function compressBackground(node) { + function flush() { + if (!buffer.length) { + buffer.unshift( + { + type: 'Number', + loc: null, + value: '0' + }, + { + type: 'Number', + loc: null, + value: '0' + } + ); + } + + newValue.push.apply(newValue, buffer); + + buffer = []; + } + + let newValue = []; + let buffer = []; + + node.children.forEach((node) => { + if (node.type === 'Operator' && node.value === ',') { + flush(); + newValue.push(node); + return; + } + + // remove defaults + if (node.type === 'Identifier') { + if (node.name === 'transparent' || + node.name === 'none' || + node.name === 'repeat' || + node.name === 'scroll') { + return; + } + } + + buffer.push(node); + }); + + flush(); + node.children = new List().fromArray(newValue); +}; diff --git a/node_modules/csso/lib/replace/property/border.js b/node_modules/csso/lib/replace/property/border.js new file mode 100644 index 00000000..c470b66f --- /dev/null +++ b/node_modules/csso/lib/replace/property/border.js @@ -0,0 +1,16 @@ +export default function compressBorder(node) { + node.children.forEach((node, item, list) => { + if (node.type === 'Identifier' && node.name.toLowerCase() === 'none') { + if (list.head === list.tail) { + // replace `none` for zero when `none` is a single term + item.data = { + type: 'Number', + loc: node.loc, + value: '0' + }; + } else { + list.remove(item); + } + } + }); +}; diff --git a/node_modules/csso/lib/replace/property/font-weight.js b/node_modules/csso/lib/replace/property/font-weight.js new file mode 100644 index 00000000..3b901d33 --- /dev/null +++ b/node_modules/csso/lib/replace/property/font-weight.js @@ -0,0 +1,22 @@ +export default function compressFontWeight(node) { + const value = node.children.head.data; + + if (value.type === 'Identifier') { + switch (value.name) { + case 'normal': + node.children.head.data = { + type: 'Number', + loc: value.loc, + value: '400' + }; + break; + case 'bold': + node.children.head.data = { + type: 'Number', + loc: value.loc, + value: '700' + }; + break; + } + } +}; diff --git a/node_modules/csso/lib/replace/property/font.js b/node_modules/csso/lib/replace/property/font.js new file mode 100644 index 00000000..38e903a2 --- /dev/null +++ b/node_modules/csso/lib/replace/property/font.js @@ -0,0 +1,30 @@ +export default function compressFont(node) { + const list = node.children; + + list.forEachRight(function(node, item) { + if (node.type === 'Identifier') { + if (node.name === 'bold') { + item.data = { + type: 'Number', + loc: node.loc, + value: '700' + }; + } else if (node.name === 'normal') { + const prev = item.prev; + + if (prev && prev.data.type === 'Operator' && prev.data.value === '/') { + this.remove(prev); + } + + this.remove(item); + } + } + }); + + if (list.isEmpty) { + list.insert(list.createItem({ + type: 'Identifier', + name: 'normal' + })); + } +}; -- cgit v1.2.3