const Promise = require('bluebird'); const decodeEntities = require('he').decode; const postcss = require('postcss'); const prefixSelectors = require('postcss-prefix-selector'); /** * @return {Function} PostHTML plugin */ function prefixStyleSelectors(prefix) { return (tree) => { const styleNodes = []; tree.match({ tag: 'style' }, (node) => { styleNodes.push(node); return node; }); return Promise.map(styleNodes, (node) => { const content = node.content ? decodeEntities(node.content.join('')) : ''; return postcss() .use(prefixSelectors({ prefix })) .process(content) .then(prefixedStyles => node.content = prefixedStyles.css); }).then(() => tree); }; } module.exports = prefixStyleSelectors;