@typographist/postcss
Version:
Toolkit for the rapid construction of interfaces with high quality typography.
20 lines (15 loc) • 554 B
JavaScript
const { cleanNode, transformAfterNodes } = require('../lib/postcss');
// bubblingRule :: Object -> Void
exports.bubblingRule = (rule) => {
if (!isBubblingRule(rule)) return;
cleanNode(rule);
transformAfterNodes(rule);
rule.selector = `${rule.parent.selector} ${rule.selector}`;
const parent = rule.parent.after(rule);
cleanNode(rule);
if (!parent.nodes.length) parent.remove();
};
// isBubblingRule :: Object -> Boolean
function isBubblingRule({ parent, selector }) {
return parent && parent.type === 'rule' && !/&/.test(selector);
}