diff options
Diffstat (limited to 'node_modules/csso/cjs/restructure/prepare/processSelector.cjs')
| -rw-r--r-- | node_modules/csso/cjs/restructure/prepare/processSelector.cjs | 101 |
1 files changed, 0 insertions, 101 deletions
diff --git a/node_modules/csso/cjs/restructure/prepare/processSelector.cjs b/node_modules/csso/cjs/restructure/prepare/processSelector.cjs deleted file mode 100644 index 5c9e1d21..00000000 --- a/node_modules/csso/cjs/restructure/prepare/processSelector.cjs +++ /dev/null @@ -1,101 +0,0 @@ -'use strict'; - -const cssTree = require('css-tree'); -const specificity = require('./specificity.cjs'); - -const nonFreezePseudoElements = new Set([ - 'first-letter', - 'first-line', - 'after', - 'before' -]); -const nonFreezePseudoClasses = new Set([ - 'link', - 'visited', - 'hover', - 'active', - 'first-letter', - 'first-line', - 'after', - 'before' -]); - -function processSelector(node, usageData) { - const pseudos = new Set(); - - node.prelude.children.forEach(function(simpleSelector) { - let tagName = '*'; - let scope = 0; - - simpleSelector.children.forEach(function(node) { - switch (node.type) { - case 'ClassSelector': - if (usageData && usageData.scopes) { - const classScope = usageData.scopes[node.name] || 0; - - if (scope !== 0 && classScope !== scope) { - throw new Error('Selector can\'t has classes from different scopes: ' + cssTree.generate(simpleSelector)); - } - - scope = classScope; - } - - break; - - case 'PseudoClassSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoClasses.has(name)) { - pseudos.add(`:${name}`); - } - - break; - } - - case 'PseudoElementSelector': { - const name = node.name.toLowerCase(); - - if (!nonFreezePseudoElements.has(name)) { - pseudos.add(`::${name}`); - } - - break; - } - - case 'TypeSelector': - tagName = node.name.toLowerCase(); - break; - - case 'AttributeSelector': - if (node.flags) { - pseudos.add(`[${node.flags.toLowerCase()}]`); - } - - break; - - case 'Combinator': - tagName = '*'; - break; - } - }); - - simpleSelector.compareMarker = specificity(simpleSelector).toString(); - simpleSelector.id = null; // pre-init property to avoid multiple hidden class - simpleSelector.id = cssTree.generate(simpleSelector); - - if (scope) { - simpleSelector.compareMarker += ':' + scope; - } - - if (tagName !== '*') { - simpleSelector.compareMarker += ',' + tagName; - } - }); - - // add property to all rule nodes to avoid multiple hidden class - node.pseudoSignature = pseudos.size > 0 - ? [...pseudos].sort().join(',') - : false; -} - -module.exports = processSelector; |
