diff options
| author | ruki <waruqi@gmail.com> | 2018-11-08 00:38:48 +0800 |
|---|---|---|
| committer | ruki <waruqi@gmail.com> | 2018-11-07 21:53:09 +0800 |
| commit | 26105034da4fcce7ac883c899d781f016559310d (patch) | |
| tree | c459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/autoprefixer/lib/browsers.js | |
| parent | 2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff) | |
| download | xmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip | |
switch to vuepress
Diffstat (limited to 'node_modules/autoprefixer/lib/browsers.js')
| -rw-r--r-- | node_modules/autoprefixer/lib/browsers.js | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/node_modules/autoprefixer/lib/browsers.js b/node_modules/autoprefixer/lib/browsers.js new file mode 100644 index 00000000..5ab3eab6 --- /dev/null +++ b/node_modules/autoprefixer/lib/browsers.js @@ -0,0 +1,101 @@ +'use strict'; + +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var browserslist = require('browserslist'); + +var utils = require('./utils'); + +var Browsers = function () { + + /** + * Return all prefixes for default browser data + */ + Browsers.prefixes = function prefixes() { + if (this.prefixesCache) { + return this.prefixesCache; + } + + var data = require('caniuse-lite').agents; + + this.prefixesCache = []; + for (var name in data) { + this.prefixesCache.push('-' + data[name].prefix + '-'); + } + + this.prefixesCache = utils.uniq(this.prefixesCache).sort(function (a, b) { + return b.length - a.length; + }); + + return this.prefixesCache; + }; + + /** + * Check is value contain any possibe prefix + */ + + + Browsers.withPrefix = function withPrefix(value) { + if (!this.prefixesRegexp) { + this.prefixesRegexp = new RegExp(this.prefixes().join('|')); + } + + return this.prefixesRegexp.test(value); + }; + + function Browsers(data, requirements, options, browserslistOpts) { + _classCallCheck(this, Browsers); + + this.data = data; + this.options = options || {}; + this.browserslistOpts = browserslistOpts || {}; + this.selected = this.parse(requirements); + } + + /** + * Return browsers selected by requirements + */ + + + Browsers.prototype.parse = function parse(requirements) { + var opts = {}; + for (var i in this.browserslistOpts) { + opts[i] = this.browserslistOpts[i]; + } + opts.path = this.options.from; + opts.env = this.options.env; + return browserslist(requirements, opts); + }; + + /** + * Return prefix for selected browser + */ + + + Browsers.prototype.prefix = function prefix(browser) { + var _browser$split = browser.split(' '), + name = _browser$split[0], + version = _browser$split[1]; + + var data = this.data[name]; + + var prefix = data.prefix_exceptions && data.prefix_exceptions[version]; + if (!prefix) { + prefix = data.prefix; + } + return '-' + prefix + '-'; + }; + + /** + * Is browser is selected by requirements + */ + + + Browsers.prototype.isSelected = function isSelected(browser) { + return this.selected.indexOf(browser) !== -1; + }; + + return Browsers; +}(); + +module.exports = Browsers;
\ No newline at end of file |
