autoprefixer-rails 1.0.20140213 → 1.1.20140218

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f3423cd0d1b987af2f1521ccf7382b15ada8e9c8
4
- data.tar.gz: dd1de59a870d7111bfacb0a06fe1d9b8123d0332
3
+ metadata.gz: d6b8c2d1c98f08ffae83aa569ad72e413c35990a
4
+ data.tar.gz: 79ff2b2e77318a3f532e34e3591ad815f76ae255
5
5
  SHA512:
6
- metadata.gz: f9e8d63c5fc1f6fd39ed5f9f8fe1aa8fb5c20ac64ffd603e9ca5b90c6f91738001ca76c49c63951aeb87218feec1c7d9865716383e8ec15d35441164cb0ec355
7
- data.tar.gz: 0bc91e17033216f54fc3f092fbea1d6dc34180262134cb529a81ffd801f599dea2fd4bb8c72990883349d0571b50b4883f291935cf39a6172d7c7201995915a9
6
+ metadata.gz: c4b3a7c25c389cea4d91bdfb05eed960d67287b6db476c983b7ac55b3a490b3446b00c7bb431b6e530ed78ec964e51c2cc1f4dfedfb919773593963dc59a2204
7
+ data.tar.gz: 6f0ff25e0c1a30bb0ec72ad6198fc765fc020b8d5bce954bf9d7a53e7b9d6d382849066c4c6ee13a10b4a62621bea14caca178012a748d340023a23de0838e4f
@@ -1,3 +1,14 @@
1
+ ## 1.1 “Nutrisco et extingo”
2
+ * Add source map annotation comment support.
3
+ * Add inline source map support.
4
+ * Autodetect previous inline source map.
5
+ * Fix source maps support on Windows.
6
+ * Fix source maps support in subdirectory.
7
+ * Change CSS indentation to create nice visual cascade of prefixes.
8
+ * Fix flexbox support for IE 10 (by Roland Warmerdam).
9
+ * Better `break-inside` support.
10
+ * Fix prefixing, when two same properties are near.
11
+
1
12
  ## 1.0 “Plus ultra”
2
13
  * Source map support.
3
14
  * Save origin indents and code formatting.
data/README.md CHANGED
@@ -32,7 +32,7 @@ support to add vendor prefixes automatically using the Asset Pipeline:
32
32
  ```css
33
33
  :-webkit-full-screen a {
34
34
  -webkit-transition: -webkit-transform 1s;
35
- transition: transform 1s
35
+ transition: transform 1s
36
36
  }
37
37
  :-moz-full-screen a {
38
38
  transition: transform 1s
@@ -42,7 +42,7 @@ support to add vendor prefixes automatically using the Asset Pipeline:
42
42
  }
43
43
  :fullscreen a {
44
44
  -webkit-transition: -webkit-transform 1s;
45
- transition: transform 1s
45
+ transition: transform 1s
46
46
  }
47
47
  ```
48
48
 
@@ -99,7 +99,23 @@ You can specify browsers by `browsers` option:
99
99
  AutoprefixerRails.process(css, from: 'a.css', browsers: ['> 1%', 'ie 10']).css
100
100
  ```
101
101
 
102
- ### Source Map
102
+ ## Visual Cascade
103
+
104
+ By default, Autoprefixer will change CSS indentation to create nice visual
105
+ cascade of prefixes.
106
+
107
+ ```css
108
+ a {
109
+ -webkit-box-sizing: border-box;
110
+ -moz-box-sizing: border-box;
111
+ box-sizing: border-box
112
+ }
113
+ ```
114
+
115
+ You can disable it by `cascade: false` in `config/autoprefixer.yml`
116
+ or in `process()` options.
117
+
118
+ ## Source Map
103
119
 
104
120
  Autoprefixer will generate source map, if you set `map` option to `true` in
105
121
  `process` method.
@@ -4,26 +4,23 @@ module AutoprefixerRails
4
4
  autoload :Sprockets, 'autoprefixer-rails/sprockets'
5
5
 
6
6
  # Add prefixes to `css`. See `Processor#process` for options.
7
- def self.process(css, opts = { })
7
+ def self.process(css, opts = {})
8
8
  browsers = opts.delete(:browsers)
9
- processor(browsers).process(css, opts)
9
+ options = opts.has_key?(:cascade) ? { cascade: opts.delete(:cascade) } : {}
10
+ processor(browsers, options).process(css, opts)
10
11
  end
11
12
 
12
13
  # Add Autoprefixer for Sprockets environment in `assets`.
13
14
  # You can specify `browsers` actual in your project.
14
- def self.install(assets, browsers = nil)
15
- Sprockets.new( processor(browsers) ).install(assets)
15
+ def self.install(assets, browsers = nil, opts = {})
16
+ Sprockets.new( processor(browsers, opts) ).install(assets)
16
17
  end
17
18
 
18
19
  # Cache processor instances
19
- def self.processor(browsers=nil)
20
- @cache ||= { }
21
- @cache[browsers] ||= Processor.new(browsers)
22
- end
23
-
24
- # Deprecated method. Use `process` instead.
25
- def self.compile(css, browsers = nil)
26
- processor(browsers).compile(css)
20
+ def self.processor(browsers = nil, opts = {})
21
+ @cache ||= {}
22
+ cache_key = browsers.hash.to_s + opts.hash.to_s
23
+ @cache[cache_key] ||= Processor.new(browsers, opts)
27
24
  end
28
25
  end
29
26
 
@@ -4,8 +4,10 @@ require 'execjs'
4
4
  module AutoprefixerRails
5
5
  # Ruby to JS wrapper for Autoprefixer processor instance
6
6
  class Processor
7
- def initialize(browsers=nil)
7
+ def initialize(browsers = nil, opts = {})
8
8
  @browsers = browsers || []
9
+ @options = opts
10
+ @options[:cascade] = true unless @options.has_key? :cascade
9
11
  end
10
12
 
11
13
  # Process `css` and return result.
@@ -29,13 +31,6 @@ module AutoprefixerRails
29
31
  @processor ||= ExecJS.compile(build_js)
30
32
  end
31
33
 
32
- # Deprecated method. Use `process` instead.
33
- def compile(css)
34
- warn 'autoprefixer-rails: Replace compile() to process(). ' +
35
- 'Method compile() is deprecated and will be removed in 1.1.'
36
- processor.call('process', css)['css']
37
- end
38
-
39
34
  private
40
35
 
41
36
  # Cache autoprefixer.js content
@@ -60,7 +55,8 @@ module AutoprefixerRails
60
55
  "var processor = autoprefixer;"
61
56
  else
62
57
  browsers = @browsers.map(&:to_s).join("', '")
63
- "var processor = autoprefixer('#{browsers}');"
58
+ options = @options.map { |k, v| "#{k}: #{v.inspect}"}.join(',')
59
+ "var processor = autoprefixer('#{browsers}', { #{options} });"
64
60
  end
65
61
  end
66
62
 
@@ -5,18 +5,19 @@ begin
5
5
  class Railtie < ::Rails::Railtie
6
6
  rake_tasks do |app|
7
7
  require 'rake/autoprefixer_tasks'
8
- Rake::AutoprefixerTasks.new(browsers(app))
8
+ Rake::AutoprefixerTasks.new(*config(app))
9
9
  end
10
10
 
11
11
  initializer :setup_autoprefixer, group: :all do |app|
12
- AutoprefixerRails.install(app.assets, browsers(app))
12
+ AutoprefixerRails.install(app.assets, *config(app))
13
13
  end
14
14
 
15
15
  # Read browsers requirements from application config
16
- def browsers(app)
17
- file = app.root.join('config/autoprefixer.yml')
18
- config = file.exist? ? YAML.load_file(file) : { 'browsers' => nil }
19
- config['browsers']
16
+ def config(app)
17
+ file = app.root.join('config/autoprefixer.yml')
18
+ options = file.exist? ? YAML.load_file(file).symbolize_keys : { }
19
+ options = { browsers: nil }.merge(options)
20
+ [options.delete(:browsers), options]
20
21
  end
21
22
  end
22
23
  end
@@ -1,3 +1,3 @@
1
1
  module AutoprefixerRails
2
- VERSION = '1.0.20140213'.freeze unless defined? AutoprefixerRails::VERSION
2
+ VERSION = '1.1.20140218'.freeze unless defined? AutoprefixerRails::VERSION
3
3
  end
@@ -10,9 +10,10 @@ module Rake
10
10
  class AutoprefixerTasks < Rake::TaskLib
11
11
  attr_reader :browsers
12
12
 
13
- def initialize(browsers = [])
14
- @browsers = browsers
15
- @processor = AutoprefixerRails.processor(@browsers)
13
+ def initialize(browsers = [], options = {})
14
+ @browsers = browsers
15
+ @options = options
16
+ @processor = AutoprefixerRails.processor(@browsers, @options)
16
17
  define
17
18
  end
18
19
 
@@ -1 +1,3 @@
1
- a { transition: all 1s }
1
+ a {
2
+ transition: all 1s
3
+ }
@@ -1,2 +1,3 @@
1
+ cascade: false
1
2
  browsers:
2
3
  - chrome 25
@@ -0,0 +1 @@
1
+ Rails.application.config.assets.css_compressor = nil
@@ -12,7 +12,10 @@ describe AutoprefixerRails do
12
12
 
13
13
  it "process CSS for selected browsers" do
14
14
  result = AutoprefixerRails.process(@css, browsers: ['chrome 25'])
15
- result.css.should == PREFIXED
15
+ result.css.should == "a {\n" +
16
+ " -webkit-transition: all 1s;\n" +
17
+ " transition: all 1s\n" +
18
+ "}\n"
16
19
  end
17
20
 
18
21
  it "generates source map" do
@@ -20,6 +23,15 @@ describe AutoprefixerRails do
20
23
  result.map.should be_a(String)
21
24
  end
22
25
 
26
+ it "disable visual cascade on request" do
27
+ css = "a {\n transition: all 1s\n }"
28
+ result = AutoprefixerRails.process(@css, cascade: false)
29
+ result.css.should == "a {\n" +
30
+ " -webkit-transition: all 1s;\n" +
31
+ " transition: all 1s\n" +
32
+ "}\n"
33
+ end
34
+
23
35
  it "uses file name in syntax errors", not_jruby: true do
