!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.autoprefixer=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o b[0]) { return 1; } else if (a[0] < b[0]) { return -1; } else { return parseFloat(a[1]) - parseFloat(b[1]); } }); return callback(sorted); }; map = function(browsers, callback) { var browser, name, version, _i, _len, _ref, _results; _results = []; for (_i = 0, _len = browsers.length; _i < _len; _i++) { browser = browsers[_i]; _ref = browser.split(' '), name = _ref[0], version = _ref[1]; version = parseFloat(version); _results.push(callback(browser, name, version)); } return _results; }; filter = function(browsers, callback) { return browsers.filter(function(browser) { var name, version, _ref; _ref = browser.split(' '), name = _ref[0], version = _ref[1]; version = parseFloat(version); return callback(name, version); }); }; prefix = function() { var data, name, names, _i, _j, _len, _results; names = 2 <= arguments.length ? __slice.call(arguments, 0, _i = arguments.length - 1) : (_i = 0, []), data = arguments[_i++]; _results = []; for (_j = 0, _len = names.length; _j < _len; _j++) { name = names[_j]; _results.push(module.exports[name] = data); } return _results; }; module.exports = {}; feature(require('caniuse-db/features-json/border-radius'), function(browsers) { return prefix('border-radius', 'border-top-left-radius', 'border-top-right-radius', 'border-bottom-right-radius', 'border-bottom-left-radius', { mistakes: ['-ms-', '-o-'], transition: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/css-boxshadow'), function(browsers) { return prefix('box-shadow', { transition: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/css-animation'), function(browsers) { return prefix('animation', 'animation-name', 'animation-duration', 'animation-delay', 'animation-direction', 'animation-fill-mode', 'animation-iteration-count', 'animation-play-state', 'animation-timing-function', '@keyframes', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-transitions'), function(browsers) { return prefix('transition', 'transition-property', 'transition-duration', 'transition-delay', 'transition-timing-function', { mistakes: ['-ms-'], browsers: browsers }); }); feature(require('caniuse-db/features-json/transforms2d'), function(browsers) { return prefix('transform', 'transform-origin', { transition: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/transforms3d'), function(browsers) { prefix('perspective', 'perspective-origin', { transition: true, browsers: browsers }); return prefix('transform-style', 'backface-visibility', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-gradients'), function(browsers) { browsers = map(browsers, function(browser, name, version) { if (name === 'android' && version < 4 || name === 'ios_saf' && version < 5 || name === 'safari' && version < 5.1) { return browser + ' old'; } else { return browser; } }); return prefix('linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient', { props: ['background', 'background-image', 'border-image', 'list-style', 'list-style-image', 'content'], mistakes: ['-ms-'], browsers: browsers }); }); feature(require('caniuse-db/features-json/css3-boxsizing'), function(browsers) { return prefix('box-sizing', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-filters'), function(browsers) { return prefix('filter', { transition: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/multicolumn'), function(browsers) { prefix('columns', 'column-width', 'column-gap', 'column-rule', 'column-rule-color', 'column-rule-width', { transition: true, browsers: browsers }); return prefix('column-count', 'column-rule-style', 'column-span', 'column-fill', 'break-before', 'break-after', 'break-inside', { browsers: browsers }); }); feature(require('caniuse-db/features-json/user-select-none'), function(browsers) { return prefix('user-select', { browsers: browsers }); }); feature(require('caniuse-db/features-json/flexbox'), function(browsers) { browsers = map(browsers, function(browser, name, version) { if (name === 'safari' && version < 6.1) { return browser + ' 2009'; } else if (name === 'ios_saf' && version < 7) { return browser + ' 2009'; } else if (name === 'chrome' && version < 21) { return browser + ' 2009'; } else if (name === 'android' && version < 4.4) { return browser + ' 2009'; } else { return browser; } }); prefix('display-flex', 'inline-flex', { props: ['display'], browsers: browsers }); prefix('flex', 'flex-grow', 'flex-shrink', 'flex-basis', { transition: true, browsers: browsers }); return prefix('flex-direction', 'flex-wrap', 'flex-flow', 'justify-content', 'order', 'align-items', 'align-self', 'align-content', { browsers: browsers }); }); feature(require('caniuse-db/features-json/calc'), function(browsers) { return prefix('calc', { props: ['*'], browsers: browsers }); }); feature(require('caniuse-db/features-json/background-img-opts'), function(browsers) { return prefix('background-clip', 'background-origin', 'background-size', { browsers: browsers }); }); feature(require('caniuse-db/features-json/font-feature'), function(browsers) { return prefix('font-feature-settings', 'font-variant-ligatures', 'font-language-override', 'font-kerning', { browsers: browsers }); }); feature(require('caniuse-db/features-json/border-image'), function(browsers) { return prefix('border-image', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-selection'), function(browsers) { return prefix('::selection', { selector: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/css-placeholder'), function(browsers) { browsers = map(browsers, function(browser, name, version) { if (name === 'firefox' && version <= 18) { return browser + ' old'; } else { return browser; } }); return prefix('::placeholder', { selector: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/css-hyphens'), function(browsers) { return prefix('hyphens', { browsers: browsers }); }); feature(require('caniuse-db/features-json/fullscreen'), function(browsers) { return prefix(':fullscreen', { selector: true, browsers: browsers }); }); feature(require('caniuse-db/features-json/css3-tabsize'), function(browsers) { return prefix('tab-size', { browsers: browsers }); }); feature(require('caniuse-db/features-json/intrinsic-width'), function(browsers) { return prefix('max-content', 'min-content', 'fit-content', 'fill-available', { props: ['width', 'min-width', 'max-width', 'height', 'min-height', 'max-height'], browsers: browsers }); }); feature(require('caniuse-db/features-json/css3-cursors-newer'), function(browsers) { prefix('zoom-in', 'zoom-out', { props: ['cursor'], browsers: browsers.concat(['chrome 3']) }); return prefix('grab', 'grabbing', { props: ['cursor'], browsers: browsers.concat(['firefox 24', 'firefox 25', 'firefox 26']) }); }); feature(require('caniuse-db/features-json/css-sticky'), function(browsers) { return prefix('sticky', { props: ['position'], browsers: browsers }); }); feature(require('caniuse-db/features-json/pointer'), function(browsers) { return prefix('touch-action', { browsers: browsers }); }); textDecoration = require('caniuse-db/features-json/text-decoration'); feature(textDecoration, function(browsers) { return prefix('text-decoration-style', { browsers: browsers }); }); feature(textDecoration, { match: /y\sx($|\s)/ }, function(browsers) { return prefix('text-decoration-line', 'text-decoration-color', { browsers: browsers }); }); feature(require('caniuse-db/features-json/text-size-adjust'), function(browsers) { return prefix('text-size-adjust', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-masks'), function(browsers) { return prefix('clip-path', 'mask', 'mask-clip', 'mask-composite', 'mask-image', 'mask-origin', 'mask-position', 'mask-repeat', 'mask-size', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-boxdecorationbreak'), function(brwsrs) { return prefix('box-decoration-break', { browsers: brwsrs }); }); feature(require('caniuse-db/features-json/object-fit'), function(browsers) { return prefix('object-fit', 'object-position', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-shapes'), function(browsers) { return prefix('shape-margin', 'shape-outside', 'shape-image-threshold', { browsers: browsers }); }); feature(require('caniuse-db/features-json/text-overflow'), function(browsers) { return prefix('text-overflow', { browsers: browsers }); }); feature(require('caniuse-db/features-json/text-emphasis'), function(browsers) { return prefix('text-emphasis', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-deviceadaptation'), function(browsers) { return prefix('@viewport', { browsers: browsers }); }); resolution = require('caniuse-db/features-json/css-media-resolution'); feature(resolution, { match: /( x($| )|a #3)/ }, function(browsers) { return prefix('@resolution', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-text-align-last'), function(browsers) { return prefix('text-align-last', { browsers: browsers }); }); feature(require('caniuse-db/features-json/css-crisp-edges'), function(browsers) { return prefix('crisp-edges', { props: ['image-rendering'], browsers: browsers }); }); logicalProps = require('caniuse-db/features-json/css-logical-props'); feature(logicalProps, function(browsers) { return prefix('border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end', { transition: true, browsers: browsers }); }); feature(logicalProps, function(browsers) { browsers = filter(browsers, function(i) { return i !== 'firefox' && i !== 'and_ff'; }); return prefix('border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end', { transition: true, browsers: browsers }); }); }).call(this); },{"./browsers":2,"caniuse-db/features-json/background-img-opts":57,"caniuse-db/features-json/border-image":58,"caniuse-db/features-json/border-radius":59,"caniuse-db/features-json/calc":60,"caniuse-db/features-json/css-animation":61,"caniuse-db/features-json/css-boxdecorationbreak":62,"caniuse-db/features-json/css-boxshadow":63,"caniuse-db/features-json/css-crisp-edges":64,"caniuse-db/features-json/css-deviceadaptation":65,"caniuse-db/features-json/css-filters":66,"caniuse-db/features-json/css-gradients":67,"caniuse-db/features-json/css-hyphens":68,"caniuse-db/features-json/css-logical-props":69,"caniuse-db/features-json/css-masks":70,"caniuse-db/features-json/css-media-resolution":71,"caniuse-db/features-json/css-placeholder":72,"caniuse-db/features-json/css-selection":73,"caniuse-db/features-json/css-shapes":74,"caniuse-db/features-json/css-sticky":75,"caniuse-db/features-json/css-text-align-last":76,"caniuse-db/features-json/css-transitions":77,"caniuse-db/features-json/css3-boxsizing":78,"caniuse-db/features-json/css3-cursors-newer":79,"caniuse-db/features-json/css3-tabsize":80,"caniuse-db/features-json/flexbox":81,"caniuse-db/features-json/font-feature":82,"caniuse-db/features-json/fullscreen":83,"caniuse-db/features-json/intrinsic-width":84,"caniuse-db/features-json/multicolumn":85,"caniuse-db/features-json/object-fit":86,"caniuse-db/features-json/pointer":87,"caniuse-db/features-json/text-decoration":88,"caniuse-db/features-json/text-emphasis":89,"caniuse-db/features-json/text-overflow":90,"caniuse-db/features-json/text-size-adjust":91,"caniuse-db/features-json/transforms2d":92,"caniuse-db/features-json/transforms3d":93,"caniuse-db/features-json/user-select-none":94}],4:[function(require,module,exports){ (function() { var AtRule, Prefixer, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Prefixer = require('./prefixer'); AtRule = (function(_super) { __extends(AtRule, _super); function AtRule() { return AtRule.__super__.constructor.apply(this, arguments); } AtRule.prototype.add = function(rule, prefix) { var already, cloned, prefixed; prefixed = prefix + rule.name; already = rule.parent.some(function(i) { return i.name === prefixed && i.params === rule.params; }); if (already) { return; } cloned = this.clone(rule, { name: prefixed }); return rule.parent.insertBefore(rule, cloned); }; AtRule.prototype.process = function(node) { var parent, prefix, _i, _len, _ref, _results; parent = this.parentPrefix(node); _ref = this.prefixes; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { prefix = _ref[_i]; if (parent && parent !== prefix) { continue; } _results.push(this.add(node, prefix)); } return _results; }; return AtRule; })(Prefixer); module.exports = AtRule; }).call(this); },{"./prefixer":40}],5:[function(require,module,exports){ (function() { var Browsers, browserslist, utils; browserslist = require('browserslist'); utils = require('./utils'); Browsers = (function() { Browsers.prefixes = function() { var data, i, name; if (this.prefixesCache) { return this.prefixesCache; } data = require('../data/browsers'); return this.prefixesCache = utils.uniq((function() { var _results; _results = []; for (name in data) { i = data[name]; _results.push(i.prefix); } return _results; })()).sort(function(a, b) { return b.length - a.length; }); }; Browsers.withPrefix = function(value) { if (!this.prefixesRegexp) { this.prefixesRegexp = RegExp("" + (this.prefixes().join('|'))); } return this.prefixesRegexp.test(value); }; function Browsers(data, requirements, options) { this.data = data; this.options = options; this.selected = this.parse(requirements); } Browsers.prototype.parse = function(requirements) { var _ref; return browserslist(requirements, { path: (_ref = this.options) != null ? _ref.from : void 0 }); }; Browsers.prototype.browsers = function(criteria) { var browser, data, selected, versions, _ref; selected = []; _ref = this.data; for (browser in _ref) { data = _ref[browser]; versions = criteria(data).map(function(version) { return "" + browser + " " + version; }); selected = selected.concat(versions); } return selected; }; Browsers.prototype.prefix = function(browser) { var name, version, _ref; _ref = browser.split(' '), name = _ref[0], version = _ref[1]; if (name === 'opera' && parseFloat(version) >= 15) { return '-webkit-'; } else { return this.data[name].prefix; } }; Browsers.prototype.isSelected = function(browser) { return this.selected.indexOf(browser) !== -1; }; return Browsers; })(); module.exports = Browsers; }).call(this); },{"../data/browsers":2,"./utils":46,"browserslist":55}],6:[function(require,module,exports){ (function() { var Browsers, Declaration, Prefixer, utils, vendor, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Prefixer = require('./prefixer'); Browsers = require('./browsers'); vendor = require('postcss/lib/vendor'); utils = require('./utils'); Declaration = (function(_super) { __extends(Declaration, _super); function Declaration() { return Declaration.__super__.constructor.apply(this, arguments); } Declaration.prototype.check = function(decl) { return true; }; Declaration.prototype.prefixed = function(prop, prefix) { return prefix + prop; }; Declaration.prototype.normalize = function(prop) { return prop; }; Declaration.prototype.otherPrefixes = function(value, prefix) { var other, _i, _len, _ref; _ref = Browsers.prefixes(); for (_i = 0, _len = _ref.length; _i < _len; _i++) { other = _ref[_i]; if (other === prefix) { continue; } if (value.indexOf(other) !== -1) { return true; } } return false; }; Declaration.prototype.set = function(decl, prefix) { decl.prop = this.prefixed(decl.prop, prefix); return decl; }; Declaration.prototype.needCascade = function(decl) { return decl._autoprefixerCascade || (decl._autoprefixerCascade = this.all.options.cascade !== false && decl.style('before').indexOf('\n') !== -1); }; Declaration.prototype.maxPrefixed = function(prefixes, decl) { var max, prefix, _i, _len; if (decl._autoprefixerMax) { return decl._autoprefixerMax; } max = 0; for (_i = 0, _len = prefixes.length; _i < _len; _i++) { prefix = prefixes[_i]; prefix = utils.removeNote(prefix); if (prefix.length > max) { max = prefix.length; } } return decl._autoprefixerMax = max; }; Declaration.prototype.calcBefore = function(prefixes, decl, prefix) { var before, diff, i, max, _i; if (prefix == null) { prefix = ''; } before = decl.style('before'); max = this.maxPrefixed(prefixes, decl); diff = max - utils.removeNote(prefix).length; for (i = _i = 0; 0 <= diff ? _i < diff : _i > diff; i = 0 <= diff ? ++_i : --_i) { before += ' '; } return before; }; Declaration.prototype.restoreBefore = function(decl) { var lines, min; lines = decl.style('before').split("\n"); min = lines[lines.length - 1]; this.all.group(decl).up(function(prefixed) { var array, last; array = prefixed.style('before').split("\n"); last = array[array.length - 1]; if (last.length < min.length) { return min = last; } }); lines[lines.length - 1] = min; return decl.before = lines.join("\n"); }; Declaration.prototype.insert = function(decl, prefix, prefixes) { var cloned; cloned = this.set(this.clone(decl), prefix); if (!cloned) { return; } if (this.needCascade(decl)) { cloned.before = this.calcBefore(prefixes, decl, prefix); } return decl.parent.insertBefore(decl, cloned); }; Declaration.prototype.add = function(decl, prefix, prefixes) { var already, prefixed; prefixed = this.prefixed(decl.prop, prefix); already = this.all.group(decl).up(function(i) { return i.prop === prefixed; }); already || (already = this.all.group(decl).down(function(i) { return i.prop === prefixed; })); if (already || this.otherPrefixes(decl.value, prefix)) { return; } return this.insert(decl, prefix, prefixes); }; Declaration.prototype.process = function(decl) { var prefixes; if (this.needCascade(decl)) { prefixes = Declaration.__super__.process.apply(this, arguments); if (prefixes != null ? prefixes.length : void 0) { this.restoreBefore(decl); return decl.before = this.calcBefore(prefixes, decl); } } else { return Declaration.__super__.process.apply(this, arguments); } }; Declaration.prototype.old = function(prop, prefix) { return [this.prefixed(prop, prefix)]; }; return Declaration; })(Prefixer); module.exports = Declaration; }).call(this); },{"./browsers":5,"./prefixer":40,"./utils":46,"postcss/lib/vendor":113}],7:[function(require,module,exports){ (function() { var AlignContent, Declaration, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); AlignContent = (function(_super) { __extends(AlignContent, _super); function AlignContent() { return AlignContent.__super__.constructor.apply(this, arguments); } AlignContent.names = ['align-content', 'flex-line-pack']; AlignContent.oldValues = { 'flex-end': 'end', 'flex-start': 'start', 'space-between': 'justify', 'space-around': 'distribute' }; AlignContent.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012) { return prefix + 'flex-line-pack'; } else { return AlignContent.__super__.prefixed.apply(this, arguments); } }; AlignContent.prototype.normalize = function(prop) { return 'align-content'; }; AlignContent.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2012) { decl.value = AlignContent.oldValues[decl.value] || decl.value; return AlignContent.__super__.set.call(this, decl, prefix); } else if (spec === 'final') { return AlignContent.__super__.set.apply(this, arguments); } }; return AlignContent; })(Declaration); module.exports = AlignContent; }).call(this); },{"../declaration":6,"./flex-spec":25}],8:[function(require,module,exports){ (function() { var AlignItems, Declaration, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); AlignItems = (function(_super) { __extends(AlignItems, _super); function AlignItems() { return AlignItems.__super__.constructor.apply(this, arguments); } AlignItems.names = ['align-items', 'flex-align', 'box-align']; AlignItems.oldValues = { 'flex-end': 'end', 'flex-start': 'start' }; AlignItems.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return prefix + 'box-align'; } else if (spec === 2012) { return prefix + 'flex-align'; } else { return AlignItems.__super__.prefixed.apply(this, arguments); } }; AlignItems.prototype.normalize = function(prop) { return 'align-items'; }; AlignItems.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2009 || spec === 2012) { decl.value = AlignItems.oldValues[decl.value] || decl.value; return AlignItems.__super__.set.call(this, decl, prefix); } else { return AlignItems.__super__.set.apply(this, arguments); } }; return AlignItems; })(Declaration); module.exports = AlignItems; }).call(this); },{"../declaration":6,"./flex-spec":25}],9:[function(require,module,exports){ (function() { var AlignSelf, Declaration, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); AlignSelf = (function(_super) { __extends(AlignSelf, _super); function AlignSelf() { return AlignSelf.__super__.constructor.apply(this, arguments); } AlignSelf.names = ['align-self', 'flex-item-align']; AlignSelf.oldValues = { 'flex-end': 'end', 'flex-start': 'start' }; AlignSelf.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012) { return prefix + 'flex-item-align'; } else { return AlignSelf.__super__.prefixed.apply(this, arguments); } }; AlignSelf.prototype.normalize = function(prop) { return 'align-self'; }; AlignSelf.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2012) { decl.value = AlignSelf.oldValues[decl.value] || decl.value; return AlignSelf.__super__.set.call(this, decl, prefix); } else if (spec === 'final') { return AlignSelf.__super__.set.apply(this, arguments); } }; return AlignSelf; })(Declaration); module.exports = AlignSelf; }).call(this); },{"../declaration":6,"./flex-spec":25}],10:[function(require,module,exports){ (function() { var BackgroundSize, Declaration, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); BackgroundSize = (function(_super) { __extends(BackgroundSize, _super); function BackgroundSize() { return BackgroundSize.__super__.constructor.apply(this, arguments); } BackgroundSize.names = ['background-size']; BackgroundSize.prototype.set = function(decl, prefix) { var value; value = decl.value.toLowerCase(); if (prefix === '-webkit-' && value.indexOf(' ') === -1 && value !== 'contain' && value !== 'cover') { decl.value = decl.value + ' ' + decl.value; } return BackgroundSize.__super__.set.call(this, decl, prefix); }; return BackgroundSize; })(Declaration); module.exports = BackgroundSize; }).call(this); },{"../declaration":6}],11:[function(require,module,exports){ (function() { var BlockLogical, Declaration, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); BlockLogical = (function(_super) { __extends(BlockLogical, _super); function BlockLogical() { return BlockLogical.__super__.constructor.apply(this, arguments); } BlockLogical.names = ['border-block-start', 'border-block-end', 'margin-block-start', 'margin-block-end', 'padding-block-start', 'padding-block-end', 'border-before', 'border-after', 'margin-before', 'margin-after', 'padding-before', 'padding-after']; BlockLogical.prototype.prefixed = function(prop, prefix) { return prefix + (prop.indexOf('-start') !== -1 ? prop.replace('-block-start', '-before') : prop.replace('-block-end', '-after')); }; BlockLogical.prototype.normalize = function(prop) { if (prop.indexOf('-before') !== -1) { return prop.replace('-before', '-block-start'); } else { return prop.replace('-after', '-block-end'); } }; return BlockLogical; })(Declaration); module.exports = BlockLogical; }).call(this); },{"../declaration":6}],12:[function(require,module,exports){ (function() { var BorderImage, Declaration, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); BorderImage = (function(_super) { __extends(BorderImage, _super); function BorderImage() { return BorderImage.__super__.constructor.apply(this, arguments); } BorderImage.names = ['border-image']; BorderImage.prototype.set = function(decl, prefix) { decl.value = decl.value.replace(/\s+fill(\s)/, '$1'); return BorderImage.__super__.set.call(this, decl, prefix); }; return BorderImage; })(Declaration); module.exports = BorderImage; }).call(this); },{"../declaration":6}],13:[function(require,module,exports){ (function() { var BorderRadius, Declaration, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); BorderRadius = (function(_super) { var hor, mozilla, normal, ver, _i, _j, _len, _len1, _ref, _ref1; __extends(BorderRadius, _super); function BorderRadius() { return BorderRadius.__super__.constructor.apply(this, arguments); } BorderRadius.names = ['border-radius']; BorderRadius.toMozilla = {}; BorderRadius.toNormal = {}; _ref = ['top', 'bottom']; for (_i = 0, _len = _ref.length; _i < _len; _i++) { ver = _ref[_i]; _ref1 = ['left', 'right']; for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { hor = _ref1[_j]; normal = "border-" + ver + "-" + hor + "-radius"; mozilla = "border-radius-" + ver + hor; BorderRadius.names.push(normal); BorderRadius.names.push(mozilla); BorderRadius.toMozilla[normal] = mozilla; BorderRadius.toNormal[mozilla] = normal; } } BorderRadius.prototype.prefixed = function(prop, prefix) { if (prefix === '-moz-') { return prefix + (BorderRadius.toMozilla[prop] || prop); } else { return BorderRadius.__super__.prefixed.apply(this, arguments); } }; BorderRadius.prototype.normalize = function(prop) { return BorderRadius.toNormal[prop] || prop; }; return BorderRadius; })(Declaration); module.exports = BorderRadius; }).call(this); },{"../declaration":6}],14:[function(require,module,exports){ (function() { var BreakInside, Declaration, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); BreakInside = (function(_super) { __extends(BreakInside, _super); function BreakInside() { return BreakInside.__super__.constructor.apply(this, arguments); } BreakInside.names = ['break-inside', 'page-break-inside', 'column-break-inside']; BreakInside.prototype.prefixed = function(prop, prefix) { if (prefix === '-webkit-') { return prefix + 'column-break-inside'; } else if (prefix === '-moz-') { return 'page-break-inside'; } else { return BreakInside.__super__.prefixed.apply(this, arguments); } }; BreakInside.prototype.normalize = function() { return 'break-inside'; }; BreakInside.prototype.set = function(decl, prefix) { if (decl.value === 'avoid-column' || decl.value === 'avoid-page') { decl.value = 'avoid'; } return BreakInside.__super__.set.apply(this, arguments); }; BreakInside.prototype.insert = function(decl, prefix, prefixes) { if (decl.value === 'avoid-region') { } else if (decl.value === 'avoid-page' && prefix === '-webkit-') { } else { return BreakInside.__super__.insert.apply(this, arguments); } }; return BreakInside; })(Declaration); module.exports = BreakInside; }).call(this); },{"../declaration":6}],15:[function(require,module,exports){ (function() { var CrispEdges, Value, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Value = require('../value'); CrispEdges = (function(_super) { __extends(CrispEdges, _super); function CrispEdges() { return CrispEdges.__super__.constructor.apply(this, arguments); } CrispEdges.names = ['crisp-edges']; CrispEdges.prototype.replace = function(string, prefix) { if (prefix === '-webkit-') { return string.replace(this.regexp(), '$1-webkit-optimize-contrast'); } else { return CrispEdges.__super__.replace.apply(this, arguments); } }; return CrispEdges; })(Value); module.exports = CrispEdges; }).call(this); },{"../value":47}],16:[function(require,module,exports){ (function() { var DisplayFlex, OldDisplayFlex, OldValue, Value, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); OldValue = require('../old-value'); Value = require('../value'); OldDisplayFlex = (function(_super) { __extends(OldDisplayFlex, _super); function OldDisplayFlex(unprefixed, prefixed) { this.unprefixed = unprefixed; this.prefixed = prefixed; } OldDisplayFlex.prototype.check = function(value) { return value === this.name; }; return OldDisplayFlex; })(OldValue); DisplayFlex = (function(_super) { __extends(DisplayFlex, _super); DisplayFlex.names = ['display-flex', 'inline-flex']; function DisplayFlex(name, prefixes) { DisplayFlex.__super__.constructor.apply(this, arguments); if (name === 'display-flex') { this.name = 'flex'; } } DisplayFlex.prototype.check = function(decl) { return decl.value === this.name; }; DisplayFlex.prototype.prefixed = function(prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; return prefix + (spec === 2009 ? this.name === 'flex' ? 'box' : 'inline-box' : spec === 2012 ? this.name === 'flex' ? 'flexbox' : 'inline-flexbox' : spec === 'final' ? this.name : void 0); }; DisplayFlex.prototype.replace = function(string, prefix) { return this.prefixed(prefix); }; DisplayFlex.prototype.old = function(prefix) { var prefixed; prefixed = this.prefixed(prefix); if (prefixed) { return new OldValue(this.name, prefixed); } }; return DisplayFlex; })(Value); module.exports = DisplayFlex; }).call(this); },{"../old-value":39,"../value":47,"./flex-spec":25}],17:[function(require,module,exports){ (function() { var FillAvailable, OldValue, Value, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; OldValue = require('../old-value'); Value = require('../value'); FillAvailable = (function(_super) { __extends(FillAvailable, _super); function FillAvailable() { return FillAvailable.__super__.constructor.apply(this, arguments); } FillAvailable.names = ['fill-available']; FillAvailable.prototype.replace = function(string, prefix) { if (prefix === '-moz-') { return string.replace(this.regexp(), '$1-moz-available$3'); } else { return FillAvailable.__super__.replace.apply(this, arguments); } }; FillAvailable.prototype.old = function(prefix) { if (prefix === '-moz-') { return new OldValue(this.name, '-moz-available'); } else { return FillAvailable.__super__.old.apply(this, arguments); } }; return FillAvailable; })(Value); module.exports = FillAvailable; }).call(this); },{"../old-value":39,"../value":47}],18:[function(require,module,exports){ (function() { var FilterValue, OldFilterValue, OldValue, Value, utils, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; OldValue = require('../old-value'); Value = require('../value'); utils = require('../utils'); OldFilterValue = (function(_super) { __extends(OldFilterValue, _super); function OldFilterValue() { return OldFilterValue.__super__.constructor.apply(this, arguments); } OldFilterValue.prototype.clean = function(decl) { return decl.value = utils.editList(decl.value, (function(_this) { return function(props) { if (props.every(function(i) { return i.indexOf(_this.unprefixed) !== 0; })) { return props; } return props.filter(function(i) { return i.indexOf(_this.prefixed) === -1; }); }; })(this)); }; return OldFilterValue; })(OldValue); FilterValue = (function(_super) { __extends(FilterValue, _super); function FilterValue() { return FilterValue.__super__.constructor.apply(this, arguments); } FilterValue.names = ['filter']; FilterValue.prototype.replace = function(value, prefix) { if (prefix === '-webkit-') { if (value.indexOf('-webkit-filter') === -1) { return FilterValue.__super__.replace.apply(this, arguments) + ', ' + value; } else { return value; } } else { return FilterValue.__super__.replace.apply(this, arguments); } }; FilterValue.prototype.old = function(prefix) { return new OldFilterValue(this.name, prefix + this.name); }; return FilterValue; })(Value); module.exports = FilterValue; }).call(this); },{"../old-value":39,"../utils":46,"../value":47}],19:[function(require,module,exports){ (function() { var Declaration, Filter, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); Filter = (function(_super) { __extends(Filter, _super); function Filter() { return Filter.__super__.constructor.apply(this, arguments); } Filter.names = ['filter']; Filter.prototype.check = function(decl) { var v; v = decl.value; return v.toLowerCase().indexOf('alpha(') === -1 && v.indexOf('DXImageTransform.Microsoft') === -1 && v.indexOf('data:image/svg+xml') === -1; }; return Filter; })(Declaration); module.exports = Filter; }).call(this); },{"../declaration":6}],20:[function(require,module,exports){ (function() { var Declaration, FlexBasis, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); FlexBasis = (function(_super) { __extends(FlexBasis, _super); function FlexBasis() { return FlexBasis.__super__.constructor.apply(this, arguments); } FlexBasis.names = ['flex-basis', 'flex-preferred-size']; FlexBasis.prototype.normalize = function() { return 'flex-basis'; }; FlexBasis.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012) { return prefix + 'flex-preferred-size'; } else { return FlexBasis.__super__.prefixed.apply(this, arguments); } }; FlexBasis.prototype.set = function(decl, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012 || spec === 'final') { return FlexBasis.__super__.set.apply(this, arguments); } }; return FlexBasis; })(Declaration); module.exports = FlexBasis; }).call(this); },{"../declaration":6,"./flex-spec":25}],21:[function(require,module,exports){ (function() { var Declaration, FlexDirection, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); FlexDirection = (function(_super) { __extends(FlexDirection, _super); function FlexDirection() { return FlexDirection.__super__.constructor.apply(this, arguments); } FlexDirection.names = ['flex-direction', 'box-direction', 'box-orient']; FlexDirection.prototype.normalize = function(prop) { return 'flex-direction'; }; FlexDirection.prototype.insert = function(decl, prefix, prefixes) { var already, cloned, dir, orient, spec, value, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { already = decl.parent.some(function(i) { return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'; }); if (already) { return; } value = decl.value; orient = value.indexOf('row') !== -1 ? 'horizontal' : 'vertical'; dir = value.indexOf('reverse') !== -1 ? 'reverse' : 'normal'; cloned = this.clone(decl); cloned.prop = prefix + 'box-orient'; cloned.value = orient; if (this.needCascade(decl)) { cloned.before = this.calcBefore(prefixes, decl, prefix); } decl.parent.insertBefore(decl, cloned); cloned = this.clone(decl); cloned.prop = prefix + 'box-direction'; cloned.value = dir; if (this.needCascade(decl)) { cloned.before = this.calcBefore(prefixes, decl, prefix); } return decl.parent.insertBefore(decl, cloned); } else { return FlexDirection.__super__.insert.apply(this, arguments); } }; FlexDirection.prototype.old = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return [prefix + 'box-orient', prefix + 'box-direction']; } else { return FlexDirection.__super__.old.apply(this, arguments); } }; return FlexDirection; })(Declaration); module.exports = FlexDirection; }).call(this); },{"../declaration":6,"./flex-spec":25}],22:[function(require,module,exports){ (function() { var Declaration, FlexFlow, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); FlexFlow = (function(_super) { __extends(FlexFlow, _super); function FlexFlow() { return FlexFlow.__super__.constructor.apply(this, arguments); } FlexFlow.names = ['flex-flow']; FlexFlow.prototype.set = function(decl, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012) { return FlexFlow.__super__.set.apply(this, arguments); } else if (spec === 'final') { return FlexFlow.__super__.set.apply(this, arguments); } }; return FlexFlow; })(Declaration); module.exports = FlexFlow; }).call(this); },{"../declaration":6,"./flex-spec":25}],23:[function(require,module,exports){ (function() { var Declaration, Flex, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); Flex = (function(_super) { __extends(Flex, _super); function Flex() { return Flex.__super__.constructor.apply(this, arguments); } Flex.names = ['flex-grow', 'flex-positive']; Flex.prototype.normalize = function() { return 'flex'; }; Flex.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return prefix + 'box-flex'; } else if (spec === 2012) { return prefix + 'flex-positive'; } else { return Flex.__super__.prefixed.apply(this, arguments); } }; return Flex; })(Declaration); module.exports = Flex; }).call(this); },{"../declaration":6,"./flex-spec":25}],24:[function(require,module,exports){ (function() { var Declaration, FlexShrink, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); FlexShrink = (function(_super) { __extends(FlexShrink, _super); function FlexShrink() { return FlexShrink.__super__.constructor.apply(this, arguments); } FlexShrink.names = ['flex-shrink', 'flex-negative']; FlexShrink.prototype.normalize = function() { return 'flex-shrink'; }; FlexShrink.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012) { return prefix + 'flex-negative'; } else { return FlexShrink.__super__.prefixed.apply(this, arguments); } }; FlexShrink.prototype.set = function(decl, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2012 || spec === 'final') { return FlexShrink.__super__.set.apply(this, arguments); } }; return FlexShrink; })(Declaration); module.exports = FlexShrink; }).call(this); },{"../declaration":6,"./flex-spec":25}],25:[function(require,module,exports){ (function() { module.exports = function(prefix) { var spec; spec = prefix === '-webkit- 2009' || prefix === '-moz-' ? 2009 : prefix === '-ms-' ? 2012 : prefix === '-webkit-' ? 'final' : void 0; if (prefix === '-webkit- 2009') { prefix = '-webkit-'; } return [spec, prefix]; }; }).call(this); },{}],26:[function(require,module,exports){ (function() { var FlexValues, OldValue, Value, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; OldValue = require('../old-value'); Value = require('../value'); FlexValues = (function(_super) { __extends(FlexValues, _super); function FlexValues() { return FlexValues.__super__.constructor.apply(this, arguments); } FlexValues.names = ['flex', 'flex-grow', 'flex-shrink', 'flex-basis']; FlexValues.prototype.prefixed = function(prefix) { return this.all.prefixed(this.name, prefix); }; FlexValues.prototype.replace = function(string, prefix) { return string.replace(this.regexp(), '$1' + this.prefixed(prefix) + '$3'); }; FlexValues.prototype.old = function(prefix) { return new OldValue(this.name, this.prefixed(prefix)); }; return FlexValues; })(Value); module.exports = FlexValues; }).call(this); },{"../old-value":39,"../value":47}],27:[function(require,module,exports){ (function() { var Declaration, FlexWrap, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); FlexWrap = (function(_super) { __extends(FlexWrap, _super); function FlexWrap() { return FlexWrap.__super__.constructor.apply(this, arguments); } FlexWrap.names = ['flex-wrap']; FlexWrap.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec !== 2009) { return FlexWrap.__super__.set.apply(this, arguments); } }; return FlexWrap; })(Declaration); module.exports = FlexWrap; }).call(this); },{"../declaration":6,"./flex-spec":25}],28:[function(require,module,exports){ (function() { var Declaration, Flex, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); Flex = (function(_super) { __extends(Flex, _super); function Flex() { return Flex.__super__.constructor.apply(this, arguments); } Flex.names = ['flex', 'box-flex']; Flex.oldValues = { 'auto': '1', 'none': '0' }; Flex.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return prefix + 'box-flex'; } else { return Flex.__super__.prefixed.apply(this, arguments); } }; Flex.prototype.normalize = function() { return 'flex'; }; Flex.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2009) { decl.value = decl.value.split(' ')[0]; decl.value = Flex.oldValues[decl.value] || decl.value; return Flex.__super__.set.call(this, decl, prefix); } else { return Flex.__super__.set.apply(this, arguments); } }; return Flex; })(Declaration); module.exports = Flex; }).call(this); },{"../declaration":6,"./flex-spec":25}],29:[function(require,module,exports){ (function() { var Fullscreen, Selector, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Selector = require('../selector'); Fullscreen = (function(_super) { __extends(Fullscreen, _super); function Fullscreen() { return Fullscreen.__super__.constructor.apply(this, arguments); } Fullscreen.names = [':fullscreen']; Fullscreen.prototype.prefixed = function(prefix) { if ('-webkit-' === prefix) { return ':-webkit-full-screen'; } else if ('-moz-' === prefix) { return ':-moz-full-screen'; } else { return ":" + prefix + "fullscreen"; } }; return Fullscreen; })(Selector); module.exports = Fullscreen; }).call(this); },{"../selector":44}],30:[function(require,module,exports){ (function() { var Gradient, OldValue, Value, isDirection, list, utils, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; OldValue = require('../old-value'); Value = require('../value'); utils = require('../utils'); list = require('postcss/lib/list'); isDirection = /top|left|right|bottom/gi; Gradient = (function(_super) { __extends(Gradient, _super); function Gradient() { return Gradient.__super__.constructor.apply(this, arguments); } Gradient.names = ['linear-gradient', 'repeating-linear-gradient', 'radial-gradient', 'repeating-radial-gradient']; Gradient.prototype.replace = function(string, prefix) { return list.space(string).map((function(_this) { return function(value) { var after, args, close, params; if (value.slice(0, +_this.name.length + 1 || 9e9) !== _this.name + '(') { return value; } close = value.lastIndexOf(')'); after = value.slice(close + 1); args = value.slice(_this.name.length + 1, +(close - 1) + 1 || 9e9); params = list.comma(args); params = _this.newDirection(params); if (prefix === '-webkit- old') { if (args.indexOf('px') === -1) { return _this.oldWebkit(value, args, params, after); } } else { _this.convertDirection(params); return prefix + _this.name + '(' + params.join(', ') + ')' + after; } }; })(this)).join(' '); }; Gradient.prototype.directions = { top: 'bottom', left: 'right', bottom: 'top', right: 'left' }; Gradient.prototype.oldDirections = { 'top': 'left bottom, left top', 'left': 'right top, left top', 'bottom': 'left top, left bottom', 'right': 'left top, right top', 'top right': 'left bottom, right top', 'top left': 'right bottom, left top', 'right top': 'left bottom, right top', 'right bottom': 'left top, right bottom', 'bottom right': 'left top, right bottom', 'bottom left': 'right top, left bottom', 'left top': 'right bottom, left top', 'left bottom': 'right top, left bottom' }; Gradient.prototype.newDirection = function(params) { var first, value; first = params[0]; if (first.indexOf('to ') === -1 && isDirection.test(first)) { first = first.split(' '); first = (function() { var _i, _len, _results; _results = []; for (_i = 0, _len = first.length; _i < _len; _i++) { value = first[_i]; _results.push(this.directions[value.toLowerCase()] || value); } return _results; }).call(this); params[0] = 'to ' + first.join(' '); } return params; }; Gradient.prototype.oldWebkit = function(value, args, params, after) { if (this.name !== 'linear-gradient') { return value; } if (params[0] && params[0].indexOf('deg') !== -1) { return value; } if (args.indexOf('-corner') !== -1) { return value; } if (args.indexOf('-side') !== -1) { return value; } params = this.oldDirection(params); params = this.colorStops(params); return '-webkit-gradient(linear, ' + params.join(', ') + ')' + after; }; Gradient.prototype.convertDirection = function(params) { if (params.length > 0) { if (params[0].slice(0, 3) === 'to ') { return params[0] = this.fixDirection(params[0]); } else if (params[0].indexOf('deg') !== -1) { return params[0] = this.fixAngle(params[0]); } else if (params[0].indexOf(' at ') !== -1) { return this.fixRadial(params); } } }; Gradient.prototype.fixDirection = function(param) { var value; param = param.split(' '); param.splice(0, 1); param = (function() { var _i, _len, _results; _results = []; for (_i = 0, _len = param.length; _i < _len; _i++) { value = param[_i]; _results.push(this.directions[value.toLowerCase()] || value); } return _results; }).call(this); return param.join(' '); }; Gradient.prototype.roundFloat = function(float, digits) { return parseFloat(float.toFixed(digits)); }; Gradient.prototype.fixAngle = function(param) { param = parseFloat(param); param = Math.abs(450 - param) % 360; param = this.roundFloat(param, 3); return "" + param + "deg"; }; Gradient.prototype.oldDirection = function(params) { var direction; if (params.length === 0) { params; } if (params[0].indexOf('to ') !== -1) { direction = params[0].replace(/^to\s+/, ''); direction = this.oldDirections[direction]; params[0] = direction; return params; } else { direction = this.oldDirections.bottom; return [direction].concat(params); } }; Gradient.prototype.colorStops = function(params) { return params.map(function(param, i) { var color, match, position, _ref; if (i === 0) { return param; } _ref = list.space(param), color = _ref[0], position = _ref[1]; if (position == null) { match = param.match(/^(.*\))(\d.*)$/); if (match) { color = match[1]; position = match[2]; } } if (position && position.indexOf(')') !== -1) { color += ' ' + position; position = void 0; } if (i === 1 && (position === void 0 || position === '0%')) { return "from(" + color + ")"; } else if (i === params.length - 1 && (position === void 0 || position === '100%')) { return "to(" + color + ")"; } else if (position) { return "color-stop(" + position + ", " + color + ")"; } else { return "color-stop(" + color + ")"; } }); }; Gradient.prototype.fixRadial = function(params) { var first; first = params[0].split(/\s+at\s+/); return params.splice(0, 1, first[1], first[0]); }; Gradient.prototype.old = function(prefix) { var regexp, string, type; if (prefix === '-webkit-') { type = this.name === 'linear-gradient' ? 'linear' : 'radial'; string = '-gradient'; regexp = utils.regexp("-webkit-(" + type + "-gradient|gradient\\(\\s*" + type + ")", false); return new OldValue(this.name, prefix + this.name, string, regexp); } else { return Gradient.__super__.old.apply(this, arguments); } }; Gradient.prototype.add = function(decl, prefix) { var prop; prop = decl.prop; if (prop === 'list-style' || prop === 'list-style-image' || prop === 'content') { if (prefix === '-webkit-' || prefix === '-webkit- old') { return Gradient.__super__.add.apply(this, arguments); } } else { return Gradient.__super__.add.apply(this, arguments); } }; return Gradient; })(Value); module.exports = Gradient; }).call(this); },{"../old-value":39,"../utils":46,"../value":47,"postcss/lib/list":102}],31:[function(require,module,exports){ (function() { var Declaration, InlineLogical, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); InlineLogical = (function(_super) { __extends(InlineLogical, _super); function InlineLogical() { return InlineLogical.__super__.constructor.apply(this, arguments); } InlineLogical.names = ['border-inline-start', 'border-inline-end', 'margin-inline-start', 'margin-inline-end', 'padding-inline-start', 'padding-inline-end', 'border-start', 'border-end', 'margin-start', 'margin-end', 'padding-start', 'padding-end']; InlineLogical.prototype.prefixed = function(prop, prefix) { return prefix + prop.replace('-inline', ''); }; InlineLogical.prototype.normalize = function(prop) { return prop.replace(/(margin|padding|border)-(start|end)/, '$1-inline-$2'); }; return InlineLogical; })(Declaration); module.exports = InlineLogical; }).call(this); },{"../declaration":6}],32:[function(require,module,exports){ (function() { var Declaration, JustifyContent, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); JustifyContent = (function(_super) { __extends(JustifyContent, _super); function JustifyContent() { return JustifyContent.__super__.constructor.apply(this, arguments); } JustifyContent.names = ['justify-content', 'flex-pack', 'box-pack']; JustifyContent.oldValues = { 'flex-end': 'end', 'flex-start': 'start', 'space-between': 'justify', 'space-around': 'distribute' }; JustifyContent.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return prefix + 'box-pack'; } else if (spec === 2012) { return prefix + 'flex-pack'; } else { return JustifyContent.__super__.prefixed.apply(this, arguments); } }; JustifyContent.prototype.normalize = function(prop) { return 'justify-content'; }; JustifyContent.prototype.set = function(decl, prefix) { var spec, value; spec = flexSpec(prefix)[0]; if (spec === 2009 || spec === 2012) { value = JustifyContent.oldValues[decl.value] || decl.value; decl.value = value; if (spec !== 2009 || value !== 'distribute') { return JustifyContent.__super__.set.call(this, decl, prefix); } } else if (spec === 'final') { return JustifyContent.__super__.set.apply(this, arguments); } }; return JustifyContent; })(Declaration); module.exports = JustifyContent; }).call(this); },{"../declaration":6,"./flex-spec":25}],33:[function(require,module,exports){ (function() { var Declaration, Order, flexSpec, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; flexSpec = require('./flex-spec'); Declaration = require('../declaration'); Order = (function(_super) { __extends(Order, _super); function Order() { return Order.__super__.constructor.apply(this, arguments); } Order.names = ['order', 'flex-order', 'box-ordinal-group']; Order.prototype.prefixed = function(prop, prefix) { var spec, _ref; _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1]; if (spec === 2009) { return prefix + 'box-ordinal-group'; } else if (spec === 2012) { return prefix + 'flex-order'; } else { return Order.__super__.prefixed.apply(this, arguments); } }; Order.prototype.normalize = function(prop) { return 'order'; }; Order.prototype.set = function(decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2009) { decl.value = (parseInt(decl.value) + 1).toString(); return Order.__super__.set.call(this, decl, prefix); } else { return Order.__super__.set.apply(this, arguments); } }; return Order; })(Declaration); module.exports = Order; }).call(this); },{"../declaration":6,"./flex-spec":25}],34:[function(require,module,exports){ (function() { var Placeholder, Selector, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Selector = require('../selector'); Placeholder = (function(_super) { __extends(Placeholder, _super); function Placeholder() { return Placeholder.__super__.constructor.apply(this, arguments); } Placeholder.names = ['::placeholder']; Placeholder.prototype.possible = function() { return Placeholder.__super__.possible.apply(this, arguments).concat('-moz- old'); }; Placeholder.prototype.prefixed = function(prefix) { if ('-webkit-' === prefix) { return '::-webkit-input-placeholder'; } else if ('-ms-' === prefix) { return ':-ms-input-placeholder'; } else if ('-moz- old' === prefix) { return ':-moz-placeholder'; } else { return "::" + prefix + "placeholder"; } }; return Placeholder; })(Selector); module.exports = Placeholder; }).call(this); },{"../selector":44}],35:[function(require,module,exports){ (function() { var Declaration, TransformDecl, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Declaration = require('../declaration'); TransformDecl = (function(_super) { __extends(TransformDecl, _super); function TransformDecl() { return TransformDecl.__super__.constructor.apply(this, arguments); } TransformDecl.names = ['transform', 'transform-origin']; TransformDecl.functions3d = ['matrix3d', 'translate3d', 'translateZ', 'scale3d', 'scaleZ', 'rotate3d', 'rotateX', 'rotateY', 'rotateZ', 'perspective']; TransformDecl.prototype.keykrameParents = function(decl) { var parent; parent = decl.parent; while (parent) { if (parent.type === 'atrule' && parent.name === 'keyframes') { return true; } parent = parent.parent; } return false; }; TransformDecl.prototype.contain3d = function(decl) { var func, _i, _len, _ref; if (decl.prop === 'transform-origin') { return false; } _ref = TransformDecl.functions3d; for (_i = 0, _len = _ref.length; _i < _len; _i++) { func = _ref[_i]; if (decl.value.indexOf("" + func + "(") !== -1) { return true; } } return false; }; TransformDecl.prototype.insert = function(decl, prefix, prefixes) { if (prefix === '-ms-') { if (!this.contain3d(decl) && !this.keykrameParents(decl)) { return TransformDecl.__super__.insert.apply(this, arguments); } } else if (prefix === '-o-') { if (!this.contain3d(decl)) { return TransformDecl.__super__.insert.apply(this, arguments); } } else { return TransformDecl.__super__.insert.apply(this, arguments); } }; return TransformDecl; })(Declaration); module.exports = TransformDecl; }).call(this); },{"../declaration":6}],36:[function(require,module,exports){ (function() { var TransformValue, Value, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Value = require('../value'); TransformValue = (function(_super) { __extends(TransformValue, _super); function TransformValue() { return TransformValue.__super__.constructor.apply(this, arguments); } TransformValue.names = ['transform']; TransformValue.prototype.replace = function(value, prefix) { if (prefix === '-ms-') { return value; } else { return TransformValue.__super__.replace.apply(this, arguments); } }; return TransformValue; })(Value); module.exports = TransformValue; }).call(this); },{"../value":47}],37:[function(require,module,exports){ (function() { var capitalize, names, prefix; capitalize = function(str) { return str.slice(0, 1).toUpperCase() + str.slice(1); }; names = { ie: 'IE', ie_mob: 'IE Mobile', ios_saf: 'iOS', op_mini: 'Opera Mini', op_mob: 'Opera Mobile', and_chr: 'Chrome for Android', and_ff: 'Firefox for Android', and_uc: 'UC for Android' }; prefix = function(name, transition, prefixes) { var out; out = ' ' + name + (transition ? '*' : '') + ': '; out += prefixes.map(function(i) { return i.replace(/^-(.*)-$/g, '$1'); }).join(', '); out += "\n"; return out; }; module.exports = function(prefixes) { var atrules, browser, data, list, name, needTransition, out, props, selector, selectors, string, transitionProp, useTransition, value, values, version, versions, _i, _j, _k, _len, _len1, _len2, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6; if (prefixes.browsers.selected.length === 0) { return "No browsers selected"; } versions = []; _ref = prefixes.browsers.selected; for (_i = 0, _len = _ref.length; _i < _len; _i++) { browser = _ref[_i]; _ref1 = browser.split(' '), name = _ref1[0], version = _ref1[1]; name = names[name] || capitalize(name); if (versions[name]) { versions[name].push(version); } else { versions[name] = [version]; } } out = "Browsers:\n"; for (browser in versions) { list = versions[browser]; list = list.sort(function(a, b) { return parseFloat(b) - parseFloat(a); }); out += ' ' + browser + ': ' + list.join(', ') + "\n"; } atrules = ''; _ref2 = prefixes.add; for (name in _ref2) { data = _ref2[name]; if (name[0] === '@' && data.prefixes) { atrules += prefix(name, false, data.prefixes); } } if (atrules !== '') { out += "\nAt-Rules:\n" + atrules; } selectors = ''; _ref3 = prefixes.add.selectors; for (_j = 0, _len1 = _ref3.length; _j < _len1; _j++) { selector = _ref3[_j]; if (selector.prefixes) { selectors += prefix(selector.name, false, selector.prefixes); } } if (selectors !== '') { out += "\nSelectors:\n" + selectors; } values = ''; props = ''; useTransition = false; needTransition = (_ref4 = prefixes.add.transition) != null ? _ref4.prefixes : void 0; _ref5 = prefixes.add; for (name in _ref5) { data = _ref5[name]; if (name[0] !== '@' && data.prefixes) { transitionProp = needTransition && prefixes.data[name].transition; if (transitionProp) { useTransition = true; } props += prefix(name, transitionProp, data.prefixes); } if (!data.values) { continue; } if (prefixes.transitionProps.some(function(i) { return i === name; })) { continue; } _ref6 = data.values; for (_k = 0, _len2 = _ref6.length; _k < _len2; _k++) { value = _ref6[_k]; string = prefix(value.name, false, value.prefixes); if (values.indexOf(string) === -1) { values += string; } } } if (useTransition) { props += " * - can be used in transition\n"; } if (props !== '') { out += "\nProperties:\n" + props; } if (values !== '') { out += "\nValues:\n" + values; } if (atrules === '' && selectors === '' && props === '' && values === '') { out += '\nAwesome! Your browsers don\'t require any vendor prefixes.' + '\nNow you can remove Autoprefixer from build steps.'; } return out; }; }).call(this); },{}],38:[function(require,module,exports){ (function() { var OldSelector; OldSelector = (function() { function OldSelector(selector, prefix) { var _i, _len, _ref; this.prefix = prefix; this.prefixed = selector.prefixed(this.prefix); this.regexp = selector.regexp(this.prefix); this.prefixeds = []; _ref = selector.possible(); for (_i = 0, _len = _ref.length; _i < _len; _i++) { prefix = _ref[_i]; this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]); } this.unprefixed = selector.name; this.nameRegexp = selector.regexp(); } OldSelector.prototype.isHack = function(rule) { var before, index, regexp, rules, some, string, _i, _len, _ref, _ref1; index = rule.parent.index(rule) + 1; rules = rule.parent.nodes; while (index < rules.length) { before = rules[index].selector; if (!before) { return true; } if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) { return false; } some = false; _ref = this.prefixeds; for (_i = 0, _len = _ref.length; _i < _len; _i++) { _ref1 = _ref[_i], string = _ref1[0], regexp = _ref1[1]; if (before.indexOf(string) !== -1 && before.match(regexp)) { some = true; break; } } if (!some) { return true; } index += 1; } return true; }; OldSelector.prototype.check = function(rule) { if (rule.selector.indexOf(this.prefixed) === -1) { return false; } if (!rule.selector.match(this.regexp)) { return false; } if (this.isHack(rule)) { return false; } return true; }; return OldSelector; })(); module.exports = OldSelector; }).call(this); },{}],39:[function(require,module,exports){ (function() { var OldValue, utils; utils = require('./utils'); OldValue = (function() { function OldValue(unprefixed, prefixed, string, regexp) { this.unprefixed = unprefixed; this.prefixed = prefixed; this.string = string; this.regexp = regexp; this.regexp || (this.regexp = utils.regexp(this.prefixed)); this.string || (this.string = this.prefixed); } OldValue.prototype.check = function(value) { if (value.indexOf(this.string) !== -1) { return !!value.match(this.regexp); } else { return false; } }; return OldValue; })(); module.exports = OldValue; }).call(this); },{"./utils":46}],40:[function(require,module,exports){ (function() { var Browsers, Prefixer, clone, utils, vendor, __hasProp = {}.hasOwnProperty; Browsers = require('./browsers'); utils = require('./utils'); vendor = require('postcss/lib/vendor'); clone = function(obj, parent) { var cloned, i, value; if (typeof obj !== 'object') { return obj; } cloned = new obj.constructor(); for (i in obj) { if (!__hasProp.call(obj, i)) continue; value = obj[i]; if (i === 'parent' && typeof value === 'object') { if (parent) { cloned[i] = parent; } } else if (i === 'source') { cloned[i] = value; } else if (value instanceof Array) { cloned[i] = value.map(function(i) { return clone(i, cloned); }); } else if (i !== '_autoprefixerPrefix' && i !== '_autoprefixerValues') { cloned[i] = clone(value, cloned); } } return cloned; }; Prefixer = (function() { Prefixer.hack = function(klass) { var name, _i, _len, _ref, _results; this.hacks || (this.hacks = {}); _ref = klass.names; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { name = _ref[_i]; _results.push(this.hacks[name] = klass); } return _results; }; Prefixer.load = function(name, prefixes, all) { var klass, _ref; klass = (_ref = this.hacks) != null ? _ref[name] : void 0; if (klass) { return new klass(name, prefixes, all); } else { return new this(name, prefixes, all); } }; Prefixer.clone = function(node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }; function Prefixer(name, prefixes, all) { this.name = name; this.prefixes = prefixes; this.all = all; } Prefixer.prototype.parentPrefix = function(node) { var prefix; prefix = node._autoprefixerPrefix != null ? node._autoprefixerPrefix : node.type === 'decl' && node.prop[0] === '-' ? vendor.prefix(node.prop) : node.type === 'root' ? false : node.type === 'rule' && node.selector.indexOf(':-') !== -1 ? node.selector.match(/:(-\w+-)/)[1] : node.type === 'atrule' && node.name[0] === '-' ? vendor.prefix(node.name) : this.parentPrefix(node.parent); if (Browsers.prefixes().indexOf(prefix) === -1) { prefix = false; } return node._autoprefixerPrefix = prefix; }; Prefixer.prototype.process = function(node) { var added, parent, prefix, prefixes, _i, _j, _len, _len1, _ref; if (!this.check(node)) { return; } parent = this.parentPrefix(node); prefixes = []; _ref = this.prefixes; for (_i = 0, _len = _ref.length; _i < _len; _i++) { prefix = _ref[_i]; if (parent && parent !== utils.removeNote(prefix)) { continue; } prefixes.push(prefix); } added = []; for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) { prefix = prefixes[_j]; if (this.add(node, prefix, added.concat([prefix]))) { added.push(prefix); } } return added; }; Prefixer.prototype.clone = function(node, overrides) { return Prefixer.clone(node, overrides); }; return Prefixer; })(); module.exports = Prefixer; }).call(this); },{"./browsers":5,"./utils":46,"postcss/lib/vendor":113}],41:[function(require,module,exports){ (function() { var AtRule, Browsers, Declaration, Prefixes, Processor, Resolution, Selector, Supports, Value, declsCache, utils, vendor; Declaration = require('./declaration'); Resolution = require('./resolution'); Processor = require('./processor'); Supports = require('./supports'); Browsers = require('./browsers'); Selector = require('./selector'); AtRule = require('./at-rule'); Value = require('./value'); utils = require('./utils'); vendor = require('postcss/lib/vendor'); Selector.hack(require('./hacks/fullscreen')); Selector.hack(require('./hacks/placeholder')); Declaration.hack(require('./hacks/flex')); Declaration.hack(require('./hacks/order')); Declaration.hack(require('./hacks/filter')); Declaration.hack(require('./hacks/flex-flow')); Declaration.hack(require('./hacks/flex-grow')); Declaration.hack(require('./hacks/flex-wrap')); Declaration.hack(require('./hacks/align-self')); Declaration.hack(require('./hacks/flex-basis')); Declaration.hack(require('./hacks/align-items')); Declaration.hack(require('./hacks/flex-shrink')); Declaration.hack(require('./hacks/break-inside')); Declaration.hack(require('./hacks/border-image')); Declaration.hack(require('./hacks/align-content')); Declaration.hack(require('./hacks/border-radius')); Declaration.hack(require('./hacks/block-logical')); Declaration.hack(require('./hacks/inline-logical')); Declaration.hack(require('./hacks/transform-decl')); Declaration.hack(require('./hacks/flex-direction')); Declaration.hack(require('./hacks/justify-content')); Declaration.hack(require('./hacks/background-size')); Value.hack(require('./hacks/gradient')); Value.hack(require('./hacks/crisp-edges')); Value.hack(require('./hacks/flex-values')); Value.hack(require('./hacks/display-flex')); Value.hack(require('./hacks/filter-value')); Value.hack(require('./hacks/fill-available')); Value.hack(require('./hacks/transform-value')); declsCache = {}; Prefixes = (function() { function Prefixes(data, browsers, options) { var _ref; this.data = data; this.browsers = browsers; this.options = options != null ? options : {}; _ref = this.preprocess(this.select(this.data)), this.add = _ref[0], this.remove = _ref[1]; this.processor = new Processor(this); } Prefixes.prototype.transitionProps = ['transition', 'transition-property']; Prefixes.prototype.cleaner = function() { var empty; if (!this.cleanerCache) { if (this.browsers.selected.length) { empty = new Browsers(this.browsers.data, []); this.cleanerCache = new Prefixes(this.data, empty, this.options); } else { return this; } } return this.cleanerCache; }; Prefixes.prototype.select = function(list) { var add, all, data, name, notes, selected; selected = { add: {}, remove: {} }; for (name in list) { data = list[name]; add = data.browsers.map(function(i) { var params; params = i.split(' '); return { browser: params[0] + ' ' + params[1], note: params[2] }; }); notes = add.filter(function(i) { return i.note; }).map((function(_this) { return function(i) { return _this.browsers.prefix(i.browser) + ' ' + i.note; }; })(this)); notes = utils.uniq(notes); add = add.filter((function(_this) { return function(i) { return _this.browsers.isSelected(i.browser); }; })(this)).map((function(_this) { return function(i) { var prefix; prefix = _this.browsers.prefix(i.browser); if (i.note) { return prefix + ' ' + i.note; } else { return prefix; } }; })(this)); add = this.sort(utils.uniq(add)); all = data.browsers.map((function(_this) { return function(i) { return _this.browsers.prefix(i); }; })(this)); if (data.mistakes) { all = all.concat(data.mistakes); } all = all.concat(notes); all = utils.uniq(all); if (add.length) { selected.add[name] = add; if (add.length < all.length) { selected.remove[name] = all.filter(function(i) { return add.indexOf(i) === -1; }); } } else { selected.remove[name] = all; } } return selected; }; Prefixes.prototype.sort = function(prefixes) { return prefixes.sort(function(a, b) { var aLength, bLength; aLength = utils.removeNote(a).length; bLength = utils.removeNote(b).length; if (aLength === bLength) { return b.length - a.length; } else { return bLength - aLength; } }); }; Prefixes.prototype.preprocess = function(selected) { var add, name, old, olds, prefix, prefixed, prefixes, prop, props, remove, selector, value, values, _i, _j, _k, _l, _len, _len1, _len2, _len3, _len4, _len5, _len6, _m, _n, _o, _ref, _ref1, _ref2; add = { selectors: [], '@supports': new Supports(this) }; _ref = selected.add; for (name in _ref) { prefixes = _ref[name]; if (name === '@keyframes' || name === '@viewport') { add[name] = new AtRule(name, prefixes, this); } else if (name === '@resolution') { add[name] = new Resolution(name, prefixes, this); } else if (this.data[name].selector) { add.selectors.push(Selector.load(name, prefixes, this)); } else { props = this.data[name].transition ? this.transitionProps : this.data[name].props; if (props) { value = Value.load(name, prefixes, this); for (_i = 0, _len = props.length; _i < _len; _i++) { prop = props[_i]; if (!add[prop]) { add[prop] = { values: [] }; } add[prop].values.push(value); } } if (!this.data[name].props) { values = ((_ref1 = add[name]) != null ? _ref1.values : void 0) || []; add[name] = Declaration.load(name, prefixes, this); add[name].values = values; } } } remove = { selectors: [] }; _ref2 = selected.remove; for (name in _ref2) { prefixes = _ref2[name]; if (this.data[name].selector) { selector = Selector.load(name, prefixes); for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) { prefix = prefixes[_j]; remove.selectors.push(selector.old(prefix)); } } else if (name === '@keyframes' || name === '@viewport') { for (_k = 0, _len2 = prefixes.length; _k < _len2; _k++) { prefix = prefixes[_k]; prefixed = '@' + prefix + name.slice(1); remove[prefixed] = { remove: true }; } } else if (name === '@resolution') { remove[name] = new Resolution(name, prefixes, this); } else { props = this.data[name].transition ? this.transitionProps : this.data[name].props; if (props) { value = Value.load(name, [], this); for (_l = 0, _len3 = prefixes.length; _l < _len3; _l++) { prefix = prefixes[_l]; old = value.old(prefix); if (old) { for (_m = 0, _len4 = props.length; _m < _len4; _m++) { prop = props[_m]; if (!remove[prop]) { remove[prop] = {}; } if (!remove[prop].values) { remove[prop].values = []; } remove[prop].values.push(old); } } } } if (!this.data[name].props) { for (_n = 0, _len5 = prefixes.length; _n < _len5; _n++) { prefix = prefixes[_n]; prop = vendor.unprefixed(name); olds = this.decl(name).old(name, prefix); for (_o = 0, _len6 = olds.length; _o < _len6; _o++) { prefixed = olds[_o]; if (!remove[prefixed]) { remove[prefixed] = {}; } remove[prefixed].remove = true; } } } } } return [add, remove]; }; Prefixes.prototype.decl = function(prop) { var decl; decl = declsCache[prop]; if (decl) { return decl; } else { return declsCache[prop] = Declaration.load(prop); } }; Prefixes.prototype.unprefixed = function(prop) { prop = vendor.unprefixed(prop); return this.decl(prop).normalize(prop); }; Prefixes.prototype.prefixed = function(prop, prefix) { prop = vendor.unprefixed(prop); return this.decl(prop).prefixed(prop, prefix); }; Prefixes.prototype.values = function(type, prop) { var data, global, values, _ref, _ref1; data = this[type]; global = (_ref = data['*']) != null ? _ref.values : void 0; values = (_ref1 = data[prop]) != null ? _ref1.values : void 0; if (global && values) { return utils.uniq(global.concat(values)); } else { return global || values || []; } }; Prefixes.prototype.group = function(decl) { var checker, index, length, rule, unprefixed; rule = decl.parent; index = rule.index(decl); length = rule.nodes.length; unprefixed = this.unprefixed(decl.prop); checker = (function(_this) { return function(step, callback) { var other; index += step; while (index >= 0 && index < length) { other = rule.nodes[index]; if (other.type === 'decl') { if (step === -1 && other.prop === unprefixed) { if (!Browsers.withPrefix(other.value)) { break; } } if (_this.unprefixed(other.prop) !== unprefixed) { break; } else if (callback(other) === true) { return true; } if (step === +1 && other.prop === unprefixed) { if (!Browsers.withPrefix(other.value)) { break; } } } index += step; } return false; }; })(this); return { up: function(callback) { return checker(-1, callback); }, down: function(callback) { return checker(+1, callback); } }; }; return Prefixes; })(); module.exports = Prefixes; }).call(this); },{"./at-rule":4,"./browsers":5,"./declaration":6,"./hacks/align-content":7,"./hacks/align-items":8,"./hacks/align-self":9,"./hacks/background-size":10,"./hacks/block-logical":11,"./hacks/border-image":12,"./hacks/border-radius":13,"./hacks/break-inside":14,"./hacks/crisp-edges":15,"./hacks/display-flex":16,"./hacks/fill-available":17,"./hacks/filter":19,"./hacks/filter-value":18,"./hacks/flex":28,"./hacks/flex-basis":20,"./hacks/flex-direction":21,"./hacks/flex-flow":22,"./hacks/flex-grow":23,"./hacks/flex-shrink":24,"./hacks/flex-values":26,"./hacks/flex-wrap":27,"./hacks/fullscreen":29,"./hacks/gradient":30,"./hacks/inline-logical":31,"./hacks/justify-content":32,"./hacks/order":33,"./hacks/placeholder":34,"./hacks/transform-decl":35,"./hacks/transform-value":36,"./processor":42,"./resolution":43,"./selector":44,"./supports":45,"./utils":46,"./value":47,"postcss/lib/vendor":113}],42:[function(require,module,exports){ (function() { var Processor, Value, utils, vendor; vendor = require('postcss/lib/vendor'); Value = require('./value'); utils = require('./utils'); Processor = (function() { function Processor(prefixes) { this.prefixes = prefixes; } Processor.prototype.add = function(css) { var keyframes, resolution, supports, viewport; resolution = this.prefixes.add['@resolution']; keyframes = this.prefixes.add['@keyframes']; viewport = this.prefixes.add['@viewport']; supports = this.prefixes.add['@supports']; css.eachAtRule((function(_this) { return function(rule) { if (rule.name === 'keyframes') { if (!_this.disabled(rule)) { return keyframes != null ? keyframes.process(rule) : void 0; } } else if (rule.name === 'viewport') { if (!_this.disabled(rule)) { return viewport != null ? viewport.process(rule) : void 0; } } else if (rule.name === 'supports') { if (!_this.disabled(rule)) { return supports.process(rule); } } else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1) { if (!_this.disabled(rule)) { return resolution != null ? resolution.process(rule) : void 0; } } }; })(this)); css.eachRule((function(_this) { return function(rule) { var selector, _i, _len, _ref, _results; if (_this.disabled(rule)) { return; } _ref = _this.prefixes.add.selectors; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { selector = _ref[_i]; _results.push(selector.process(rule)); } return _results; }; })(this)); css.eachDecl((function(_this) { return function(decl) { var prefix; prefix = _this.prefixes.add[decl.prop]; if (prefix && prefix.prefixes) { if (!_this.disabled(decl)) { return prefix.process(decl); } } }; })(this)); return css.eachDecl((function(_this) { return function(decl) { var unprefixed, value, _i, _len, _ref; if (_this.disabled(decl)) { return; } unprefixed = _this.prefixes.unprefixed(decl.prop); _ref = _this.prefixes.values('add', unprefixed); for (_i = 0, _len = _ref.length; _i < _len; _i++) { value = _ref[_i]; value.process(decl); } return Value.save(_this.prefixes, decl); }; })(this)); }; Processor.prototype.remove = function(css) { var checker, resolution, _i, _len, _ref; resolution = this.prefixes.remove['@resolution']; css.eachAtRule((function(_this) { return function(rule, i) { if (_this.prefixes.remove['@' + rule.name]) { if (!_this.disabled(rule)) { return rule.parent.remove(i); } } else if (rule.name === 'media' && rule.params.indexOf('-resolution') !== -1) { return resolution != null ? resolution.clean(rule) : void 0; } }; })(this)); _ref = this.prefixes.remove.selectors; for (_i = 0, _len = _ref.length; _i < _len; _i++) { checker = _ref[_i]; css.eachRule((function(_this) { return function(rule, i) { if (checker.check(rule)) { if (!_this.disabled(rule)) { return rule.parent.remove(i); } } }; })(this)); } return css.eachDecl((function(_this) { return function(decl, i) { var notHack, rule, unprefixed, _j, _len1, _ref1, _ref2; if (_this.disabled(decl)) { return; } rule = decl.parent; unprefixed = _this.prefixes.unprefixed(decl.prop); if ((_ref1 = _this.prefixes.remove[decl.prop]) != null ? _ref1.remove : void 0) { notHack = _this.prefixes.group(decl).down(function(other) { return other.prop === unprefixed; }); if (notHack && !_this.withHackValue(decl)) { if (decl.style('before').indexOf("\n") > -1) { _this.reduceSpaces(decl); } rule.remove(i); return; } } _ref2 = _this.prefixes.values('remove', unprefixed); for (_j = 0, _len1 = _ref2.length; _j < _len1; _j++) { checker = _ref2[_j]; if (checker.check(decl.value)) { unprefixed = checker.unprefixed; notHack = _this.prefixes.group(decl).down(function(other) { return other.value.indexOf(unprefixed) !== -1; }); if (notHack) { rule.remove(i); return; } else if (checker.clean) { checker.clean(decl); return; } } } }; })(this)); }; Processor.prototype.withHackValue = function(decl) { return decl.prop === '-webkit-background-clip' && decl.value === 'text'; }; Processor.prototype.disabled = function(node) { var status; if (node._autoprefixerDisabled != null) { return node._autoprefixerDisabled; } else if (node.nodes) { status = void 0; node.each(function(i) { if (i.type !== 'comment') { return; } if (i.text === 'autoprefixer: off') { status = false; return false; } else if (i.text === 'autoprefixer: on') { status = true; return false; } }); return node._autoprefixerDisabled = status != null ? !status : node.parent ? this.disabled(node.parent) : false; } else { return node._autoprefixerDisabled = this.disabled(node.parent); } }; Processor.prototype.reduceSpaces = function(decl) { var diff, parts, prevMin, stop; stop = false; this.prefixes.group(decl).up(function(other) { return stop = true; }); if (stop) { return; } parts = decl.style('before').split("\n"); prevMin = parts[parts.length - 1].length; diff = false; return this.prefixes.group(decl).down(function(other) { var last; parts = other.style('before').split("\n"); last = parts.length - 1; if (parts[last].length > prevMin) { if (diff === false) { diff = parts[last].length - prevMin; } parts[last] = parts[last].slice(0, -diff); return other.before = parts.join("\n"); } }); }; return Processor; })(); module.exports = Processor; }).call(this); },{"./utils":46,"./value":47,"postcss/lib/vendor":113}],43:[function(require,module,exports){ (function() { var Prefixer, Resolution, n2f, regexp, split, utils, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Prefixer = require('./prefixer'); utils = require('./utils'); n2f = require('num2fraction'); regexp = /(min|max)-resolution\s*:\s*\d*\.?\d+(dppx|dpi)/gi; split = /(min|max)-resolution(\s*:\s*)(\d*\.?\d+)(dppx|dpi)/i; Resolution = (function(_super) { __extends(Resolution, _super); function Resolution() { return Resolution.__super__.constructor.apply(this, arguments); } Resolution.prototype.prefixName = function(prefix, name) { return name = prefix === '-moz-' ? name + '--moz-device-pixel-ratio' : prefix + name + '-device-pixel-ratio'; }; Resolution.prototype.prefixQuery = function(prefix, name, colon, value, units) { if (units === 'dpi') { value = Number(value / 96); } if (prefix === '-o-') { value = n2f(value); } return this.prefixName(prefix, name) + colon + value; }; Resolution.prototype.clean = function(rule) { var prefix, _i, _len, _ref; if (!this.bad) { this.bad = []; _ref = this.prefixes; for (_i = 0, _len = _ref.length; _i < _len; _i++) { prefix = _ref[_i]; this.bad.push(this.prefixName(prefix, 'min')); this.bad.push(this.prefixName(prefix, 'max')); } } return rule.params = utils.editList(rule.params, (function(_this) { return function(queries) { return queries.filter(function(query) { return _this.bad.every(function(i) { return query.indexOf(i) === -1; }); }); }; })(this)); }; Resolution.prototype.process = function(rule) { var parent, prefixes; parent = this.parentPrefix(rule); prefixes = parent ? [parent] : this.prefixes; return rule.params = utils.editList(rule.params, (function(_this) { return function(origin, prefixed) { var prefix, processed, query, _i, _j, _len, _len1; for (_i = 0, _len = origin.length; _i < _len; _i++) { query = origin[_i]; if (query.indexOf('min-resolution') === -1 && query.indexOf('max-resolution') === -1) { prefixed.push(query); continue; } for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) { prefix = prefixes[_j]; if (prefix !== '-moz-' || query.indexOf('dppx') !== -1) { processed = query.replace(regexp, function(str) { var parts; parts = str.match(split); return _this.prefixQuery(prefix, parts[1], parts[2], parts[3], parts[4]); }); prefixed.push(processed); } } prefixed.push(query); } return utils.uniq(prefixed); }; })(this)); }; return Resolution; })(Prefixer); module.exports = Resolution; }).call(this); },{"./prefixer":40,"./utils":46,"num2fraction":95}],44:[function(require,module,exports){ (function() { var Browsers, OldSelector, Prefixer, Selector, utils, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; OldSelector = require('./old-selector'); Prefixer = require('./prefixer'); Browsers = require('./browsers'); utils = require('./utils'); Selector = (function(_super) { __extends(Selector, _super); function Selector(name, prefixes, all) { this.name = name; this.prefixes = prefixes; this.all = all; this.regexpCache = {}; } Selector.prototype.check = function(rule) { if (rule.selector.indexOf(this.name) !== -1) { return !!rule.selector.match(this.regexp()); } else { return false; } }; Selector.prototype.prefixed = function(prefix) { return this.name.replace(/^([^\w]*)/, '$1' + prefix); }; Selector.prototype.regexp = function(prefix) { var name; if (this.regexpCache[prefix]) { return this.regexpCache[prefix]; } name = prefix ? this.prefixed(prefix) : this.name; return this.regexpCache[prefix] = RegExp("(^|[^:\"'=])" + (utils.escapeRegexp(name)), "gi"); }; Selector.prototype.possible = function() { return Browsers.prefixes(); }; Selector.prototype.prefixeds = function(rule) { var prefix, prefixeds, _i, _len, _ref; if (rule._autoprefixerPrefixeds) { return rule._autoprefixerPrefixeds; } prefixeds = {}; _ref = this.possible(); for (_i = 0, _len = _ref.length; _i < _len; _i++) { prefix = _ref[_i]; prefixeds[prefix] = this.replace(rule.selector, prefix); } return rule._autoprefixerPrefixeds = prefixeds; }; Selector.prototype.already = function(rule, prefixeds, prefix) { var before, index, key, prefixed, some; index = rule.parent.index(rule) - 1; while (index >= 0) { before = rule.parent.nodes[index]; if (before.type !== 'rule') { return false; } some = false; for (key in prefixeds) { prefixed = prefixeds[key]; if (before.selector === prefixed) { if (prefix === key) { return true; } else { some = true; break; } } } if (!some) { return false; } index -= 1; } return false; }; Selector.prototype.replace = function(selector, prefix) { return selector.replace(this.regexp(), '$1' + this.prefixed(prefix)); }; Selector.prototype.add = function(rule, prefix) { var cloned, prefixeds; prefixeds = this.prefixeds(rule); if (this.already(rule, prefixeds, prefix)) { return; } cloned = this.clone(rule, { selector: prefixeds[prefix] }); return rule.parent.insertBefore(rule, cloned); }; Selector.prototype.old = function(prefix) { return new OldSelector(this, prefix); }; return Selector; })(Prefixer); module.exports = Selector; }).call(this); },{"./browsers":5,"./old-selector":38,"./prefixer":40,"./utils":46}],45:[function(require,module,exports){ (function() { var Prefixes, Supports, Value, findCondition, findDecl, list, postcss, split, utils; Prefixes = require('./prefixes'); Value = require('./value'); utils = require('./utils'); postcss = require('postcss'); list = require('postcss/lib/list'); split = /\(\s*([^\(\):]+)\s*:([^\)]+)/; findDecl = /\(\s*([^\(\):]+)\s*:\s*(.+)\s*\)/g; findCondition = /(not\s*)?\(\s*([^\(\):]+)\s*:\s*(.+?(?!\s*or\s*).+?)\s*\)*\s*\)\s*or\s*/gi; Supports = (function() { function Supports(all) { this.all = all; } Supports.prototype.virtual = function(prop, value) { var rule; rule = postcss.parse('a{}').first; rule.append({ prop: prop, value: value, before: '' }); return rule; }; Supports.prototype.prefixed = function(prop, value) { var decl, prefixer, rule, _i, _j, _len, _len1, _ref, _ref1; rule = this.virtual(prop, value); prefixer = this.all.add[prop]; if (prefixer != null) { if (typeof prefixer.process === "function") { prefixer.process(rule.first); } } _ref = rule.nodes; for (_i = 0, _len = _ref.length; _i < _len; _i++) { decl = _ref[_i]; _ref1 = this.all.values('add', prop); for (_j = 0, _len1 = _ref1.length; _j < _len1; _j++) { value = _ref1[_j]; value.process(decl); } Value.save(this.all, decl); } return rule.nodes; }; Supports.prototype.clean = function(params) { return params.replace(findCondition, (function(_this) { return function(all) { var check, checker, prop, unprefixed, value, _, _i, _len, _ref, _ref1, _ref2; if (all.slice(0, 3).toLowerCase() === 'not') { return all; } _ref = all.match(split), _ = _ref[0], prop = _ref[1], value = _ref[2]; unprefixed = _this.all.unprefixed(prop); if ((_ref1 = _this.all.cleaner().remove[prop]) != null ? _ref1.remove : void 0) { check = new RegExp('(\\(|\\s)' + utils.escapeRegexp(unprefixed) + ':'); if (check.test(params)) { return ''; } } _ref2 = _this.all.cleaner().values('remove', unprefixed); for (_i = 0, _len = _ref2.length; _i < _len; _i++) { checker = _ref2[_i]; if (checker.check(value)) { return ''; } } return all; }; })(this)).replace(/\(\s*\((.*)\)\s*\)/g, '($1)'); }; Supports.prototype.process = function(rule) { rule.params = this.clean(rule.params); return rule.params = rule.params.replace(findDecl, (function(_this) { return function(all, prop, value) { var i, stringed; stringed = (function() { var _i, _len, _ref, _results; _ref = this.prefixed(prop, value); _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { i = _ref[_i]; _results.push("(" + i.prop + ": " + i.value + ")"); } return _results; }).call(_this); if (stringed.length === 1) { return stringed[0]; } else { return '(' + stringed.join(' or ') + ')'; } }; })(this)); }; return Supports; })(); module.exports = Supports; }).call(this); },{"./prefixes":41,"./utils":46,"./value":47,"postcss":107,"postcss/lib/list":102}],46:[function(require,module,exports){ (function() { var list; list = require('postcss/lib/list'); module.exports = { error: function(text) { var err; err = new Error(text); err.autoprefixer = true; throw err; }, uniq: function(array) { var filtered, i, _i, _len; filtered = []; for (_i = 0, _len = array.length; _i < _len; _i++) { i = array[_i]; if (filtered.indexOf(i) === -1) { filtered.push(i); } } return filtered; }, removeNote: function(string) { if (string.indexOf(' ') === -1) { return string; } else { return string.split(' ')[0]; } }, escapeRegexp: function(string) { return string.replace(/[.?*+\^\$\[\]\\(){}|\-]/g, '\\$&'); }, regexp: function(word, escape) { if (escape == null) { escape = true; } if (escape) { word = this.escapeRegexp(word); } return RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", "gi"); }, editList: function(value, callback) { var changed, join, origin; origin = list.comma(value); changed = callback(origin, []); if (origin === changed) { return value; } else { join = value.match(/,\s*/); join = join ? join[0] : ', '; return changed.join(join); } } }; }).call(this); },{"postcss/lib/list":102}],47:[function(require,module,exports){ (function() { var OldValue, Prefixer, Value, utils, vendor, __hasProp = {}.hasOwnProperty, __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }; Prefixer = require('./prefixer'); OldValue = require('./old-value'); utils = require('./utils'); vendor = require('postcss/lib/vendor'); Value = (function(_super) { __extends(Value, _super); function Value() { return Value.__super__.constructor.apply(this, arguments); } Value.save = function(prefixes, decl) { var already, cloned, prefix, prefixed, propPrefix, rule, trimmed, value, _ref, _results; _ref = decl._autoprefixerValues; _results = []; for (prefix in _ref) { value = _ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(decl.prop); if (propPrefix === prefix) { _results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(decl.prop, prefix); rule = decl.parent; if (rule.every(function(i) { return i.prop !== prefixed; })) { trimmed = value.replace(/\s+/, ' '); already = rule.some(function(i) { return i.prop === decl.prop && i.value.replace(/\s+/, ' ') === trimmed; }); if (!already) { if (value.indexOf('-webkit-filter') !== -1 && (decl.prop === 'transition' || decl.prop === 'trasition-property')) { _results.push(decl.value = value); } else { cloned = this.clone(decl, { value: value }); _results.push(decl.parent.insertBefore(decl, cloned)); } } else { _results.push(void 0); } } else { _results.push(void 0); } } } return _results; }; Value.prototype.check = function(decl) { var value; value = decl.value; if (value.indexOf(this.name) !== -1) { return !!value.match(this.regexp()); } else { return false; } }; Value.prototype.regexp = function() { return this.regexpCache || (this.regexpCache = utils.regexp(this.name)); }; Value.prototype.replace = function(string, prefix) { return string.replace(this.regexp(), '$1' + prefix + '$2'); }; Value.prototype.add = function(decl, prefix) { var value, _ref; decl._autoprefixerValues || (decl._autoprefixerValues = {}); value = decl._autoprefixerValues[prefix] || ((_ref = decl._value) != null ? _ref.raw : void 0) || decl.value; value = this.replace(value, prefix); if (value) { return decl._autoprefixerValues[prefix] = value; } }; Value.prototype.old = function(prefix) { return new OldValue(this.name, prefix + this.name); }; return Value; })(Prefixer); module.exports = Value; }).call(this); },{"./old-value":39,"./prefixer":40,"./utils":46,"postcss/lib/vendor":113}],48:[function(require,module,exports){ },{}],49:[function(require,module,exports){ /*! * The buffer module from node.js, for the browser. * * @author Feross Aboukhadijeh * @license MIT */ var base64 = require('base64-js') var ieee754 = require('ieee754') var isArray = require('is-array') exports.Buffer = Buffer exports.SlowBuffer = SlowBuffer exports.INSPECT_MAX_BYTES = 50 Buffer.poolSize = 8192 // not used by this implementation var kMaxLength = 0x3fffffff var rootParent = {} /** * If `Buffer.TYPED_ARRAY_SUPPORT`: * === true Use Uint8Array implementation (fastest) * === false Use Object implementation (most compatible, even IE6) * * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, * Opera 11.6+, iOS 4.2+. * * Note: * * - Implementation must support adding new properties to `Uint8Array` instances. * Firefox 4-29 lacked support, fixed in Firefox 30+. * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. * * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. * * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of * incorrect length in some situations. * * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they will * get the Object implementation, which is slower but will work correctly. */ Buffer.TYPED_ARRAY_SUPPORT = (function () { try { var buf = new ArrayBuffer(0) var arr = new Uint8Array(buf) arr.foo = function () { return 42 } return 42 === arr.foo() && // typed array instances can be augmented typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` new Uint8Array(1).subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` } catch (e) { return false } })() /** * Class: Buffer * ============= * * The Buffer constructor returns instances of `Uint8Array` that are augmented * with function properties for all the node `Buffer` API functions. We use * `Uint8Array` so that square bracket notation works as expected -- it returns * a single octet. * * By augmenting the instances, we can avoid modifying the `Uint8Array` * prototype. */ function Buffer (subject, encoding, noZero) { if (!(this instanceof Buffer)) return new Buffer(subject, encoding, noZero) var type = typeof subject // Find the length var length if (type === 'number') length = subject > 0 ? subject >>> 0 : 0 else if (type === 'string') { length = Buffer.byteLength(subject, encoding) } else if (type === 'object' && subject !== null) { // assume object is array-like if (subject.type === 'Buffer' && isArray(subject.data)) subject = subject.data length = +subject.length > 0 ? Math.floor(+subject.length) : 0 } else throw new TypeError('must start with number, buffer, array or string') if (length > kMaxLength) throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + kMaxLength.toString(16) + ' bytes') var buf if (Buffer.TYPED_ARRAY_SUPPORT) { // Preferred: Return an augmented `Uint8Array` instance for best performance buf = Buffer._augment(new Uint8Array(length)) } else { // Fallback: Return THIS instance of Buffer (created by `new`) buf = this buf.length = length buf._isBuffer = true } var i if (Buffer.TYPED_ARRAY_SUPPORT && typeof subject.byteLength === 'number') { // Speed optimization -- use set if we're copying from a typed array buf._set(subject) } else if (isArrayish(subject)) { // Treat array-ish objects as a byte array if (Buffer.isBuffer(subject)) { for (i = 0; i < length; i++) buf[i] = subject.readUInt8(i) } else { for (i = 0; i < length; i++) buf[i] = ((subject[i] % 256) + 256) % 256 } } else if (type === 'string') { buf.write(subject, 0, encoding) } else if (type === 'number' && !Buffer.TYPED_ARRAY_SUPPORT && !noZero) { for (i = 0; i < length; i++) { buf[i] = 0 } } if (length > 0 && length <= Buffer.poolSize) buf.parent = rootParent return buf } function SlowBuffer(subject, encoding, noZero) { if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding, noZero) var buf = new Buffer(subject, encoding, noZero) delete buf.parent return buf } Buffer.isBuffer = function (b) { return !!(b != null && b._isBuffer) } Buffer.compare = function (a, b) { if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) throw new TypeError('Arguments must be Buffers') var x = a.length var y = b.length for (var i = 0, len = Math.min(x, y); i < len && a[i] === b[i]; i++) {} if (i !== len) { x = a[i] y = b[i] } if (x < y) return -1 if (y < x) return 1 return 0 } Buffer.isEncoding = function (encoding) { switch (String(encoding).toLowerCase()) { case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'raw': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return true default: return false } } Buffer.concat = function (list, totalLength) { if (!isArray(list)) throw new TypeError('Usage: Buffer.concat(list[, length])') if (list.length === 0) { return new Buffer(0) } else if (list.length === 1) { return list[0] } var i if (totalLength === undefined) { totalLength = 0 for (i = 0; i < list.length; i++) { totalLength += list[i].length } } var buf = new Buffer(totalLength) var pos = 0 for (i = 0; i < list.length; i++) { var item = list[i] item.copy(buf, pos) pos += item.length } return buf } Buffer.byteLength = function (str, encoding) { var ret str = str + '' switch (encoding || 'utf8') { case 'ascii': case 'binary': case 'raw': ret = str.length break case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': ret = str.length * 2 break case 'hex': ret = str.length >>> 1 break case 'utf8': case 'utf-8': ret = utf8ToBytes(str).length break case 'base64': ret = base64ToBytes(str).length break default: ret = str.length } return ret } // pre-set for values that may exist in the future Buffer.prototype.length = undefined Buffer.prototype.parent = undefined // toString(encoding, start=0, end=buffer.length) Buffer.prototype.toString = function (encoding, start, end) { var loweredCase = false start = start >>> 0 end = end === undefined || end === Infinity ? this.length : end >>> 0 if (!encoding) encoding = 'utf8' if (start < 0) start = 0 if (end > this.length) end = this.length if (end <= start) return '' while (true) { switch (encoding) { case 'hex': return hexSlice(this, start, end) case 'utf8': case 'utf-8': return utf8Slice(this, start, end) case 'ascii': return asciiSlice(this, start, end) case 'binary': return binarySlice(this, start, end) case 'base64': return base64Slice(this, start, end) case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': return utf16leSlice(this, start, end) default: if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) encoding = (encoding + '').toLowerCase() loweredCase = true } } } Buffer.prototype.equals = function (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') return Buffer.compare(this, b) === 0 } Buffer.prototype.inspect = function () { var str = '' var max = exports.INSPECT_MAX_BYTES if (this.length > 0) { str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') if (this.length > max) str += ' ... ' } return '' } Buffer.prototype.compare = function (b) { if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') return Buffer.compare(this, b) } // `get` will be removed in Node 0.13+ Buffer.prototype.get = function (offset) { console.log('.get() is deprecated. Access using array indexes instead.') return this.readUInt8(offset) } // `set` will be removed in Node 0.13+ Buffer.prototype.set = function (v, offset) { console.log('.set() is deprecated. Access using array indexes instead.') return this.writeUInt8(v, offset) } function hexWrite (buf, string, offset, length) { offset = Number(offset) || 0 var remaining = buf.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } // must be an even number of digits var strLen = string.length if (strLen % 2 !== 0) throw new Error('Invalid hex string') if (length > strLen / 2) { length = strLen / 2 } for (var i = 0; i < length; i++) { var byte = parseInt(string.substr(i * 2, 2), 16) if (isNaN(byte)) throw new Error('Invalid hex string') buf[offset + i] = byte } return i } function utf8Write (buf, string, offset, length) { var charsWritten = blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) return charsWritten } function asciiWrite (buf, string, offset, length) { var charsWritten = blitBuffer(asciiToBytes(string), buf, offset, length) return charsWritten } function binaryWrite (buf, string, offset, length) { return asciiWrite(buf, string, offset, length) } function base64Write (buf, string, offset, length) { var charsWritten = blitBuffer(base64ToBytes(string), buf, offset, length) return charsWritten } function utf16leWrite (buf, string, offset, length) { var charsWritten = blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length, 2) return charsWritten } Buffer.prototype.write = function (string, offset, length, encoding) { // Support both (string, offset, length, encoding) // and the legacy (string, encoding, offset, length) if (isFinite(offset)) { if (!isFinite(length)) { encoding = length length = undefined } } else { // legacy var swap = encoding encoding = offset offset = length length = swap } offset = Number(offset) || 0 if (length < 0 || offset < 0 || offset > this.length) throw new RangeError('attempt to write outside buffer bounds'); var remaining = this.length - offset if (!length) { length = remaining } else { length = Number(length) if (length > remaining) { length = remaining } } encoding = String(encoding || 'utf8').toLowerCase() var ret switch (encoding) { case 'hex': ret = hexWrite(this, string, offset, length) break case 'utf8': case 'utf-8': ret = utf8Write(this, string, offset, length) break case 'ascii': ret = asciiWrite(this, string, offset, length) break case 'binary': ret = binaryWrite(this, string, offset, length) break case 'base64': ret = base64Write(this, string, offset, length) break case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': ret = utf16leWrite(this, string, offset, length) break default: throw new TypeError('Unknown encoding: ' + encoding) } return ret } Buffer.prototype.toJSON = function () { return { type: 'Buffer', data: Array.prototype.slice.call(this._arr || this, 0) } } function base64Slice (buf, start, end) { if (start === 0 && end === buf.length) { return base64.fromByteArray(buf) } else { return base64.fromByteArray(buf.slice(start, end)) } } function utf8Slice (buf, start, end) { var res = '' var tmp = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { if (buf[i] <= 0x7F) { res += decodeUtf8Char(tmp) + String.fromCharCode(buf[i]) tmp = '' } else { tmp += '%' + buf[i].toString(16) } } return res + decodeUtf8Char(tmp) } function asciiSlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i] & 0x7F) } return ret } function binarySlice (buf, start, end) { var ret = '' end = Math.min(buf.length, end) for (var i = start; i < end; i++) { ret += String.fromCharCode(buf[i]) } return ret } function hexSlice (buf, start, end) { var len = buf.length if (!start || start < 0) start = 0 if (!end || end < 0 || end > len) end = len var out = '' for (var i = start; i < end; i++) { out += toHex(buf[i]) } return out } function utf16leSlice (buf, start, end) { var bytes = buf.slice(start, end) var res = '' for (var i = 0; i < bytes.length; i += 2) { res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) } return res } Buffer.prototype.slice = function (start, end) { var len = this.length start = ~~start end = end === undefined ? len : ~~end if (start < 0) { start += len; if (start < 0) start = 0 } else if (start > len) { start = len } if (end < 0) { end += len if (end < 0) end = 0 } else if (end > len) { end = len } if (end < start) end = start var newBuf if (Buffer.TYPED_ARRAY_SUPPORT) { newBuf = Buffer._augment(this.subarray(start, end)) } else { var sliceLen = end - start newBuf = new Buffer(sliceLen, undefined, true) for (var i = 0; i < sliceLen; i++) { newBuf[i] = this[i + start] } } if (newBuf.length) newBuf.parent = this.parent || this return newBuf } /* * Need to make sure that buffer isn't trying to write out of bounds. */ function checkOffset (offset, ext, length) { if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') } Buffer.prototype.readUIntLE = function (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) val += this[offset + i] * mul return val } Buffer.prototype.readUIntBE = function (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset + --byteLength] var mul = 1 while (byteLength > 0 && (mul *= 0x100)) val += this[offset + --byteLength] * mul; return val } Buffer.prototype.readUInt8 = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) return this[offset] } Buffer.prototype.readUInt16LE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return this[offset] | (this[offset + 1] << 8) } Buffer.prototype.readUInt16BE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) return (this[offset] << 8) | this[offset + 1] } Buffer.prototype.readUInt32LE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ((this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16)) + (this[offset + 3] * 0x1000000) } Buffer.prototype.readUInt32BE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] * 0x1000000) + ((this[offset + 1] << 16) | (this[offset + 2] << 8) | this[offset + 3]) } Buffer.prototype.readIntLE = function (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var val = this[offset] var mul = 1 var i = 0 while (++i < byteLength && (mul *= 0x100)) val += this[offset + i] * mul mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readIntBE = function (offset, byteLength, noAssert) { offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkOffset(offset, byteLength, this.length) var i = byteLength var mul = 1 var val = this[offset + --i] while (i > 0 && (mul *= 0x100)) val += this[offset + --i] * mul mul *= 0x80 if (val >= mul) val -= Math.pow(2, 8 * byteLength) return val } Buffer.prototype.readInt8 = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 1, this.length) if (!(this[offset] & 0x80)) return (this[offset]) return ((0xff - this[offset] + 1) * -1) } Buffer.prototype.readInt16LE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset] | (this[offset + 1] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt16BE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 2, this.length) var val = this[offset + 1] | (this[offset] << 8) return (val & 0x8000) ? val | 0xFFFF0000 : val } Buffer.prototype.readInt32LE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset]) | (this[offset + 1] << 8) | (this[offset + 2] << 16) | (this[offset + 3] << 24) } Buffer.prototype.readInt32BE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return (this[offset] << 24) | (this[offset + 1] << 16) | (this[offset + 2] << 8) | (this[offset + 3]) } Buffer.prototype.readFloatLE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, true, 23, 4) } Buffer.prototype.readFloatBE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 4, this.length) return ieee754.read(this, offset, false, 23, 4) } Buffer.prototype.readDoubleLE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, true, 52, 8) } Buffer.prototype.readDoubleBE = function (offset, noAssert) { if (!noAssert) checkOffset(offset, 8, this.length) return ieee754.read(this, offset, false, 52, 8) } function checkInt (buf, value, offset, ext, max, min) { if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance') if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') } Buffer.prototype.writeUIntLE = function (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var mul = 1 var i = 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) this[offset + i] = (value / mul) >>> 0 & 0xFF return offset + byteLength } Buffer.prototype.writeUIntBE = function (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 byteLength = byteLength >>> 0 if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0) var i = byteLength - 1 var mul = 1 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) this[offset + i] = (value / mul) >>> 0 & 0xFF return offset + byteLength } Buffer.prototype.writeUInt8 = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) this[offset] = value return offset + 1 } function objectWriteUInt16 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) { buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> (littleEndian ? i : 1 - i) * 8 } } Buffer.prototype.writeUInt16LE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else objectWriteUInt16(this, value, offset, true) return offset + 2 } Buffer.prototype.writeUInt16BE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else objectWriteUInt16(this, value, offset, false) return offset + 2 } function objectWriteUInt32 (buf, value, offset, littleEndian) { if (value < 0) value = 0xffffffff + value + 1 for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) { buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff } } Buffer.prototype.writeUInt32LE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset + 3] = (value >>> 24) this[offset + 2] = (value >>> 16) this[offset + 1] = (value >>> 8) this[offset] = value } else objectWriteUInt32(this, value, offset, true) return offset + 4 } Buffer.prototype.writeUInt32BE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else objectWriteUInt32(this, value, offset, false) return offset + 4 } Buffer.prototype.writeIntLE = function (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength - 1) - 1, -Math.pow(2, 8 * byteLength - 1)) } var i = 0 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset] = value & 0xFF while (++i < byteLength && (mul *= 0x100)) this[offset + i] = ((value / mul) >> 0) - sub & 0xFF return offset + byteLength } Buffer.prototype.writeIntBE = function (value, offset, byteLength, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) { checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength - 1) - 1, -Math.pow(2, 8 * byteLength - 1)) } var i = byteLength - 1 var mul = 1 var sub = value < 0 ? 1 : 0 this[offset + i] = value & 0xFF while (--i >= 0 && (mul *= 0x100)) this[offset + i] = ((value / mul) >> 0) - sub & 0xFF return offset + byteLength } Buffer.prototype.writeInt8 = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) if (value < 0) value = 0xff + value + 1 this[offset] = value return offset + 1 } Buffer.prototype.writeInt16LE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) } else objectWriteUInt16(this, value, offset, true) return offset + 2 } Buffer.prototype.writeInt16BE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 8) this[offset + 1] = value } else objectWriteUInt16(this, value, offset, false) return offset + 2 } Buffer.prototype.writeInt32LE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = value this[offset + 1] = (value >>> 8) this[offset + 2] = (value >>> 16) this[offset + 3] = (value >>> 24) } else objectWriteUInt32(this, value, offset, true) return offset + 4 } Buffer.prototype.writeInt32BE = function (value, offset, noAssert) { value = +value offset = offset >>> 0 if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) if (value < 0) value = 0xffffffff + value + 1 if (Buffer.TYPED_ARRAY_SUPPORT) { this[offset] = (value >>> 24) this[offset + 1] = (value >>> 16) this[offset + 2] = (value >>> 8) this[offset + 3] = value } else objectWriteUInt32(this, value, offset, false) return offset + 4 } function checkIEEE754 (buf, value, offset, ext, max, min) { if (value > max || value < min) throw new RangeError('value is out of bounds') if (offset + ext > buf.length) throw new RangeError('index out of range') if (offset < 0) throw new RangeError('index out of range') } function writeFloat (buf, value, offset, littleEndian, noAssert) { if (!noAssert) checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) ieee754.write(buf, value, offset, littleEndian, 23, 4) return offset + 4 } Buffer.prototype.writeFloatLE = function (value, offset, noAssert) { return writeFloat(this, value, offset, true, noAssert) } Buffer.prototype.writeFloatBE = function (value, offset, noAssert) { return writeFloat(this, value, offset, false, noAssert) } function writeDouble (buf, value, offset, littleEndian, noAssert) { if (!noAssert) checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) ieee754.write(buf, value, offset, littleEndian, 52, 8) return offset + 8 } Buffer.prototype.writeDoubleLE = function (value, offset, noAssert) { return writeDouble(this, value, offset, true, noAssert) } Buffer.prototype.writeDoubleBE = function (value, offset, noAssert) { return writeDouble(this, value, offset, false, noAssert) } // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) Buffer.prototype.copy = function (target, target_start, start, end) { var source = this if (!start) start = 0 if (!end && end !== 0) end = this.length if (target_start >= target.length) target_start = target.length if (!target_start) target_start = 0 if (end > 0 && end < start) end = start // Copy 0 bytes; we're done if (end === start) return 0 if (target.length === 0 || source.length === 0) return 0 // Fatal error conditions if (target_start < 0) throw new RangeError('targetStart out of bounds') if (start < 0 || start >= source.length) throw new RangeError('sourceStart out of bounds') if (end < 0) throw new RangeError('sourceEnd out of bounds') // Are we oob? if (end > this.length) end = this.length if (target.length - target_start < end - start) end = target.length - target_start + start var len = end - start if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { for (var i = 0; i < len; i++) { target[i + target_start] = this[i + start] } } else { target._set(this.subarray(start, start + len), target_start) } return len } // fill(value, start=0, end=buffer.length) Buffer.prototype.fill = function (value, start, end) { if (!value) value = 0 if (!start) start = 0 if (!end) end = this.length if (end < start) throw new RangeError('end < start') // Fill 0 bytes; we're done if (end === start) return if (this.length === 0) return if (start < 0 || start >= this.length) throw new RangeError('start out of bounds') if (end < 0 || end > this.length) throw new RangeError('end out of bounds') var i if (typeof value === 'number') { for (i = start; i < end; i++) { this[i] = value } } else { var bytes = utf8ToBytes(value.toString()) var len = bytes.length for (i = start; i < end; i++) { this[i] = bytes[i % len] } } return this } /** * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance. * Added in Node 0.12. Only available in browsers that support ArrayBuffer. */ Buffer.prototype.toArrayBuffer = function () { if (typeof Uint8Array !== 'undefined') { if (Buffer.TYPED_ARRAY_SUPPORT) { return (new Buffer(this)).buffer } else { var buf = new Uint8Array(this.length) for (var i = 0, len = buf.length; i < len; i += 1) { buf[i] = this[i] } return buf.buffer } } else { throw new TypeError('Buffer.toArrayBuffer not supported in this browser') } } // HELPER FUNCTIONS // ================ var BP = Buffer.prototype /** * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods */ Buffer._augment = function (arr) { arr.constructor = Buffer arr._isBuffer = true // save reference to original Uint8Array get/set methods before overwriting arr._get = arr.get arr._set = arr.set // deprecated, will be removed in node 0.13+ arr.get = BP.get arr.set = BP.set arr.write = BP.write arr.toString = BP.toString arr.toLocaleString = BP.toString arr.toJSON = BP.toJSON arr.equals = BP.equals arr.compare = BP.compare arr.copy = BP.copy arr.slice = BP.slice arr.readUIntLE = BP.readUIntLE arr.readUIntBE = BP.readUIntBE arr.readUInt8 = BP.readUInt8 arr.readUInt16LE = BP.readUInt16LE arr.readUInt16BE = BP.readUInt16BE arr.readUInt32LE = BP.readUInt32LE arr.readUInt32BE = BP.readUInt32BE arr.readIntLE = BP.readIntLE arr.readIntBE = BP.readIntBE arr.readInt8 = BP.readInt8 arr.readInt16LE = BP.readInt16LE arr.readInt16BE = BP.readInt16BE arr.readInt32LE = BP.readInt32LE arr.readInt32BE = BP.readInt32BE arr.readFloatLE = BP.readFloatLE arr.readFloatBE = BP.readFloatBE arr.readDoubleLE = BP.readDoubleLE arr.readDoubleBE = BP.readDoubleBE arr.writeUInt8 = BP.writeUInt8 arr.writeUIntLE = BP.writeUIntLE arr.writeUIntBE = BP.writeUIntBE arr.writeUInt16LE = BP.writeUInt16LE arr.writeUInt16BE = BP.writeUInt16BE arr.writeUInt32LE = BP.writeUInt32LE arr.writeUInt32BE = BP.writeUInt32BE arr.writeIntLE = BP.writeIntLE arr.writeIntBE = BP.writeIntBE arr.writeInt8 = BP.writeInt8 arr.writeInt16LE = BP.writeInt16LE arr.writeInt16BE = BP.writeInt16BE arr.writeInt32LE = BP.writeInt32LE arr.writeInt32BE = BP.writeInt32BE arr.writeFloatLE = BP.writeFloatLE arr.writeFloatBE = BP.writeFloatBE arr.writeDoubleLE = BP.writeDoubleLE arr.writeDoubleBE = BP.writeDoubleBE arr.fill = BP.fill arr.inspect = BP.inspect arr.toArrayBuffer = BP.toArrayBuffer return arr } var INVALID_BASE64_RE = /[^+\/0-9A-z\-]/g function base64clean (str) { // Node strips out invalid characters like \n and \t from the string, base64-js does not str = stringtrim(str).replace(INVALID_BASE64_RE, '') // Node converts strings with length < 2 to '' if (str.length < 2) return '' // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not while (str.length % 4 !== 0) { str = str + '=' } return str } function stringtrim (str) { if (str.trim) return str.trim() return str.replace(/^\s+|\s+$/g, '') } function isArrayish (subject) { return isArray(subject) || Buffer.isBuffer(subject) || subject && typeof subject === 'object' && typeof subject.length === 'number' } function toHex (n) { if (n < 16) return '0' + n.toString(16) return n.toString(16) } function utf8ToBytes(string, units) { var codePoint, length = string.length var leadSurrogate = null units = units || Infinity var bytes = [] var i = 0 for (; i 0xD7FF && codePoint < 0xE000) { // last char was a lead if (leadSurrogate) { // 2 leads in a row if (codePoint < 0xDC00) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = codePoint continue } // valid surrogate pair else { codePoint = leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00 | 0x10000 leadSurrogate = null } } // no lead yet else { // unexpected trail if (codePoint > 0xDBFF) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // unpaired lead else if (i + 1 === length) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) continue } // valid lead else { leadSurrogate = codePoint continue } } } // valid bmp char, but last char was a lead else if (leadSurrogate) { if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) leadSurrogate = null } // encode utf8 if (codePoint < 0x80) { if ((units -= 1) < 0) break bytes.push(codePoint) } else if (codePoint < 0x800) { if ((units -= 2) < 0) break bytes.push( codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80 ); } else if (codePoint < 0x10000) { if ((units -= 3) < 0) break bytes.push( codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ); } else if (codePoint < 0x200000) { if ((units -= 4) < 0) break bytes.push( codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80 ); } else { throw new Error('Invalid code point') } } return bytes } function asciiToBytes (str) { var byteArray = [] for (var i = 0; i < str.length; i++) { // Node's code seems to be doing this and not & 0x7F.. byteArray.push(str.charCodeAt(i) & 0xFF) } return byteArray } function utf16leToBytes (str, units) { var c, hi, lo var byteArray = [] for (var i = 0; i < str.length; i++) { if ((units -= 2) < 0) break c = str.charCodeAt(i) hi = c >> 8 lo = c % 256 byteArray.push(lo) byteArray.push(hi) } return byteArray } function base64ToBytes (str) { return base64.toByteArray(base64clean(str)) } function blitBuffer (src, dst, offset, length, unitSize) { if (unitSize) length -= length % unitSize; for (var i = 0; i < length; i++) { if ((i + offset >= dst.length) || (i >= src.length)) break dst[i + offset] = src[i] } return i } function decodeUtf8Char (str) { try { return decodeURIComponent(str) } catch (err) { return String.fromCharCode(0xFFFD) // UTF 8 invalid char } } },{"base64-js":50,"ieee754":51,"is-array":52}],50:[function(require,module,exports){ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; ;(function (exports) { 'use strict'; var Arr = (typeof Uint8Array !== 'undefined') ? Uint8Array : Array var PLUS = '+'.charCodeAt(0) var SLASH = '/'.charCodeAt(0) var NUMBER = '0'.charCodeAt(0) var LOWER = 'a'.charCodeAt(0) var UPPER = 'A'.charCodeAt(0) var PLUS_URL_SAFE = '-'.charCodeAt(0) var SLASH_URL_SAFE = '_'.charCodeAt(0) function decode (elt) { var code = elt.charCodeAt(0) if (code === PLUS || code === PLUS_URL_SAFE) return 62 // '+' if (code === SLASH || code === SLASH_URL_SAFE) return 63 // '/' if (code < NUMBER) return -1 //no match if (code < NUMBER + 10) return code - NUMBER + 26 + 26 if (code < UPPER + 26) return code - UPPER if (code < LOWER + 26) return code - LOWER + 26 } function b64ToByteArray (b64) { var i, j, l, tmp, placeHolders, arr if (b64.length % 4 > 0) { throw new Error('Invalid string. Length must be a multiple of 4') } // the number of equal signs (place holders) // if there are two placeholders, than the two characters before it // represent one byte // if there is only one, then the three characters before it represent 2 bytes // this is just a cheap hack to not do indexOf twice var len = b64.length placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0 // base64 is 4/3 + up to two characters of the original data arr = new Arr(b64.length * 3 / 4 - placeHolders) // if there are placeholders, only get up to the last complete 4 chars l = placeHolders > 0 ? b64.length - 4 : b64.length var L = 0 function push (v) { arr[L++] = v } for (i = 0, j = 0; i < l; i += 4, j += 3) { tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3)) push((tmp & 0xFF0000) >> 16) push((tmp & 0xFF00) >> 8) push(tmp & 0xFF) } if (placeHolders === 2) { tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4) push(tmp & 0xFF) } else if (placeHolders === 1) { tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2) push((tmp >> 8) & 0xFF) push(tmp & 0xFF) } return arr } function uint8ToBase64 (uint8) { var i, extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes output = "", temp, length function encode (num) { return lookup.charAt(num) } function tripletToBase64 (num) { return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F) } // go through the array every three bytes, we'll deal with trailing stuff later for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) { temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) output += tripletToBase64(temp) } // pad the end with zeros, but make sure to not forget the extra bytes switch (extraBytes) { case 1: temp = uint8[uint8.length - 1] output += encode(temp >> 2) output += encode((temp << 4) & 0x3F) output += '==' break case 2: temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1]) output += encode(temp >> 10) output += encode((temp >> 4) & 0x3F) output += encode((temp << 2) & 0x3F) output += '=' break } return output } exports.toByteArray = b64ToByteArray exports.fromByteArray = uint8ToBase64 }(typeof exports === 'undefined' ? (this.base64js = {}) : exports)) },{}],51:[function(require,module,exports){ exports.read = function(buffer, offset, isLE, mLen, nBytes) { var e, m, eLen = nBytes * 8 - mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1, nBits = -7, i = isLE ? (nBytes - 1) : 0, d = isLE ? -1 : 1, s = buffer[offset + i]; i += d; e = s & ((1 << (-nBits)) - 1); s >>= (-nBits); nBits += eLen; for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8); m = e & ((1 << (-nBits)) - 1); e >>= (-nBits); nBits += mLen; for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8); if (e === 0) { e = 1 - eBias; } else if (e === eMax) { return m ? NaN : ((s ? -1 : 1) * Infinity); } else { m = m + Math.pow(2, mLen); e = e - eBias; } return (s ? -1 : 1) * m * Math.pow(2, e - mLen); }; exports.write = function(buffer, value, offset, isLE, mLen, nBytes) { var e, m, c, eLen = nBytes * 8 - mLen - 1, eMax = (1 << eLen) - 1, eBias = eMax >> 1, rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0), i = isLE ? 0 : (nBytes - 1), d = isLE ? 1 : -1, s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0; value = Math.abs(value); if (isNaN(value) || value === Infinity) { m = isNaN(value) ? 1 : 0; e = eMax; } else { e = Math.floor(Math.log(value) / Math.LN2); if (value * (c = Math.pow(2, -e)) < 1) { e--; c *= 2; } if (e + eBias >= 1) { value += rt / c; } else { value += rt * Math.pow(2, 1 - eBias); } if (value * c >= 2) { e++; c /= 2; } if (e + eBias >= eMax) { m = 0; e = eMax; } else if (e + eBias >= 1) { m = (value * c - 1) * Math.pow(2, mLen); e = e + eBias; } else { m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen); e = 0; } } for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8); e = (e << mLen) | m; eLen += mLen; for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8); buffer[offset + i - d] |= s * 128; }; },{}],52:[function(require,module,exports){ /** * isArray */ var isArray = Array.isArray; /** * toString */ var str = Object.prototype.toString; /** * Whether or not the given `val` * is an array. * * example: * * isArray([]); * // > true * isArray(arguments); * // > false * isArray(''); * // > false * * @param {mixed} val * @return {bool} */ module.exports = isArray || function (val) { return !! val && '[object Array]' == str.call(val); }; },{}],53:[function(require,module,exports){ (function (process){ // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. // resolves . and .. elements in a path array with directory names there // must be no slashes, empty elements, or device names (c:\) in the array // (so also no leading and trailing slashes - it does not distinguish // relative and absolute paths) function normalizeArray(parts, allowAboveRoot) { // if the path tries to go above the root, `up` ends up > 0 var up = 0; for (var i = parts.length - 1; i >= 0; i--) { var last = parts[i]; if (last === '.') { parts.splice(i, 1); } else if (last === '..') { parts.splice(i, 1); up++; } else if (up) { parts.splice(i, 1); up--; } } // if the path is allowed to go above the root, restore leading ..s if (allowAboveRoot) { for (; up--; up) { parts.unshift('..'); } } return parts; } // Split a filename into [root, dir, basename, ext], unix version // 'root' is just a slash, or nothing. var splitPathRe = /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; var splitPath = function(filename) { return splitPathRe.exec(filename).slice(1); }; // path.resolve([from ...], to) // posix version exports.resolve = function() { var resolvedPath = '', resolvedAbsolute = false; for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) { var path = (i >= 0) ? arguments[i] : process.cwd(); // Skip empty and invalid entries if (typeof path !== 'string') { throw new TypeError('Arguments to path.resolve must be strings'); } else if (!path) { continue; } resolvedPath = path + '/' + resolvedPath; resolvedAbsolute = path.charAt(0) === '/'; } // At this point the path should be resolved to a full absolute path, but // handle relative paths to be safe (might happen when process.cwd() fails) // Normalize the path resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { return !!p; }), !resolvedAbsolute).join('/'); return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; }; // path.normalize(path) // posix version exports.normalize = function(path) { var isAbsolute = exports.isAbsolute(path), trailingSlash = substr(path, -1) === '/'; // Normalize the path path = normalizeArray(filter(path.split('/'), function(p) { return !!p; }), !isAbsolute).join('/'); if (!path && !isAbsolute) { path = '.'; } if (path && trailingSlash) { path += '/'; } return (isAbsolute ? '/' : '') + path; }; // posix version exports.isAbsolute = function(path) { return path.charAt(0) === '/'; }; // posix version exports.join = function() { var paths = Array.prototype.slice.call(arguments, 0); return exports.normalize(filter(paths, function(p, index) { if (typeof p !== 'string') { throw new TypeError('Arguments to path.join must be strings'); } return p; }).join('/')); }; // path.relative(from, to) // posix version exports.relative = function(from, to) { from = exports.resolve(from).substr(1); to = exports.resolve(to).substr(1); function trim(arr) { var start = 0; for (; start < arr.length; start++) { if (arr[start] !== '') break; } var end = arr.length - 1; for (; end >= 0; end--) { if (arr[end] !== '') break; } if (start > end) return []; return arr.slice(start, end - start + 1); } var fromParts = trim(from.split('/')); var toParts = trim(to.split('/')); var length = Math.min(fromParts.length, toParts.length); var samePartsLength = length; for (var i = 0; i < length; i++) { if (fromParts[i] !== toParts[i]) { samePartsLength = i; break; } } var outputParts = []; for (var i = samePartsLength; i < fromParts.length; i++) { outputParts.push('..'); } outputParts = outputParts.concat(toParts.slice(samePartsLength)); return outputParts.join('/'); }; exports.sep = '/'; exports.delimiter = ':'; exports.dirname = function(path) { var result = splitPath(path), root = result[0], dir = result[1]; if (!root && !dir) { // No dirname whatsoever return '.'; } if (dir) { // It has a dirname, strip trailing slash dir = dir.substr(0, dir.length - 1); } return root + dir; }; exports.basename = function(path, ext) { var f = splitPath(path)[2]; // TODO: make this comparison case-insensitive on windows? if (ext && f.substr(-1 * ext.length) === ext) { f = f.substr(0, f.length - ext.length); } return f; }; exports.extname = function(path) { return splitPath(path)[3]; }; function filter (xs, f) { if (xs.filter) return xs.filter(f); var res = []; for (var i = 0; i < xs.length; i++) { if (f(xs[i], i, xs)) res.push(xs[i]); } return res; } // String.prototype.substr - negative index don't work in IE8 var substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) { return str.substr(start, len) } : function (str, start, len) { if (start < 0) start = str.length + start; return str.substr(start, len); } ; }).call(this,require('_process')) },{"_process":54}],54:[function(require,module,exports){ // shim for using process in browser var process = module.exports = {}; var queue = []; var draining = false; function drainQueue() { if (draining) { return; } draining = true; var currentQueue; var len = queue.length; while(len) { currentQueue = queue; queue = []; var i = -1; while (++i < len) { currentQueue[i](); } len = queue.length; } draining = false; } process.nextTick = function (fun) { queue.push(fun); if (!draining) { setTimeout(drainQueue, 0); } }; process.title = 'browser'; process.browser = true; process.env = {}; process.argv = []; process.version = ''; // empty string to avoid regexp issues function noop() {} process.on = noop; process.addListener = noop; process.once = noop; process.off = noop; process.removeListener = noop; process.removeAllListeners = noop; process.emit = noop; process.binding = function (name) { throw new Error('process.binding is not supported'); }; // TODO(shtylman) process.cwd = function () { return '/' }; process.chdir = function (dir) { throw new Error('process.chdir is not supported'); }; process.umask = function() { return 0; }; },{}],55:[function(require,module,exports){ var caniuse = require('caniuse-db/data').agents; var path = require('path'); var fs = require('fs'); var uniq = function (array) { var filtered = []; for ( var i = 0; i < array.length; i++ ) { if ( filtered.indexOf(array[i]) == -1 ) filtered.push(array[i]); } return filtered; }; normalizeVersion = function (data, version) { if ( data.versions.indexOf(version) != -1 ) { return version; } else { var alias = browserslist.versionAliases[data.name][version]; if ( alias ) return alias; } }; // Return array of browsers by selection queries: // // browserslist('IE >= 10, IE 8') //=> ['ie 11', 'ie 10', 'ie 8'] var browserslist = function (selections, opts) { if ( typeof(opts) == 'undefined' ) opts = { }; if ( typeof(selections) == 'undefined' || selections === null ) { var config = browserslist.readConfig(opts.path); if ( config === false ) { selections = browserslist.defaults; } else { selections = config; } } if ( typeof(selections) == 'string' ) { selections = selections.split(/,\s*/); } var result = []; var query, match, array, used; selections.forEach(function (selection) { if ( selection.trim() === '' ) return; used = false; for ( var i in browserslist.queries ) { query = browserslist.queries[i]; match = selection.match(query.regexp); if ( match ) { array = query.select.apply(browserslist, match.slice(1)); result = result.concat(array); used = true; break; } } if ( !used ) { throw 'Unknown browser query `' + selection + '`'; } }); return uniq(result).sort(function (name1, name2) { name1 = name1.split(' '); name2 = name2.split(' '); if ( name1[0] == name2[0] ) { return parseFloat(name2[1]) - parseFloat(name1[1]); } else { return name1[0].localeCompare(name2[0]); } }); }; // Will be filled by Can I Use data below browserslist.data = { }; browserslist.usage = { global: { } }; // Default browsers query browserslist.defaults = [ '> 1%', 'last 2 versions', 'Firefox ESR', 'Opera 12.1' ]; // What browsers will be used in `last n version` query browserslist.major = ['safari', 'opera', 'ios_saf', 'ie_mob', 'ie', 'firefox', 'chrome']; // Browser names aliases browserslist.aliases = { fx: 'firefox', ff: 'firefox', ios: 'ios_saf', explorer: 'ie', blackberry: 'bb', explorermobile: 'ie_mob', operamini: 'op_mini', operamobile: 'op_mob', chromeandroid: 'and_chr', firefoxandroid: 'and_ff' }; // Aliases ot work with joined versions like `ios_saf 7.0-7.1` browserslist.versionAliases = { }; // Get browser data by alias or case insensitive name browserslist.byName = function (name) { name = name.toLowerCase(); name = browserslist.aliases[name] || name; var data = browserslist.data[name]; if ( !data ) throw 'Unknown browser ' + name; return data; }; // Find config, read file and parse it browserslist.readConfig = function (from) { if ( from === false ) return false; if ( !fs.readFileSync ) return false; if ( typeof(from) == 'undefined' ) from = '.'; var dirs = path.resolve(from).split(path.sep); var config, stat; while ( dirs.length ) { config = dirs.concat(['browserslist']).join(path.sep); if ( fs.existsSync(config) && fs.lstatSync(config).isFile() ) { return browserslist.parseConfig( fs.readFileSync(config) ); } dirs.pop(); } return false; }; // Return array of queries from config content browserslist.parseConfig = function (string) { return string.toString() .replace(/#[^\n]*/g, '') .split(/\n/) .map(function (i) { return i.trim(); }) .filter(function (i) { return i !== ''; }); }; browserslist.queries = { lastVersions: { regexp: /^last (\d+) versions?$/i, select: function (versions) { var selected = []; browserslist.major.forEach(function (name) { var data = browserslist.byName(name); var array = data.released.slice(-versions); array = array.map(function (v) { return data.name + ' ' + v; }); selected = selected.concat(array); }); return selected; } }, lastByBrowser: { regexp: /^last (\d+) (\w+) versions?$/i, select: function (versions, name) { var data = browserslist.byName(name); return data.released.slice(-versions).map(function (v) { return data.name + ' ' + v; }); } }, globalStatistics: { regexp: /^> (\d+\.?\d*)%$/, select: function (popularity) { popularity = parseFloat(popularity); var result = []; for ( var version in browserslist.usage.global ) { if ( browserslist.usage.global[version] > popularity ) { result.push(version); } } return result; } }, countryStatistics: { regexp: /^> (\d+\.?\d*)% in (\w\w)$/, select: function (popularity, country) { popularity = parseFloat(popularity); country = country.toUpperCase(); var result = []; var usage = browserslist.usage[country]; if ( !usage ) { usage = { }; var data = require('caniuse-db/region-usage-json/' + country); for ( var i in data.data ) { fillUsage(usage, i, data.data[i]); } browserslist.usage[country] = usage; } for ( var version in usage ) { if ( usage[version] > popularity ) { result.push(version); } } return result; } }, versions: { regexp: /^(\w+) (>=?|<=?)\s*([\d\.]+)/, select: function (name, sign, version) { var data = browserslist.byName(name); version = parseFloat(version); var filter; if ( sign == '>' ) { filter = function (v) { return parseFloat(v) > version; }; } else if ( sign == '>=' ) { filter = function (v) { return parseFloat(v) >= version; }; } else if ( sign == '<' ) { filter = function (v) { return parseFloat(v) < version; }; } else if ( sign == '<=' ) { filter = function (v) { return parseFloat(v) <= version; }; } return data.released.filter(filter).map(function (v) { return data.name + ' ' + v; }); } }, esr: { regexp: /^(firefox|ff|fx) esr$/i, select: function (versions) { return ['firefox 31']; } }, direct: { regexp: /^(\w+) ([\d\.]+)$/, select: function (name, version) { var data = browserslist.byName(name); var alias = normalizeVersion(data, version); if ( alias ) { version = alias; } else { if ( version.indexOf('.') == -1 ) { alias = version + '.0'; } else if ( /\.0$/.test(version) ) { alias = version.replace(/\.0$/, ''); } alias = normalizeVersion(data, alias); if ( alias ) { version = alias; } else { throw 'Unknown version ' + version + ' of ' + name; } } return [data.name + ' ' + version]; } } }; // Get and convert Can I Use data var normalize = function (versions) { return versions.filter(function (version) { return typeof(version) == 'string'; }); }; var fillUsage = function (result, name, data) { for ( var i in data ) { result[name + ' ' + i] = data[i]; } }; for ( var name in caniuse ) { browserslist.data[name] = { name: name, versions: normalize(caniuse[name].versions), released: normalize(caniuse[name].versions.slice(0, -3)) }; fillUsage(browserslist.usage.global, name, caniuse[name].usage_global); browserslist.versionAliases[name] = { }; for ( var i = 0; i < caniuse[name].versions.length; i++ ) { if ( !caniuse[name].versions[i] ) continue; var full = caniuse[name].versions[i]; if ( full.indexOf('-') != -1 ) { var interval = full.split('-'); for ( var j = 0; j < interval.length; j++ ) { browserslist.versionAliases[name][ interval[j] ] = full; } } } } module.exports = browserslist; },{"caniuse-db/data":56,"fs":48,"path":53}],56:[function(require,module,exports){ module.exports={"eras":{"e-36":"36 versions back","e-35":"35 versions back","e-34":"34 versions back","e-33":"33 versions back","e-32":"32 versions back","e-31":"31 versions back","e-30":"30 versions back","e-29":"29 versions back","e-28":"28 versions back","e-27":"27 versions back","e-26":"26 versions back","e-25":"25 versions back","e-24":"24 versions back","e-23":"23 versions back","e-22":"22 versions back","e-21":"21 versions back","e-20":"20 versions back","e-19":"19 versions back","e-18":"18 versions back","e-17":"17 versions back","e-16":"16 versions back","e-15":"15 versions back","e-14":"14 versions back","e-13":"13 versions back","e-12":"12 versions back","e-11":"11 versions back","e-10":"10 versions back","e-9":"9 versions back","e-8":"8 versions back","e-7":"7 versions back","e-6":"6 versions back","e-5":"5 versions back","e-4":"4 versions back","e-3":"3 versions back","e-2":"2 versions back","e-1":"Previous version","e0":"Current","e1":"Near future","e2":"Farther future","e3":"3 versions ahead"},"agents":{"ie":{"browser":"IE","abbr":"IE","prefix":"ms","type":"desktop","usage_global":{"5.5":0.009298,"6":0.0737794,"7":0.187802,"8":4.07799,"9":2.1329,"10":1.63656,"11":8.33707,"TP":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.5","6","7","8","9","10","11","TP",null,null]},"firefox":{"browser":"Firefox","abbr":"FF","prefix":"moz","type":"desktop","usage_global":{"2":0.006597,"3":0.026388,"3.5":0.013194,"3.6":0.092358,"4":0.026388,"5":0.013194,"6":0.026388,"7":0.013194,"8":0.046179,"9":0.013194,"10":0.026388,"11":0.046179,"12":0.059373,"13":0.026388,"14":0.026388,"15":0.032985,"16":0.052776,"17":0.039582,"18":0.032985,"19":0.026388,"20":0.032985,"21":0.039582,"22":0.032985,"23":0.046179,"24":0.079164,"25":0.052776,"26":0.059373,"27":0.098955,"28":0.059373,"29":0.092358,"30":0.151731,"31":0.448596,"32":0.369432,"33":2.90928,"34":6.50464,"35":0.237492,"36":0.006597,"37":0.006597,"38":0},"versions":[null,"2","3","3.5","3.6","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38"]},"chrome":{"browser":"Chrome","abbr":"Chr.","prefix":"webkit","type":"desktop","usage_global":{"4":0.026388,"5":0.013194,"6":0.019791,"7":0.013194,"8":0.013194,"9":0.013194,"10":0.019791,"11":0.098955,"12":0.039582,"13":0.026388,"14":0.026388,"15":0.026388,"16":0.019791,"17":0.013194,"18":0.032985,"19":0.013194,"20":0.013194,"21":0.072567,"22":0.059373,"23":0.032985,"24":0.039582,"25":0.032985,"26":0.052776,"27":0.072567,"28":0.079164,"29":0.06597,"30":0.13194,"31":0.752058,"32":0.145134,"33":0.46179,"34":0.32985,"35":0.613521,"36":0.890595,"37":1.02253,"38":1.326,"39":25.3919,"40":0.125343,"41":0.184716,"42":0,"43":0},"versions":["4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43"]},"safari":{"browser":"Safari","abbr":"Saf.","prefix":"webkit","type":"desktop","usage_global":{"3.1":0,"3.2":0.008692,"4":0.052776,"5":0.125343,"5.1":0.409014,"6":0.098955,"6.1":0.277074,"7":0.448596,"7.1":0.567342,"8":1.00274},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.1","3.2","4","5","5.1","6","6.1","7","7.1","8",null,null,null]},"opera":{"browser":"Opera","abbr":"Op.","prefix":"webkit","type":"desktop","usage_global":{"9.5-9.6":0.00685,"10.0-10.1":0.013194,"10.5":0.008392,"10.6":0.007296,"11":0.014996,"11.1":0.008219,"11.5":0.00685,"11.6":0.013194,"12":0.013194,"12.1":0.19791,"15":0.00685,"16":0.00685,"17":0.00685,"18":0.013194,"19":0.006597,"20":0.013194,"21":0.006597,"22":0.006597,"23":0.013434,"24":0.013194,"25":0.026388,"26":0.606924,"27":0.006597,"28":0,"29":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,"9.5-9.6","10.0-10.1","10.5","10.6","11","11.1","11.5","11.6","12","12.1","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29",null],"prefix_exceptions":{"9.5-9.6":"o","10.0-10.1":"o","10.5":"o","10.6":"o","11":"o","11.1":"o","11.5":"o","11.6":"o","12":"o","12.1":"o"}},"ios_saf":{"browser":"iOS Safari","abbr":"iOS","prefix":"webkit","type":"mobile","usage_global":{"3.2":0,"4.0-4.1":0,"4.2-4.3":0,"5.0-5.1":0.0454654,"6.0-6.1":0.188026,"7.0-7.1":2.22703,"8":0.631121,"8.1":4.58892},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"3.2","4.0-4.1","4.2-4.3","5.0-5.1","6.0-6.1","7.0-7.1","8","8.1",null,null,null]},"op_mini":{"browser":"Opera Mini","abbr":"O.Mini","prefix":"o","type":"mobile","usage_global":{"5.0-8.0":3.0738},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"5.0-8.0",null,null,null]},"android":{"browser":"Android Browser","abbr":"And.","prefix":"webkit","type":"mobile","usage_global":{"2.1":0,"2.2":0.00527484,"2.3":0.148355,"3":0,"4":0.305941,"4.1":0.937603,"4.2-4.3":1.49344,"4.4":2.50621,"4.4.3-4.4.4":1.02464,"37":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"2.1","2.2","2.3","3","4","4.1","4.2-4.3","4.4","4.4.3-4.4.4","37",null,null,null]},"op_mob":{"browser":"Opera Mobile","abbr":"O.Mob","prefix":"o","type":"mobile","usage_global":{"10":0,"11.5":0,"12":0.00438935,"12.1":0.0219467,"24":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10",null,null,"11.5","12","12.1","24",null,null,null],"prefix_exceptions":{"24":"webkit"}},"bb":{"browser":"Blackberry Browser","abbr":"BB","prefix":"webkit","type":"mobile","usage_global":{"7":0.0935825,"10":0},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"7","10",null,null,null]},"and_chr":{"browser":"Chrome for Android","abbr":"Chr/And.","prefix":"webkit","type":"mobile","usage_global":{"40":10.5231},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"40",null,null,null]},"and_ff":{"browser":"Firefox for Android","abbr":"FF/And.","prefix":"moz","type":"mobile","usage_global":{"33":0.129314},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"33",null,null,null]},"ie_mob":{"browser":"IE Mobile","abbr":"IE.Mob","prefix":"ms","type":"mobile","usage_global":{"10":0.331242,"11":0.400403},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"10","11",null,null,null]},"and_uc":{"browser":"UC Browser for Android","abbr":"UC","prefix":"webkit","type":"mobile","usage_global":{"9.9":3.77733},"versions":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"9.9",null,null,null],"prefix_exceptions":{"9.9":"webkit"}}},"statuses":{"rec":"W3C Recommendation","pr":"W3C Proposed Recommendation","cr":"W3C Candidate Recommendation","wd":"W3C Working Draft","ls":"WHATWG Living Standard","other":"Other","unoff":"Unofficial / Note"},"cats":{"CSS":["CSS","CSS2","CSS3"],"HTML5":["Canvas","HTML5"],"JS API":["JS API"],"Other":["PNG","Other","DOM"],"SVG":["SVG"]},"updated":1422423430,"data":{"png-alpha":{"title":"PNG alpha transparency","description":"Semi-transparent areas in PNG files","spec":"http://www.w3.org/TR/PNG/","status":"rec","links":[{"url":"http://en.wikipedia.org/wiki/Portable_Network_Graphics","title":"Wikipedia"},{"url":"http://dillerdesign.com/experiment/DD_belatedPNG/","title":"Workaround for IE6"}],"categories":["PNG"],"stats":{"ie":{"5.5":"n","6":"p","7":"y","8":"y","9":"y","10":"y","11":"y","TP":"y"},"firefox":{"2":"y","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y"},"safari":{"3.1":"y","3.2":"y","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y"},"opera":{"9":"y","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1":"y"},"op_mini":{"5.0-8.0":"y"},"android":{"2.1":"y","2.2":"y","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","37":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","24":"y"},"and_chr":{"40":"y"},"and_ff":{"33":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"9.9":"y"}},"notes":"IE6 does support full transparency in 8-bit PNGs, which can sometimes be an alternative to 24-bit PNGs.","notes_by_num":{},"usage_perc_y":97.04,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":""},"apng":{"title":"Animated PNG (APNG)","description":"Like animated GIFs, but allowing 24-bit colors and alpha transparency","spec":"https://wiki.mozilla.org/APNG_Specification","status":"unoff","links":[{"url":"http://en.wikipedia.org/wiki/APNG","title":"Wikipedia"},{"url":"https://github.com/davidmz/apng-canvas","title":"Polyfill using canvas"},{"url":"https://chrome.google.com/webstore/detail/ehkepjiconegkhpodgoaeamnpckdbblp","title":"Chrome extension providing support"}],"categories":["PNG"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","TP":"n"},"firefox":{"2":"n","3":"y","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y"},"chrome":{"4":"n","5":"n","6":"n","7":"n","8":"n","9":"n","10":"n","11":"n","12":"n","13":"n","14":"n","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n","30":"n","31":"n","32":"n","33":"n","34":"n","35":"n","36":"n","37":"n","38":"n","39":"n","40":"n","41":"n","42":"n","43":"n"},"safari":{"3.1":"n","3.2":"n","4":"n","5":"n","5.1":"n","6":"n","6.1":"n","7":"n","7.1":"n","8":"y"},"opera":{"9":"n","9.5-9.6":"y","10.0-10.1":"y","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"n","16":"n","17":"n","18":"n","19":"n","20":"n","21":"n","22":"n","23":"n","24":"n","25":"n","26":"n","27":"n","28":"n","29":"n"},"ios_saf":{"3.2":"n","4.0-4.1":"n","4.2-4.3":"n","5.0-5.1":"n","6.0-6.1":"n","7.0-7.1":"n","8":"y","8.1":"y"},"op_mini":{"5.0-8.0":"n"},"android":{"2.1":"n","2.2":"n","2.3":"n","3":"n","4":"n","4.1":"n","4.2-4.3":"n","4.4":"n","4.4.3-4.4.4":"n","37":"n"},"bb":{"7":"n","10":"n"},"op_mob":{"10":"y","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","24":"n"},"and_chr":{"40":"n"},"and_ff":{"33":"y"},"ie_mob":{"10":"n","11":"n"},"and_uc":{"9.9":"n"}},"notes":"Where support for APNG is missing, only the first frame is displayed","notes_by_num":{},"usage_perc_y":18.54,"usage_perc_a":0,"ucprefix":false,"parent":"","keywords":"","ie_id":"","chrome_id":""},"video":{"title":"Video element","description":"Method of playing videos on webpages (without requiring a plug-in).","spec":"https://html.spec.whatwg.org/multipage/embedded-content.html#the-video-element","status":"ls","links":[{"url":"https://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/","title":"Detailed article on video/audio elements"},{"url":"http://webmproject.org","title":"WebM format information"},{"url":"http://camendesign.co.uk/code/video_for_everybody","title":"Video for Everybody"},{"url":"http://diveintohtml5.info/video.html","title":"Video on the Web - includes info on Android support"},{"url":"https://raw.github.com/phiggins42/has.js/master/detect/video.js#video","title":"has.js test"},{"url":"http://docs.webplatform.org/wiki/html/elements/video","title":"WebPlatform Docs"}],"categories":["HTML5"],"stats":{"ie":{"5.5":"n","6":"n","7":"n","8":"n","9":"y","10":"y","11":"y","TP":"y"},"firefox":{"2":"n","3":"n","3.5":"y","3.6":"y","4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y"},"chrome":{"4":"y","5":"y","6":"y","7":"y","8":"y","9":"y","10":"y","11":"y","12":"y","13":"y","14":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y","30":"y","31":"y","32":"y","33":"y","34":"y","35":"y","36":"y","37":"y","38":"y","39":"y","40":"y","41":"y","42":"y","43":"y"},"safari":{"3.1":"n","3.2":"n","4":"y","5":"y","5.1":"y","6":"y","6.1":"y","7":"y","7.1":"y","8":"y"},"opera":{"9":"n","9.5-9.6":"n","10.0-10.1":"n","10.5":"y","10.6":"y","11":"y","11.1":"y","11.5":"y","11.6":"y","12":"y","12.1":"y","15":"y","16":"y","17":"y","18":"y","19":"y","20":"y","21":"y","22":"y","23":"y","24":"y","25":"y","26":"y","27":"y","28":"y","29":"y"},"ios_saf":{"3.2":"y","4.0-4.1":"y","4.2-4.3":"y","5.0-5.1":"y","6.0-6.1":"y","7.0-7.1":"y","8":"y","8.1":"y"},"op_mini":{"5.0-8.0":"n"},"android":{"2.1":"a","2.2":"a","2.3":"y","3":"y","4":"y","4.1":"y","4.2-4.3":"y","4.4":"y","4.4.3-4.4.4":"y","37":"y"},"bb":{"7":"y","10":"y"},"op_mob":{"10":"n","11":"y","11.1":"y","11.5":"y","12":"y","12.1":"y","24":"y"},"and_chr":{"40":"y"},"and_ff":{"33":"y"},"ie_mob":{"10":"y","11":"y"},"and_uc":{"9.9":"y"}},"notes":"Different browsers have support for different video formats, see sub-features for details. \r\n\r\nThe Android browser (before 2.3) requires [specific handling](http://www.broken-links.com/2010/07/08/making-html5-video-work-on-android-phones/) to run the video element.","notes_by_num":{},"usage_perc_y":89.62,"usage_perc_a":0.01,"ucprefix":false,"parent":"","keywords":"