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.
35 lines
702 B
35 lines
702 B
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
|
|
|