Spaces:
Configuration error
Configuration error
import { walk, generate, keyword as resolveKeyword } from 'css-tree'; | |
import createDeclarationIndexer from './createDeclarationIndexer.js'; | |
import processSelector from './processSelector.js'; | |
export default function prepare(ast, options) { | |
const markDeclaration = createDeclarationIndexer(); | |
walk(ast, { | |
visit: 'Rule', | |
enter(node) { | |
node.block.children.forEach(markDeclaration); | |
processSelector(node, options.usage); | |
} | |
}); | |
walk(ast, { | |
visit: 'Atrule', | |
enter(node) { | |
if (node.prelude) { | |
node.prelude.id = null; // pre-init property to avoid multiple hidden class for generate | |
node.prelude.id = generate(node.prelude); | |
} | |
// compare keyframe selectors by its values | |
// NOTE: still no clarification about problems with keyframes selector grouping (issue #197) | |
if (resolveKeyword(node.name).basename === 'keyframes') { | |
node.block.avoidRulesMerge = true; /* probably we don't need to prevent those merges for @keyframes | |
TODO: need to be checked */ | |
node.block.children.forEach(function(rule) { | |
rule.prelude.children.forEach(function(simpleselector) { | |
simpleselector.compareMarker = simpleselector.id; | |
}); | |
}); | |
} | |
} | |
}); | |
return { | |
declaration: markDeclaration | |
}; | |
}; | |