summaryrefslogtreecommitdiff
path: root/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs
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/cjs/restructure/3-disjoinRuleset.cjs
parent3fd9400d4dccc25aa29b5702216732e0b7542073 (diff)
postcss,(plugins): nanocss, postcss-preset-env
Diffstat (limited to 'node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs')
-rw-r--r--node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs46
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs b/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs
new file mode 100644
index 00000000..bf1d627d
--- /dev/null
+++ b/node_modules/csso/cjs/restructure/3-disjoinRuleset.cjs
@@ -0,0 +1,46 @@
+'use strict';
+
+const cssTree = require('css-tree');
+
+function processRule(node, item, list) {
+ const selectors = node.prelude.children;
+
+ // generate new rule sets:
+ // .a, .b { color: red; }
+ // ->
+ // .a { color: red; }
+ // .b { color: red; }
+
+ // while there are more than 1 simple selector split for rulesets
+ while (selectors.head !== selectors.tail) {
+ const newSelectors = new cssTree.List();
+
+ newSelectors.insert(selectors.remove(selectors.head));
+
+ list.insert(list.createItem({
+ type: 'Rule',
+ loc: node.loc,
+ prelude: {
+ type: 'SelectorList',
+ loc: node.prelude.loc,
+ children: newSelectors
+ },
+ block: {
+ type: 'Block',
+ loc: node.block.loc,
+ children: node.block.children.copy()
+ },
+ pseudoSignature: node.pseudoSignature
+ }), item);
+ }
+}
+
+function disjoinRule(ast) {
+ cssTree.walk(ast, {
+ visit: 'Rule',
+ reverse: true,
+ enter: processRule
+ });
+}
+
+module.exports = disjoinRule;