36 lines
		
	
	
		
			702 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			702 B
		
	
	
	
		
			JavaScript
		
	
	
		
			Executable File
		
	
	
	
	
| let Prefixer = require('./prefixer')
 | |
| 
 | |
| class AtRule extends Prefixer {
 | |
|   /**
 | |
|    * Clone and add prefixes for at-rule
 | |
|    */
 | |
|   add(rule, prefix) {
 | |
|     let prefixed = prefix + rule.name
 | |
| 
 | |
|     let already = rule.parent.some(
 | |
|       i => i.name === prefixed && i.params === rule.params
 | |
|     )
 | |
|     if (already) {
 | |
|       return undefined
 | |
|     }
 | |
| 
 | |
|     let cloned = this.clone(rule, { name: prefixed })
 | |
|     return rule.parent.insertBefore(rule, cloned)
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * Clone node with prefixes
 | |
|    */
 | |
|   process(node) {
 | |
|     let parent = this.parentPrefix(node)
 | |
| 
 | |
|     for (let prefix of this.prefixes) {
 | |
|       if (!parent || parent === prefix) {
 | |
|         this.add(node, prefix)
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = AtRule
 |