| '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']; |