function creator() { var transformer = initializer.apply(undefined, arguments); transformer.postcssPlugin = name; transformer.postcssVersion = new _processor2.default().version; return transformer; }
n/a
function AlignContent() { return AlignContent.__super__.constructor.apply(this, arguments); }
n/a
function AlignItems() { return AlignItems.__super__.constructor.apply(this, arguments); }
n/a
function AlignSelf() { return AlignSelf.__super__.constructor.apply(this, arguments); }
n/a
function AtRule() { return AtRule.__super__.constructor.apply(this, arguments); }
n/a
function BackgroundSize() { return BackgroundSize.__super__.constructor.apply(this, arguments); }
n/a
function BlockLogical() { return BlockLogical.__super__.constructor.apply(this, arguments); }
n/a
function BorderImage() { return BorderImage.__super__.constructor.apply(this, arguments); }
n/a
function BorderRadius() { return BorderRadius.__super__.constructor.apply(this, arguments); }
n/a
function BreakProps() { return BreakProps.__super__.constructor.apply(this, arguments); }
n/a
function Browsers(data1, requirements, options, stats) { this.data = data1; this.options = options; this.stats = stats; this.selected = this.parse(requirements); }
n/a
function CrossFade() { return CrossFade.__super__.constructor.apply(this, arguments); }
n/a
function Declaration() { return Declaration.__super__.constructor.apply(this, arguments); }
n/a
function DisplayFlex(name, prefixes) { DisplayFlex.__super__.constructor.apply(this, arguments); if (name === 'display-flex') { this.name = 'flex'; } }
n/a
function DisplayGrid(name, prefixes) { DisplayGrid.__super__.constructor.apply(this, arguments); if (name === 'display-grid') { this.name = 'grid'; } }
n/a
function Filter() { return Filter.__super__.constructor.apply(this, arguments); }
...
* Fix iOS versions in properties and values data.
### 20130603:
* Use latest Rework 0.15 with a lot of CSS parsing fixes.
* Update browsers usage statistics.
## 0.3 “Growing Strong”
* Rename `autoprefixer.filter()` to `autoprefixer.rework()`.
* Use own filters instead of Rework’s `prefix` and `prefixValue`.
* Smarter value prefixer without false match “order” in “border”.
* 40% faster.
* Don’t add unnecessary properties instead of Rework’s `prefixValue`.
* Don’t change properties order.
* Sort properties and values in inspect output.
* Add main to component config (by Jonathan Ong).
...
function FilterValue(name, prefixes) { FilterValue.__super__.constructor.apply(this, arguments); if (name === 'filter-function') { this.name = 'filter'; } }
n/a
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
n/a
function FlexBasis() { return FlexBasis.__super__.constructor.apply(this, arguments); }
n/a
function FlexDirection() { return FlexDirection.__super__.constructor.apply(this, arguments); }
n/a
function FlexFlow() { return FlexFlow.__super__.constructor.apply(this, arguments); }
n/a
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
n/a
function FlexShrink() { return FlexShrink.__super__.constructor.apply(this, arguments); }
n/a
function FlexValues() { return FlexValues.__super__.constructor.apply(this, arguments); }
n/a
function FlexWrap() { return FlexWrap.__super__.constructor.apply(this, arguments); }
n/a
function Fullscreen() { return Fullscreen.__super__.constructor.apply(this, arguments); }
n/a
function Gradient() { return Gradient.__super__.constructor.apply(this, arguments); }
n/a
function GridEnd() { return GridEnd.__super__.constructor.apply(this, arguments); }
n/a
function GridRowAlign() { return GridRowAlign.__super__.constructor.apply(this, arguments); }
n/a
function GridStart() { return GridStart.__super__.constructor.apply(this, arguments); }
n/a
function GridTemplate() { return GridTemplate.__super__.constructor.apply(this, arguments); }
n/a
function ImageRendering() { return ImageRendering.__super__.constructor.apply(this, arguments); }
n/a
function ImageSet() { return ImageSet.__super__.constructor.apply(this, arguments); }
n/a
info = function () { return module.exports().info(); }
...
[PostCSS API]: https://github.com/postcss/postcss/blob/master/docs/api.md
## Debug
You can check which browsers are selected and which properties will be prefixed:
```js
var info = autoprefixer().info();
console.log(info);
```
...
function InlineLogical() { return InlineLogical.__super__.constructor.apply(this, arguments); }
n/a
function JustifyContent() { return JustifyContent.__super__.constructor.apply(this, arguments); }
n/a
function JustifyItems() { return JustifyItems.__super__.constructor.apply(this, arguments); }
n/a
function MaskBorder() { return MaskBorder.__super__.constructor.apply(this, arguments); }
n/a
function OldSelector(selector, prefix1) { var i, len, prefix, ref; this.prefix = prefix1; 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(); }
n/a
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); }
n/a
function Order() { return Order.__super__.constructor.apply(this, arguments); }
n/a
function Pixelated() { return Pixelated.__super__.constructor.apply(this, arguments); }
n/a
function Placeholder() { return Placeholder.__super__.constructor.apply(this, arguments); }
n/a
function Prefixer(name1, prefixes1, all1) { this.name = name1; this.prefixes = prefixes1; this.all = all1; }
...
Supports.prototype.prefixed = function(str) {
var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value;
rule = this.virtual(str);
if (this.disabled(rule.first)) {
return rule.nodes;
}
prefixer = this.prefixer().add[rule.first.prop];
if (prefixer != null) {
if (typeof prefixer.process === "function") {
prefixer.process(rule.first);
}
}
ref1 = rule.nodes;
for (j = 0, len = ref1.length; j < len; j++) {
...
process = function (root, opts) { return postcss([creator(opts)]).process(root, opts); }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
function Processor(prefixes) { this.prefixes = prefixes; }
n/a
function Resolution() { return Resolution.__super__.constructor.apply(this, arguments); }
n/a
function Selector(name1, prefixes, all) { this.name = name1; this.prefixes = prefixes; this.all = all; this.regexpCache = {}; }
n/a
function Stretch() { return Stretch.__super__.constructor.apply(this, arguments); }
n/a
function Supports(Prefixes, all1) { this.Prefixes = Prefixes; this.all = all1; }
n/a
function TextEmphasisPosition() { return TextEmphasisPosition.__super__.constructor.apply(this, arguments); }
n/a
function TransformDecl() { return TransformDecl.__super__.constructor.apply(this, arguments); }
n/a
function Transition(prefixes) { this.prefixes = prefixes; }
n/a
function Value() { return Value.__super__.constructor.apply(this, arguments); }
...
return decl.value;
}
};
Value.prototype.add = function(decl, prefix) {
var value;
decl._autoprefixerValues || (decl._autoprefixerValues = {});
value = decl._autoprefixerValues[prefix] || this.value(decl);
value = this.replace(value, prefix);
if (value) {
return decl._autoprefixerValues[prefix] = value;
}
};
Value.prototype.old = function(prefix) {
...
function WritingMode() { return WritingMode.__super__.constructor.apply(this, arguments); }
n/a
function AlignContent() { return AlignContent.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function AlignContent() { return AlignContent.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'align-content'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
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); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function AlignItems() { return AlignItems.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function AlignItems() { return AlignItems.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'align-items'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
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); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function AlignSelf() { return AlignSelf.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function AlignSelf() { return AlignSelf.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'align-self'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
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); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function AtRule() { return AtRule.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
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); }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
function AtRule() { return AtRule.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
process = function (node) { var j, len, parent, prefix, ref, results; parent = this.parentPrefix(node); ref = this.prefixes; results = []; for (j = 0, len = ref.length; j < len; j++) { prefix = ref[j]; if (parent && parent !== prefix) { continue; } results.push(this.add(node, prefix)); } return results; }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
function BackgroundSize() { return BackgroundSize.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function BackgroundSize() { return BackgroundSize.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
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); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function BlockLogical() { return BlockLogical.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function BlockLogical() { return BlockLogical.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { if (prop.indexOf('-before') !== -1) { return prop.replace('-before', '-block-start'); } else { return prop.replace('-after', '-block-end'); } }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { return prefix + (prop.indexOf('-start') !== -1 ? prop.replace('-block-start', '-before') : prop.replace('-block-end', '-after')); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function BorderImage() { return BorderImage.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function BorderImage() { return BorderImage.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
set = function (decl, prefix) { decl.value = decl.value.replace(/\s+fill(\s)/, '$1'); return BorderImage.__super__.set.call(this, decl, prefix); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function BorderRadius() { return BorderRadius.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function BorderRadius() { return BorderRadius.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return BorderRadius.toNormal[prop] || prop; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-moz-') { return prefix + (BorderRadius.toMozilla[prop] || prop); } else { return BorderRadius.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
parse = function (str) { var current, j, len, stack, sym; current = ['']; stack = [current]; for (j = 0, len = str.length; j < len; j++) { sym = str[j]; if (sym === '(') { current = ['']; last(stack).push(current); stack.push(current); } else if (sym === ')') { stack.pop(); current = last(stack); current.push(''); } else { current[current.length - 1] += sym; } } return stack[0]; }
...
return this.prefixesRegexp.test(value);
};
function Browsers(data1, requirements, options, stats) {
this.data = data1;
this.options = options;
this.stats = stats;
this.selected = this.parse(requirements);
}
Browsers.prototype.parse = function(requirements) {
var ref, ref1;
return browserslist(requirements, {
stats: this.stats,
path: (ref = this.options) != null ? ref.from : void 0,
...
stringify = function (ast) { var i, j, len, result; result = ''; for (j = 0, len = ast.length; j < len; j++) { i = ast[j]; if (typeof i === 'object') { result += '(' + brackets.stringify(i) + ')'; } else { result += i; } } return result; }
...
if (options.browsers != null) {
reqs = options.browsers;
}
loadPrefixes = function(opts) {
var browsers, key, stats;
stats = options.stats;
browsers = new Browsers(module.exports.data.browsers, reqs, opts, stats);
key = browsers.selected.join(', ') + JSON.stringify(options);
return cache[key] || (cache[key] = new Prefixes(module.exports.data.prefixes, browsers, options));
};
plugin = function(css, result) {
var prefixes, ref;
prefixes = loadPrefixes({
from: (ref = css.source) != null ? ref.input.file : void 0,
env: options.env
...
function BreakProps() { return BreakProps.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function BreakProps() { return BreakProps.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
insert = function (decl, prefix, prefixes) { if (decl.prop !== 'break-inside') { return BreakProps.__super__.insert.apply(this, arguments); } else if (decl.value === 'avoid-region') { } else if (decl.value === 'avoid-page' && prefix === '-webkit-') { } else { return BreakProps.__super__.insert.apply(this, arguments); } }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
normalize = function (prop) { if (prop.indexOf('inside') !== -1) { return 'break-inside'; } else if (prop.indexOf('before') !== -1) { return 'break-before'; } else if (prop.indexOf('after') !== -1) { return 'break-after'; } }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-webkit-') { return '-webkit-column-' + prop; } else if (prefix === '-moz-') { return 'page-' + prop; } else { return BreakProps.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var v; v = decl.value; if (decl.prop === 'break-inside' && v === 'avoid-column' || v === 'avoid-page') { decl.value = 'avoid'; } return BreakProps.__super__.set.apply(this, arguments); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function Browsers(data1, requirements, options, stats) { this.data = data1; this.options = options; this.stats = stats; this.selected = this.parse(requirements); }
n/a
prefixes = function () { var data, i, name; if (this.prefixesCache) { return this.prefixesCache; } data = require('caniuse-db/data.json').agents; 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; }); }
...
})()).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(data1, requirements, options, stats) {
this.data = data1;
this.options = options;
...
withPrefix = function (value) { if (!this.prefixesRegexp) { this.prefixesRegexp = RegExp("" + (this.prefixes().join('|'))); } return this.prefixesRegexp.test(value); }
...
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;
...
browsers = function (criteria) { var browser, data, ref, selected, versions; 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; }
n/a
isSelected = function (browser) { return this.selected.indexOf(browser) !== -1; }
...
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;
...
parse = function (requirements) { var ref, ref1; return browserslist(requirements, { stats: this.stats, path: (ref = this.options) != null ? ref.from : void 0, env: (ref1 = this.options) != null ? ref1.env : void 0 }); }
...
return this.prefixesRegexp.test(value);
};
function Browsers(data1, requirements, options, stats) {
this.data = data1;
this.options = options;
this.stats = stats;
this.selected = this.parse(requirements);
}
Browsers.prototype.parse = function(requirements) {
var ref, ref1;
return browserslist(requirements, {
stats: this.stats,
path: (ref = this.options) != null ? ref.from : void 0,
...
prefix = function (browser) { var data, name, prefix, ref, version; ref = browser.split(' '), name = ref[0], version = ref[1]; data = this.data[name]; if (data.prefix_exceptions) { prefix = data.prefix_exceptions[version]; } prefix || (prefix = data.prefix); return '-' + prefix + '-'; }
...
this.name = name1;
this.prefixes = prefixes1;
this.all = all1;
}
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 && /:(-\w+-)/.test(node.selector) ? 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) {
...
function CrossFade() { return CrossFade.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function CrossFade() { return CrossFade.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
replace = function (string, prefix) { return list.space(string).map((function(_this) { return function(value) { var after, args, close, match; 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); if (prefix === '-webkit-') { match = args.match(/\d*.?\d+%?/); if (match) { args = args.slice(match[0].length).trim(); args += ', ' + match[0]; } else { args += ', 0.5'; } } return prefix + _this.name + '(' + args + ')' + after; }; })(this)).join(' '); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function Declaration() { return Declaration.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
add = function (decl, prefix, prefixes) { var prefixed; prefixed = this.prefixed(decl.prop, prefix); if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) { return; } return this.insert(decl, prefix, prefixes); }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
calcBefore = function (prefixes, decl, prefix) { var before, diff, i, j, max, ref; if (prefix == null) { prefix = ''; } before = decl.raw('before'); max = this.maxPrefixed(prefixes, decl); diff = max - utils.removeNote(prefix).length; for (i = j = 0, ref = diff; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { before += ' '; } return before; }
...
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
return;
}
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
return decl.parent.insertBefore(decl, cloned);
};
Declaration.prototype.isAlready = function(decl, prefixed) {
var already;
already = this.all.group(decl).up(function(i) {
...
check = function (decl) { return true; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function Declaration() { return Declaration.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
insert = function (decl, prefix, prefixes) { var already, cloned; cloned = this.set(this.clone(decl), prefix); if (!cloned) { return; } already = decl.parent.some(function(i) { return i.prop === cloned.prop && i.value === cloned.value; }); if (already) { return; } if (this.needCascade(decl)) { cloned.raws.before = this.calcBefore(prefixes, decl, prefix); } return decl.parent.insertBefore(decl, cloned); }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
isAlready = function (decl, prefixed) { var already; 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; })); return already; }
...
}));
return already;
};
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) {
return;
}
return this.insert(decl, prefix, prefixes);
};
Declaration.prototype.process = function(decl) {
var prefixes;
...
maxPrefixed = function (prefixes, decl) { var j, len, max, prefix; if (decl._autoprefixerMax) { return decl._autoprefixerMax; } max = 0; for (j = 0, len = prefixes.length; j < len; j++) { prefix = prefixes[j]; 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, j, max, ref;
if (prefix == null) {
prefix = '';
}
before = decl.raw('before');
max = this.maxPrefixed(prefixes, decl);
diff = max - utils.removeNote(prefix).length;
for (i = j = 0, ref = diff; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) {
before += ' ';
}
return before;
};
...
needCascade = function (decl) { return decl._autoprefixerCascade || (decl._autoprefixerCascade = this.all.options.cascade !== false && decl.raw('before').indexOf ('\n') !== -1); }
...
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
return;
}
if (this.needCascade(decl)) {
cloned.raws.before = this.calcBefore(prefixes, decl, prefix);
}
return decl.parent.insertBefore(decl, cloned);
};
Declaration.prototype.isAlready = function(decl, prefixed) {
var already;
...
normalize = function (prop) { return prop; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
old = function (prop, prefix) { return [this.prefixed(prop, prefix)]; }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
otherPrefixes = function (value, prefix) { var j, len, other, ref; ref = Browsers.prefixes(); for (j = 0, len = ref.length; j < len; j++) { other = ref[j]; if (other === prefix) { continue; } if (value.indexOf(other) !== -1) { return true; } } return false; }
...
}));
return already;
};
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || this.otherPrefixes(decl.value, prefix)) {
return;
}
return this.insert(decl, prefix, prefixes);
};
Declaration.prototype.process = function(decl) {
var prefixes;
...
prefixed = function (prop, prefix) { return prefix + prop; }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
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.raws.before = this.calcBefore(prefixes, decl); } } else { return Declaration.__super__.process.apply(this, arguments); } }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
restoreBefore = function (decl) { var lines, min; lines = decl.raw('before').split("\n"); min = lines[lines.length - 1]; this.all.group(decl).up(function(prefixed) { var array, last; array = prefixed.raw('before').split("\n"); last = array[array.length - 1]; if (last.length < min.length) { return min = last; } }); lines[lines.length - 1] = min; return decl.raws.before = lines.join("\n"); }
...
};
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.raws.before = this.calcBefore(prefixes, decl);
}
} else {
return Declaration.__super__.process.apply(this, arguments);
}
};
...
set = function (decl, prefix) { decl.prop = this.prefixed(decl.prop, prefix); return decl; }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function DisplayFlex(name, prefixes) { DisplayFlex.__super__.constructor.apply(this, arguments); if (name === 'display-flex') { this.name = 'flex'; } }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
check = function (decl) { return decl.prop === 'display' && decl.value === this.name; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function DisplayFlex(name, prefixes) { DisplayFlex.__super__.constructor.apply(this, arguments); if (name === 'display-flex') { this.name = 'flex'; } }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { var prefixed; prefixed = this.prefixed(prefix); if (prefixed) { return new OldValue(this.name, prefixed); } }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
prefixed = function (prefix) { var ref, spec; 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); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
replace = function (string, prefix) { return this.prefixed(prefix); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function DisplayGrid(name, prefixes) { DisplayGrid.__super__.constructor.apply(this, arguments); if (name === 'display-grid') { this.name = 'grid'; } }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
check = function (decl) { return decl.prop === 'display' && decl.value === this.name; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function DisplayGrid(name, prefixes) { DisplayGrid.__super__.constructor.apply(this, arguments); if (name === 'display-grid') { this.name = 'grid'; } }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
function Filter() { return Filter.__super__.constructor.apply(this, arguments); }
...
* Fix iOS versions in properties and values data.
### 20130603:
* Use latest Rework 0.15 with a lot of CSS parsing fixes.
* Update browsers usage statistics.
## 0.3 “Growing Strong”
* Rename `autoprefixer.filter()` to `autoprefixer.rework()`.
* Use own filters instead of Rework’s `prefix` and `prefixValue`.
* Smarter value prefixer without false match “order” in “border”.
* 40% faster.
* Don’t add unnecessary properties instead of Rework’s `prefixValue`.
* Don’t change properties order.
* Sort properties and values in inspect output.
* Add main to component config (by Jonathan Ong).
...
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
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; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function Filter() { return Filter.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
function FilterValue(name, prefixes) { FilterValue.__super__.constructor.apply(this, arguments); if (name === 'filter-function') { this.name = 'filter'; } }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function FilterValue(name, prefixes) { FilterValue.__super__.constructor.apply(this, arguments); if (name === 'filter-function') { this.name = 'filter'; } }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { return new OldFilterValue(this.name, prefix + this.name); }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
replace = function (value, prefix) { if (prefix === '-webkit-' && value.indexOf('filter(') === -1) { 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); } }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function () { return 'flex'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec === 2009) { return prefix + 'box-flex'; } else { return Flex.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var components, spec; spec = flexSpec(prefix)[0]; if (spec === 2009) { decl.value = list.space(decl.value)[0]; decl.value = Flex.oldValues[decl.value] || decl.value; return Flex.__super__.set.call(this, decl, prefix); } else if (spec === 2012) { components = list.space(decl.value); if (components.length === 3 && components[2] === '0') { decl.value = components.slice(0, 2).concat('0px').join(' '); } return Flex.__super__.set.call(this, decl, prefix); } else { return Flex.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function FlexBasis() { return FlexBasis.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function FlexBasis() { return FlexBasis.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function () { return 'flex-basis'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var ref, spec; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec === 2012 || spec === 'final') { return FlexBasis.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function FlexDirection() { return FlexDirection.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function FlexDirection() { return FlexDirection.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
insert = function (decl, prefix, prefixes) { var already, cloned, dir, orient, ref, spec, value; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec !== 2009) { return FlexDirection.__super__.insert.apply(this, arguments); } else { 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.raws.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.raws.before = this.calcBefore(prefixes, decl, prefix); } return decl.parent.insertBefore(decl, cloned); } }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
normalize = function (prop) { return 'flex-direction'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
old = function (prop, prefix) { var ref, spec; 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); } }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
function FlexFlow() { return FlexFlow.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function FlexFlow() { return FlexFlow.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
insert = function (decl, prefix, prefixes) { var already, cloned, dir, orient, ref, spec, value, values; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec !== 2009) { return FlexFlow.__super__.insert.apply(this, arguments); } else { values = decl.value.split(/\s+/).filter(function(i) { return i !== 'wrap' && i !== 'nowrap' && 'wrap-reverse'; }); if (values.length === 0) { return; } already = decl.parent.some(function(i) { return i.prop === prefix + 'box-orient' || i.prop === prefix + 'box-direction'; }); if (already) { return; } value = values[0]; 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.raws.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.raws.before = this.calcBefore(prefixes, decl, prefix); } return decl.parent.insertBefore(decl, cloned); } }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function Flex() { return Flex.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function () { return 'flex'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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 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.raw('
;before').indexOf('\n') !== -1);
};
...
function FlexShrink() { return FlexShrink.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function FlexShrink() { return FlexShrink.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function () { return 'flex-shrink'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec === 2012) { return prefix + 'flex-negative'; } else { return FlexShrink.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var ref, spec; ref = flexSpec(prefix), spec = ref[0], prefix = ref[1]; if (spec === 2012 || spec === 'final') { return FlexShrink.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function FlexValues() { return FlexValues.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function FlexValues() { return FlexValues.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { return new OldValue(this.name, this.prefixed(prefix)); }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
prefixed = function (prefix) { return this.all.prefixed(this.name, prefix); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
replace = function (string, prefix) { return string.replace(this.regexp(), '$1' + this.prefixed(prefix) + '$3'); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function FlexWrap() { return FlexWrap.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function FlexWrap() { return FlexWrap.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
set = function (decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec !== 2009) { return FlexWrap.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function Fullscreen() { return Fullscreen.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function Fullscreen() { return Fullscreen.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
prefixed = function (prefix) { if ('-webkit-' === prefix) { return ':-webkit-full-screen'; } else if ('-moz-' === prefix) { return ':-moz-full-screen'; } else { return ":" + prefix + "fullscreen"; } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function Gradient() { return Gradient.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
add = function (decl, prefix) { var p; p = decl.prop; if (p.indexOf('mask') !== -1) { if (prefix === '-webkit-' || prefix === '-webkit- old') { return Gradient.__super__.add.apply(this, arguments); } } else if (p === 'list-style' || p === 'list-style-image' || p === 'content') { if (prefix === '-webkit-' || prefix === '-webkit- old') { return Gradient.__super__.add.apply(this, arguments); } } else { return Gradient.__super__.add.apply(this, arguments); } }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
cloneDiv = function (params) { var i, j, len; for (j = 0, len = params.length; j < len; j++) { i = params[j]; if (i.type === 'div' && i.value === ',') { return i; } } return { type: 'div', value: ',', after: ' ' }; }
...
for (k = 0, len1 = params.length; k < len1; k++) {
param = params[k];
node.nodes = node.nodes.concat(param);
}
node.nodes.unshift({
type: 'word',
value: 'linear'
}, this.cloneDiv(node.nodes));
node.value = '-webkit-gradient';
return true;
};
Gradient.prototype.oldDirection = function(params) {
var div, j, len, node, old, ref, words;
div = this.cloneDiv(params[0]);
...
colorStops = function (params) { var color, div, i, j, len, param, pos, results, stop; results = []; for (i = j = 0, len = params.length; j < len; i = ++j) { param = params[i]; if (i === 0) { continue; } color = parser.stringify(param[0]); if (param[1] && param[1].type === 'word') { pos = param[1].value; } else if (param[2] && param[2].type === 'word') { pos = param[2].value; } stop = i === 1 && (!pos || pos === '0%') ? "from(" + color + ")" : i === params.length - 1 && (!pos || pos === '100%') ? "to (" + color + ")" : pos ? "color-stop(" + pos + ", " + color + ")" : "color-stop(" + color + ")"; div = param[param.length - 1]; params[i] = [ { type: 'word', value: stop } ]; if (div.type === 'div' && div.value === ',') { results.push(params[i].push(div)); } else { results.push(void 0); } } return results; }
...
i = nodes[j];
params[params.length - 1].push(i);
if (i.type === 'div' && i.value === ',') {
params.push([]);
}
}
this.oldDirection(params);
this.colorStops(params);
node.nodes = [];
for (k = 0, len1 = params.length; k < len1; k++) {
param = params[k];
node.nodes = node.nodes.concat(param);
}
node.nodes.unshift({
type: 'word',
...
function Gradient() { return Gradient.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
convertDirection = function (params) { if (params.length > 0) { if (params[0].value === 'to') { this.fixDirection(params); } else if (params[0].value.indexOf('deg') !== -1) { this.fixAngle(params); } else if (params[2].value === 'at') { this.fixRadial(params); } } return params; }
...
node.nodes = this.normalize(node.nodes);
if (prefix === '-webkit- old') {
changes = this.oldWebkit(node);
if (!changes) {
return;
}
} else {
node.nodes = this.convertDirection(node.nodes);
node.value = prefix + node.value;
}
}
}
return ast.toString();
};
...
fixAngle = function (params) { var first; first = params[0].value; first = parseFloat(first); first = Math.abs(450 - first) % 360; first = this.roundFloat(first, 3); return params[0].value = first + "deg"; }
...
};
Gradient.prototype.convertDirection = function(params) {
if (params.length > 0) {
if (params[0].value === 'to') {
this.fixDirection(params);
} else if (params[0].value.indexOf('deg') !== -1) {
this.fixAngle(params);
} else if (params[2].value === 'at') {
this.fixRadial(params);
}
}
return params;
};
...
fixDirection = function (params) { var i, j, ref, results; params.splice(0, 2); results = []; for (i = j = 0, ref = params.length; 0 <= ref ? j < ref : j > ref; i = 0 <= ref ? ++j : --j) { if (params[i].type === 'div') { break; } if (params[i].type === 'word') { results.push(params[i].value = this.revertDirection(params[i].value)); } else { results.push(void 0); } } return results; }
...
}
return params;
};
Gradient.prototype.convertDirection = function(params) {
if (params.length > 0) {
if (params[0].value === 'to') {
this.fixDirection(params);
} else if (params[0].value.indexOf('deg') !== -1) {
this.fixAngle(params);
} else if (params[2].value === 'at') {
this.fixRadial(params);
}
}
return params;
...
fixRadial = function (params) { var first, i, j, ref, second; first = params[0]; second = []; for (i = j = 4, ref = params.length; 4 <= ref ? j < ref : j > ref; i = 4 <= ref ? ++j : --j) { if (params[i].type === 'div') { break; } else { second.push(params[i]); } } return params.splice.apply(params, [0, i].concat(slice.call(second), [params[i + 2]], [first])); }
...
Gradient.prototype.convertDirection = function(params) {
if (params.length > 0) {
if (params[0].value === 'to') {
this.fixDirection(params);
} else if (params[0].value.indexOf('deg') !== -1) {
this.fixAngle(params);
} else if (params[2].value === 'at') {
this.fixRadial(params);
}
}
return params;
};
Gradient.prototype.fixDirection = function(params) {
var i, j, ref, results;
...
newDirection = function (params) { var i, j, ref; if (params[0].value === 'to') { return params; } if (!isDirection.test(params[0].value)) { return params; } params.unshift({ type: 'word', value: 'to' }, { type: 'space', value: ' ' }); for (i = j = 2, ref = params.length; 2 <= ref ? j < ref : j > ref; i = 2 <= ref ? ++j : --j) { if (params[i].type === 'div') { break; } if (params[i].type === 'word') { params[i].value = this.revertDirection(params[i].value); } } return params; }
...
Gradient.prototype.replace = function(string, prefix) {
var ast, changes, j, len, node, ref;
ast = parser(string);
ref = ast.nodes;
for (j = 0, len = ref.length; j < len; j++) {
node = ref[j];
if (node.type === 'function' && node.value === this.name) {
node.nodes = this.newDirection(node.nodes);
node.nodes = this.normalize(node.nodes);
if (prefix === '-webkit- old') {
changes = this.oldWebkit(node);
if (!changes) {
return;
}
} else {
...
normalize = function (nodes) { var num; if (!nodes[0]) { return nodes; } if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) { nodes[0].value = this.normalizeUnit(nodes[0].value, 400); } else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) { nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI); } else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) { nodes[0].value = this.normalizeUnit(nodes[0].value, 1); } else if (nodes[0].value.indexOf('deg') !== -1) { num = parseFloat(nodes[0].value); num = range.wrap(0, 360, num); nodes[0].value = num + "deg"; } if (nodes[0].value === '0deg') { nodes = this.replaceFirst(nodes, 'to', ' ', 'top'); } else if (nodes[0].value === '90deg') { nodes = this.replaceFirst(nodes, 'to', ' ', 'right'); } else if (nodes[0].value === '180deg') { nodes = this.replaceFirst(nodes, 'to', ' ', 'bottom'); } else if (nodes[0].value === '270deg') { nodes = this.replaceFirst(nodes, 'to', ' ', 'left'); } return nodes; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
normalizeUnit = function (str, full) { var deg, num; num = parseFloat(str); deg = (num / full) * 360; return deg + "deg"; }
...
Gradient.prototype.normalize = function(nodes) {
var num;
if (!nodes[0]) {
return nodes;
}
if (/-?\d+(.\d+)?grad/.test(nodes[0].value)) {
nodes[0].value = this.normalizeUnit(nodes[0].value, 400);
} else if (/-?\d+(.\d+)?rad/.test(nodes[0].value)) {
nodes[0].value = this.normalizeUnit(nodes[0].value, 2 * Math.PI);
} else if (/-?\d+(.\d+)?turn/.test(nodes[0].value)) {
nodes[0].value = this.normalizeUnit(nodes[0].value, 1);
} else if (nodes[0].value.indexOf('deg') !== -1) {
num = parseFloat(nodes[0].value);
num = range.wrap(0, 360, num);
...
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); } }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
oldDirection = function (params) { var div, j, len, node, old, ref, words; div = this.cloneDiv(params[0]); if (params[0][0].value !== 'to') { return params.unshift([ { type: 'word', value: this.oldDirections.bottom }, div ]); } else { words = []; ref = params[0].slice(2); for (j = 0, len = ref.length; j < len; j++) { node = ref[j]; if (node.type === 'word') { words.push(node.value.toLowerCase()); } } words = words.join(' '); old = this.oldDirections[words] || words; return params[0] = [ { type: 'word', value: old }, div ]; } }
...
for (j = 0, len = nodes.length; j < len; j++) {
i = nodes[j];
params[params.length - 1].push(i);
if (i.type === 'div' && i.value === ',') {
params.push([]);
}
}
this.oldDirection(params);
this.colorStops(params);
node.nodes = [];
for (k = 0, len1 = params.length; k < len1; k++) {
param = params[k];
node.nodes = node.nodes.concat(param);
}
node.nodes.unshift({
...
oldWebkit = function (node) { var i, j, k, len, len1, nodes, param, params, string; nodes = node.nodes; string = parser.stringify(node.nodes); if (this.name !== 'linear-gradient') { return false; } if (nodes[0] && nodes[0].value.indexOf('deg') !== -1) { return false; } if (string.indexOf('px') !== -1) { return false; } if (string.indexOf('-corner') !== -1) { return false; } if (string.indexOf('-side') !== -1) { return false; } params = [[]]; for (j = 0, len = nodes.length; j < len; j++) { i = nodes[j]; params[params.length - 1].push(i); if (i.type === 'div' && i.value === ',') { params.push([]); } } this.oldDirection(params); this.colorStops(params); node.nodes = []; for (k = 0, len1 = params.length; k < len1; k++) { param = params[k]; node.nodes = node.nodes.concat(param); } node.nodes.unshift({ type: 'word', value: 'linear' }, this.cloneDiv(node.nodes)); node.value = '-webkit-gradient'; return true; }
...
ref = ast.nodes;
for (j = 0, len = ref.length; j < len; j++) {
node = ref[j];
if (node.type === 'function' && node.value === this.name) {
node.nodes = this.newDirection(node.nodes);
node.nodes = this.normalize(node.nodes);
if (prefix === '-webkit- old') {
changes = this.oldWebkit(node);
if (!changes) {
return;
}
} else {
node.nodes = this.convertDirection(node.nodes);
node.value = prefix + node.value;
}
...
replace = function (string, prefix) { var ast, changes, j, len, node, ref; ast = parser(string); ref = ast.nodes; for (j = 0, len = ref.length; j < len; j++) { node = ref[j]; if (node.type === 'function' && node.value === this.name) { node.nodes = this.newDirection(node.nodes); node.nodes = this.normalize(node.nodes); if (prefix === '-webkit- old') { changes = this.oldWebkit(node); if (!changes) { return; } } else { node.nodes = this.convertDirection(node.nodes); node.value = prefix + node.value; } } } return ast.toString(); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
replaceFirst = function () { var params, prefix, words; params = arguments[0], words = 2 <= arguments.length ? slice.call(arguments, 1) : []; prefix = words.map(function(i) { if (i === ' ') { return { type: 'space', value: i }; } else { return { type: 'word', value: i }; } }); return prefix.concat(params.slice(1)); }
...
nodes[0].value = this.normalizeUnit(nodes[0].value, 1);
} else if (nodes[0].value.indexOf('deg') !== -1) {
num = parseFloat(nodes[0].value);
num = range.wrap(0, 360, num);
nodes[0].value = num + "deg";
}
if (nodes[0].value === '0deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'top');
} else if (nodes[0].value === '90deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'right');
} else if (nodes[0].value === '180deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'bottom');
} else if (nodes[0].value === '270deg') {
nodes = this.replaceFirst(nodes, 'to', ' ', 'left');
}
...
revertDirection = function (word) { return this.directions[word.toLowerCase()] || word; }
...
value: ' '
});
for (i = j = 2, ref = params.length; 2 <= ref ? j < ref : j > ref; i = 2 <= ref ? ++j : --j) {
if (params[i].type === 'div') {
break;
}
if (params[i].type === 'word') {
params[i].value = this.revertDirection(params[i].value);
}
}
return params;
};
Gradient.prototype.convertDirection = function(params) {
if (params.length > 0) {
...
roundFloat = function (float, digits) { return parseFloat(float.toFixed(digits)); }
...
};
Gradient.prototype.fixAngle = function(params) {
var first;
first = params[0].value;
first = parseFloat(first);
first = Math.abs(450 - first) % 360;
first = this.roundFloat(first, 3);
return params[0].value = first + "deg";
};
Gradient.prototype.fixRadial = function(params) {
var first, i, j, ref, second;
first = params[0];
second = [];
...
function GridEnd() { return GridEnd.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
check = function (decl) { return decl.value.indexOf('span') !== -1; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function GridEnd() { return GridEnd.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return prop.replace(/(-span|-end)/, ''); }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-ms-') { return prefix + prop.replace('-end', '-span'); } else { return GridEnd.__super__.prefixed.call(this, prop, prefix); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { if (prefix === '-ms-') { decl.value = decl.value.replace(/span\s/i, ''); } return GridEnd.__super__.set.call(this, decl, prefix); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function GridRowAlign() { return GridRowAlign.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
check = function (decl) { return decl.value.indexOf('flex-') === -1 && decl.value !== 'baseline'; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function GridRowAlign() { return GridRowAlign.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'align-self'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { return prefix + 'grid-row-align'; }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function GridStart() { return GridStart.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
check = function (decl) { return decl.value.indexOf('/') === -1 || decl.value.indexOf('span') !== -1; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function GridStart() { return GridStart.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
insert = function (decl, prefix, prefixes) { var parts; parts = this.splitValue(decl, prefix); if (parts.length === 2) { decl.cloneBefore({ prop: '-ms-' + decl.prop + '-span', value: parts[1] }); } return GridStart.__super__.insert.call(this, decl, prefix, prefixes); }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
normalize = function (prop) { return prop.replace('-start', ''); }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-ms-') { return prefix + prop.replace('-start', ''); } else { return GridStart.__super__.prefixed.call(this, prop, prefix); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var parts; parts = this.splitValue(decl, prefix); if (parts.length === 2) { decl.value = parts[0]; } return GridStart.__super__.set.call(this, decl, prefix); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
splitValue = function (decl, prefix) { var parts; if (prefix === '-ms-' && decl.prop.indexOf('-start') === -1) { parts = decl.value.split(/\s*\/\s*span\s+/); if (parts.length === 2) { return parts; } } return false; }
...
} else {
return GridStart.__super__.prefixed.call(this, prop, prefix);
}
};
GridStart.prototype.insert = function(decl, prefix, prefixes) {
var parts;
parts = this.splitValue(decl, prefix);
if (parts.length === 2) {
decl.cloneBefore({
prop: '-ms-' + decl.prop + '-span',
value: parts[1]
});
}
return GridStart.__super__.insert.call(this, decl, prefix, prefixes);
...
function GridTemplate() { return GridTemplate.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
changeRepeat = function (value) { var ast; ast = parser(value); this.walkRepeat(ast); return ast.toString(); }
...
ast = parser(value);
this.walkRepeat(ast);
return ast.toString();
};
GridTemplate.prototype.set = function(decl, prefix) {
if (prefix === '-ms-' && decl.value.indexOf('repeat(') !== -1) {
decl.value = this.changeRepeat(decl.value);
}
return GridTemplate.__super__.set.call(this, decl, prefix);
};
return GridTemplate;
})(Declaration);
...
function GridTemplate() { return GridTemplate.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return prop.replace(/^grid-(rows|columns)/, 'grid-template-$1'); }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-ms-') { return prefix + prop.replace('template-', ''); } else { return GridTemplate.__super__.prefixed.call(this, prop, prefix); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { if (prefix === '-ms-' && decl.value.indexOf('repeat(') !== -1) { decl.value = this.changeRepeat(decl.value); } return GridTemplate.__super__.set.call(this, decl, prefix); }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
walkRepeat = function (node) { var count, first, fixed, i, j, len, ref; fixed = []; ref = node.nodes; for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (i.nodes) { this.walkRepeat(i); } fixed.push(i); if (i.type === 'function' && i.value === 'repeat') { first = i.nodes.shift(); if (first) { count = first.value; i.nodes.shift(); i.value = ''; fixed.push({ type: 'word', value: "[" + count + "]" }); } } } return node.nodes = fixed; }
...
GridTemplate.prototype.walkRepeat = function(node) {
var count, first, fixed, i, j, len, ref;
fixed = [];
ref = node.nodes;
for (j = 0, len = ref.length; j < len; j++) {
i = ref[j];
if (i.nodes) {
this.walkRepeat(i);
}
fixed.push(i);
if (i.type === 'function' && i.value === 'repeat') {
first = i.nodes.shift();
if (first) {
count = first.value;
i.nodes.shift();
...
function ImageRendering() { return ImageRendering.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
check = function (decl) { return decl.value === 'pixelated'; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function ImageRendering() { return ImageRendering.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'image-rendering'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-ms-') { return '-ms-interpolation-mode'; } else { return ImageRendering.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
process = function (node, result) { return ImageRendering.__super__.process.apply(this, arguments); }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
set = function (decl, prefix) { if (prefix === '-ms-') { decl.prop = '-ms-interpolation-mode'; decl.value = 'nearest-neighbor'; return decl; } else { return ImageRendering.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function ImageSet() { return ImageSet.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function ImageSet() { return ImageSet.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
replace = function (string, prefix) { if (prefix === '-webkit-') { return ImageSet.__super__.replace.apply(this, arguments).replace(/("[^"]+"|'[^']+')(\s+\d+\w)/gi, 'url($1)$2'); } else { return ImageSet.__super__.replace.apply(this, arguments); } }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function InlineLogical() { return InlineLogical.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function InlineLogical() { return InlineLogical.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return prop.replace(/(margin|padding|border)-(start|end)/, '$1-inline-$2'); }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { return prefix + prop.replace('-inline', ''); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function JustifyContent() { return JustifyContent.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function JustifyContent() { return JustifyContent.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'justify-content'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
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); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function JustifyItems() { return JustifyItems.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function JustifyItems() { return JustifyItems.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'justify-items'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { return prefix + (prefix === '-ms-' ? 'grid-column-align' : prop); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function MaskBorder() { return MaskBorder.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function MaskBorder() { return MaskBorder.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function () { return this.name.replace('box-image', 'border'); }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { if (prefix === '-webkit-') { return MaskBorder.__super__.prefixed.apply(this, arguments).replace('border', 'box-image'); } else { return MaskBorder.__super__.prefixed.apply(this, arguments); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
function OldSelector(selector, prefix1) { var i, len, prefix, ref; this.prefix = prefix1; 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(); }
n/a
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; }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
isHack = function (rule) { var before, i, index, len, ref, ref1, regexp, rules, some, string; 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;
...
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); }
n/a
check = function (value) { if (value.indexOf(this.string) !== -1) { return !!value.match(this.regexp); } else { return false; } }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function Order() { return Order.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function Order() { return Order.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
normalize = function (prop) { return 'order'; }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
prefixed = function (prop, prefix) { var ref, spec; 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); } }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
set = function (decl, prefix) { var spec; spec = flexSpec(prefix)[0]; if (spec === 2009 && /\d/.test(decl.value)) { decl.value = (parseInt(decl.value) + 1).toString(); return Order.__super__.set.call(this, decl, prefix); } else { return Order.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function Pixelated() { return Pixelated.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function Pixelated() { return Pixelated.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { if (prefix === '-webkit-') { return new OldValue(this.name, '-webkit-optimize-contrast'); } else if (prefix === '-moz-') { return new OldValue(this.name, '-moz-crisp-edges'); } else { return Pixelated.__super__.old.apply(this, arguments); } }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
replace = function (string, prefix) { if (prefix === '-webkit-') { return string.replace(this.regexp(), '$1-webkit-optimize-contrast'); } else if (prefix === '-moz-') { return string.replace(this.regexp(), '$1-moz-crisp-edges'); } else { return Pixelated.__super__.replace.apply(this, arguments); } }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function Placeholder() { return Placeholder.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function Placeholder() { return Placeholder.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
possible = function () { return Placeholder.__super__.possible.apply(this, arguments).concat('-moz- old'); }
...
OldSelector = (function() {
function OldSelector(selector, prefix1) {
var i, len, prefix, ref;
this.prefix = prefix1;
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();
}
...
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 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.raw('
;before').indexOf('\n') !== -1);
};
...
function Prefixer(name1, prefixes1, all1) { this.name = name1; this.prefixes = prefixes1; this.all = all1; }
...
Supports.prototype.prefixed = function(str) {
var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value;
rule = this.virtual(str);
if (this.disabled(rule.first)) {
return rule.nodes;
}
prefixer = this.prefixer().add[rule.first.prop];
if (prefixer != null) {
if (typeof prefixer.process === "function") {
prefixer.process(rule.first);
}
}
ref1 = rule.nodes;
for (j = 0, len = ref1.length; j < len; j++) {
...
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
clone = function (node, overrides) { return Prefixer.clone(node, overrides); }
...
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 j, len, parent, prefix, ref, results;
...
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 && /:(-\w+-)/.test(node.selector) ? 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; }
...
name: prefixed
});
return rule.parent.insertBefore(rule, cloned);
};
AtRule.prototype.process = function(node) {
var j, len, parent, prefix, ref, results;
parent = this.parentPrefix(node);
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
...
process = function (node) { var added, j, k, len, len1, parent, prefix, prefixes, ref; if (!this.check(node)) { return; } parent = this.parentPrefix(node); prefixes = []; ref = this.prefixes; for (j = 0, len = ref.length; j < len; j++) { prefix = ref[j]; if (parent && parent !== utils.removeNote(prefix)) { continue; } prefixes.push(prefix); } added = []; for (k = 0, len1 = prefixes.length; k < len1; k++) { prefix = prefixes[k]; if (this.add(node, prefix, added.concat([prefix]))) { added.push(prefix); } } return added; }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
function Processor(prefixes) { this.prefixes = prefixes; }
n/a
add = function (css, result) { 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.walkAtRules((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.prefixes.options.supports !== false && !_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.walkRules((function(_this) { return function(rule) { var j, len, ref, results, selector; if (_this.disabled(rule)) { return; } ref = _this.prefixes.add.selectors; results = []; for (j = 0, len = ref.length; j < len; j++) { selector = ref[j]; results.push(selector.process(rule, result)); } return results; }; })(this)); css.walkDecls((function(_this) { return function(decl) { var display, prefixer; if (_this.disabled(decl)) { return; } if (decl.prop === 'display' && decl.value === 'box') { result.warn('You should write display: flex by final spec ' + 'instead of display: box', { node: decl }); return; } if (decl.value.indexOf('linear-gradient') !== -1) { if (OLD_DIRECTION.test(decl.value)) { result.warn('Gradient has outdated direction syntax. ' + 'New syntax is like `to left` instead of `right`.', { node: decl }); } } if (decl.prop === 'text-emphasis-position') { if (decl.value === 'under' || decl.value === 'over') { result.warn('You should use 2 values for text-emphasis-position ' + 'For example, `under left` instead of just `under`.', { node: decl }); } } if (SIZES.indexOf(decl.prop) !== -1) { if (decl.value.indexOf('fill-available') !== -1) { result.warn('Replace fill-available to stretch, ' + 'because spec had been changed', { node: decl }); } else if (decl.value.indexOf('fill') !== -1) { result.warn('Replace fill to stretch, because spec had been changed', { node: decl }); } } if (_this.prefixes.options.flexbox !== false) { if (decl.prop === 'grid-row-end' && decl.value.indexOf('span') === -1) { result.warn('IE supports only grid-row-end with span. ' + 'You should add grid: false option to Autoprefixer ' + 'and use some JS grid polyfill for full spec support', { node: decl }); } if (decl.prop === 'grid-row') { if (decl.value.indexOf('/') !== -1 && decl.value.indexOf('span') === -1) { result.warn('IE supports only grid-row with / and span. ' + 'You should add grid: false option to Autoprefixer ' + ' and use some JS grid polyfill for full spec support', { node: decl }); } } } if (decl.prop === 'transition' || decl.prop === 'transition-property') { return _this.prefixes.transition.add(decl, result); } else if (decl.prop === 'align-self') { display = _this.displayType(decl); if (display !== 'grid' && _this.prefixes.options.flexbox !== false) { prefixer = _this.prefixes.add['align-self']; if (prefixer && prefixer.prefixes) { prefixer.process(decl); } } if (display !== 'flex' && _this ...
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
disabled = function (node) { var other, status; if (this.prefixes.options.grid === false && node.type === 'decl') { if (node.prop === 'display' && node.value.indexOf('grid') !== -1) { return true; } if (node.prop.indexOf('grid') !== -1 || node.prop === 'justify-items') { return true; } } if (this.prefixes.options.flexbox === false && node.type === 'decl') { if (node.prop === 'display' && node.value.indexOf('flex') !== -1) { return true; } other = ['order', 'justify-content', 'align-items', 'align-content']; if (node.prop.indexOf('flex') !== -1 || other.indexOf(node.prop) !== -1) { return true; } } if (node._autoprefixerDisabled != null) { return node._autoprefixerDisabled; } else if (node.nodes) { status = void 0; node.each(function(i) { if (i.type !== 'comment') { return; } if (/(!\s*)?autoprefixer:\s*off/i.test(i.text)) { status = false; return false; } else if (/(!\s*)?autoprefixer:\s*on/i.test(i.text)) { status = true; return false; } }); return node._autoprefixerDisabled = status != null ? !status : node.parent ? this.disabled(node.parent) : false; } else if (node.parent) { return node._autoprefixerDisabled = this.disabled(node.parent); } else { return false; } }
...
resolution = this.prefixes.add['@resolution'];
keyframes = this.prefixes.add['@keyframes'];
viewport = this.prefixes.add['@viewport'];
supports = this.prefixes.add['@supports'];
css.walkAtRules((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') {
...
displayType = function (decl) { var i, j, len, ref; ref = decl.parent.nodes; for (j = 0, len = ref.length; j < len; j++) { i = ref[j]; if (i.prop === 'display') { if (i.value.indexOf('flex') !== -1) { return 'flex'; } else if (i.value.indexOf('grid') !== -1) { return 'grid'; } } } return false; }
...
});
}
}
}
if (decl.prop === 'transition' || decl.prop === 'transition-property') {
return _this.prefixes.transition.add(decl, result);
} else if (decl.prop === 'align-self') {
display = _this.displayType(decl);
if (display !== 'grid' && _this.prefixes.options.flexbox !== false) {
prefixer = _this.prefixes.add['align-self'];
if (prefixer && prefixer.prefixes) {
prefixer.process(decl);
}
}
if (display !== 'flex' && _this.prefixes.options.grid !== false) {
...
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.raw('before').split("\n"); prevMin = parts[parts.length - 1].length; diff = false; return this.prefixes.group(decl).down(function(other) { var last; parts = other.raw('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.raws.before = parts.join("\n"); } }); }
...
return _this.prefixes.normalize(other.prop) === unprefixed;
});
if (unprefixed === 'flex-flow') {
notHack = true;
}
if (notHack && !_this.withHackValue(decl)) {
if (decl.raw('before').indexOf("\n") > -1) {
_this.reduceSpaces(decl);
}
rule.removeChild(i);
return;
}
}
ref2 = _this.prefixes.values('remove', unprefixed);
for (k = 0, len1 = ref2.length; k < len1; k++) {
...
remove = function (css) { var checker, j, len, ref, resolution; resolution = this.prefixes.remove['@resolution']; css.walkAtRules((function(_this) { return function(rule, i) { if (_this.prefixes.remove['@' + rule.name]) { if (!_this.disabled(rule)) { return rule.parent.removeChild(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 (j = 0, len = ref.length; j < len; j++) { checker = ref[j]; css.walkRules((function(_this) { return function(rule, i) { if (checker.check(rule)) { if (!_this.disabled(rule)) { return rule.parent.removeChild(i); } } }; })(this)); } return css.walkDecls((function(_this) { return function(decl, i) { var k, len1, notHack, ref1, ref2, rule, unprefixed; if (_this.disabled(decl)) { return; } rule = decl.parent; unprefixed = _this.prefixes.unprefixed(decl.prop); if (decl.prop === 'transition' || decl.prop === 'transition-property') { _this.prefixes.transition.remove(decl); } if ((ref1 = _this.prefixes.remove[decl.prop]) != null ? ref1.remove : void 0) { notHack = _this.prefixes.group(decl).down(function(other) { return _this.prefixes.normalize(other.prop) === unprefixed; }); if (unprefixed === 'flex-flow') { notHack = true; } if (notHack && !_this.withHackValue(decl)) { if (decl.raw('before').indexOf("\n") > -1) { _this.reduceSpaces(decl); } rule.removeChild(i); return; } } ref2 = _this.prefixes.values('remove', unprefixed); for (k = 0, len1 = ref2.length; k < len1; k++) { checker = ref2[k]; 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.removeChild(i); return; } else if (checker.clean) { checker.clean(decl); return; } } } }; })(this)); }
...
var prefixes, ref;
prefixes = loadPrefixes({
from: (ref = css.source) != null ? ref.input.file : void 0,
env: options.env
});
timeCapsule(result, prefixes);
if (options.remove !== false) {
prefixes.processor.remove(css);
}
if (options.add !== false) {
return prefixes.processor.add(css, result);
}
};
plugin.options = options;
plugin.info = function(opts) {
...
withHackValue = function (decl) { return decl.prop === '-webkit-background-clip' && decl.value === 'text'; }
...
if ((ref1 = _this.prefixes.remove[decl.prop]) != null ? ref1.remove : void 0) {
notHack = _this.prefixes.group(decl).down(function(other) {
return _this.prefixes.normalize(other.prop) === unprefixed;
});
if (unprefixed === 'flex-flow') {
notHack = true;
}
if (notHack && !_this.withHackValue(decl)) {
if (decl.raw('before').indexOf("\n") > -1) {
_this.reduceSpaces(decl);
}
rule.removeChild(i);
return;
}
}
...
function Resolution() { return Resolution.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
clean = function (rule) { var j, len, prefix, ref; if (!this.bad) { this.bad = []; ref = this.prefixes; for (j = 0, len = ref.length; j < len; j++) { prefix = ref[j]; 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)); }
...
css.walkAtRules((function(_this) {
return function(rule, i) {
if (_this.prefixes.remove['@' + rule.name]) {
if (!_this.disabled(rule)) {
return rule.parent.removeChild(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 (j = 0, len = ref.length; j < len; j++) {
checker = ref[j];
css.walkRules((function(_this) {
...
function Resolution() { return Resolution.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
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 j, len, prefix, ref;
if (!this.bad) {
this.bad = [];
ref = this.prefixes;
...
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; }
...
prefix = prefixes[k];
if (prefix === '-moz-' && rule.params.indexOf('dpi') !== -1) {
continue;
} else {
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);
...
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 j, k, len, len1, prefix, processed, query; for (j = 0, len = origin.length; j < len; j++) { query = origin[j]; if (query.indexOf('min-resolution') === -1 && query.indexOf('max-resolution') === -1) { prefixed.push(query); continue; } for (k = 0, len1 = prefixes.length; k < len1; k++) { prefix = prefixes[k]; if (prefix === '-moz-' && rule.params.indexOf('dpi') !== -1) { continue; } else { 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)); }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
function Selector(name1, prefixes, all) { this.name = name1; this.prefixes = prefixes; this.all = all; this.regexpCache = {}; }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
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); }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
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);
};
...
check = function (rule) { if (rule.selector.indexOf(this.name) !== -1) { return !!rule.selector.match(this.regexp()); } else { return false; } }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function Selector(name1, prefixes, all) { this.name = name1; this.prefixes = prefixes; this.all = all; this.regexpCache = {}; }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { return new OldSelector(this, prefix); }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
possible = function () { return Browsers.prefixes(); }
...
OldSelector = (function() {
function OldSelector(selector, prefix1) {
var i, len, prefix, ref;
this.prefix = prefix1;
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();
}
...
prefixed = function (prefix) { return this.name.replace(/^([^\w]*)/, '$1' + prefix); }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
prefixeds = function (rule) { var i, len, prefix, prefixeds, 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.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);
...
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"); }
...
var OldSelector;
OldSelector = (function() {
function OldSelector(selector, prefix1) {
var i, len, prefix, ref;
this.prefix = prefix1;
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;
...
replace = function (selector, prefix) { return selector.replace(this.regexp(), '$1' + this.prefixed(prefix)); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function Stretch() { return Stretch.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
function Stretch() { return Stretch.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { if (prefix === '-moz-') { return new OldValue(this.name, '-moz-available'); } else if (prefix === '-webkit-') { return new OldValue(this.name, '-webkit-fill-available'); } else { return Stretch.__super__.old.apply(this, arguments); } }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
replace = function (string, prefix) { if (prefix === '-moz-') { return string.replace(this.regexp(), '$1-moz-available$3'); } else if (prefix === '-webkit-') { return string.replace(this.regexp(), '$1-webkit-fill-available$3'); } else { return Stretch.__super__.replace.apply(this, arguments); } }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
function Supports(Prefixes, all1) { this.Prefixes = Prefixes; this.all = all1; }
n/a
add = function (nodes, all) { return nodes.map((function(_this) { return function(i) { var prefixed; if (_this.isProp(i)) { prefixed = _this.prefixed(i[0]); if (prefixed.length > 1) { return _this.convert(prefixed); } else { return i; } } else if (typeof i === 'object') { return _this.add(i, all); } else { return i; } }; })(this)); }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
cleanBrackets = function (nodes) { return nodes.map((function(_this) { return function(i) { if (typeof i === 'object') { if (i.length === 1 && typeof i[0] === 'object') { return _this.cleanBrackets(i[0]); } else { return _this.cleanBrackets(i); } } else { return i; } }; })(this)); }
...
};
Supports.prototype.cleanBrackets = function(nodes) {
return nodes.map((function(_this) {
return function(i) {
if (typeof i === 'object') {
if (i.length === 1 && typeof i[0] === 'object') {
return _this.cleanBrackets(i[0]);
} else {
return _this.cleanBrackets(i);
}
} else {
return i;
}
};
...
convert = function (progress) { var i, j, len, result; result = ['']; for (j = 0, len = progress.length; j < len; j++) { i = progress[j]; result.push([i.prop + ": " + i.value]); result.push(' or '); } result[result.length - 1] = ''; return result; }
...
Supports.prototype.add = function(nodes, all) {
return nodes.map((function(_this) {
return function(i) {
var prefixed;
if (_this.isProp(i)) {
prefixed = _this.prefixed(i[0]);
if (prefixed.length > 1) {
return _this.convert(prefixed);
} else {
return i;
}
} else if (typeof i === 'object') {
return _this.add(i, all);
} else {
return i;
...
disabled = function (node) { var other; if (this.all.options.grid === false) { if (node.prop === 'display' && node.value.indexOf('grid') !== -1) { return true; } if (node.prop.indexOf('grid') !== -1 || node.prop === 'justify-items') { return true; } } if (this.all.options.flexbox === false) { if (node.prop === 'display' && node.value.indexOf('flex') !== -1) { return true; } other = ['order', 'justify-content', 'align-items', 'align-content']; if (node.prop.indexOf('flex') !== -1 || other.indexOf(node.prop) !== -1) { return true; } } return false; }
...
resolution = this.prefixes.add['@resolution'];
keyframes = this.prefixes.add['@keyframes'];
viewport = this.prefixes.add['@viewport'];
supports = this.prefixes.add['@supports'];
css.walkAtRules((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') {
...
isHack = function (all, unprefixed) { var check; check = new RegExp('(\\(|\\s)' + utils.escapeRegexp(unprefixed) + ':'); return !check.test(all); }
...
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;
...
isNot = function (node) { return typeof node === 'string' && /not\s*/i.test(node); }
...
return false;
};
Supports.prototype.remove = function(nodes, all) {
var i;
i = 0;
while (i < nodes.length) {
if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this
.isOr(nodes[i + 1])) {
if (this.toRemove(nodes[i][0], all)) {
nodes.splice(i, 2);
} else {
i += 2;
}
} else {
if (typeof nodes[i] === 'object') {
...
isOr = function (node) { return typeof node === 'string' && /\s*or\s*/i.test(node); }
...
return false;
};
Supports.prototype.remove = function(nodes, all) {
var i;
i = 0;
while (i < nodes.length) {
if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr
span>(nodes[i + 1])) {
if (this.toRemove(nodes[i][0], all)) {
nodes.splice(i, 2);
} else {
i += 2;
}
} else {
if (typeof nodes[i] === 'object') {
...
isProp = function (node) { return typeof node === 'object' && node.length === 1 && typeof node[0] === 'string'; }
...
return false;
};
Supports.prototype.remove = function(nodes, all) {
var i;
i = 0;
while (i < nodes.length) {
if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this
.isOr(nodes[i + 1])) {
if (this.toRemove(nodes[i][0], all)) {
nodes.splice(i, 2);
} else {
i += 2;
}
} else {
if (typeof nodes[i] === 'object') {
...
normalize = function (nodes) { if (typeof nodes === 'object') { nodes = nodes.filter(function(i) { return i !== ''; }); if (typeof nodes[0] === 'string' && nodes[0].indexOf(':') !== -1) { return [brackets.stringify(nodes)]; } else { return nodes.map((function(_this) { return function(i) { return _this.normalize(i); }; })(this)); } } else { return nodes; } }
...
} else {
return declsCache[prop] = Declaration.load(prop);
}
};
Prefixes.prototype.unprefixed = function(prop) {
var value;
value = this.normalize(vendor.unprefixed(prop));
if (value === 'flex-direction') {
value = 'flex-flow';
}
return value;
};
Prefixes.prototype.normalize = function(prop) {
...
parse = function (str) { var prop, ref1, value; ref1 = str.split(':'), prop = ref1[0], value = ref1[1]; value || (value = ''); return [prop.trim(), value.trim()]; }
...
return this.prefixesRegexp.test(value);
};
function Browsers(data1, requirements, options, stats) {
this.data = data1;
this.options = options;
this.stats = stats;
this.selected = this.parse(requirements);
}
Browsers.prototype.parse = function(requirements) {
var ref, ref1;
return browserslist(requirements, {
stats: this.stats,
path: (ref = this.options) != null ? ref.from : void 0,
...
prefixed = function (str) { var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value; rule = this.virtual(str); if (this.disabled(rule.first)) { return rule.nodes; } prefixer = this.prefixer().add[rule.first.prop]; if (prefixer != null) { if (typeof prefixer.process === "function") { prefixer.process(rule.first); } } ref1 = rule.nodes; for (j = 0, len = ref1.length; j < len; j++) { decl = ref1[j]; ref2 = this.prefixer().values('add', rule.first.prop); for (k = 0, len1 = ref2.length; k < len1; k++) { value = ref2[k]; value.process(decl); } Value.save(this.all, decl); } return rule.nodes; }
...
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.raw('
;before').indexOf('\n') !== -1);
};
...
prefixer = function () { var browsers, filtered; if (this.prefixerCache) { return this.prefixerCache; } filtered = this.all.browsers.selected.filter((function(_this) { return function(i) { return supported.indexOf(i) !== -1; }; })(this)); browsers = new Browsers(this.all.browsers.data, filtered, this.all.options); return this.prefixerCache = new this.Prefixes(this.all.data, browsers, this.all.options); }
...
Supports.prototype.prefixed = function(str) {
var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value;
rule = this.virtual(str);
if (this.disabled(rule.first)) {
return rule.nodes;
}
prefixer = this.prefixer().add[rule.first.prop];
if (prefixer != null) {
if (typeof prefixer.process === "function") {
prefixer.process(rule.first);
}
}
ref1 = rule.nodes;
for (j = 0, len = ref1.length; j < len; j++) {
...
process = function (rule) { var ast; ast = brackets.parse(rule.params); ast = this.normalize(ast); ast = this.remove(ast, rule.params); ast = this.add(ast, rule.params); ast = this.cleanBrackets(ast); return rule.params = brackets.stringify(ast); }
...
## 6.0.1
* Fix `cross-fade()` support (by 一丝).
## 6.0 “Eureka”
* CLI was removed from `autoprefixer` package to `autoprefixer-cli`.
* `autoprefixer-core` and `autoprefixer` packages was merged back.
* Remove `autoprefixer(opt).process(css)`, use `autoprefixer.process(css, opt)`.
* Remove `safe` option. Use separated Safe parser from PostCSS.
* Remove Opera 12.1 from default query.
* Use PostCSS 5.0 API.
* Add custom syntaxes support.
* Add `image-set` support (by 一丝).
* Add `mask-border` support (by 一丝).
* Add `filter()` function support (by Vincent De Oliveira).
...
remove = function (nodes, all) { var i; i = 0; while (i < nodes.length) { if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) { if (this.toRemove(nodes[i][0], all)) { nodes.splice(i, 2); } else { i += 2; } } else { if (typeof nodes[i] === 'object') { nodes[i] = this.remove(nodes[i], all); } i += 1; } } return nodes; }
...
var prefixes, ref;
prefixes = loadPrefixes({
from: (ref = css.source) != null ? ref.input.file : void 0,
env: options.env
});
timeCapsule(result, prefixes);
if (options.remove !== false) {
prefixes.processor.remove(css);
}
if (options.add !== false) {
return prefixes.processor.add(css, result);
}
};
plugin.options = options;
plugin.info = function(opts) {
...
toRemove = function (str, all) { var checker, j, len, prop, ref1, ref2, ref3, unprefixed, value; ref1 = this.parse(str), prop = ref1[0], value = ref1[1]; unprefixed = this.all.unprefixed(prop); if (((ref2 = this.all.cleaner().remove[prop]) != null ? ref2.remove : void 0) && !this.isHack(all, unprefixed)) { return true; } ref3 = this.all.cleaner().values('remove', unprefixed); for (j = 0, len = ref3.length; j < len; j++) { checker = ref3[j]; if (checker.check(value)) { return true; } } return false; }
...
};
Supports.prototype.remove = function(nodes, all) {
var i;
i = 0;
while (i < nodes.length) {
if (!this.isNot(nodes[i - 1]) && this.isProp(nodes[i]) && this.isOr(nodes[i + 1])) {
if (this.toRemove(nodes[i][0], all)) {
nodes.splice(i, 2);
} else {
i += 2;
}
} else {
if (typeof nodes[i] === 'object') {
nodes[i] = this.remove(nodes[i], all);
...
virtual = function (str) { var prop, ref1, rule, value; ref1 = this.parse(str), prop = ref1[0], value = ref1[1]; rule = postcss.parse('a{}').first; rule.append({ prop: prop, value: value, raws: { before: '' } }); return rule; }
...
}
});
return rule;
};
Supports.prototype.prefixed = function(str) {
var decl, j, k, len, len1, prefixer, ref1, ref2, rule, value;
rule = this.virtual(str);
if (this.disabled(rule.first)) {
return rule.nodes;
}
prefixer = this.prefixer().add[rule.first.prop];
if (prefixer != null) {
if (typeof prefixer.process === "function") {
prefixer.process(rule.first);
...
function TextEmphasisPosition() { return TextEmphasisPosition.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function TextEmphasisPosition() { return TextEmphasisPosition.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
set = function (decl, prefix) { if (prefix === '-webkit-') { decl.value = decl.value.replace(/\s*(right|left)\s*/i, ''); return TextEmphasisPosition.__super__.set.call(this, decl, prefix); } else { return TextEmphasisPosition.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function TransformDecl() { return TransformDecl.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function TransformDecl() { return TransformDecl.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
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; }
...
decl.value = decl.value.replace(/rotateZ/gi, 'rotate');
}
return decl;
};
TransformDecl.prototype.insert = function(decl, prefix, prefixes) {
if (prefix === '-ms-') {
if (!this.contain3d(decl) && !this.keyframeParents(decl)) {
return TransformDecl.__super__.insert.apply(this, arguments);
}
} else if (prefix === '-o-') {
if (!this.contain3d(decl)) {
return TransformDecl.__super__.insert.apply(this, arguments);
}
} else {
...
insert = function (decl, prefix, prefixes) { if (prefix === '-ms-') { if (!this.contain3d(decl) && !this.keyframeParents(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); } }
...
Declaration.prototype.add = function(decl, prefix, prefixes) {
var prefixed;
prefixed = this.prefixed(decl.prop, prefix);
if (this.isAlready(decl, prefixed) || 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) {
...
keyframeParents = function (decl) { var parent; parent = decl.parent; while (parent) { if (parent.type === 'atrule' && parent.name === 'keyframes') { return true; } parent = parent.parent; } return false; }
...
decl.value = decl.value.replace(/rotateZ/gi, 'rotate');
}
return decl;
};
TransformDecl.prototype.insert = function(decl, prefix, prefixes) {
if (prefix === '-ms-') {
if (!this.contain3d(decl) && !this.keyframeParents(decl)) {
return TransformDecl.__super__.insert.apply(this, arguments);
}
} else if (prefix === '-o-') {
if (!this.contain3d(decl)) {
return TransformDecl.__super__.insert.apply(this, arguments);
}
} else {
...
set = function (decl, prefix) { decl = TransformDecl.__super__.set.apply(this, arguments); if (prefix === '-ms-') { decl.value = decl.value.replace(/rotateZ/gi, 'rotate'); } return decl; }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...
function Transition(prefixes) { this.prefixes = prefixes; }
n/a
add = function (decl, result) { var added, declPrefixes, j, k, l, len, len1, len2, names, operaClean, param, params, prefix, prefixValue, prefixed, prefixer, prop, ref, ref1, value, webkitClean; declPrefixes = ((ref = this.prefixes.add[decl.prop]) != null ? ref.prefixes : void 0) || []; params = this.parse(decl.value); names = params.map((function(_this) { return function(i) { return _this.findProp(i); }; })(this)); added = []; if (names.some(function(i) { return i[0] === '-'; })) { return; } for (j = 0, len = params.length; j < len; j++) { param = params[j]; prop = this.findProp(param); if (prop[0] === '-') { continue; } prefixer = this.prefixes.add[prop]; if (!(prefixer != null ? prefixer.prefixes : void 0)) { continue; } ref1 = prefixer.prefixes; for (k = 0, len1 = ref1.length; k < len1; k++) { prefix = ref1[k]; prefixed = this.prefixes.prefixed(prop, prefix); if (prefixed !== '-ms-transform' && names.indexOf(prefixed) === -1) { if (!this.disabled(prop, prefix)) { added.push(this.clone(prop, prefixed, param)); } } } } params = params.concat(added); value = this.stringify(params); webkitClean = this.stringify(this.cleanFromUnprefixed(params, '-webkit-')); if (declPrefixes.indexOf('-webkit-') !== -1) { this.cloneBefore(decl, '-webkit-' + decl.prop, webkitClean); } this.cloneBefore(decl, decl.prop, webkitClean); if (declPrefixes.indexOf('-o-') !== -1) { operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-')); this.cloneBefore(decl, '-o-' + decl.prop, operaClean); } for (l = 0, len2 = declPrefixes.length; l < len2; l++) { prefix = declPrefixes[l]; if (prefix !== '-webkit-' && prefix !== '-o-') { prefixValue = this.stringify(this.cleanOtherPrefixes(params, prefix)); this.cloneBefore(decl, prefix + decl.prop, prefixValue); } } if (value !== decl.value && !this.already(decl, decl.prop, value)) { this.checkForWarning(result, decl); decl.cloneBefore(); return decl.value = value; } }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
already = function (decl, prop, value) { return decl.parent.some(function(i) { return i.prop === prop && i.value === value; }); }
...
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);
};
...
checkForWarning = function (result, decl) { if (decl.prop === 'transition-property') { return decl.parent.each(function(i) { if (i.type !== 'decl') { return; } if (i.prop.indexOf('transition-') !== 0) { return; } if (i.prop === 'transition-property') { return; } if (list.comma(i.value).length > 1) { decl.warn(result, 'Replace transition-property to transition, ' + 'because Autoprefixer could not support ' + 'any cases of transition-property ' + 'and other transition-*'); } return false; }); } }
...
prefix = declPrefixes[l];
if (prefix !== '-webkit-' && prefix !== '-o-') {
prefixValue = this.stringify(this.cleanOtherPrefixes(params, prefix));
this.cloneBefore(decl, prefix + decl.prop, prefixValue);
}
}
if (value !== decl.value && !this.already(decl, decl.prop, value)) {
this.checkForWarning(result, decl);
decl.cloneBefore();
return decl.value = value;
}
};
Transition.prototype.findProp = function(param) {
var i, j, len, prop, token;
...
cleanFromUnprefixed = function (params, prefix) { var j, len, p, param, prop, remove, result; result = []; remove = params.map((function(_this) { return function(i) { return _this.findProp(i); }; })(this)).filter(function(i) { return i.slice(0, prefix.length) === prefix; }).map((function(_this) { return function(i) { return _this.prefixes.unprefixed(i); }; })(this)); for (j = 0, len = params.length; j < len; j++) { param = params[j]; prop = this.findProp(param); p = vendor.prefix(prop); if (remove.indexOf(prop) === -1 && (p === prefix || p === '')) { result.push(param); } } return result; }
...
added.push(this.clone(prop, prefixed, param));
}
}
}
}
params = params.concat(added);
value = this.stringify(params);
webkitClean = this.stringify(this.cleanFromUnprefixed(params, '-webkit-'));
if (declPrefixes.indexOf('-webkit-') !== -1) {
this.cloneBefore(decl, '-webkit-' + decl.prop, webkitClean);
}
this.cloneBefore(decl, decl.prop, webkitClean);
if (declPrefixes.indexOf('-o-') !== -1) {
operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-'));
this.cloneBefore(decl, '-o-' + decl.prop, operaClean);
...
cleanOtherPrefixes = function (params, prefix) { return params.filter((function(_this) { return function(param) { var current; current = vendor.prefix(_this.findProp(param)); return current === '' || current === prefix; }; })(this)); }
...
if (declPrefixes.indexOf('-o-') !== -1) {
operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-'));
this.cloneBefore(decl, '-o-' + decl.prop, operaClean);
}
for (l = 0, len2 = declPrefixes.length; l < len2; l++) {
prefix = declPrefixes[l];
if (prefix !== '-webkit-' && prefix !== '-o-') {
prefixValue = this.stringify(this.cleanOtherPrefixes(params, prefix));
this.cloneBefore(decl, prefix + decl.prop, prefixValue);
}
}
if (value !== decl.value && !this.already(decl, decl.prop, value)) {
this.checkForWarning(result, decl);
decl.cloneBefore();
return decl.value = value;
...
clone = function (origin, name, param) { var changed, i, j, len, result; result = []; changed = false; for (j = 0, len = param.length; j < len; j++) { i = param[j]; if (!changed && i.type === 'word' && i.value === origin) { result.push({ type: 'word', value: name }); changed = true; } else { result.push(i); } } return result; }
...
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 j, len, parent, prefix, ref, results;
...
cloneBefore = function (decl, prop, value) { if (!this.already(decl, prop, value)) { return decl.cloneBefore({ prop: prop, value: value }); } }
...
}
}
}
params = params.concat(added);
value = this.stringify(params);
webkitClean = this.stringify(this.cleanFromUnprefixed(params, '-webkit-'));
if (declPrefixes.indexOf('-webkit-') !== -1) {
this.cloneBefore(decl, '-webkit-' + decl.prop, webkitClean);
}
this.cloneBefore(decl, decl.prop, webkitClean);
if (declPrefixes.indexOf('-o-') !== -1) {
operaClean = this.stringify(this.cleanFromUnprefixed(params, '-o-'));
this.cloneBefore(decl, '-o-' + decl.prop, operaClean);
}
for (l = 0, len2 = declPrefixes.length; l < len2; l++) {
...
disabled = function (prop, prefix) { var other; other = ['order', 'justify-content', 'align-self', 'align-content']; if (prop.indexOf('flex') !== -1 || other.indexOf(prop) !== -1) { if (this.prefixes.options.flexbox === false) { return true; } else if (this.prefixes.options.flexbox === 'no-2009') { return prefix.indexOf('2009') !== -1; } } }
...
resolution = this.prefixes.add['@resolution'];
keyframes = this.prefixes.add['@keyframes'];
viewport = this.prefixes.add['@viewport'];
supports = this.prefixes.add['@supports'];
css.walkAtRules((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') {
...
div = function (params) { var j, k, len, len1, node, param; for (j = 0, len = params.length; j < len; j++) { param = params[j]; for (k = 0, len1 = param.length; k < len1; k++) { node = param[k]; if (node.type === 'div' && node.value === ',') { return node; } } } return { type: 'div', value: ',', after: ' ' }; }
...
if (params.length === 0) {
return '';
}
nodes = [];
for (j = 0, len = params.length; j < len; j++) {
param = params[j];
if (param[param.length - 1].type !== 'div') {
param.push(this.div(params));
}
nodes = nodes.concat(param);
}
if (nodes[0].type === 'div') {
nodes = nodes.slice(1);
}
if (nodes[nodes.length - 1].type === 'div') {
...
findProp = function (param) { var i, j, len, prop, token; prop = param[0].value; if (/^\d/.test(prop)) { for (i = j = 0, len = param.length; j < len; i = ++j) { token = param[i]; if (i !== 0 && token.type === 'word') { return token.value; } } } return prop; }
...
Transition.prototype.add = function(decl, result) {
var added, declPrefixes, j, k, l, len, len1, len2, names, operaClean, param, params, prefix, prefixValue, prefixed, prefixer, prop
, ref, ref1, value, webkitClean;
declPrefixes = ((ref = this.prefixes.add[decl.prop]) != null ? ref.prefixes : void 0) || [];
params = this.parse(decl.value);
names = params.map((function(_this) {
return function(i) {
return _this.findProp(i);
};
})(this));
added = [];
if (names.some(function(i) {
return i[0] === '-';
})) {
return;
...
parse = function (value) { var ast, j, len, node, param, ref, result; ast = parser(value); result = []; param = []; ref = ast.nodes; for (j = 0, len = ref.length; j < len; j++) { node = ref[j]; param.push(node); if (node.type === 'div' && node.value === ',') { result.push(param); param = []; } } result.push(param); return result.filter(function(i) { return i.length > 0; }); }
...
return this.prefixesRegexp.test(value);
};
function Browsers(data1, requirements, options, stats) {
this.data = data1;
this.options = options;
this.stats = stats;
this.selected = this.parse(requirements);
}
Browsers.prototype.parse = function(requirements) {
var ref, ref1;
return browserslist(requirements, {
stats: this.stats,
path: (ref = this.options) != null ? ref.from : void 0,
...
remove = function (decl) { var double, params, smaller, value; params = this.parse(decl.value); params = params.filter((function(_this) { return function(i) { var ref; return !((ref = _this.prefixes.remove[_this.findProp(i)]) != null ? ref.remove : void 0); }; })(this)); value = this.stringify(params); if (decl.value === value) { return; } if (params.length === 0) { decl.remove(); return; } double = decl.parent.some(function(i) { return i.prop === decl.prop && i.value === value; }); smaller = decl.parent.some(function(i) { return i !== decl && i.prop === decl.prop && i.value.length > value.length; }); if (double || smaller) { return decl.remove(); } else { return decl.value = value; } }
...
var prefixes, ref;
prefixes = loadPrefixes({
from: (ref = css.source) != null ? ref.input.file : void 0,
env: options.env
});
timeCapsule(result, prefixes);
if (options.remove !== false) {
prefixes.processor.remove(css);
}
if (options.add !== false) {
return prefixes.processor.add(css, result);
}
};
plugin.options = options;
plugin.info = function(opts) {
...
stringify = function (params) { var j, len, nodes, param; if (params.length === 0) { return ''; } nodes = []; for (j = 0, len = params.length; j < len; j++) { param = params[j]; if (param[param.length - 1].type !== 'div') { param.push(this.div(params)); } nodes = nodes.concat(param); } if (nodes[0].type === 'div') { nodes = nodes.slice(1); } if (nodes[nodes.length - 1].type === 'div') { nodes = nodes.slice(0, -1); } return parser.stringify({ nodes: nodes }); }
...
if (options.browsers != null) {
reqs = options.browsers;
}
loadPrefixes = function(opts) {
var browsers, key, stats;
stats = options.stats;
browsers = new Browsers(module.exports.data.browsers, reqs, opts, stats);
key = browsers.selected.join(', ') + JSON.stringify(options);
return cache[key] || (cache[key] = new Prefixes(module.exports.data.prefixes, browsers, options));
};
plugin = function(css, result) {
var prefixes, ref;
prefixes = loadPrefixes({
from: (ref = css.source) != null ? ref.input.file : void 0,
env: options.env
...
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); } }
...
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
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;
});
});
};
...
error = function (text) { var err; err = new Error(text); err.autoprefixer = true; throw err; }
n/a
escapeRegexp = function (string) { return string.replace(/[.?*+\^\$\[\]\\(){}|\-]/g, '\\$&'); }
...
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) {
...
regexp = function (word, escape) { if (escape == null) { escape = true; } if (escape) { word = this.escapeRegexp(word); } return RegExp("(^|[\\s,(])(" + word + "($|[\\s(,]))", "gi"); }
...
var OldSelector;
OldSelector = (function() {
function OldSelector(selector, prefix1) {
var i, len, prefix, ref;
this.prefix = prefix1;
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;
...
removeNote = function (string) { if (string.indexOf(' ') === -1) { return string; } else { return string.split(' ')[0]; } }
...
var j, len, max, prefix;
if (decl._autoprefixerMax) {
return decl._autoprefixerMax;
}
max = 0;
for (j = 0, len = prefixes.length; j < len; j++) {
prefix = prefixes[j];
prefix = utils.removeNote(prefix);
if (prefix.length > max) {
max = prefix.length;
}
}
return decl._autoprefixerMax = max;
};
...
uniq = function (array) { var filtered, i, j, len; filtered = []; for (j = 0, len = array.length; j < len; j++) { i = array[j]; if (filtered.indexOf(i) === -1) { filtered.push(i); } } return filtered; }
...
Browsers = (function() {
Browsers.prefixes = function() {
var data, i, name;
if (this.prefixesCache) {
return this.prefixesCache;
}
data = require('caniuse-db/data.json').agents;
return this.prefixesCache = utils.uniq((function() {
var results;
results = [];
for (name in data) {
i = data[name];
results.push("-" + i.prefix + "-");
}
return results;
...
function Value() { return Value.__super__.constructor.apply(this, arguments); }
...
return decl.value;
}
};
Value.prototype.add = function(decl, prefix) {
var value;
decl._autoprefixerValues || (decl._autoprefixerValues = {});
value = decl._autoprefixerValues[prefix] || this.value(decl);
value = this.replace(value, prefix);
if (value) {
return decl._autoprefixerValues[prefix] = value;
}
};
Value.prototype.old = function(prefix) {
...
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
save = function (prefixes, decl) { var already, cloned, prefix, prefixed, prop, propPrefix, ref, results, rule, trimmed, value; prop = decl.prop; ref = decl._autoprefixerValues; results = []; for (prefix in ref) { value = ref[prefix]; if (value === decl.value) { continue; } propPrefix = vendor.prefix(prop); if (propPrefix === prefix) { results.push(decl.value = value); } else if (propPrefix === '-pie-') { continue; } else { prefixed = prefixes.prefixed(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) { 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; }
...
}
unprefixed = _this.prefixes.unprefixed(decl.prop);
ref = _this.prefixes.values('add', unprefixed);
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
value.process(decl, result);
}
return Value.save(_this.prefixes, decl);
};
})(this));
};
Processor.prototype.remove = function(css) {
var checker, j, len, ref, resolution;
resolution = this.prefixes.remove['@resolution'];
...
add = function (decl, prefix) { var value; decl._autoprefixerValues || (decl._autoprefixerValues = {}); value = decl._autoprefixerValues[prefix] || this.value(decl); value = this.replace(value, prefix); if (value) { return decl._autoprefixerValues[prefix] = value; } }
...
ref = this.prefixes;
results = [];
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
if (parent && parent !== prefix) {
continue;
}
results.push(this.add(node, prefix));
}
return results;
};
return AtRule;
})(Prefixer);
...
check = function (decl) { var value; value = decl.value; if (value.indexOf(this.name) !== -1) { return !!value.match(this.regexp()); } else { return false; } }
...
prefix = false;
}
return node._autoprefixerPrefix = prefix;
};
Prefixer.prototype.process = function(node) {
var added, j, k, len, len1, parent, prefix, prefixes, ref;
if (!this.check(node)) {
return;
}
parent = this.parentPrefix(node);
prefixes = [];
ref = this.prefixes;
for (j = 0, len = ref.length; j < len; j++) {
prefix = ref[j];
...
function Value() { return Value.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
old = function (prefix) { return new OldValue(this.name, prefix + this.name); }
...
ref2 = selected.remove;
for (name in ref2) {
prefixes = ref2[name];
if (this.data[name].selector) {
selector = Selector.load(name, prefixes);
for (k = 0, len1 = prefixes.length; k < len1; k++) {
prefix = prefixes[k];
remove.selectors.push(selector.old(prefix));
}
} else if (name === '@keyframes' || name === '@viewport') {
for (l = 0, len2 = prefixes.length; l < len2; l++) {
prefix = prefixes[l];
prefixed = '@' + prefix + name.slice(1);
remove[prefixed] = {
remove: true
...
regexp = function () { return this.regexpCache || (this.regexpCache = utils.regexp(this.name)); }
...
var OldSelector;
OldSelector = (function() {
function OldSelector(selector, prefix1) {
var i, len, prefix, ref;
this.prefix = prefix1;
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;
...
replace = function (string, prefix) { return string.replace(this.regexp(), '$1' + prefix + '$2'); }
...
and_uc: 'UC for Android'
};
prefix = function(name, prefixes) {
var out;
out = ' ' + name + ': ';
out += prefixes.map(function(i) {
return i.replace(/^-(.*)-$/g, '$1');
}).join(', ');
out += "\n";
return out;
};
module.exports = function(prefixes) {
var atrules, browser, coverage, data, j, k, l, len, len1, len2, list, name, out, props, ref, ref1, ref2, ref3, ref4, ref5, round
, selector, selectors, string, value, values, version, versions;
...
value = function (decl) { if (decl.raws.value && decl.raws.value.value === decl.value) { return decl.raws.value.raw; } else { return decl.value; } }
...
return decl.value;
}
};
Value.prototype.add = function(decl, prefix) {
var value;
decl._autoprefixerValues || (decl._autoprefixerValues = {});
value = decl._autoprefixerValues[prefix] || this.value(decl);
value = this.replace(value, prefix);
if (value) {
return decl._autoprefixerValues[prefix] = value;
}
};
Value.prototype.old = function(prefix) {
...
function WritingMode() { return WritingMode.__super__.constructor.apply(this, arguments); }
n/a
clone = function (node, overrides) { var cloned, name; cloned = clone(node); for (name in overrides) { cloned[name] = overrides[name]; } return cloned; }
...
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 j, len, parent, prefix, ref, results;
...
hack = function (klass) { var j, len, name, ref, results; this.hacks || (this.hacks = {}); ref = klass.names; results = []; for (j = 0, len = ref.length; j < len; j++) { name = ref[j]; results.push(this.hacks[name] = klass); } return results; }
...
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'));
...
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); } }
...
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].props;
if (props) {
value = Value.load(name, prefixes, this);
for (j = 0, len = props.length; j < len; j++) {
prop = props[j];
if (!add[prop]) {
...
function WritingMode() { return WritingMode.__super__.constructor.apply(this, arguments); }
...
utils = require('./utils');
vendor = require('postcss/lib/vendor');
clone = function(obj, parent) {
var cloned, i, value;
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;
}
...
set = function (decl, prefix) { if (prefix === '-ms-') { decl.value = WritingMode.msValues[decl.value] || decl.value; return WritingMode.__super__.set.call(this, decl, prefix); } else { return WritingMode.__super__.set.apply(this, arguments); } }
...
});
lines[lines.length - 1] = min;
return decl.raws.before = lines.join("\n");
};
Declaration.prototype.insert = function(decl, prefix, prefixes) {
var already, cloned;
cloned = this.set(this.clone(decl), prefix);
if (!cloned) {
return;
}
already = decl.parent.some(function(i) {
return i.prop === cloned.prop && i.value === cloned.value;
});
if (already) {
...