summaryrefslogtreecommitdiff
path: root/node_modules/csso/lib/replace/property
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/csso/lib/replace/property
parent3fd9400d4dccc25aa29b5702216732e0b7542073 (diff)
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/csso/lib/replace/property')
-rw-r--r--node_modules/csso/lib/replace/property/background.js50
-rw-r--r--node_modules/csso/lib/replace/property/border.js16
-rw-r--r--node_modules/csso/lib/replace/property/font-weight.js22
-rw-r--r--node_modules/csso/lib/replace/property/font.js30
4 files changed, 118 insertions, 0 deletions
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'
+ }));
+ }
+};