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.
128 lines
3.9 KiB
128 lines
3.9 KiB
'use strict'; |
|
|
|
exports.__esModule = true; |
|
|
|
var _postcss = require('postcss'); |
|
|
|
var _postcss2 = _interopRequireDefault(_postcss); |
|
|
|
var _postcssReporter = require('postcss-reporter'); |
|
|
|
var _postcssReporter2 = _interopRequireDefault(_postcssReporter); |
|
|
|
var _browserslist = require('browserslist'); |
|
|
|
var _browserslist2 = _interopRequireDefault(_browserslist); |
|
|
|
var _formatter = require('./formatter'); |
|
|
|
var _formatter2 = _interopRequireDefault(_formatter); |
|
|
|
var _bodyEmpty = require('./plugins/bodyEmpty'); |
|
|
|
var _bodyEmpty2 = _interopRequireDefault(_bodyEmpty); |
|
|
|
var _htmlCombinatorCommentBody = require('./plugins/htmlCombinatorCommentBody'); |
|
|
|
var _htmlCombinatorCommentBody2 = _interopRequireDefault(_htmlCombinatorCommentBody); |
|
|
|
var _htmlFirstChild = require('./plugins/htmlFirstChild'); |
|
|
|
var _htmlFirstChild2 = _interopRequireDefault(_htmlFirstChild); |
|
|
|
var _important = require('./plugins/important'); |
|
|
|
var _important2 = _interopRequireDefault(_important); |
|
|
|
var _leadingStar = require('./plugins/leadingStar'); |
|
|
|
var _leadingStar2 = _interopRequireDefault(_leadingStar); |
|
|
|
var _leadingUnderscore = require('./plugins/leadingUnderscore'); |
|
|
|
var _leadingUnderscore2 = _interopRequireDefault(_leadingUnderscore); |
|
|
|
var _mediaSlash = require('./plugins/mediaSlash0'); |
|
|
|
var _mediaSlash2 = _interopRequireDefault(_mediaSlash); |
|
|
|
var _mediaSlash3 = require('./plugins/mediaSlash9'); |
|
|
|
var _mediaSlash4 = _interopRequireDefault(_mediaSlash3); |
|
|
|
var _slash = require('./plugins/slash9'); |
|
|
|
var _slash2 = _interopRequireDefault(_slash); |
|
|
|
var _starHtml = require('./plugins/starHtml'); |
|
|
|
var _starHtml2 = _interopRequireDefault(_starHtml); |
|
|
|
var _trailingSlashComma = require('./plugins/trailingSlashComma'); |
|
|
|
var _trailingSlashComma2 = _interopRequireDefault(_trailingSlashComma); |
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
|
|
|
var plugins = [_bodyEmpty2.default, _htmlCombinatorCommentBody2.default, _htmlFirstChild2.default, _important2.default, _leadingStar2.default, _leadingUnderscore2.default, _mediaSlash2.default, _mediaSlash4.default, _slash2.default, _starHtml2.default, _trailingSlashComma2.default]; |
|
|
|
// plugins |
|
|
|
|
|
var stylehacks = _postcss2.default.plugin('stylehacks', function () { |
|
var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; |
|
|
|
var b = opts.browsers; |
|
var browsers = b instanceof Array ? b : (0, _browserslist2.default)(b); |
|
|
|
return function (css, result) { |
|
var processors = plugins.reduce(function (list, Plugin) { |
|
var hack = new Plugin(result); |
|
var applied = browsers.some(function (browser) { |
|
return hack.targets.some(function (target) { |
|
return browser === target; |
|
}); |
|
}); |
|
if (applied) { |
|
return list; |
|
} |
|
return [].concat(list, [hack]); |
|
}, []); |
|
css.walk(function (node) { |
|
processors.forEach(function (proc) { |
|
if (!~proc.nodeTypes.indexOf(node.type)) { |
|
return; |
|
} |
|
if (opts.lint) { |
|
return proc.detectAndWarn(node); |
|
} |
|
return proc.detectAndResolve(node); |
|
}); |
|
}); |
|
}; |
|
}); |
|
|
|
stylehacks.detect = function (node) { |
|
var hacked = plugins.some(function (Plugin) { |
|
var hack = new Plugin(); |
|
return hack.any(node); |
|
}); |
|
|
|
return hacked; |
|
}; |
|
|
|
stylehacks.process = function (css) { |
|
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; |
|
|
|
opts.reporter = {}; |
|
opts.reporter.formatter = _formatter2.default; |
|
opts.map = opts.map || (opts.sourcemap ? true : null); |
|
var processor = (0, _postcss2.default)([stylehacks(opts)]); |
|
if (opts.lint && !opts.silent) { |
|
processor.use((0, _postcssReporter2.default)(opts.reporter)); |
|
} |
|
return processor.process(css, opts); |
|
}; |
|
|
|
exports.default = stylehacks; |
|
module.exports = exports['default']; |