You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
var resolveKeyword = require('css-tree').keyword; var { hasNoChildren } = require('./utils');
module.exports = function cleanAtrule(node, item, list) { if (node.block) { // otherwise removed at-rule don't prevent @import for removal
if (this.stylesheet !== null) { this.stylesheet.firstAtrulesAllowed = false; }
if (hasNoChildren(node.block)) { list.remove(item); return; } }
switch (node.name) { case 'charset': if (hasNoChildren(node.prelude)) { list.remove(item); return; }
// if there is any rule before @charset -> remove it
if (item.prev) { list.remove(item); return; }
break;
case 'import': if (this.stylesheet === null || !this.stylesheet.firstAtrulesAllowed) { list.remove(item); return; }
// if there are some rules that not an @import or @charset before @import
// remove it
list.prevUntil(item.prev, function(rule) { if (rule.type === 'Atrule') { if (rule.name === 'import' || rule.name === 'charset') { return; } }
this.root.firstAtrulesAllowed = false; list.remove(item); return true; }, this);
break;
default: var name = resolveKeyword(node.name).basename; if (name === 'keyframes' || name === 'media' || name === 'supports') {
// drop at-rule with no prelude
if (hasNoChildren(node.prelude) || hasNoChildren(node.block)) { list.remove(item); } } } };
|