ÿØÿà JFIF ÿá Exif MM * ÿÛ C
Server IP : 199.250.214.225 / Your IP : 3.139.237.6 Web Server : Apache System : Linux vps64074.inmotionhosting.com 3.10.0-1160.105.1.vz7.214.3 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : nicngo5 ( 1001) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /home/nicngo5/funds.upgrade.nicn.gov.ng/funds-upgraded/node_modules/csso/lib/restructure/ |
Upload File : |
var walk = require('css-tree').walk; var utils = require('./utils'); /* 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) { var selectors = node.prelude.children; var declarations = node.block.children; var nodeCompareMarker = selectors.first().compareMarker; var skippedCompareMarkers = {}; list.nextUntil(item.next, function(next, nextItem) { // skip non-ruleset node if safe if (next.type !== 'Rule') { return utils.unsafeToSkipNode.call(selectors, next); } if (node.pseudoSignature !== next.pseudoSignature) { return true; } var nextFirstSelector = next.prelude.children.head; var nextDeclarations = next.block.children; var 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 (utils.isEqualDeclarations(declarations, nextDeclarations)) { var nextStr = nextFirstSelector.data.id; selectors.some(function(data, item) { var 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; }); } module.exports = function mergeRule(ast) { walk(ast, { visit: 'Rule', enter: processRule }); };