'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _postcss = require('postcss'); var _postcss2 = _interopRequireDefault(_postcss); var _browserslist = require('browserslist'); var _browserslist2 = _interopRequireDefault(_browserslist); var _plugins = require('./plugins'); var _plugins2 = _interopRequireDefault(_plugins); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } const stylehacks = _postcss2.default.plugin('stylehacks', (opts = {}) => { return (css, result) => { const resultOpts = result.opts || {}; const browsers = (0, _browserslist2.default)(null, { stats: resultOpts.stats, path: __dirname, env: resultOpts.env }); const processors = _plugins2.default.reduce((list, Plugin) => { const hack = new Plugin(result); const applied = browsers.some(browser => { return hack.targets.some(target => browser === target); }); if (applied) { return list; } return [...list, hack]; }, []); css.walk(node => { processors.forEach(proc => { if (!~proc.nodeTypes.indexOf(node.type)) { return; } if (opts.lint) { return proc.detectAndWarn(node); } return proc.detectAndResolve(node); }); }); }; }); stylehacks.detect = node => { return _plugins2.default.some(Plugin => { const hack = new Plugin(); return hack.any(node); }); }; exports.default = stylehacks; module.exports = exports['default'];