From fc87c009806dcc98867f6b58efe29b042aa01dee Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Mon, 18 May 2026 23:10:59 +0800 Subject: node: update --- .../csso/lib/restructure/7-mergeRuleset.js | 86 ---------------------- 1 file changed, 86 deletions(-) delete mode 100644 node_modules/csso/lib/restructure/7-mergeRuleset.js (limited to 'node_modules/csso/lib/restructure/7-mergeRuleset.js') diff --git a/node_modules/csso/lib/restructure/7-mergeRuleset.js b/node_modules/csso/lib/restructure/7-mergeRuleset.js deleted file mode 100644 index 8a4d5438..00000000 --- a/node_modules/csso/lib/restructure/7-mergeRuleset.js +++ /dev/null @@ -1,86 +0,0 @@ -import { walk } from 'css-tree'; -import { unsafeToSkipNode, isEqualDeclarations} from './utils.js'; - -/* - At this step all rules has single simple selector. We try to join by equal - declaration blocks to first rule, e.g. - - .a { color: red } - b { ... } - .b { color: red } - -> - .a, .b { color: red } - b { ... } -*/ - -function processRule(node, item, list) { - const selectors = node.prelude.children; - const declarations = node.block.children; - const nodeCompareMarker = selectors.first.compareMarker; - const skippedCompareMarkers = {}; - - list.nextUntil(item.next, function(next, nextItem) { - // skip non-ruleset node if safe - if (next.type !== 'Rule') { - return unsafeToSkipNode.call(selectors, next); - } - - if (node.pseudoSignature !== next.pseudoSignature) { - return true; - } - - const nextFirstSelector = next.prelude.children.head; - const nextDeclarations = next.block.children; - const nextCompareMarker = nextFirstSelector.data.compareMarker; - - // if next ruleset has same marked as one of skipped then stop joining - if (nextCompareMarker in skippedCompareMarkers) { - return true; - } - - // try to join by selectors - if (selectors.head === selectors.tail) { - if (selectors.first.id === nextFirstSelector.data.id) { - declarations.appendList(nextDeclarations); - list.remove(nextItem); - return; - } - } - - // try to join by properties - if (isEqualDeclarations(declarations, nextDeclarations)) { - const nextStr = nextFirstSelector.data.id; - - selectors.some((data, item) => { - const curStr = data.id; - - if (nextStr < curStr) { - selectors.insert(nextFirstSelector, item); - return true; - } - - if (!item.next) { - selectors.insert(nextFirstSelector); - return true; - } - }); - - list.remove(nextItem); - return; - } - - // go to next ruleset if current one can be skipped (has no equal specificity nor element selector) - if (nextCompareMarker === nodeCompareMarker) { - return true; - } - - skippedCompareMarkers[nextCompareMarker] = true; - }); -} - -export default function mergeRule(ast) { - walk(ast, { - visit: 'Rule', - enter: processRule - }); -}; -- cgit v1.2.3