default-stylesheet/matches-prefixer.js

34 lines
1.0 KiB
JavaScript

// From: https://gist.github.com/dennisgaebel/4290fd6e5dbba5e9b35e2587dcc20849
const postcss = require('postcss');
module.exports = postcss.plugin('postcss-matches', () => {
return root => {
root.walkRules(rule => {
if (rule.selector.indexOf(':matches(') !== -1) {
mozRule = rule.clone();
webkitRule = rule.clone();
mozRule.selectors = rule.selectors.reduce((all, i) => {
if (i.indexOf(':matches(') !== -1) {
return all.concat([
i.replace(/:matches\(/gi, ':-moz-any(')
])
} else {
return all.concat([i])
}
}, []);
webkitRule.selectors = rule.selectors.reduce((all, i) => {
if (i.indexOf(':matches(') !== -1) {
return all.concat([
i.replace(/:matches\(/gi, ':-webkit-any('),
])
} else {
return all.concat([i])
}
}, []);
root.append(mozRule);
root.append(webkitRule);
}
})
}
});