| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.default = void 0; |
| |
| var _browserslist = _interopRequireDefault(require("browserslist")); |
| |
| var _plugins = _interopRequireDefault(require("./plugins")); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| function pluginCreator(opts = {}) { |
| return { |
| postcssPlugin: 'stylehacks', |
| |
| OnceExit(css, { |
| result |
| }) { |
| const resultOpts = result.opts || {}; |
| const browsers = (0, _browserslist.default)(null, { |
| stats: resultOpts.stats, |
| path: __dirname, |
| env: resultOpts.env |
| }); |
| |
| const processors = _plugins.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); |
| }); |
| }); |
| } |
| |
| }; |
| } |
| |
| pluginCreator.detect = node => { |
| return _plugins.default.some(Plugin => { |
| const hack = new Plugin(); |
| return hack.any(node); |
| }); |
| }; |
| |
| pluginCreator.postcss = true; |
| var _default = pluginCreator; |
| exports.default = _default; |
| module.exports = exports.default; |