packages/svg-mixer/lib/transformations/prefix-style-selectors.js (20 lines of code) (raw):

const decodeEntities = require('he').decode; const postcss = require('postcss'); const prefixSelectors = require('postcss-prefix-selector'); module.exports = function prefixStyleSelectors(prefix) { return tree => { const styleNodes = []; tree.match({ tag: 'style' }, node => { styleNodes.push(node); return node; }); const promises = styleNodes.map(node => { const content = node.content ? decodeEntities(node.content.join('')) : ''; return postcss() .use(prefixSelectors({ prefix })) .process(content, { from: undefined }) // prevent postcss warning .then(({ css }) => node.content = css); }); return Promise.all(promises).then(() => tree); }; };