| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | 
							- 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);
 
-                 }
 
-             }
 
-     }
 
- };
 
 
  |