You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							67 lines
						
					
					
						
							1.7 KiB
						
					
					
				
			
		
		
	
	
							67 lines
						
					
					
						
							1.7 KiB
						
					
					
				'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']; |