24
36
  lambda {
25
37
  AutoprefixerRails.process('a {', from: 'a.css')
@@ -40,7 +52,10 @@ describe AutoprefixerRails do
40
52
  end
41
53
 
42
54
  it "integrates with Sprockets" do
43
- @assets['test.css'].to_s.should == PREFIXED
55
+ @assets['test.css'].to_s.should == "a {\n" +
56
+ " -webkit-transition: all 1s;\n" +
57
+ " transition: all 1s\n" +
58
+ "}\n"
44
59
  end
45
60
 
46
61
  it "shows file name from Sprockets", not_jruby: true do
@@ -9,7 +9,9 @@ describe CssController, type: :controller do
9
9
  it "integrates with Rails and Sass" do
10
10
  get :test, file: 'sass'
11
11
  response.should be_success
12
- response.body.should == "a{-webkit-transition:all 1s;transition:all 1s}\n"
12
+ response.body.should == "a {\n" +
13
+ " -webkit-transition: all 1s;\n" +
14
+ " transition: all 1s; }\n"
13
15
  end
14
16
  end
15
17
 
@@ -5,8 +5,6 @@ require_relative '../lib/autoprefixer-rails'
5
5
 
6
6
  require 'rspec/rails'
7
7
 
8
- PREFIXED = "a { -webkit-transition: all 1s; transition: all 1s }\n"
9
-
10
8
  RSpec.configure do |c|
11
9
  c.filter_run_excluding not_jruby: RUBY_PLATFORM == 'java'
12
10
  end
@@ -365,7 +365,7 @@
365
365
 
366
366
  },{}],3:[function(_dereq_,module,exports){
367
367
  (function() {
368
- var Autoprefixer, Browsers, Prefixes, autoprefixer, infoCache, postcss,
368
+ var Autoprefixer, Browsers, Prefixes, autoprefixer, infoCache, isPlainObject, postcss,
369
369
  __slice = [].slice,
370
370
  __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; };
371
371
 
@@ -377,19 +377,29 @@
377
377
 
378
378
  infoCache = null;
379
379
 
380
+ isPlainObject = function(obj) {
381
+ return Object.prototype.toString.apply(obj) === '[object Object]';
382
+ };
383
+
380
384
  autoprefixer = function() {
381
- var browsers, prefixes, reqs;
385
+ var browsers, options, prefixes, reqs;
382
386
  reqs = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
383
- if (reqs.length === 1 && reqs[0] instanceof Array) {
384
- reqs = reqs[0];
387
+ if (reqs.length === 1 && isPlainObject(reqs[0])) {
388
+ options = reqs[0];
389
+ reqs = void 0;
385
390
  } else if (reqs.length === 0 || (reqs.length === 1 && (reqs[0] == null))) {
386
391
  reqs = void 0;
392
+ } else if (reqs.length <= 2 && (reqs[0] instanceof Array || (reqs[0] == null))) {
393
+ options = reqs[1];
394
+ reqs = reqs[0];
395
+ } else if (typeof reqs[reqs.length - 1] === 'object') {
396
+ options = reqs.pop();
387
397
  }
388
398
  if (reqs == null) {
389
399
  reqs = autoprefixer["default"];
390
400
  }
391
401
  browsers = new Browsers(autoprefixer.data.browsers, reqs);
392
- prefixes = new Prefixes(autoprefixer.data.prefixes, browsers);
402
+ prefixes = new Prefixes(autoprefixer.data.prefixes, browsers, options);
393
403
  return new Autoprefixer(prefixes, autoprefixer.data);
394
404
  };
395
405
 
@@ -399,9 +409,10 @@
399
409
  };
400
410
 
401
411
  Autoprefixer = (function() {
402
- function Autoprefixer(prefixes, data) {
412
+ function Autoprefixer(prefixes, data, options) {
403
413
  this.prefixes = prefixes;
404
414
  this.data = data;
415
+ this.options = options != null ? options : {};
405
416
  this.postcss = __bind(this.postcss, this);
406
417
  this.browsers = this.prefixes.browsers.selected;
407
418
  }
@@ -413,25 +424,6 @@
413
424
  return this.processor().process(str, options);
414
425
  };
415
426
 
416
- Autoprefixer.prototype.compile = function(str, options) {
417
- var fixed, name, value;
418
- if (options == null) {
419
- options = {};
420
- }
421
- fixed = {};
422
- for (name in options) {
423
- value = options[name];
424
- if (name === 'file') {
425
- name = 'from';
426
- }
427
- fixed[name] = value;
428
- }
429
- if (typeof console !== "undefined" && console !== null) {
430
- console.warn('autoprefixer: replace compile() to process(). ' + 'Method compile() is deprecated and will be removed in 1.1.');
431
- }
432
- return this.process(str, fixed).css;
433
- };
434
-
435
427
  Autoprefixer.prototype.postcss = function(css) {
436
428
  this.prefixes.processor.remove(css);
437
429
  return this.prefixes.processor.add(css);
@@ -482,7 +474,7 @@
482
474
 
483
475
  }).call(this);
484
476
 
485
- },{"../data/browsers":1,"../data/prefixes":2,"./browsers":4,"./info":29,"./prefixes":33,"postcss":47}],4:[function(_dereq_,module,exports){
477
+ },{"../data/browsers":1,"../data/prefixes":2,"./browsers":4,"./info":30,"./prefixes":35,"postcss":52}],4:[function(_dereq_,module,exports){
486
478
  (function() {
487
479
  var Browsers, utils;
488
480
 
@@ -508,6 +500,13 @@
508
500
  });
509
501
  };
510
502
 
503
+ Browsers.withPrefix = function(value) {
504
+ if (!this.prefixesRegexp) {
505
+ this.prefixesRegexp = RegExp("" + (this.prefixes().join('|')));
506
+ }
507
+ return this.prefixesRegexp.test(value);
508
+ };
509
+
511
510
  function Browsers(data, requirements) {
512
511
  this.data = data;
513
512
  this.selected = this.parse(requirements);
@@ -674,9 +673,9 @@
674
673
 
675
674
  }).call(this);
676
675
 
677
- },{"../data/browsers":1,"./utils":36}],5:[function(_dereq_,module,exports){
676
+ },{"../data/browsers":1,"./utils":38}],5:[function(_dereq_,module,exports){
678
677
  (function() {
679
- var Browsers, Declaration, Prefixer, vendor,
678
+ var Browsers, Declaration, Prefixer, utils, vendor,
680
679
  __hasProp = {}.hasOwnProperty,
681
680
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
682
681
 
@@ -686,6 +685,8 @@
686
685
 
687
686
  vendor = _dereq_('postcss/lib/vendor');
688
687
 
688
+ utils = _dereq_('./utils');
689
+
689
690
  Declaration = (function(_super) {
690
691
  __extends(Declaration, _super);
691
692
 
@@ -725,15 +726,69 @@
725
726
  return decl;
726
727
  };
727
728
 
728
- Declaration.prototype.insert = function(decl, prefix) {
729
+ Declaration.prototype.needCascade = function(decl) {
730
+ return decl._autoprefixerCascade || (decl._autoprefixerCascade = !!this.all.options.cascade && decl.before.indexOf("\n") !== -1);
731
+ };
732
+
733
+ Declaration.prototype.maxPrefixed = function(prefixes, decl) {
734
+ var max, prefix, _i, _len;
735
+ if (decl._autoprefixerMax) {
736
+ return decl._autoprefixerMax;
737
+ }
738
+ max = 0;
739
+ for (_i = 0, _len = prefixes.length; _i < _len; _i++) {
740
+ prefix = prefixes[_i];
741
+ prefix = utils.removeNote(prefix);
742
+ if (prefix.length > max) {
743
+ max = prefix.length;
744
+ }
745
+ }
746
+ return decl._autoprefixerMax = max;
747
+ };
748
+
749
+ Declaration.prototype.calcBefore = function(prefixes, decl, prefix) {
750
+ var before, diff, i, max, _i;
751
+ if (prefix == null) {
752
+ prefix = '';
753
+ }
754
+ before = decl.before;
755
+ max = this.maxPrefixed(prefixes, decl);
756
+ diff = max - utils.removeNote(prefix).length;
757
+ for (i = _i = 0; 0 <= diff ? _i < diff : _i > diff; i = 0 <= diff ? ++_i : --_i) {
758
+ before += ' ';
759
+ }
760
+ return before;
761
+ };
762
+
763
+ Declaration.prototype.restoreBefore = function(decl) {
764
+ var lines, min;
765
+ lines = decl.before.split("\n");
766
+ min = lines[lines.length - 1];
767
+ this.all.group(decl).up(function(prefixed) {
768
+ var array, last;
769
+ array = prefixed.before.split("\n");
770
+ last = array[array.length - 1];
771
+ if (last.length < min.length) {
772
+ return min = last;
773
+ }
774
+ });
775
+ lines[lines.length - 1] = min;
776
+ return decl.before = lines.join("\n");
777
+ };
778
+
779
+ Declaration.prototype.insert = function(decl, prefix, prefixes) {
729
780
  var cloned;
730
781
  cloned = this.set(this.clone(decl), prefix);
731
- if (cloned) {
732
- return decl.parent.insertBefore(decl, cloned);
782
+ if (!cloned) {
783
+ return;
784
+ }
785
+ if (this.needCascade(decl)) {
786
+ cloned.before = this.calcBefore(prefixes, decl, prefix);
733
787
  }
788
+ return decl.parent.insertBefore(decl, cloned);
734
789
  };
735
790
 
736
- Declaration.prototype.add = function(decl, prefix) {
791
+ Declaration.prototype.add = function(decl, prefix, prefixes) {
737
792
  var already, prefixed;
738
793
  prefixed = this.prefixed(decl.prop, prefix);
739
794
  already = this.all.group(decl).up(function(i) {
@@ -742,7 +797,19 @@
742
797
  if (already || this.otherPrefixes(decl.value, prefix)) {
743
798
  return;
744
799
  }
745
- return this.insert(decl, prefix);
800
+ return this.insert(decl, prefix, prefixes);
801
+ };
802
+
803
+ Declaration.prototype.process = function(decl) {
804
+ var prefixes;
805
+ if (this.needCascade(decl)) {
806
+ this.restoreBefore(decl);
807
+ if (prefixes = Declaration.__super__.process.apply(this, arguments)) {
808
+ return decl.before = this.calcBefore(prefixes, decl);
809
+ }
810
+ } else {
811
+ return Declaration.__super__.process.apply(this, arguments);
812
+ }
746
813
  };
747
814
 
748
815
  Declaration.prototype.old = function(prop, prefix) {
@@ -757,7 +824,7 @@
757
824
 
758
825
  }).call(this);
759
826
 
760
- },{"./browsers":4,"./prefixer":32,"postcss/lib/vendor":53}],6:[function(_dereq_,module,exports){
827
+ },{"./browsers":4,"./prefixer":34,"./utils":38,"postcss/lib/vendor":58}],6:[function(_dereq_,module,exports){
761
828
  (function() {
762
829
  var AlignContent, Declaration, flexSpec,
763
830
  __hasProp = {}.hasOwnProperty,
@@ -816,7 +883,7 @@
816
883
 
817
884
  }).call(this);
818
885
 
819
- },{"../declaration":5,"./flex-spec":19}],7:[function(_dereq_,module,exports){
886
+ },{"../declaration":5,"./flex-spec":20}],7:[function(_dereq_,module,exports){
820
887
  (function() {
821
888
  var AlignItems, Declaration, flexSpec,
822
889
  __hasProp = {}.hasOwnProperty,
@@ -875,7 +942,7 @@
875
942
 
876
943
  }).call(this);
877
944
 
878
- },{"../declaration":5,"./flex-spec":19}],8:[function(_dereq_,module,exports){
945
+ },{"../declaration":5,"./flex-spec":20}],8:[function(_dereq_,module,exports){
879
946
  (function() {
880
947
  var AlignSelf, Declaration, flexSpec,
881
948
  __hasProp = {}.hasOwnProperty,
@@ -932,7 +999,7 @@
932
999
 
933
1000
  }).call(this);
934
1001
 
935
- },{"../declaration":5,"./flex-spec":19}],9:[function(_dereq_,module,exports){
1002
+ },{"../declaration":5,"./flex-spec":20}],9:[function(_dereq_,module,exports){
936
1003
  (function() {
937
1004
  var BorderImage, Declaration,
938
1005
  __hasProp = {}.hasOwnProperty,
@@ -1021,6 +1088,62 @@
1021
1088
  }).call(this);
1022
1089
 
1023
1090
  },{"../declaration":5}],11:[function(_dereq_,module,exports){
1091
+ (function() {
1092
+ var BreakInside, Declaration,
1093
+ __hasProp = {}.hasOwnProperty,
1094
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
1095
+
1096
+ Declaration = _dereq_('../declaration');
1097
+
1098
+ BreakInside = (function(_super) {
1099
+ __extends(BreakInside, _super);
1100
+
1101
+ function BreakInside() {
1102
+ return BreakInside.__super__.constructor.apply(this, arguments);
1103
+ }
1104
+
1105
+ BreakInside.names = ['break-inside', 'page-break-inside', 'column-break-inside'];
1106
+
1107
+ BreakInside.prototype.prefixed = function(prop, prefix) {
1108
+ if (prefix === '-webkit-') {
1109
+ return prefix + 'column-break-inside';
1110
+ } else if (prefix === '-moz-') {
1111
+ return 'page-break-inside';
1112
+ } else {
1113
+ return BreakInside.__super__.prefixed.apply(this, arguments);
1114
+ }
1115
+ };
1116
+
1117
+ BreakInside.prototype.normalize = function() {
1118
+ return 'break-inside';
1119
+ };
1120
+
1121
+ BreakInside.prototype.set = function(decl, prefix) {
1122
+ if (decl.value === 'avoid-column' || decl.value === 'avoid-page') {
1123
+ decl.value = 'avoid';
1124
+ }
1125
+ return BreakInside.__super__.set.apply(this, arguments);
1126
+ };
1127
+
1128
+ BreakInside.prototype.insert = function(decl, prefix, prefixes) {
1129
+ if (decl.value === 'avoid-region') {
1130
+
1131
+ } else if (decl.value === 'avoid-page' && prefix === '-webkit-') {
1132
+
1133
+ } else {
1134
+ return BreakInside.__super__.insert.apply(this, arguments);
1135
+ }
1136
+ };
1137
+
1138
+ return BreakInside;
1139
+
1140
+ })(Declaration);
1141
+
1142
+ module.exports = BreakInside;
1143
+
1144
+ }).call(this);
1145
+
1146
+ },{"../declaration":5}],12:[function(_dereq_,module,exports){
1024
1147
  (function() {
1025
1148
  var DisplayFlex, OldDisplayFlex, OldValue, Value, flexSpec,
1026
1149
  __hasProp = {}.hasOwnProperty,
@@ -1092,7 +1215,7 @@
1092
1215
 
1093
1216
  }).call(this);
1094
1217
 
1095
- },{"../old-value":31,"../value":37,"./flex-spec":19}],12:[function(_dereq_,module,exports){
1218
+ },{"../old-value":33,"../value":39,"./flex-spec":20}],13:[function(_dereq_,module,exports){
1096
1219
  (function() {
1097
1220
  var FillAvailable, OldValue, Value,
1098
1221
  __hasProp = {}.hasOwnProperty,
@@ -1135,7 +1258,7 @@
1135
1258
 
1136
1259
  }).call(this);
1137
1260
 
1138
- },{"../old-value":31,"../value":37}],13:[function(_dereq_,module,exports){
1261
+ },{"../old-value":33,"../value":39}],14:[function(_dereq_,module,exports){
1139
1262
  (function() {
1140
1263
  var Declaration, Filter,
1141
1264
  __hasProp = {}.hasOwnProperty,
@@ -1166,7 +1289,7 @@
1166
1289
 
1167
1290
  }).call(this);
1168
1291
 
1169
- },{"../declaration":5}],14:[function(_dereq_,module,exports){
1292
+ },{"../declaration":5}],15:[function(_dereq_,module,exports){
1170
1293
  (function() {
1171
1294
  var Declaration, FlexBasis, flexSpec,
1172
1295
  __hasProp = {}.hasOwnProperty,
@@ -1183,17 +1306,17 @@
1183
1306
  return FlexBasis.__super__.constructor.apply(this, arguments);
1184
1307
  }
1185
1308
 
1186
- FlexBasis.names = ['flex-basis'];
1309
+ FlexBasis.names = ['flex-basis', 'flex-preferred-size'];
1187
1310
 
1188
1311
  FlexBasis.prototype.normalize = function() {
1189
- return 'flex';
1312
+ return 'flex-basis';
1190
1313
  };
1191
1314
 
1192
1315
  FlexBasis.prototype.prefixed = function(prop, prefix) {
1193
1316
  var spec, _ref;
1194
1317
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
1195
1318
  if (spec === 2012) {
1196
- return prefix + 'flex';
1319
+ return prefix + 'flex-preferred-size';
1197
1320
  } else {
1198
1321
  return FlexBasis.__super__.prefixed.apply(this, arguments);
1199
1322
  }
@@ -1202,11 +1325,7 @@
1202
1325
  FlexBasis.prototype.set = function(decl, prefix) {
1203
1326
  var spec, _ref;
1204
1327
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
1205
- if (spec === 2012) {
1206
- decl.prop = prefix + 'flex';
1207
- decl.value = '0 1 ' + decl.value;
1208
- return decl;
1209
- } else if (spec === 'final') {
1328
+ if (spec === 2012 || spec === 'final') {
1210
1329
  return FlexBasis.__super__.set.apply(this, arguments);
1211
1330
  }
1212
1331
  };
@@ -1219,7 +1338,7 @@
1219
1338
 
1220
1339
  }).call(this);
1221
1340
 
1222
- },{"../declaration":5,"./flex-spec":19}],15:[function(_dereq_,module,exports){
1341
+ },{"../declaration":5,"./flex-spec":20}],16:[function(_dereq_,module,exports){
1223
1342
  (function() {
1224
1343
  var Declaration, FlexDirection, flexSpec,
1225
1344
  __hasProp = {}.hasOwnProperty,
@@ -1242,7 +1361,7 @@
1242
1361
  return 'flex-direction';
1243
1362
  };
1244
1363
 
1245
- FlexDirection.prototype.insert = function(decl, prefix) {
1364
+ FlexDirection.prototype.insert = function(decl, prefix, prefixes) {
1246
1365
  var already, cloned, dir, orient, spec, value, _ref;
1247
1366
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
1248
1367
  if (spec === 2009) {
@@ -1258,10 +1377,16 @@
1258
1377
  cloned = this.clone(decl);
1259
1378
  cloned.prop = prefix + 'box-orient';
1260
1379
  cloned.value = orient;
1380
+ if (this.needCascade(decl)) {
1381
+ cloned.before = this.calcBefore(prefixes, decl, prefix);
1382
+ }
1261
1383
  decl.parent.insertBefore(decl, cloned);
1262
1384
  cloned = this.clone(decl);
1263
1385
  cloned.prop = prefix + 'box-direction';
1264
1386
  cloned.value = dir;
1387
+ if (this.needCascade(decl)) {
1388
+ cloned.before = this.calcBefore(prefixes, decl, prefix);
1389
+ }
1265
1390
  return decl.parent.insertBefore(decl, cloned);
1266
1391
  } else {
1267
1392
  return FlexDirection.__super__.insert.apply(this, arguments);
@@ -1286,7 +1411,7 @@
1286
1411
 
1287
1412
  }).call(this);
1288
1413
 
1289
- },{"../declaration":5,"./flex-spec":19}],16:[function(_dereq_,module,exports){
1414
+ },{"../declaration":5,"./flex-spec":20}],17:[function(_dereq_,module,exports){
1290
1415
  (function() {
1291
1416
  var Declaration, FlexFlow, flexSpec,
1292
1417
  __hasProp = {}.hasOwnProperty,
@@ -1323,7 +1448,7 @@
1323
1448
 
1324
1449
  }).call(this);
1325
1450
 
1326
- },{"../declaration":5,"./flex-spec":19}],17:[function(_dereq_,module,exports){
1451
+ },{"../declaration":5,"./flex-spec":20}],18:[function(_dereq_,module,exports){
1327
1452
  (function() {
1328
1453
  var Declaration, Flex, flexSpec,
1329
1454
  __hasProp = {}.hasOwnProperty,
@@ -1340,7 +1465,7 @@
1340
1465
  return Flex.__super__.constructor.apply(this, arguments);
1341
1466
  }
1342
1467
 
1343
- Flex.names = ['flex-grow'];
1468
+ Flex.names = ['flex-grow', 'flex-positive'];
1344
1469
 
1345
1470
  Flex.prototype.normalize = function() {
1346
1471
  return 'flex';
@@ -1352,7 +1477,7 @@
1352
1477
  if (spec === 2009) {
1353
1478
  return prefix + 'box-flex';
1354
1479
  } else if (spec === 2012) {
1355
- return prefix + 'flex';
1480
+ return prefix + 'flex-positive';
1356
1481
  } else {
1357
1482
  return Flex.__super__.prefixed.apply(this, arguments);
1358
1483
  }
@@ -1366,7 +1491,7 @@
1366
1491
 
1367
1492
  }).call(this);
1368
1493
 
1369
- },{"../declaration":5,"./flex-spec":19}],18:[function(_dereq_,module,exports){
1494
+ },{"../declaration":5,"./flex-spec":20}],19:[function(_dereq_,module,exports){
1370
1495
  (function() {
1371
1496
  var Declaration, FlexShrink, flexSpec,
1372
1497
  __hasProp = {}.hasOwnProperty,
@@ -1383,17 +1508,17 @@
1383
1508
  return FlexShrink.__super__.constructor.apply(this, arguments);
1384
1509
  }
1385
1510
 
1386
- FlexShrink.names = ['flex-shrink'];
1511
+ FlexShrink.names = ['flex-shrink', 'flex-negative'];
1387
1512
 
1388
1513
  FlexShrink.prototype.normalize = function() {
1389
- return 'flex';
1514
+ return 'flex-shrink';
1390
1515
  };
1391
1516
 
1392
1517
  FlexShrink.prototype.prefixed = function(prop, prefix) {
1393
1518
  var spec, _ref;
1394
1519
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
1395
1520
  if (spec === 2012) {
1396
- return prefix + 'flex';
1521
+ return prefix + 'flex-negative';
1397
1522
  } else {
1398
1523
  return FlexShrink.__super__.prefixed.apply(this, arguments);
1399
1524
  }
@@ -1402,11 +1527,7 @@
1402
1527
  FlexShrink.prototype.set = function(decl, prefix) {
1403
1528
  var spec, _ref;
1404
1529
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
1405
- if (spec === 2012) {
1406
- decl.prop = prefix + 'flex';
1407
- decl.value = '0 ' + decl.value;
1408
- return decl;
1409
- } else if (spec === 'final') {
1530
+ if (spec === 2012 || spec === 'final') {
1410
1531
  return FlexShrink.__super__.set.apply(this, arguments);
1411
1532
  }
1412
1533
  };
@@ -1419,7 +1540,7 @@
1419
1540
 
1420
1541
  }).call(this);
1421
1542
 
1422
- },{"../declaration":5,"./flex-spec":19}],19:[function(_dereq_,module,exports){
1543
+ },{"../declaration":5,"./flex-spec":20}],20:[function(_dereq_,module,exports){
1423
1544
  (function() {
1424
1545
  module.exports = function(prefix) {
1425
1546
  var spec;
@@ -1432,7 +1553,7 @@
1432
1553
 
1433
1554
  }).call(this);
1434
1555
 
1435
- },{}],20:[function(_dereq_,module,exports){
1556
+ },{}],21:[function(_dereq_,module,exports){
1436
1557
  (function() {
1437
1558
  var Declaration, FlexWrap, flexSpec,
1438
1559
  __hasProp = {}.hasOwnProperty,
@@ -1467,7 +1588,7 @@
1467
1588
 
1468
1589
  }).call(this);
1469
1590
 
1470
- },{"../declaration":5,"./flex-spec":19}],21:[function(_dereq_,module,exports){
1591
+ },{"../declaration":5,"./flex-spec":20}],22:[function(_dereq_,module,exports){
1471
1592
  (function() {
1472
1593
  var Declaration, Flex, flexSpec,
1473
1594
  __hasProp = {}.hasOwnProperty,
@@ -1486,6 +1607,11 @@
1486
1607
 
1487
1608
  Flex.names = ['flex', 'box-flex'];
1488
1609
 
1610
+ Flex.oldValues = {
1611
+ 'auto': '1',
1612
+ 'none': '0'
1613
+ };
1614
+
1489
1615
  Flex.prototype.prefixed = function(prop, prefix) {
1490
1616
  var spec, _ref;
1491
1617
  _ref = flexSpec(prefix), spec = _ref[0], prefix = _ref[1];
@@ -1496,7 +1622,7 @@
1496
1622
  }
1497
1623
  };
1498
1624
 
1499
- Flex.prototype.normalize = function(prop) {
1625
+ Flex.prototype.normalize = function() {
1500
1626
  return 'flex';
1501
1627
  };
1502
1628
 
@@ -1505,6 +1631,7 @@
1505
1631
  spec = flexSpec(prefix)[0];
1506
1632
  if (spec === 2009) {
1507
1633
  decl.value = decl.value.split(' ')[0];
1634
+ decl.value = Flex.oldValues[decl.value] || decl.value;
1508
1635
  return Flex.__super__.set.call(this, decl, prefix);
1509
1636
  } else {
1510
1637
  return Flex.__super__.set.apply(this, arguments);
@@ -1519,7 +1646,7 @@
1519
1646
 
1520
1647
  }).call(this);
1521
1648
 
1522
- },{"../declaration":5,"./flex-spec":19}],22:[function(_dereq_,module,exports){
1649
+ },{"../declaration":5,"./flex-spec":20}],23:[function(_dereq_,module,exports){
1523
1650
  (function() {
1524
1651
  var Fullscreen, Selector,
1525
1652
  __hasProp = {}.hasOwnProperty,
@@ -1554,7 +1681,7 @@
1554
1681
 
1555
1682
  }).call(this);
1556
1683
 
1557
- },{"../selector":35}],23:[function(_dereq_,module,exports){
1684
+ },{"../selector":37}],24:[function(_dereq_,module,exports){
1558
1685
  (function() {
1559
1686
  var Gradient, OldValue, Value, isDirection, list, utils,
1560
1687
  __hasProp = {}.hasOwnProperty,
@@ -1769,7 +1896,7 @@
1769
1896
 
1770
1897
  }).call(this);
1771
1898
 
1772
- },{"../old-value":31,"../utils":36,"../value":37,"postcss/lib/list":44}],24:[function(_dereq_,module,exports){
1899
+ },{"../old-value":33,"../utils":38,"../value":39,"postcss/lib/list":48}],25:[function(_dereq_,module,exports){
1773
1900
  (function() {
1774
1901
  var Declaration, JustifyContent, flexSpec,
1775
1902
  __hasProp = {}.hasOwnProperty,
@@ -1833,7 +1960,7 @@
1833
1960
 
1834
1961
  }).call(this);
1835
1962
 
1836
- },{"../declaration":5,"./flex-spec":19}],25:[function(_dereq_,module,exports){
1963
+ },{"../declaration":5,"./flex-spec":20}],26:[function(_dereq_,module,exports){
1837
1964
  (function() {
1838
1965
  var Declaration, Order, flexSpec,
1839
1966
  __hasProp = {}.hasOwnProperty,
@@ -1887,7 +2014,7 @@
1887
2014
 
1888
2015
  }).call(this);
1889
2016
 
1890
- },{"../declaration":5,"./flex-spec":19}],26:[function(_dereq_,module,exports){
2017
+ },{"../declaration":5,"./flex-spec":20}],27:[function(_dereq_,module,exports){
1891
2018
  (function() {
1892
2019
  var Placeholder, Selector,
1893
2020
  __hasProp = {}.hasOwnProperty,
@@ -1904,6 +2031,10 @@
1904
2031
 
1905
2032
  Placeholder.names = ['::placeholder'];
1906
2033
 
2034
+ Placeholder.prototype.possible = function() {
2035
+ return Placeholder.__super__.possible.apply(this, arguments).concat('-moz- old');
2036
+ };
2037
+
1907
2038
  Placeholder.prototype.prefixed = function(prefix) {
1908
2039
  if ('-webkit-' === prefix) {
1909
2040
  return '::-webkit-input-placeholder';
@@ -1924,7 +2055,7 @@
1924
2055
 
1925
2056
  }).call(this);
1926
2057
 
1927
- },{"../selector":35}],27:[function(_dereq_,module,exports){
2058
+ },{"../selector":37}],28:[function(_dereq_,module,exports){
1928
2059
  (function() {
1929
2060
  var Transform, Value,
1930
2061
  __hasProp = {}.hasOwnProperty,
@@ -1957,7 +2088,7 @@
1957
2088
 
1958
2089
  }).call(this);
1959
2090
 
1960
- },{"../value":37}],28:[function(_dereq_,module,exports){
2091
+ },{"../value":39}],29:[function(_dereq_,module,exports){
1961
2092
  (function() {
1962
2093
  var OldValue, Transition, Value,
1963
2094
  __hasProp = {}.hasOwnProperty,
@@ -1996,7 +2127,7 @@
1996
2127
 
1997
2128
  }).call(this);
1998
2129
 
1999
- },{"../old-value":31,"../value":37}],29:[function(_dereq_,module,exports){
2130
+ },{"../old-value":33,"../value":39}],30:[function(_dereq_,module,exports){
2000
2131
  (function() {
2001
2132
  var capitalize, names, prefix;
2002
2133
 
@@ -2112,7 +2243,7 @@
2112
2243
 
2113
2244
  }).call(this);
2114
2245
 
2115
- },{}],30:[function(_dereq_,module,exports){
2246
+ },{}],31:[function(_dereq_,module,exports){
2116
2247
  (function() {
2117
2248
  var Keyframes, Prefixer,
2118
2249
  __hasProp = {}.hasOwnProperty,
@@ -2154,7 +2285,77 @@
2154
2285
 
2155
2286
  }).call(this);
2156
2287
 
2157
- },{"./prefixer":32}],31:[function(_dereq_,module,exports){
2288
+ },{"./prefixer":34}],32:[function(_dereq_,module,exports){
2289
+ (function() {
2290
+ var OldSelector;
2291
+
2292
+ OldSelector = (function() {
2293
+ function OldSelector(selector, prefix) {
2294
+ var _i, _len, _ref;
2295
+ this.prefix = prefix;
2296
+ this.prefixed = selector.prefixed(this.prefix);
2297
+ this.regexp = selector.regexp(this.prefix);
2298
+ this.prefixeds = [];
2299
+ _ref = selector.possible();
2300
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2301
+ prefix = _ref[_i];
2302
+ this.prefixeds.push([selector.prefixed(prefix), selector.regexp(prefix)]);
2303
+ }
2304
+ this.unprefixed = selector.name;
2305
+ this.nameRegexp = selector.regexp();
2306
+ }
2307
+
2308
+ OldSelector.prototype.isHack = function(rule) {
2309
+ var before, index, regexp, rules, some, string, _i, _len, _ref, _ref1;
2310
+ index = rule.parent.index(rule) + 1;
2311
+ rules = rule.parent.rules;
2312
+ while (index < rules.length) {
2313
+ before = rules[index].selector;
2314
+ if (!before) {
2315
+ return true;
2316
+ }
2317
+ if (before.indexOf(this.unprefixed) !== -1 && before.match(this.nameRegexp)) {
2318
+ return false;
2319
+ }
2320
+ some = false;
2321
+ _ref = this.prefixeds;
2322
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2323
+ _ref1 = _ref[_i], string = _ref1[0], regexp = _ref1[1];
2324
+ if (before.indexOf(string) !== -1 && before.match(regexp)) {
2325
+ some = true;
2326
+ break;
2327
+ }
2328
+ }
2329
+ if (!some) {
2330
+ return true;
2331
+ }
2332
+ index += 1;
2333
+ }
2334
+ return true;
2335
+ };
2336
+
2337
+ OldSelector.prototype.check = function(rule) {
2338
+ if (rule.selector.indexOf(this.prefixed) === -1) {
2339
+ return false;
2340
+ }
2341
+ if (!rule.selector.match(this.regexp)) {
2342
+ return false;
2343
+ }
2344
+ if (this.isHack(rule)) {
2345
+ return false;
2346
+ }
2347
+ return true;
2348
+ };
2349
+
2350
+ return OldSelector;
2351
+
2352
+ })();
2353
+
2354
+ module.exports = OldSelector;
2355
+
2356
+ }).call(this);
2357
+
2358
+ },{}],33:[function(_dereq_,module,exports){
2158
2359
  (function() {
2159
2360
  var OldValue, utils;
2160
2361
 
@@ -2185,7 +2386,7 @@
2185
2386
 
2186
2387
  }).call(this);
2187
2388
 
2188
- },{"./utils":36}],32:[function(_dereq_,module,exports){
2389
+ },{"./utils":38}],34:[function(_dereq_,module,exports){
2189
2390
  (function() {
2190
2391
  var Browsers, Prefixer, utils, vendor;
2191
2392
 
@@ -2242,21 +2443,25 @@
2242
2443
  };
2243
2444
 
2244
2445
  Prefixer.prototype.process = function(node) {
2245
- var parent, prefix, _i, _len, _ref, _results;
2446
+ var parent, prefix, prefixes, _i, _j, _len, _len1, _ref;
2246
2447
  if (!this.check(node)) {
2247
2448
  return;
2248
2449
  }
2249
2450
  parent = this.parentPrefix(node);
2451
+ prefixes = [];
2250
2452
  _ref = this.prefixes;
2251
- _results = [];
2252
2453
  for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2253
2454
  prefix = _ref[_i];
2254
2455
  if (parent && parent !== utils.removeNote(prefix)) {
2255
2456
  continue;
2256
2457
  }
2257
- _results.push(this.add(node, prefix));
2458
+ prefixes.push(prefix);
2258
2459
  }
2259
- return _results;
2460
+ for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) {
2461
+ prefix = prefixes[_j];
2462
+ this.add(node, prefix, prefixes);
2463
+ }
2464
+ return prefixes;
2260
2465
  };
2261
2466
 
2262
2467
  Prefixer.prototype.clone = function(node, overrides) {
@@ -2271,20 +2476,22 @@
2271
2476
 
2272
2477
  }).call(this);
2273
2478
 
2274
- },{"./browsers":4,"./utils":36,"postcss/lib/vendor":53}],33:[function(_dereq_,module,exports){
2479
+ },{"./browsers":4,"./utils":38,"postcss/lib/vendor":58}],35:[function(_dereq_,module,exports){
2275
2480
  (function() {
2276
- var Declaration, Keyframes, Prefixes, Processor, Selector, Value, declsCache, utils, vendor;
2481
+ var Browsers, Declaration, Keyframes, Prefixes, Processor, Selector, Value, declsCache, utils, vendor;
2277
2482
 
2278
2483
  utils = _dereq_('./utils');
2279
2484
 
2280
2485
  vendor = _dereq_('postcss/lib/vendor');
2281
2486
 
2282
- Processor = _dereq_('./processor');
2283
-
2284
2487
  Declaration = _dereq_('./declaration');
2285
2488
 
2489
+ Processor = _dereq_('./processor');
2490
+
2286
2491
  Keyframes = _dereq_('./keyframes');
2287
2492
 
2493
+ Browsers = _dereq_('./browsers');
2494
+
2288
2495
  Selector = _dereq_('./selector');
2289
2496
 
2290
2497
  Value = _dereq_('./value');
@@ -2313,6 +2520,8 @@
2313
2520
 
2314
2521
  Declaration.hack(_dereq_('./hacks/flex-shrink'));
2315
2522
 
2523
+ Declaration.hack(_dereq_('./hacks/break-inside'));
2524
+
2316
2525
  Declaration.hack(_dereq_('./hacks/border-image'));
2317
2526
 
2318
2527
  Declaration.hack(_dereq_('./hacks/align-content'));
@@ -2336,10 +2545,11 @@
2336
2545
  declsCache = {};
2337
2546
 
2338
2547
  Prefixes = (function() {
2339
- function Prefixes(data, browsers) {
2548
+ function Prefixes(data, browsers, options) {
2340
2549
  var _ref;
2341
2550
  this.data = data;
2342
2551
  this.browsers = browsers;
2552
+ this.options = options != null ? options : {};
2343
2553
  _ref = this.preprocess(this.select(this.data)), this.add = _ref[0], this.remove = _ref[1];
2344
2554
  this.processor = new Processor(this);
2345
2555
  }
@@ -2466,7 +2676,7 @@
2466
2676
  selector = Selector.load(name, prefixes);
2467
2677
  for (_j = 0, _len1 = prefixes.length; _j < _len1; _j++) {
2468
2678
  prefix = prefixes[_j];
2469
- remove.selectors.push(selector.checker(prefix));
2679
+ remove.selectors.push(selector.old(prefix));
2470
2680
  }
2471
2681
  } else if (name[0] === '@') {
2472
2682
  for (_k = 0, _len2 = prefixes.length; _k < _len2; _k++) {
@@ -2560,10 +2770,22 @@
2560
2770
  index += step;
2561
2771
  while (index >= 0 && index < length) {
2562
2772
  other = rule.decls[index];
2563
- if (_this.unprefixed(other.prop) !== unprefixed) {
2564
- break;
2565
- } else if (callback(other) === true) {
2566
- return true;
2773
+ if (other.type === 'decl') {
2774
+ if (step === -1 && other.prop === unprefixed) {
2775
+ if (!Browsers.withPrefix(other.value)) {
2776
+ break;
2777
+ }
2778
+ }
2779
+ if (_this.unprefixed(other.prop) !== unprefixed) {
2780
+ break;
2781
+ } else if (callback(other) === true) {
2782
+ return true;
2783
+ }
2784
+ if (step === +1 && other.prop === unprefixed) {
2785
+ if (!Browsers.withPrefix(other.value)) {
2786
+ break;
2787
+ }
2788
+ }
2567
2789
  }
2568
2790
  index += step;
2569
2791
  }
@@ -2588,7 +2810,7 @@
2588
2810
 
2589
2811
  }).call(this);
2590
2812
 
2591
- },{"./declaration":5,"./hacks/align-content":6,"./hacks/align-items":7,"./hacks/align-self":8,"./hacks/border-image":9,"./hacks/border-radius":10,"./hacks/display-flex":11,"./hacks/fill-available":12,"./hacks/filter":13,"./hacks/flex":21,"./hacks/flex-basis":14,"./hacks/flex-direction":15,"./hacks/flex-flow":16,"./hacks/flex-grow":17,"./hacks/flex-shrink":18,"./hacks/flex-wrap":20,"./hacks/fullscreen":22,"./hacks/gradient":23,"./hacks/justify-content":24,"./hacks/order":25,"./hacks/placeholder":26,"./hacks/transform":27,"./hacks/transition":28,"./keyframes":30,"./processor":34,"./selector":35,"./utils":36,"./value":37,"postcss/lib/vendor":53}],34:[function(_dereq_,module,exports){
2813
+ },{"./browsers":4,"./declaration":5,"./hacks/align-content":6,"./hacks/align-items":7,"./hacks/align-self":8,"./hacks/border-image":9,"./hacks/border-radius":10,"./hacks/break-inside":11,"./hacks/display-flex":12,"./hacks/fill-available":13,"./hacks/filter":14,"./hacks/flex":22,"./hacks/flex-basis":15,"./hacks/flex-direction":16,"./hacks/flex-flow":17,"./hacks/flex-grow":18,"./hacks/flex-shrink":19,"./hacks/flex-wrap":21,"./hacks/fullscreen":23,"./hacks/gradient":24,"./hacks/justify-content":25,"./hacks/order":26,"./hacks/placeholder":27,"./hacks/transform":28,"./hacks/transition":29,"./keyframes":31,"./processor":36,"./selector":37,"./utils":38,"./value":39,"postcss/lib/vendor":58}],36:[function(_dereq_,module,exports){
2592
2814
  (function() {
2593
2815
  var Processor, Value, utils, vendor;
2594
2816
 
@@ -2655,7 +2877,7 @@
2655
2877
  checker = _ref[_i];
2656
2878
  css.eachRule((function(_this) {
2657
2879
  return function(rule, i) {
2658
- if (checker(rule)) {
2880
+ if (checker.check(rule)) {
2659
2881
  return rule.parent.remove(i);
2660
2882
  }
2661
2883
  };
@@ -2695,14 +2917,18 @@
2695
2917
 
2696
2918
  }).call(this);
2697
2919
 
2698
- },{"./utils":36,"./value":37,"postcss/lib/vendor":53}],35:[function(_dereq_,module,exports){
2920
+ },{"./utils":38,"./value":39,"postcss/lib/vendor":58}],37:[function(_dereq_,module,exports){
2699
2921
  (function() {
2700
- var Prefixer, Selector, utils,
2922
+ var Browsers, OldSelector, Prefixer, Selector, utils,
2701
2923
  __hasProp = {}.hasOwnProperty,
2702
2924
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
2703
2925
 
2926
+ OldSelector = _dereq_('./old-selector');
2927
+
2704
2928
  Prefixer = _dereq_('./prefixer');
2705
2929
 
2930
+ Browsers = _dereq_('./browsers');
2931
+
2706
2932
  utils = _dereq_('./utils');
2707
2933
 
2708
2934
  Selector = (function(_super) {
@@ -2715,24 +2941,14 @@
2715
2941
  this.regexpCache = {};
2716
2942
  }
2717
2943
 
2718
- Selector.prototype.check = function(rule, prefix) {
2719
- var name;
2720
- name = prefix ? this.prefixed(prefix) : this.name;
2721
- if (rule.selector.indexOf(name) !== -1) {
2722
- return !!rule.selector.match(this.regexp(prefix));
2944
+ Selector.prototype.check = function(rule) {
2945
+ if (rule.selector.indexOf(this.name) !== -1) {
2946
+ return !!rule.selector.match(this.regexp());
2723
2947
  } else {
2724
2948
  return false;
2725
2949
  }
2726
2950
  };
2727
2951
 
2728
- Selector.prototype.checker = function(prefix) {
2729
- return (function(_this) {
2730
- return function(rule) {
2731
- return _this.check(rule, prefix);
2732
- };
2733
- })(this);
2734
- };
2735
-
2736
2952
  Selector.prototype.prefixed = function(prefix) {
2737
2953
  return this.name.replace(/^([^\w]*)/, '$1' + prefix);
2738
2954
  };
@@ -2743,7 +2959,53 @@
2743
2959
  return this.regexpCache[prefix];
2744
2960
  }
2745
2961
  name = prefix ? this.prefixed(prefix) : this.name;
2746
- return this.regexpCache = RegExp("(^|[^:\"'=])" + (utils.escapeRegexp(name)), "gi");
2962
+ return this.regexpCache[prefix] = RegExp("(^|[^:\"'=])" + (utils.escapeRegexp(name)), "gi");
2963
+ };
2964
+
2965
+ Selector.prototype.possible = function() {
2966
+ return Browsers.prefixes();
2967
+ };
2968
+
2969
+ Selector.prototype.prefixeds = function(rule) {
2970
+ var prefix, prefixeds, _i, _len, _ref;
2971
+ if (rule._autoprefixerPrefixeds) {
2972
+ return rule._autoprefixerPrefixeds;
2973
+ }
2974
+ prefixeds = {};
2975
+ _ref = this.possible();
2976
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
2977
+ prefix = _ref[_i];
2978
+ prefixeds[prefix] = this.replace(rule.selector, prefix);
2979
+ }
2980
+ return rule._autoprefixerPrefixeds = prefixeds;
2981
+ };
2982
+
2983
+ Selector.prototype.already = function(rule, prefixeds, prefix) {
2984
+ var before, index, key, prefixed, some;
2985
+ index = rule.parent.index(rule) - 1;
2986
+ while (index >= 0) {
2987
+ before = rule.parent.rules[index];
2988
+ if (before.type !== 'rule') {
2989
+ return false;
2990
+ }
2991
+ some = false;
2992
+ for (key in prefixeds) {
2993
+ prefixed = prefixeds[key];
2994
+ if (before.selector === prefixed) {
2995
+ if (prefix === key) {
2996
+ return true;
2997
+ } else {
2998
+ some = true;
2999
+ break;
3000
+ }
3001
+ }
3002
+ }
3003
+ if (!some) {
3004
+ return false;
3005
+ }
3006
+ index -= 1;
3007
+ }
3008
+ return false;
2747
3009
  };
2748
3010
 
2749
3011
  Selector.prototype.replace = function(selector, prefix) {
@@ -2751,19 +3013,21 @@
2751
3013
  };
2752
3014
 
2753
3015
  Selector.prototype.add = function(rule, prefix) {
2754
- var cloned, prefixed;
2755
- prefixed = this.replace(rule.selector, prefix);
2756
- if (rule.parent.some(function(i) {
2757
- return i.selector === prefixed;
2758
- })) {
3016
+ var cloned, prefixeds;
3017
+ prefixeds = this.prefixeds(rule);
3018
+ if (this.already(rule, prefixeds, prefix)) {
2759
3019
  return;
2760
3020
  }
2761
3021
  cloned = this.clone(rule, {
2762
- selector: prefixed
3022
+ selector: prefixeds[prefix]
2763
3023
  });
2764
3024
  return rule.parent.insertBefore(rule, cloned);
2765
3025
  };
2766
3026
 
3027
+ Selector.prototype.old = function(prefix) {
3028
+ return new OldSelector(this, prefix);
3029
+ };
3030
+
2767
3031
  return Selector;
2768
3032
 
2769
3033
  })(Prefixer);
@@ -2772,7 +3036,7 @@
2772
3036
 
2773
3037
  }).call(this);
2774
3038
 
2775
- },{"./prefixer":32,"./utils":36}],36:[function(_dereq_,module,exports){
3039
+ },{"./browsers":4,"./old-selector":32,"./prefixer":34,"./utils":38}],38:[function(_dereq_,module,exports){
2776
3040
  (function() {
2777
3041
  module.exports = {
2778
3042
  error: function(text) {
@@ -2815,7 +3079,7 @@
2815
3079
 
2816
3080
  }).call(this);
2817
3081
 
2818
- },{}],37:[function(_dereq_,module,exports){
3082
+ },{}],39:[function(_dereq_,module,exports){
2819
3083
  (function() {
2820
3084
  var OldValue, Prefixer, Value, utils, vendor,
2821
3085
  __hasProp = {}.hasOwnProperty,
@@ -2914,7 +3178,9 @@
2914
3178
 
2915
3179
  }).call(this);
2916
3180
 
2917
- },{"./old-value":31,"./prefixer":32,"./utils":36,"postcss/lib/vendor":53}],38:[function(_dereq_,module,exports){
3181
+ },{"./old-value":33,"./prefixer":34,"./utils":38,"postcss/lib/vendor":58}],40:[function(_dereq_,module,exports){
3182
+
3183
+ },{}],41:[function(_dereq_,module,exports){
2918
3184
  // shim for using process in browser
2919
3185
 
2920
3186
  var process = module.exports = {};
@@ -2969,7 +3235,7 @@ process.chdir = function (dir) {
2969
3235
  throw new Error('process.chdir is not supported');
2970
3236
  };
2971
3237
 
2972
- },{}],39:[function(_dereq_,module,exports){
3238
+ },{}],42:[function(_dereq_,module,exports){
2973
3239
  (function (process){
2974
3240
  // Copyright Joyent, Inc. and other Node contributors.
2975
3241
  //
@@ -3197,7 +3463,7 @@ var substr = 'ab'.substr(-1) === 'b'
3197
3463
  ;
3198
3464
 
3199
3465
  }).call(this,_dereq_("/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"))
3200
- },{"/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":38}],40:[function(_dereq_,module,exports){
3466
+ },{"/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":41}],43:[function(_dereq_,module,exports){
3201
3467
  (function() {
3202
3468
  var AtRule, Container, name, _fn, _i, _len, _ref,
3203
3469
  __hasProp = {}.hasOwnProperty,
@@ -3213,8 +3479,25 @@ var substr = 'ab'.substr(-1) === 'b'
3213
3479
  AtRule.__super__.constructor.apply(this, arguments);
3214
3480
  }
3215
3481
 
3482
+ AtRule.prototype.styleType = function() {
3483
+ return this.type + ((this.rules != null) || (this.decls != null) ? '-body' : '-bodiless');
3484
+ };
3485
+
3486
+ AtRule.prototype.defaultStyle = function(type) {
3487
+ if (type === 'atrule-body') {
3488
+ return {
3489
+ between: ' ',
3490
+ after: this.defaultAfter()
3491
+ };
3492
+ } else {
3493
+ return {
3494
+ between: ''
3495
+ };
3496
+ }
3497
+ };
3498
+
3216
3499
  AtRule.prototype.addMixin = function(type) {
3217
- var mixin, name, value, _ref;
3500
+ var container, detector, mixin, name, value, _ref;
3218
3501
  mixin = type === 'rules' ? Container.WithRules : Container.WithDecls;
3219
3502
  if (!mixin) {
3220
3503
  return;
@@ -3225,6 +3508,11 @@ var substr = 'ab'.substr(-1) === 'b'
3225
3508
  if (name === 'constructor') {
3226
3509
  continue;
3227
3510
  }
3511
+ container = Container.prototype[name] === value;
3512
+ detector = name === 'append' || name === 'prepend';
3513
+ if (container && !detector) {
3514
+ continue;
3515
+ }
3228
3516
  this[name] = value;
3229
3517
  }
3230
3518
  return mixin.apply(this);
@@ -3233,21 +3521,19 @@ var substr = 'ab'.substr(-1) === 'b'
3233
3521
  AtRule.raw('params');
3234
3522
 
3235
3523
  AtRule.prototype.stringify = function(builder, last) {
3236
- var params, semicolon;
3237
- if (this.rules || this.decls) {
3238
- params = this._params.stringify({
3239
- before: ' ',
3240
- after: ' '
3241
- });
3242
- return this.stringifyBlock(builder, '@' + this.name + params + '{');
3524
+ var name, params, semicolon, style;
3525
+ style = this.style();
3526
+ name = '@' + this.name;
3527
+ params = this._params ? this._params.toString() : '';
3528
+ name += this.afterName != null ? this.afterName : params ? ' ' : '';
3529
+ if ((this.rules != null) || (this.decls != null)) {
3530
+ return this.stringifyBlock(builder, name + params + style.between + '{');
3243
3531
  } else {
3244
3532
  if (this.before) {
3245
3533
  builder(this.before);
3246
3534
  }
3247
3535
  semicolon = !last || this.semicolon ? ';' : '';
3248
- return builder('@' + this.name + this._params.stringify({
3249
- before: ' '
3250
- }) + semicolon, this);
3536
+ return builder(name + params + style.between + semicolon, this);
3251
3537
  }
3252
3538
  };
3253
3539
 
@@ -3258,7 +3544,9 @@ var substr = 'ab'.substr(-1) === 'b'
3258
3544
  _ref = ['append', 'prepend'];
3259
3545
  _fn = function(name) {
3260
3546
  return AtRule.prototype[name] = function(child) {
3261
- this.addMixin(child.type + 's');
3547
+ var mixin;
3548
+ mixin = child.type === 'decl' ? 'decls' : 'rules';
3549
+ this.addMixin(mixin);
3262
3550
  return this[name](child);
3263
3551
  };
3264
3552
  };
@@ -3271,9 +3559,49 @@ var substr = 'ab'.substr(-1) === 'b'
3271
3559
 
3272
3560
  }).call(this);
3273
3561
 
3274
- },{"./container":41}],41:[function(_dereq_,module,exports){
3562
+ },{"./container":45}],44:[function(_dereq_,module,exports){
3563
+ (function() {
3564
+ var Comment, Node,
3565
+ __hasProp = {}.hasOwnProperty,
3566
+ __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
3567
+
3568
+ Node = _dereq_('./node');
3569
+
3570
+ Comment = (function(_super) {
3571
+ __extends(Comment, _super);
3572
+
3573
+ function Comment() {
3574
+ this.type = 'comment';
3575
+ Comment.__super__.constructor.apply(this, arguments);
3576
+ }
3577
+
3578
+ Comment.prototype.defaultStyle = function() {
3579
+ return {
3580
+ left: ' ',
3581
+ right: ' '
3582
+ };
3583
+ };
3584
+
3585
+ Comment.prototype.stringify = function(builder) {
3586
+ var style;
3587
+ if (this.before) {
3588
+ builder(this.before);
3589
+ }
3590
+ style = this.style();
3591
+ return builder("/*" + (style.left + this.text + style.right) + "*/", this);
3592
+ };
3593
+
3594
+ return Comment;
3595
+
3596
+ })(Node);
3597
+
3598
+ module.exports = Comment;
3599
+
3600
+ }).call(this);
3601
+
3602
+ },{"./node":50}],45:[function(_dereq_,module,exports){
3275
3603
  (function() {
3276
- var Container, Declaration, Node, _ref,
3604
+ var Container, Declaration, Node,
3277
3605
  __hasProp = {}.hasOwnProperty,
3278
3606
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
3279
3607
 
@@ -3285,13 +3613,11 @@ var substr = 'ab'.substr(-1) === 'b'
3285
3613
  __extends(Container, _super);
3286
3614
 
3287
3615
  function Container() {
3288
- _ref = Container.__super__.constructor.apply(this, arguments);
3289
- return _ref;
3616
+ return Container.__super__.constructor.apply(this, arguments);
3290
3617
  }
3291
3618
 
3292
3619
  Container.prototype.stringifyContent = function(builder) {
3293
- var last,
3294
- _this = this;
3620
+ var last;
3295
3621
  if (!this.rules && !this.decls) {
3296
3622
  return;
3297
3623
  }
@@ -3302,20 +3628,35 @@ var substr = 'ab'.substr(-1) === 'b'
3302
3628
  });
3303
3629
  } else if (this.decls) {
3304
3630
  last = this.decls.length - 1;
3305
- return this.decls.map(function(decl, i) {
3306
- return decl.stringify(builder, last !== i || _this.semicolon);
3307
- });
3631
+ return this.decls.map((function(_this) {
3632
+ return function(decl, i) {
3633
+ return decl.stringify(builder, last !== i || _this.semicolon);
3634
+ };
3635
+ })(this));
3636
+ }
3637
+ };
3638
+
3639
+ Container.prototype.defaultAfter = function() {
3640
+ var _ref;
3641
+ if (this.list.length === 0) {
3642
+ return '';
3643
+ } else if (((_ref = this.list[0].before) != null ? _ref.indexOf("\n") : void 0) === -1) {
3644
+ return this.list[0].before;
3645
+ } else {
3646
+ return "\n";
3308
3647
  }
3309
3648
  };
3310
3649
 
3311
3650
  Container.prototype.stringifyBlock = function(builder, start) {
3651
+ var style;
3652
+ style = this.style();
3312
3653
  if (this.before) {
3313
3654
  builder(this.before);
3314
3655
  }
3315
3656
  builder(start, this, 'start');
3316
3657
  this.stringifyContent(builder);
3317
- if (this.after) {
3318
- builder(this.after);
3658
+ if (style.after) {
3659
+ builder(style.after);
3319
3660
  }
3320
3661
  return builder('}', this, 'end');
3321
3662
  };
@@ -3327,24 +3668,59 @@ var substr = 'ab'.substr(-1) === 'b'
3327
3668
  };
3328
3669
 
3329
3670
  Container.prototype.each = function(callback) {
3330
- var id, index, list;
3671
+ var id, index, list, result;
3331
3672
  this.lastEach || (this.lastEach = 0);
3332
3673
  this.indexes || (this.indexes = {});
3333
3674
  this.lastEach += 1;
3334
3675
  id = this.lastEach;
3335
3676
  this.indexes[id] = 0;
3336
3677
  list = this.list;
3678
+ if (!list) {
3679
+ return;
3680
+ }
3337
3681
  while (this.indexes[id] < list.length) {
3338
3682
  index = this.indexes[id];
3339
- callback(list[index], index);
3683
+ result = callback(list[index], index);
3684
+ if (result === false) {
3685
+ break;
3686
+ }
3340
3687
  this.indexes[id] += 1;
3341
3688
  }
3342
3689
  delete this.indexes[id];
3343
- return this;
3690
+ if (result === false) {
3691
+ return false;
3692
+ }
3693
+ };
3694
+
3695
+ Container.prototype.eachInside = function(callback) {
3696
+ return this.each((function(_this) {
3697
+ return function(child, i) {
3698
+ var result;
3699
+ result = callback(child, i);
3700
+ if (result !== false && child.eachInside) {
3701
+ result = child.eachInside(callback);
3702
+ }
3703
+ if (result === false) {
3704
+ return result;
3705
+ }
3706
+ };
3707
+ })(this));
3344
3708
  };
3345
3709
 
3346
3710
  Container.prototype.eachDecl = function(callback) {};
3347
3711
 
3712
+ Container.prototype.eachComment = function(callback) {
3713
+ return this.eachInside((function(_this) {
3714
+ return function(child, i) {
3715
+ var result;
3716
+ result = child.type === 'comment' ? callback(child, i) : void 0;
3717
+ if (result === false) {
3718
+ return result;
3719
+ }
3720
+ };
3721
+ })(this));
3722
+ };
3723
+
3348
3724
  Container.prototype.append = function(child) {
3349
3725
  child = this.normalize(child, this.list[this.list.length - 1]);
3350
3726
  this.list.push(child);
@@ -3352,25 +3728,25 @@ var substr = 'ab'.substr(-1) === 'b'
3352
3728
  };
3353
3729
 
3354
3730
  Container.prototype.prepend = function(child) {
3355
- var id, index, _ref1;
3731
+ var id, index, _ref;
3356
3732
  child = this.normalize(child, this.list[0], 'prepend');
3357
3733
  this.list.unshift(child);
3358
- _ref1 = this.indexes;
3359
- for (id in _ref1) {
3360
- index = _ref1[id];
3734
+ _ref = this.indexes;
3735
+ for (id in _ref) {
3736
+ index = _ref[id];
3361
3737
  this.indexes[id] = index + 1;
3362
3738
  }
3363
3739
  return this;
3364
3740
  };
3365
3741
 
3366
3742
  Container.prototype.insertBefore = function(exist, add) {
3367
- var id, index, _ref1;
3743
+ var id, index, _ref;
3368
3744
  exist = this.index(exist);
3369
3745
  add = this.normalize(add, this.list[exist], exist === 0 ? 'prepend' : void 0);
3370
3746
  this.list.splice(exist, 0, add);
3371
- _ref1 = this.indexes;
3372
- for (id in _ref1) {
3373
- index = _ref1[id];
3747
+ _ref = this.indexes;
3748
+ for (id in _ref) {
3749
+ index = _ref[id];
3374
3750
  if (index >= exist) {
3375
3751
  this.indexes[id] = index + 1;
3376
3752
  }
@@ -3379,13 +3755,13 @@ var substr = 'ab'.substr(-1) === 'b'
3379
3755
  };
3380
3756
 
3381
3757
  Container.prototype.insertAfter = function(exist, add) {
3382
- var id, index, _ref1;
3758
+ var id, index, _ref;
3383
3759
  exist = this.index(exist);
3384
3760
  add = this.normalize(add, this.list[exist]);
3385
3761
  this.list.splice(exist + 1, 0, add);
3386
- _ref1 = this.indexes;
3387
- for (id in _ref1) {
3388
- index = _ref1[id];
3762
+ _ref = this.indexes;
3763
+ for (id in _ref) {
3764
+ index = _ref[id];
3389
3765
  if (index > exist) {
3390
3766
  this.indexes[id] = index + 1;
3391
3767
  }
@@ -3394,12 +3770,12 @@ var substr = 'ab'.substr(-1) === 'b'
3394
3770
  };
3395
3771
 
3396
3772
  Container.prototype.remove = function(child) {
3397
- var id, index, _ref1;
3773
+ var id, index, _ref;
3398
3774
  child = this.index(child);
3399
3775
  this.list.splice(child, 1);
3400
- _ref1 = this.indexes;
3401
- for (id in _ref1) {
3402
- index = _ref1[id];
3776
+ _ref = this.indexes;
3777
+ for (id in _ref) {
3778
+ index = _ref[id];
3403
3779
  if (index >= child) {
3404
3780
  this.indexes[id] = index - 1;
3405
3781
  }
@@ -3423,6 +3799,18 @@ var substr = 'ab'.substr(-1) === 'b'
3423
3799
  }
3424
3800
  };
3425
3801
 
3802
+ Container.prop('first', {
3803
+ get: function() {
3804
+ return this.list[0];
3805
+ }
3806
+ });
3807
+
3808
+ Container.prop('last', {
3809
+ get: function() {
3810
+ return this.list[this.list.length - 1];
3811
+ }
3812
+ });
3813
+
3426
3814
  Container.prop('list', {
3427
3815
  get: function() {
3428
3816
  return this.rules || this.decls;
@@ -3450,35 +3838,40 @@ var substr = 'ab'.substr(-1) === 'b'
3450
3838
  }
3451
3839
 
3452
3840
  WithRules.prototype.eachDecl = function(callback) {
3453
- this.each(function(child) {
3454
- return child.eachDecl(callback);
3841
+ return this.each(function(child) {
3842
+ var result;
3843
+ if (!child.eachDecl) {
3844
+ return;
3845
+ }
3846
+ result = child.eachDecl(callback);
3847
+ if (result === false) {
3848
+ return result;
3849
+ }
3455
3850
  });
3456
- return this;
3457
3851
  };
3458
3852
 
3459
3853
  WithRules.prototype.eachRule = function(callback) {
3460
- var _this = this;
3461
- this.each(function(child, i) {
3462
- if (child.type === 'rule') {
3463
- return callback(child, i);
3464
- } else if (child.eachRule) {
3465
- return child.eachRule(callback);
3466
- }
3467
- });
3468
- return this;
3854
+ return this.each((function(_this) {
3855
+ return function(child, i) {
3856
+ var result;
3857
+ result = child.type === 'rule' ? callback(child, i) : child.eachRule ? child.eachRule(callback) : void 0;
3858
+ if (result === false) {
3859
+ return result;
3860
+ }
3861
+ };
3862
+ })(this));
3469
3863
  };
3470
3864
 
3471
3865
  WithRules.prototype.eachAtRule = function(callback) {
3472
- var _this = this;
3473
- this.each(function(child, i) {
3474
- if (child.type === 'atrule') {
3475
- callback(child, i);
3476
- if (child.eachAtRule) {
3477
- return child.eachAtRule(callback);
3866
+ return this.eachInside((function(_this) {
3867
+ return function(child, i) {
3868
+ var result;
3869
+ result = child.type === 'atrule' ? callback(child, i) : void 0;
3870
+ if (result === false) {
3871
+ return result;
3478
3872
  }
3479
- }
3480
- });
3481
- return this;
3873
+ };
3874
+ })(this));
3482
3875
  };
3483
3876
 
3484
3877
  return WithRules;
@@ -3501,11 +3894,18 @@ var substr = 'ab'.substr(-1) === 'b'
3501
3894
  };
3502
3895
 
3503
3896
  WithDecls.prototype.eachDecl = function(callback) {
3504
- var _this = this;
3505
- this.each(function(decl, i) {
3506
- return callback(decl, i);
3507
- });
3508
- return this;
3897
+ return this.each((function(_this) {
3898
+ return function(node, i) {
3899
+ var result;
3900
+ if (node.type !== 'decl') {
3901
+ return;
3902
+ }
3903
+ result = callback(node, i);
3904
+ if (result === false) {
3905
+ return result;
3906
+ }
3907
+ };
3908
+ })(this));
3509
3909
  };
3510
3910
 
3511
3911
  return WithDecls;
@@ -3516,7 +3916,7 @@ var substr = 'ab'.substr(-1) === 'b'
3516
3916
 
3517
3917
  }).call(this);
3518
3918
 
3519
- },{"./declaration":42,"./node":45}],42:[function(_dereq_,module,exports){
3919
+ },{"./declaration":46,"./node":50}],46:[function(_dereq_,module,exports){
3520
3920
  (function() {
3521
3921
  var Declaration, Node, vendor,
3522
3922
  __hasProp = {}.hasOwnProperty,
@@ -3534,30 +3934,44 @@ var substr = 'ab'.substr(-1) === 'b'
3534
3934
  Declaration.__super__.constructor.apply(this, arguments);
3535
3935
  }
3536
3936
 
3937
+ Declaration.prototype.defaultStyle = function() {
3938
+ return {
3939
+ before: "\n ",
3940
+ between: ': '
3941
+ };
3942
+ };
3943
+
3537
3944
  Declaration.raw('value');
3538
3945
 
3946
+ Declaration.prop('important', {
3947
+ get: function() {
3948
+ return !!this._important;
3949
+ },
3950
+ set: function(value) {
3951
+ if (typeof value === 'string' && value !== '') {
3952
+ return this._important = value;
3953
+ } else if (value) {
3954
+ return this._important = ' !important';
3955
+ } else {
3956
+ return this._important = false;
3957
+ }
3958
+ }
3959
+ });
3960
+
3539
3961
  Declaration.prototype.stringify = function(builder, semicolon) {
3540
- var string;
3541
- if (this.before) {
3542
- builder(this.before);
3962
+ var string, style;
3963
+ style = this.style();
3964
+ if (style.before) {
3965
+ builder(style.before);
3543
3966
  }
3544
- string = this.prop + (this.between || '') + ':' + this._value.stringify({
3545
- before: ' '
3546
- });
3967
+ string = this.prop + style.between + this._value.toString();
3968
+ string += this._important || '';
3547
3969
  if (semicolon) {
3548
3970
  string += ';';
3549
3971
  }
3550
3972
  return builder(string, this);
3551
3973
  };
3552
3974
 
3553
- Declaration.prototype.removeSelf = function() {
3554
- if (!this.parent) {
3555
- return;
3556
- }
3557
- this.parent.remove(this);
3558
- return this;
3559
- };
3560
-
3561
3975
  Declaration.prototype.clone = function(obj) {
3562
3976
  var cloned;
3563
3977
  cloned = Declaration.__super__.clone.apply(this, arguments);
@@ -3573,74 +3987,27 @@ var substr = 'ab'.substr(-1) === 'b'
3573
3987
 
3574
3988
  }).call(this);
3575
3989
 
3576
- },{"./node":45,"./vendor":53}],43:[function(_dereq_,module,exports){
3990
+ },{"./node":50,"./vendor":58}],47:[function(_dereq_,module,exports){
3577
3991
  (function() {
3578
- var Result, SourceMap, generateMap;
3579
-
3580
- SourceMap = _dereq_('source-map');
3581
-
3582
- Result = _dereq_('./result');
3583
-
3584
- generateMap = function(css, opts) {
3585
- var builder, column, line, map, prev, result;
3586
- map = new SourceMap.SourceMapGenerator({
3587
- file: opts.to || 'to.css'
3588
- });
3589
- result = new Result(css, '');
3590
- line = 1;
3591
- column = 1;
3592
- builder = function(str, node, type) {
3593
- var last, lines, _ref, _ref1;
3594
- result.css += str;
3595
- if ((node != null ? (_ref = node.source) != null ? _ref.start : void 0 : void 0) && type !== 'end') {
3596
- map.addMapping({
3597
- source: node.source.file || 'from.css',
3598
- original: {
3599
- line: node.source.start.line,
3600
- column: node.source.start.column - 1
3601
- },
3602
- generated: {
3603
- line: line,
3604
- column: column - 1
3605
- }
3606
- });
3607
- }
3608
- lines = str.match(/\n/g);
3609
- if (lines) {
3610
- line += lines.length;
3611
- last = str.lastIndexOf("\n");
3612
- column = str.length - last;
3992
+ var lazy;
3993
+
3994
+ lazy = function(klass, name, callback) {
3995
+ var cache;
3996
+ cache = name + 'Cache';
3997
+ return klass.prototype[name] = function() {
3998
+ if (this[cache] != null) {
3999
+ return this[cache];
3613
4000
  } else {
3614
- column = column + str.length;
3615
- }
3616
- if ((node != null ? (_ref1 = node.source) != null ? _ref1.end : void 0 : void 0) && type !== 'start') {
3617
- return map.addMapping({
3618
- source: node.source.file || 'from.css',
3619
- original: {
3620
- line: node.source.end.line,
3621
- column: node.source.end.column
3622
- },
3623
- generated: {
3624
- line: line,
3625
- column: column
3626
- }
3627
- });
4001
+ return this[cache] = callback.apply(this, arguments);
3628
4002
  }
3629
4003
  };
3630
- css.stringify(builder);
3631
- if (typeof opts.map === 'string') {
3632
- prev = new SourceMap.SourceMapConsumer(opts.map);
3633
- map.applySourceMap(prev);
3634
- }
3635
- result.map = map.toString();
3636
- return result;
3637
4004
  };
3638
4005
 
3639
- module.exports = generateMap;
4006
+ module.exports = lazy;
3640
4007
 
3641
4008
  }).call(this);
3642
4009
 
3643
- },{"./result":49,"source-map":54}],44:[function(_dereq_,module,exports){
4010
+ },{}],48:[function(_dereq_,module,exports){
3644
4011
  (function() {
3645
4012
  var list;
3646
4013
 
@@ -3706,9 +4073,252 @@ var substr = 'ab'.substr(-1) === 'b'
3706
4073
 
3707
4074
  }).call(this);
3708
4075
 
3709
- },{}],45:[function(_dereq_,module,exports){
4076
+ },{}],49:[function(_dereq_,module,exports){
3710
4077
  (function() {
3711
- var Node, Raw, clone,
4078
+ var MapGenerator, Result, base64, fs, lazy, mozilla, path;
4079
+
4080
+ mozilla = _dereq_('source-map');
4081
+
4082
+ base64 = _dereq_('base64-js');
4083
+
4084
+ Result = _dereq_('./result');
4085
+
4086
+ lazy = _dereq_('./lazy');
4087
+
4088
+ path = _dereq_('path');
4089
+
4090
+ fs = _dereq_('fs');
4091
+
4092
+ MapGenerator = (function() {
4093
+ function MapGenerator(root, opts) {
4094
+ this.root = root;
4095
+ this.opts = opts;
4096
+ }
4097
+
4098
+ MapGenerator.prototype.startWith = function(string, start) {
4099
+ return string.slice(0, +(start.length - 1) + 1 || 9e9) === start;
4100
+ };
4101
+
4102
+ MapGenerator.prototype.isMap = function() {
4103
+ if (typeof this.opts.map === 'boolean') {
4104
+ return this.opts.map;
4105
+ }
4106
+ return !!this.opts.inlineMap || !!this.prevMap();
4107
+ };
4108
+
4109
+ lazy(MapGenerator, 'isInline', function() {
4110
+ if (this.opts.inlineMap != null) {
4111
+ return this.opts.inlineMap;
4112
+ }
4113
+ return this.isPrevInline();
4114
+ });
4115
+
4116
+ lazy(MapGenerator, 'isPrevInline', function() {
4117
+ var text;
4118
+ if (!this.prevAnnotation()) {
4119
+ return false;
4120
+ }
4121
+ text = this.prevAnnotation().text;
4122
+ return this.startWith(text, '# sourceMappingURL=data:');
4123
+ });
4124
+
4125
+ lazy(MapGenerator, 'prevMap', function() {
4126
+ var byte, bytes, file, map, start, text;
4127
+ if (this.opts.map && typeof this.opts.map !== 'boolean') {
4128
+ return this.opts.map;
4129
+ }
4130
+ if (this.isPrevInline()) {
4131
+ start = '# sourceMappingURL=data:application/json;base64,';
4132
+ text = this.prevAnnotation().text;
4133
+ text = text.slice(start.length);
4134
+ bytes = base64.toByteArray(text);
4135
+ return ((function() {
4136
+ var _i, _len, _results;
4137
+ _results = [];
4138
+ for (_i = 0, _len = bytes.length; _i < _len; _i++) {
4139
+ byte = bytes[_i];
4140
+ _results.push(String.fromCharCode(byte));
4141
+ }
4142
+ return _results;
4143
+ })()).join('');
4144
+ } else if (this.opts.from) {
4145
+ map = this.opts.from + '.map';
4146
+ if (this.prevAnnotation()) {
4147
+ file = this.prevAnnotation().text.replace('# sourceMappingURL=', '');
4148
+ map = path.join(path.dirname(this.opts.from), file);
4149
+ }
4150
+ if (typeof fs.existsSync === "function" ? fs.existsSync(map) : void 0) {
4151
+ return fs.readFileSync(map).toString();
4152
+ } else {
4153
+ return false;
4154
+ }
4155
+ }
4156
+ });
4157
+
4158
+ lazy(MapGenerator, 'prevAnnotation', function() {
4159
+ var last;
4160
+ last = this.root.last;
4161
+ if (!last) {
4162
+ return null;
4163
+ }
4164
+ if (last.type === 'comment' && this.startWith(last.text, '# sourceMappingURL=')) {
4165
+ return last;
4166
+ } else {
4167
+ return null;
4168
+ }
4169
+ });
4170
+
4171
+ MapGenerator.prototype.clearAnnotation = function() {
4172
+ var _ref;
4173
+ return (_ref = this.prevAnnotation()) != null ? _ref.removeSelf() : void 0;
4174
+ };
4175
+
4176
+ MapGenerator.prototype.applyPrevMap = function() {
4177
+ var from, prev, source;
4178
+ if (this.prevMap()) {
4179
+ prev = this.prevMap();
4180
+ prev = typeof prev === 'string' ? JSON.parse(prev) : prev instanceof mozilla.SourceMapConsumer ? mozilla.SourceMapGenerator.fromSourceMap(prev).toJSON() : typeof prev === 'object' && prev.toJSON ? prev.toJSON() : prev;
4181
+ from = path.dirname(this.opts.from);
4182
+ prev.sources = (function() {
4183
+ var _i, _len, _ref, _results;
4184
+ _ref = prev.sources;
4185
+ _results = [];
4186
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
4187
+ source = _ref[_i];
4188
+ _results.push(this.relative(path.resolve(from, source)));
4189
+ }
4190
+ return _results;
4191
+ }).call(this);
4192
+ prev = new mozilla.SourceMapConsumer(prev);
4193
+ return this.map.applySourceMap(prev, this.relative(this.opts.from));
4194
+ }
4195
+ };
4196
+
4197
+ MapGenerator.prototype.addAnnotation = function() {
4198
+ var bytes, char, content;
4199
+ if (this.opts.mapAnnotation === false) {
4200
+ return;
4201
+ }
4202
+ if (this.prevMap() && !this.prevAnnotation()) {
4203
+ return;
4204
+ }
4205
+ content = this.isInline() ? (bytes = (function() {
4206
+ var _i, _len, _ref, _results;
4207
+ _ref = this.map.toString();
4208
+ _results = [];
4209
+ for (_i = 0, _len = _ref.length; _i < _len; _i++) {
4210
+ char = _ref[_i];
4211
+ _results.push(char.charCodeAt(0));
4212
+ }
4213
+ return _results;
4214
+ }).call(this), "data:application/json;base64," + base64.fromByteArray(bytes)) : this.outputFile() + '.map';
4215
+ return this.css += "\n/*# sourceMappingURL=" + content + " */";
4216
+ };
4217
+
4218
+ MapGenerator.prototype.outputFile = function() {
4219
+ if (this.opts.to) {
4220
+ return path.basename(this.opts.to);
4221
+ } else {
4222
+ return 'to.css';
4223
+ }
4224
+ };
4225
+
4226
+ MapGenerator.prototype.generateMap = function() {
4227
+ this.stringify();
4228
+ this.applyPrevMap();
4229
+ this.addAnnotation();
4230
+ if (this.isInline()) {
4231
+ return new Result(this.css);
4232
+ } else {
4233
+ return new Result(this.css, this.map.toString());
4234
+ }
4235
+ };
4236
+
4237
+ MapGenerator.prototype.relative = function(file) {
4238
+ var from;
4239
+ from = this.opts.to ? path.dirname(this.opts.to) : '.';
4240
+ file = path.relative(from, file);
4241
+ if (path.sep === '\\') {
4242
+ file = file.replace('\\', '/');
4243
+ }
4244
+ return file;
4245
+ };
4246
+
4247
+ MapGenerator.prototype.sourcePath = function(node) {
4248
+ return this.relative(node.source.file || 'from.css');
4249
+ };
4250
+
4251
+ MapGenerator.prototype.stringify = function() {
4252
+ var builder, column, line;
4253
+ this.css = '';
4254
+ this.map = new mozilla.SourceMapGenerator({
4255
+ file: this.outputFile()
4256
+ });
4257
+ line = 1;
4258
+ column = 1;
4259
+ builder = (function(_this) {
4260
+ return function(str, node, type) {
4261
+ var last, lines, _ref, _ref1;
4262
+ _this.css += str;
4263
+ if ((node != null ? (_ref = node.source) != null ? _ref.start : void 0 : void 0) && type !== 'end') {
4264
+ _this.map.addMapping({
4265
+ source: _this.sourcePath(node),
4266
+ original: {
4267
+ line: node.source.start.line,
4268
+ column: node.source.start.column - 1
4269
+ },
4270
+ generated: {
4271
+ line: line,
4272
+ column: column - 1
4273
+ }
4274
+ });
4275
+ }
4276
+ lines = str.match(/\n/g);
4277
+ if (lines) {
4278
+ line += lines.length;
4279
+ last = str.lastIndexOf("\n");
4280
+ column = str.length - last;
4281
+ } else {
4282
+ column = column + str.length;
4283
+ }
4284
+ if ((node != null ? (_ref1 = node.source) != null ? _ref1.end : void 0 : void 0) && type !== 'start') {
4285
+ return _this.map.addMapping({
4286
+ source: _this.sourcePath(node),
4287
+ original: {
4288
+ line: node.source.end.line,
4289
+ column: node.source.end.column
4290
+ },
4291
+ generated: {
4292
+ line: line,
4293
+ column: column
4294
+ }
4295
+ });
4296
+ }
4297
+ };
4298
+ })(this);
4299
+ return this.root.stringify(builder);
4300
+ };
4301
+
4302
+ MapGenerator.prototype.getResult = function() {
4303
+ this.clearAnnotation();
4304
+ if (this.isMap()) {
4305
+ return this.generateMap();
4306
+ } else {
4307
+ return new Result(this.root.toString());
4308
+ }
4309
+ };
4310
+
4311
+ return MapGenerator;
4312
+
4313
+ })();
4314
+
4315
+ module.exports = MapGenerator;
4316
+
4317
+ }).call(this);
4318
+
4319
+ },{"./lazy":47,"./result":54,"base64-js":59,"fs":40,"path":42,"source-map":60}],50:[function(_dereq_,module,exports){
4320
+ (function() {
4321
+ var Node, Raw, clone, keys,
3712
4322
  __hasProp = {}.hasOwnProperty;
3713
4323
 
3714
4324
  Raw = _dereq_('./raw');
@@ -3737,6 +4347,19 @@ var substr = 'ab'.substr(-1) === 'b'
3737
4347
  return cloned;
3738
4348
  };
3739
4349
 
4350
+ keys = function(obj, keys) {
4351
+ var all, key;
4352
+ all = {};
4353
+ for (key in keys) {
4354
+ if (obj[key] != null) {
4355
+ all[key] = obj[key];
4356
+ } else {
4357
+ return false;
4358
+ }
4359
+ }
4360
+ return all;
4361
+ };
4362
+
3740
4363
  Node = (function() {
3741
4364
  function Node(defaults) {
3742
4365
  var name, value;
@@ -3756,20 +4379,21 @@ var substr = 'ab'.substr(-1) === 'b'
3756
4379
  Node.raw = function(name) {
3757
4380
  var hidden;
3758
4381
  hidden = '_' + name;
3759
- this.prototype[hidden] = Raw.empty;
3760
4382
  return this.prop(name, {
3761
4383
  get: function() {
3762
- var _ref;
3763
- return (_ref = this[hidden]) != null ? _ref.trimmed : void 0;
4384
+ var prop;
4385
+ prop = this[hidden];
4386
+ if (prop instanceof Raw) {
4387
+ return prop.value;
4388
+ } else {
4389
+ return prop;
4390
+ }
3764
4391
  },
3765
4392
  set: function(value) {
3766
4393
  if (value instanceof Raw) {
3767
4394
  return this[hidden] = value;
3768
4395
  } else {
3769
- if (this[hidden] === Raw.empty) {
3770
- this[hidden] = new Raw();
3771
- }
3772
- return this[hidden].set(value);
4396
+ return this[hidden] = value;
3773
4397
  }
3774
4398
  }
3775
4399
  });
@@ -3826,6 +4450,55 @@ var substr = 'ab'.substr(-1) === 'b'
3826
4450
  return fixed;
3827
4451
  };
3828
4452
 
4453
+ Node.prototype.defaultStyle = function() {
4454
+ return {};
4455
+ };
4456
+
4457
+ Node.prototype.styleType = function() {
4458
+ return this.type;
4459
+ };
4460
+
4461
+ Node.prototype.style = function() {
4462
+ var all, defaults, key, merge, root, style, type;
4463
+ type = this.styleType();
4464
+ defaults = this.defaultStyle(type);
4465
+ all = keys(this, defaults);
4466
+ if (all) {
4467
+ return all;
4468
+ }
4469
+ style = defaults;
4470
+ if (this.parent) {
4471
+ root = this;
4472
+ while (root.parent) {
4473
+ root = root.parent;
4474
+ }
4475
+ root.styleCache || (root.styleCache = {});
4476
+ if (root.styleCache[type]) {
4477
+ style = root.styleCache[type];
4478
+ } else {
4479
+ root.eachInside(function(another) {
4480
+ if (another.styleType() !== type) {
4481
+ return;
4482
+ }
4483
+ if (this === another) {
4484
+ return;
4485
+ }
4486
+ all = keys(another, style);
4487
+ if (all) {
4488
+ style = all;
4489
+ return false;
4490
+ }
4491
+ });
4492
+ root.styleCache[type] = style;
4493
+ }
4494
+ }
4495
+ merge = {};
4496
+ for (key in style) {
4497
+ merge[key] = this[key] != null ? this[key] : style[key];
4498
+ }
4499
+ return merge;
4500
+ };
4501
+
3829
4502
  return Node;
3830
4503
 
3831
4504
  })();
@@ -3834,14 +4507,16 @@ var substr = 'ab'.substr(-1) === 'b'
3834
4507
 
3835
4508
  }).call(this);
3836
4509
 
3837
- },{"./raw":48}],46:[function(_dereq_,module,exports){
4510
+ },{"./raw":53}],51:[function(_dereq_,module,exports){
3838
4511
  (function() {
3839
- var AtRule, Declaration, Parser, Raw, Root, Rule, SyntexError;
4512
+ var AtRule, Comment, Declaration, Parser, Raw, Root, Rule, SyntexError;
3840
4513
 
3841
4514
  SyntexError = _dereq_('./syntax-error');
3842
4515
 
3843
4516
  Declaration = _dereq_('./declaration');
3844
4517
 
4518
+ Comment = _dereq_('./comment');
4519
+
3845
4520
  AtRule = _dereq_('./at-rule');
3846
4521
 
3847
4522
  Root = _dereq_('./root');
@@ -3906,7 +4581,19 @@ var substr = 'ab'.substr(-1) === 'b'
3906
4581
  };
3907
4582
 
3908
4583
  Parser.prototype.inComment = function() {
4584
+ var left, right, text, _ref, _ref1;
3909
4585
  if (this.inside('comment')) {
4586
+ if (this.next('*/')) {
4587
+ _ref = this.startSpaces(this.prevBuffer()), text = _ref[0], left = _ref[1];
4588
+ _ref1 = this.endSpaces(text), text = _ref1[0], right = _ref1[1];
4589
+ this.current.text = text;
4590
+ this.current.left = left;
4591
+ this.current.right = right;
4592
+ this.move();
4593
+ this.pop();
4594
+ }
4595
+ return true;
4596
+ } else if (this.inside('value-comment')) {
3910
4597
  if (this.next('*/')) {
3911
4598
  this.popType();
3912
4599
  this.move();
@@ -3917,13 +4604,20 @@ var substr = 'ab'.substr(-1) === 'b'
3917
4604
 
3918
4605
  Parser.prototype.isComment = function() {
3919
4606
  if (this.next('/*')) {
3920
- this.commentPos = {
3921
- line: this.line,
3922
- column: this.column
3923
- };
3924
- this.addType('comment');
3925
- this.move();
3926
- return true;
4607
+ if (this.inside('rules') || this.inside('decls')) {
4608
+ this.init(new Comment());
4609
+ this.addType('comment');
4610
+ this.move();
4611
+ return this.buffer = '';
4612
+ } else {
4613
+ this.commentPos = {
4614
+ line: this.line,
4615
+ column: this.column
4616
+ };
4617
+ this.addType('value-comment');
4618
+ this.move();
4619
+ return true;
4620
+ }
3927
4621
  }
3928
4622
  };
3929
4623
 
@@ -3931,7 +4625,7 @@ var substr = 'ab'.substr(-1) === 'b'
3931
4625
  if (this.letter === '{' && (this.inside('decls') || this.inside('value'))) {
3932
4626
  this.error("Unexpected {");
3933
4627
  }
3934
- if (this.inside('property') && (this.letter === '}' || this.letter === ';')) {
4628
+ if (this.inside('prop') && (this.letter === '}' || this.letter === ';')) {
3935
4629
  return this.error('Missing property value');
3936
4630
  }
3937
4631
  };
@@ -3946,6 +4640,7 @@ var substr = 'ab'.substr(-1) === 'b'
3946
4640
  };
3947
4641
 
3948
4642
  Parser.prototype.inAtrule = function(close) {
4643
+ var left, raw, right, _ref, _ref1;
3949
4644
  if (this.inside('atrule-name')) {
3950
4645
  if (this.space()) {
3951
4646
  this.checkAtruleName();
@@ -3953,6 +4648,7 @@ var substr = 'ab'.substr(-1) === 'b'
3953
4648
  this.trimmed = '';
3954
4649
  this.setType('atrule-param');
3955
4650
  } else if (this.letter === ';' || this.letter === '{' || close) {
4651
+ this.current.between = '';
3956
4652
  this.checkAtruleName();
3957
4653
  this.endAtruleParams();
3958
4654
  } else {
@@ -3961,7 +4657,16 @@ var substr = 'ab'.substr(-1) === 'b'
3961
4657
  return true;
3962
4658
  } else if (this.inside('atrule-param')) {
3963
4659
  if (this.letter === ';' || this.letter === '{' || close) {
3964
- this.current.params = new Raw(this.prevBuffer(), this.trim(this.trimmed));
4660
+ _ref = this.startSpaces(this.prevBuffer()), raw = _ref[0], left = _ref[1];
4661
+ _ref1 = this.endSpaces(raw), raw = _ref1[0], right = _ref1[1];
4662
+ this.current.params = this.raw(this.trimmed.trim(), raw);
4663
+ if (this.current.params) {
4664
+ this.current.afterName = left;
4665
+ this.current.between = right;
4666
+ } else {
4667
+ this.current.afterName = '';
4668
+ this.current.between = left + right;
4669
+ }
3965
4670
  this.endAtruleParams();
3966
4671
  } else {
3967
4672
  this.trimmed += this.letter;
@@ -3971,9 +4676,12 @@ var substr = 'ab'.substr(-1) === 'b'
3971
4676
  };
3972
4677
 
3973
4678
  Parser.prototype.inSelector = function() {
4679
+ var raw, spaces, _ref;
3974
4680
  if (this.inside('selector')) {
3975
4681
  if (this.letter === '{') {
3976
- this.current.selector = new Raw(this.prevBuffer(), this.trim(this.trimmed));
4682
+ _ref = this.endSpaces(this.prevBuffer()), raw = _ref[0], spaces = _ref[1];
4683
+ this.current.selector = this.raw(this.trimmed.trim(), raw);
4684
+ this.current.between = spaces;
3977
4685
  this.semicolon = false;
3978
4686
  this.buffer = '';
3979
4687
  this.setType('decls');
@@ -3989,7 +4697,8 @@ var substr = 'ab'.substr(-1) === 'b'
3989
4697
  this.init(new Rule());
3990
4698
  if (this.letter === '{') {
3991
4699
  this.addType('decls');
3992
- this.current.selector = new Raw('', '');
4700
+ this.current.selector = '';
4701
+ this.current.between = '';
3993
4702
  this.semicolon = false;
3994
4703
  this.buffer = '';
3995
4704
  } else {
@@ -4023,14 +4732,14 @@ var substr = 'ab'.substr(-1) === 'b'
4023
4732
  };
4024
4733
 
4025
4734
  Parser.prototype.inProperty = function() {
4026
- if (this.inside('property')) {
4735
+ if (this.inside('prop')) {
4027
4736
  if (this.letter === ':') {
4028
4737
  if (this.buffer[0] === '*' || this.buffer[0] === '_') {
4029
4738
  this.current.before += this.buffer[0];
4030
4739
  this.trimmed = this.trimmed.slice(1);
4031
4740
  this.buffer = this.buffer.slice(1);
4032
4741
  }
4033
- this.current.prop = this.trim(this.trimmed);
4742
+ this.current.prop = this.trimmed.trim();
4034
4743
  this.current.between = this.prevBuffer().slice(this.current.prop.length);
4035
4744
  this.buffer = '';
4036
4745
  this.setType('value');
@@ -4047,7 +4756,7 @@ var substr = 'ab'.substr(-1) === 'b'
4047
4756
  Parser.prototype.isProperty = function() {
4048
4757
  if (this.inside('decls') && !this.space() && this.letter !== ';') {
4049
4758
  this.init(new Declaration());
4050
- this.addType('property');
4759
+ this.addType('prop');
4051
4760
  this.buffer = this.letter;
4052
4761
  this.trimmed = this.letter;
4053
4762
  this.semicolon = false;
@@ -4056,6 +4765,7 @@ var substr = 'ab'.substr(-1) === 'b'
4056
4765
  };
4057
4766
 
4058
4767
  Parser.prototype.inValue = function(close) {
4768
+ var end, match, raw, spaces, trim, _ref;
4059
4769
  if (this.inside('value')) {
4060
4770
  if (this.letter === '(') {
4061
4771
  this.inBrackets = true;
@@ -4066,7 +4776,16 @@ var substr = 'ab'.substr(-1) === 'b'
4066
4776
  if (this.letter === ';') {
4067
4777
  this.semicolon = true;
4068
4778
  }
4069
- this.current.value = new Raw(this.prevBuffer(), this.trim(this.trimmed));
4779
+ _ref = this.startSpaces(this.prevBuffer()), raw = _ref[0], spaces = _ref[1];
4780
+ trim = this.trimmed.trim();
4781
+ if (match = raw.match(/\s+!important\s*$/)) {
4782
+ this.current._important = match[0];
4783
+ end = -match[0].length - 1;
4784
+ raw = raw.slice(0, +end + 1 || 9e9);
4785
+ trim = trim.replace(/\s+!important$/, '');
4786
+ }
4787
+ this.current.value = this.raw(trim, raw);
4788
+ this.current.between += ':' + spaces;
4070
4789
  this.pop();
4071
4790
  } else {
4072
4791
  this.trimmed += this.letter;
@@ -4087,9 +4806,11 @@ var substr = 'ab'.substr(-1) === 'b'
4087
4806
  return this.inAtrule('close');
4088
4807
  });
4089
4808
  }
4090
- if (this.parents.length > 1) {
4809
+ if (this.inside('comment')) {
4810
+ return this.error('Unclosed comment', this.current.source.start);
4811
+ } else if (this.parents.length > 1) {
4091
4812
  return this.error('Unclosed block', this.current.source.start);
4092
- } else if (this.inside('comment')) {
4813
+ } else if (this.inside('value-comment')) {
4093
4814
  return this.error('Unclosed comment', this.commentPos);
4094
4815
  } else if (this.quote) {
4095
4816
  return this.error('Unclosed quote', this.quotePos);
@@ -4153,6 +4874,14 @@ var substr = 'ab'.substr(-1) === 'b'
4153
4874
  return this.buffer = '';
4154
4875
  };
4155
4876
 
4877
+ Parser.prototype.raw = function(value, raw) {
4878
+ if (value !== raw) {
4879
+ return new Raw(value, raw);
4880
+ } else {
4881
+ return value;
4882
+ }
4883
+ };
4884
+
4156
4885
  Parser.prototype.fixEnd = function(callback) {
4157
4886
  var after, all, el, last, lines, start;
4158
4887
  if (this.letter === '}') {
@@ -4238,8 +4967,26 @@ var substr = 'ab'.substr(-1) === 'b'
4238
4967
  }
4239
4968
  };
4240
4969
 
4241
- Parser.prototype.trim = function(string) {
4242
- return string.replace(/^\s*/, '').replace(/\s*$/, '');
4970
+ Parser.prototype.startSpaces = function(string) {
4971
+ var match, pos;
4972
+ match = string.match(/^\s*/);
4973
+ if (match) {
4974
+ pos = match[0].length;
4975
+ return [string.slice(pos), match[0]];
4976
+ } else {
4977
+ return [string, ''];
4978
+ }
4979
+ };
4980
+
4981
+ Parser.prototype.endSpaces = function(string) {
4982
+ var match, pos;
4983
+ match = string.match(/\s*$/);
4984
+ if (match) {
4985
+ pos = match[0].length + 1;
4986
+ return [string.slice(0, +(-pos) + 1 || 9e9), match[0]];
4987
+ } else {
4988
+ return [string, ''];
4989
+ }
4243
4990
  };
4244
4991
 
4245
4992
  return Parser;
@@ -4258,18 +5005,16 @@ var substr = 'ab'.substr(-1) === 'b'
4258
5005
 
4259
5006
  }).call(this);
4260
5007
 
4261
- },{"./at-rule":40,"./declaration":42,"./raw":48,"./root":50,"./rule":51,"./syntax-error":52}],47:[function(_dereq_,module,exports){
5008
+ },{"./at-rule":43,"./comment":44,"./declaration":46,"./raw":53,"./root":55,"./rule":56,"./syntax-error":57}],52:[function(_dereq_,module,exports){
4262
5009
  (function() {
4263
- var AtRule, Declaration, PostCSS, Result, Root, Rule, generateMap, postcss,
5010
+ var AtRule, Comment, Declaration, PostCSS, Root, Rule, postcss,
4264
5011
  __slice = [].slice;
4265
5012
 
4266
- generateMap = _dereq_('./generate-map');
4267
-
4268
5013
  Declaration = _dereq_('./declaration');
4269
5014
 
4270
- AtRule = _dereq_('./at-rule');
5015
+ Comment = _dereq_('./comment');
4271
5016
 
4272
- Result = _dereq_('./result');
5017
+ AtRule = _dereq_('./at-rule');
4273
5018
 
4274
5019
  Rule = _dereq_('./rule');
4275
5020
 
@@ -4299,11 +5044,7 @@ var substr = 'ab'.substr(-1) === 'b'
4299
5044
  parsed = returned;
4300
5045
  }
4301
5046
  }
4302
- if (opts.map) {
4303
- return generateMap(parsed, opts);
4304
- } else {
4305
- return new Result(parsed, parsed.toString());
4306
- }
5047
+ return parsed.toResult(opts);
4307
5048
  };
4308
5049
 
4309
5050
  return PostCSS;
@@ -4318,14 +5059,18 @@ var substr = 'ab'.substr(-1) === 'b'
4318
5059
 
4319
5060
  postcss.parse = _dereq_('./parse');
4320
5061
 
4321
- postcss.decl = function(defaults) {
4322
- return new Declaration(defaults);
5062
+ postcss.comment = function(defaults) {
5063
+ return new Comment(defaults);
4323
5064
  };
4324
5065
 
4325
5066
  postcss.atRule = function(defaults) {
4326
5067
  return new AtRule(defaults);
4327
5068
  };
4328
5069
 
5070
+ postcss.decl = function(defaults) {
5071
+ return new Declaration(defaults);
5072
+ };
5073
+
4329
5074
  postcss.rule = function(defaults) {
4330
5075
  return new Rule(defaults);
4331
5076
  };
@@ -4338,33 +5083,29 @@ var substr = 'ab'.substr(-1) === 'b'
4338
5083
 
4339
5084
  }).call(this);
4340
5085
 
4341
- },{"./at-rule":40,"./declaration":42,"./generate-map":43,"./parse":46,"./result":49,"./root":50,"./rule":51}],48:[function(_dereq_,module,exports){
5086
+ },{"./at-rule":43,"./comment":44,"./declaration":46,"./parse":51,"./root":55,"./rule":56}],53:[function(_dereq_,module,exports){
4342
5087
  (function() {
4343
5088
  var Raw;
4344
5089
 
4345
5090
  Raw = (function() {
4346
- function Raw(raw, trimmed) {
4347
- this.raw = raw;
4348
- this.trimmed = trimmed;
4349
- }
4350
-
4351
- Raw.prototype.set = function(value) {
4352
- if (this.trimmed !== value) {
4353
- this.changed = true;
4354
- return this.trimmed = value;
5091
+ Raw.load = function(value, raw) {
5092
+ if ((raw != null) && value !== raw) {
5093
+ return new Raw(value, raw);
5094
+ } else {
5095
+ return value;
4355
5096
  }
4356
5097
  };
4357
5098
 
4358
- Raw.prototype.stringify = function(opts) {
4359
- if (opts == null) {
4360
- opts = {};
4361
- }
4362
- if (!this.changed) {
4363
- return this.raw || '';
4364
- } else if (!this.raw) {
4365
- return (opts.before || '') + this.trimmed + (opts.after || '');
5099
+ function Raw(value, raw) {
5100
+ this.value = value;
5101
+ this.raw = raw;
5102
+ }
5103
+
5104
+ Raw.prototype.toString = function() {
5105
+ if (this.changed) {
5106
+ return this.value || '';
4366
5107
  } else {
4367
- return (this.raw[0] === ' ' ? ' ' : '') + this.trimmed + (this.raw.slice(-1) === ' ' ? ' ' : '');
5108
+ return this.raw || this.value || '';
4368
5109
  }
4369
5110
  };
4370
5111
 
@@ -4372,20 +5113,20 @@ var substr = 'ab'.substr(-1) === 'b'
4372
5113
 
4373
5114
  })();
4374
5115
 
4375
- Raw.empty = new Raw();
4376
-
4377
5116
  module.exports = Raw;
4378
5117
 
4379
5118
  }).call(this);
4380
5119
 
4381
- },{}],49:[function(_dereq_,module,exports){
5120
+ },{}],54:[function(_dereq_,module,exports){
4382
5121
  (function() {
4383
5122
  var Result;
4384
5123
 
4385
5124
  Result = (function() {
4386
- function Result(parsed, css) {
4387
- this.parsed = parsed;
5125
+ function Result(css, map) {
4388
5126
  this.css = css;
5127
+ if (map) {
5128
+ this.map = map;
5129
+ }
4389
5130
  }
4390
5131
 
4391
5132
  Result.prototype.toString = function() {
@@ -4400,14 +5141,24 @@ var substr = 'ab'.substr(-1) === 'b'
4400
5141
 
4401
5142
  }).call(this);
4402
5143
 
4403
- },{}],50:[function(_dereq_,module,exports){
5144
+ },{}],55:[function(_dereq_,module,exports){
4404
5145
  (function() {
4405
- var Container, Root,
5146
+ var AtRule, Comment, Container, Declaration, MapGenerator, Root, Rule,
4406
5147
  __hasProp = {}.hasOwnProperty,
4407
5148
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
4408
5149
 
5150
+ MapGenerator = _dereq_('./map-generator');
5151
+
5152
+ Declaration = _dereq_('./declaration');
5153
+
4409
5154
  Container = _dereq_('./container');
4410
5155
 
5156
+ Comment = _dereq_('./comment');
5157
+
5158
+ AtRule = _dereq_('./at-rule');
5159
+
5160
+ Rule = _dereq_('./rule');
5161
+
4411
5162
  Root = (function(_super) {
4412
5163
  __extends(Root, _super);
4413
5164
 
@@ -4432,6 +5183,15 @@ var substr = 'ab'.substr(-1) === 'b'
4432
5183
  }
4433
5184
  };
4434
5185
 
5186
+ Root.prototype.toResult = function(opts) {
5187
+ var map;
5188
+ if (opts == null) {
5189
+ opts = {};
5190
+ }
5191
+ map = new MapGenerator(this, opts);
5192
+ return map.getResult();
5193
+ };
5194
+
4435
5195
  return Root;
4436
5196
 
4437
5197
  })(Container.WithRules);
@@ -4440,9 +5200,9 @@ var substr = 'ab'.substr(-1) === 'b'
4440
5200
 
4441
5201
  }).call(this);
4442
5202
 
4443
- },{"./container":41}],51:[function(_dereq_,module,exports){
5203
+ },{"./at-rule":43,"./comment":44,"./container":45,"./declaration":46,"./map-generator":49,"./rule":56}],56:[function(_dereq_,module,exports){
4444
5204
  (function() {
4445
- var Container, Declaration, Rule,
5205
+ var Container, Declaration, Rule, list,
4446
5206
  __hasProp = {}.hasOwnProperty,
4447
5207
  __extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
4448
5208
 
@@ -4450,6 +5210,8 @@ var substr = 'ab'.substr(-1) === 'b'
4450
5210
 
4451
5211
  Declaration = _dereq_('./declaration');
4452
5212
 
5213
+ list = _dereq_('./list');
5214
+
4453
5215
  Rule = (function(_super) {
4454
5216
  __extends(Rule, _super);
4455
5217
 
@@ -4458,12 +5220,37 @@ var substr = 'ab'.substr(-1) === 'b'
4458
5220
  Rule.__super__.constructor.apply(this, arguments);
4459
5221
  }
4460
5222
 
5223
+ Rule.prototype.styleType = function() {
5224
+ return this.type + (this.decls.length ? '-body' : '-empty');
5225
+ };
5226
+
5227
+ Rule.prototype.defaultStyle = function(type) {
5228
+ if (type === 'rule-body') {
5229
+ return {
5230
+ between: ' ',
5231
+ after: this.defaultAfter()
5232
+ };
5233
+ } else {
5234
+ return {
5235
+ between: ' ',
5236
+ after: ''
5237
+ };
5238
+ }
5239
+ };
5240
+
4461
5241
  Rule.raw('selector');
4462
5242
 
5243
+ Rule.prop('selectors', {
5244
+ get: function() {
5245
+ return list.comma(this.selector);
5246
+ },
5247
+ set: function(values) {
5248
+ return this.selector = values.join(', ');
5249
+ }
5250
+ });
5251
+
4463
5252
  Rule.prototype.stringify = function(builder) {
4464
- return this.stringifyBlock(builder, this._selector.stringify({
4465
- after: ' '
4466
- }) + '{');
5253
+ return this.stringifyBlock(builder, this._selector + this.style().between + '{');
4467
5254
  };
4468
5255
 
4469
5256
  return Rule;
@@ -4474,7 +5261,7 @@ var substr = 'ab'.substr(-1) === 'b'
4474
5261
 
4475
5262
  }).call(this);
4476
5263
 
4477
- },{"./container":41,"./declaration":42}],52:[function(_dereq_,module,exports){
5264
+ },{"./container":45,"./declaration":46,"./list":48}],57:[function(_dereq_,module,exports){
4478
5265
  (function() {
4479
5266
  var SyntaxError,
4480
5267
  __hasProp = {}.hasOwnProperty,
@@ -4503,7 +5290,7 @@ var substr = 'ab'.substr(-1) === 'b'
4503
5290
 
4504
5291
  }).call(this);
4505
5292
 
4506
- },{}],53:[function(_dereq_,module,exports){
5293
+ },{}],58:[function(_dereq_,module,exports){
4507
5294
  (function() {
4508
5295
  var vendor;
4509
5296
 
@@ -4532,7 +5319,130 @@ var substr = 'ab'.substr(-1) === 'b'
4532
5319
 
4533
5320
  }).call(this);
4534
5321
 
4535
- },{}],54:[function(_dereq_,module,exports){
5322
+ },{}],59:[function(_dereq_,module,exports){
5323
+ var lookup = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
5324
+
5325
+ ;(function (exports) {
5326
+ 'use strict';
5327
+
5328
+ var Arr = (typeof Uint8Array !== 'undefined')
5329
+ ? Uint8Array
5330
+ : Array
5331
+
5332
+ var ZERO = '0'.charCodeAt(0)
5333
+ var PLUS = '+'.charCodeAt(0)
5334
+ var SLASH = '/'.charCodeAt(0)
5335
+ var NUMBER = '0'.charCodeAt(0)
5336
+ var LOWER = 'a'.charCodeAt(0)
5337
+ var UPPER = 'A'.charCodeAt(0)
5338
+
5339
+ function decode (elt) {
5340
+ var code = elt.charCodeAt(0)
5341
+ if (code === PLUS)
5342
+ return 62 // '+'
5343
+ if (code === SLASH)
5344
+ return 63 // '/'
5345
+ if (code < NUMBER)
5346
+ return -1 //no match
5347
+ if (code < NUMBER + 10)
5348
+ return code - NUMBER + 26 + 26
5349
+ if (code < UPPER + 26)
5350
+ return code - UPPER
5351
+ if (code < LOWER + 26)
5352
+ return code - LOWER + 26
5353
+ }
5354
+
5355
+ function b64ToByteArray (b64) {
5356
+ var i, j, l, tmp, placeHolders, arr
5357
+
5358
+ if (b64.length % 4 > 0) {
5359
+ throw new Error('Invalid string. Length must be a multiple of 4')
5360
+ }
5361
+
5362
+ // the number of equal signs (place holders)
5363
+ // if there are two placeholders, than the two characters before it
5364
+ // represent one byte
5365
+ // if there is only one, then the three characters before it represent 2 bytes
5366
+ // this is just a cheap hack to not do indexOf twice
5367
+ var len = b64.length
5368
+ placeHolders = '=' === b64.charAt(len - 2) ? 2 : '=' === b64.charAt(len - 1) ? 1 : 0
5369
+
5370
+ // base64 is 4/3 + up to two characters of the original data
5371
+ arr = new Arr(b64.length * 3 / 4 - placeHolders)
5372
+
5373
+ // if there are placeholders, only get up to the last complete 4 chars
5374
+ l = placeHolders > 0 ? b64.length - 4 : b64.length
5375
+
5376
+ var L = 0
5377
+
5378
+ function push (v) {
5379
+ arr[L++] = v
5380
+ }
5381
+
5382
+ for (i = 0, j = 0; i < l; i += 4, j += 3) {
5383
+ tmp = (decode(b64.charAt(i)) << 18) | (decode(b64.charAt(i + 1)) << 12) | (decode(b64.charAt(i + 2)) << 6) | decode(b64.charAt(i + 3))
5384
+ push((tmp & 0xFF0000) >> 16)
5385
+ push((tmp & 0xFF00) >> 8)
5386
+ push(tmp & 0xFF)
5387
+ }
5388
+
5389
+ if (placeHolders === 2) {
5390
+ tmp = (decode(b64.charAt(i)) << 2) | (decode(b64.charAt(i + 1)) >> 4)
5391
+ push(tmp & 0xFF)
5392
+ } else if (placeHolders === 1) {
5393
+ tmp = (decode(b64.charAt(i)) << 10) | (decode(b64.charAt(i + 1)) << 4) | (decode(b64.charAt(i + 2)) >> 2)
5394
+ push((tmp >> 8) & 0xFF)
5395
+ push(tmp & 0xFF)
5396
+ }
5397
+
5398
+ return arr
5399
+ }
5400
+
5401
+ function uint8ToBase64 (uint8) {
5402
+ var i,
5403
+ extraBytes = uint8.length % 3, // if we have 1 byte left, pad 2 bytes
5404
+ output = "",
5405
+ temp, length
5406
+
5407
+ function encode (num) {
5408
+ return lookup.charAt(num)
5409
+ }
5410
+
5411
+ function tripletToBase64 (num) {
5412
+ return encode(num >> 18 & 0x3F) + encode(num >> 12 & 0x3F) + encode(num >> 6 & 0x3F) + encode(num & 0x3F)
5413
+ }
5414
+
5415
+ // go through the array every three bytes, we'll deal with trailing stuff later
5416
+ for (i = 0, length = uint8.length - extraBytes; i < length; i += 3) {
5417
+ temp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2])
5418
+ output += tripletToBase64(temp)
5419
+ }
5420
+
5421
+ // pad the end with zeros, but make sure to not forget the extra bytes
5422
+ switch (extraBytes) {
5423
+ case 1:
5424
+ temp = uint8[uint8.length - 1]
5425
+ output += encode(temp >> 2)
5426
+ output += encode((temp << 4) & 0x3F)
5427
+ output += '=='
5428
+ break
5429
+ case 2:
5430
+ temp = (uint8[uint8.length - 2] << 8) + (uint8[uint8.length - 1])
5431
+ output += encode(temp >> 10)
5432
+ output += encode((temp >> 4) & 0x3F)
5433
+ output += encode((temp << 2) & 0x3F)
5434
+ output += '='
5435
+ break
5436
+ }
5437
+
5438
+ return output
5439
+ }
5440
+
5441
+ module.exports.toByteArray = b64ToByteArray
5442
+ module.exports.fromByteArray = uint8ToBase64
5443
+ }())
5444
+
5445
+ },{}],60:[function(_dereq_,module,exports){
4536
5446
  /*
4537
5447
  * Copyright 2009-2011 Mozilla Foundation and contributors
4538
5448
  * Licensed under the New BSD license. See LICENSE.txt or:
@@ -4542,7 +5452,7 @@ exports.SourceMapGenerator = _dereq_('./source-map/source-map-generator').Source
4542
5452
  exports.SourceMapConsumer = _dereq_('./source-map/source-map-consumer').SourceMapConsumer;
4543
5453
  exports.SourceNode = _dereq_('./source-map/source-node').SourceNode;
4544
5454
 
4545
- },{"./source-map/source-map-consumer":59,"./source-map/source-map-generator":60,"./source-map/source-node":61}],55:[function(_dereq_,module,exports){
5455
+ },{"./source-map/source-map-consumer":65,"./source-map/source-map-generator":66,"./source-map/source-node":67}],61:[function(_dereq_,module,exports){
4546
5456
  /* -*- Mode: js; js-indent-level: 2; -*- */
4547
5457
  /*
4548
5458
  * Copyright 2011 Mozilla Foundation and contributors
@@ -4641,7 +5551,7 @@ define(function (_dereq_, exports, module) {
4641
5551
 
4642
5552
  });
4643
5553
 
4644
- },{"./util":62,"amdefine":63}],56:[function(_dereq_,module,exports){
5554
+ },{"./util":68,"amdefine":69}],62:[function(_dereq_,module,exports){
4645
5555
  /* -*- Mode: js; js-indent-level: 2; -*- */
4646
5556
  /*
4647
5557
  * Copyright 2011 Mozilla Foundation and contributors
@@ -4787,7 +5697,7 @@ define(function (_dereq_, exports, module) {
4787
5697
 
4788
5698
  });
4789
5699
 
4790
- },{"./base64":57,"amdefine":63}],57:[function(_dereq_,module,exports){
5700
+ },{"./base64":63,"amdefine":69}],63:[function(_dereq_,module,exports){
4791
5701
  /* -*- Mode: js; js-indent-level: 2; -*- */
4792
5702
  /*
4793
5703
  * Copyright 2011 Mozilla Foundation and contributors
@@ -4831,7 +5741,7 @@ define(function (_dereq_, exports, module) {
4831
5741
 
4832
5742
  });
4833
5743
 
4834
- },{"amdefine":63}],58:[function(_dereq_,module,exports){
5744
+ },{"amdefine":69}],64:[function(_dereq_,module,exports){
4835
5745
  /* -*- Mode: js; js-indent-level: 2; -*- */
4836
5746
  /*
4837
5747
  * Copyright 2011 Mozilla Foundation and contributors
@@ -4914,7 +5824,7 @@ define(function (_dereq_, exports, module) {
4914
5824
 
4915
5825
  });
4916
5826
 
4917
- },{"amdefine":63}],59:[function(_dereq_,module,exports){
5827
+ },{"amdefine":69}],65:[function(_dereq_,module,exports){
4918
5828
  /* -*- Mode: js; js-indent-level: 2; -*- */
4919
5829
  /*
4920
5830
  * Copyright 2011 Mozilla Foundation and contributors
@@ -5394,7 +6304,7 @@ define(function (_dereq_, exports, module) {
5394
6304
 
5395
6305
  });
5396
6306
 
5397
- },{"./array-set":55,"./base64-vlq":56,"./binary-search":58,"./util":62,"amdefine":63}],60:[function(_dereq_,module,exports){
6307
+ },{"./array-set":61,"./base64-vlq":62,"./binary-search":64,"./util":68,"amdefine":69}],66:[function(_dereq_,module,exports){
5398
6308
  /* -*- Mode: js; js-indent-level: 2; -*- */
5399
6309
  /*
5400
6310
  * Copyright 2011 Mozilla Foundation and contributors
@@ -5776,7 +6686,7 @@ define(function (_dereq_, exports, module) {
5776
6686
 
5777
6687
  });
5778
6688
 
5779
- },{"./array-set":55,"./base64-vlq":56,"./util":62,"amdefine":63}],61:[function(_dereq_,module,exports){
6689
+ },{"./array-set":61,"./base64-vlq":62,"./util":68,"amdefine":69}],67:[function(_dereq_,module,exports){
5780
6690
  /* -*- Mode: js; js-indent-level: 2; -*- */
5781
6691
  /*
5782
6692
  * Copyright 2011 Mozilla Foundation and contributors
@@ -6149,7 +7059,7 @@ define(function (_dereq_, exports, module) {
6149
7059
 
6150
7060
  });
6151
7061
 
6152
- },{"./source-map-generator":60,"./util":62,"amdefine":63}],62:[function(_dereq_,module,exports){
7062
+ },{"./source-map-generator":66,"./util":68,"amdefine":69}],68:[function(_dereq_,module,exports){
6153
7063
  /* -*- Mode: js; js-indent-level: 2; -*- */
6154
7064
  /*
6155
7065
  * Copyright 2011 Mozilla Foundation and contributors
@@ -6356,7 +7266,7 @@ define(function (_dereq_, exports, module) {
6356
7266
 
6357
7267
  });
6358
7268
 
6359
- },{"amdefine":63}],63:[function(_dereq_,module,exports){
7269
+ },{"amdefine":69}],69:[function(_dereq_,module,exports){
6360
7270
  (function (process,__filename){
6361
7271
  /** vim: et:ts=4:sw=4:sts=4
6362
7272
  * @license amdefine 0.1.0 Copyright (c) 2011, The Dojo Foundation All Rights Reserved.
@@ -6659,6 +7569,6 @@ function amdefine(module, requireFn) {
6659
7569
  module.exports = amdefine;
6660
7570
 
6661
7571
  }).call(this,_dereq_("/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js"),"/../node_modules/postcss/node_modules/source-map/node_modules/amdefine/amdefine.js")
6662
- },{"/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":38,"path":39}]},{},[3])
7572
+ },{"/home/ai/Dev/autoprefixer/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":41,"path":42}]},{},[3])
6663
7573
  (3)
6664
7574
  });