summaryrefslogtreecommitdiff
path: root/node_modules/csso/cjs/restructure/prepare/processSelector.cjs
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/csso/cjs/restructure/prepare/processSelector.cjs')
-rw-r--r--node_modules/csso/cjs/restructure/prepare/processSelector.cjs101
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;