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.
		
		
		
		
		
			
		
			
				
					
					
						
							65 lines
						
					
					
						
							1.9 KiB
						
					
					
				
			
		
		
	
	
							65 lines
						
					
					
						
							1.9 KiB
						
					
					
				var resolveKeyword = require('css-tree').keyword; | 
						|
 | 
						|
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 (node.block.children.isEmpty()) { | 
						|
            list.remove(item); | 
						|
            return; | 
						|
        } | 
						|
    } | 
						|
 | 
						|
    switch (node.name) { | 
						|
        case 'charset': | 
						|
            if (!node.prelude || node.prelude.children.isEmpty()) { | 
						|
                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 (!node.prelude || node.prelude.children.isEmpty()) { | 
						|
                    list.remove(item); | 
						|
                } | 
						|
            } | 
						|
    } | 
						|
};
 | 
						|
 |