js_stack 0.6.7 → 0.6.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bcee6f489f0b24c8b69b1eac5dec1b29be4f7484
4
- data.tar.gz: ce93f0127c785c3d511fb012099e4c75ff122637
3
+ metadata.gz: 76c185bc4f7a94369ab13fa9482415f86a1f331b
4
+ data.tar.gz: bc92abb38284758ebec53d1a48d89e1fc419a8e3
5
5
  SHA512:
6
- metadata.gz: 0a4cf05e07abc47e36a01c25aa2d15d1ea533ad84d37a1d129f1ee983f805874df33f72dce9f749c250624431cef5b90848d54072ef6f378b8d6245b58ab5d6d
7
- data.tar.gz: 1a1b808931ae8919670a58b211f92ce94dc427f3ddd6d870a73f8392be6dc2f7ec399d4bff46ae5f61b7268831c00c748c7998c5d50ee5ab288553d8e1dd2dfa
6
+ metadata.gz: b33aa6b7e27f9811e669c8b0f53ac88c4efb74615ce3f57061fb068d6372cc35ad1c9123712cebe0b977b6fbb8820aef64c4aaee9f73a355780bf9ec1784a331
7
+ data.tar.gz: 178e838a1992bea00634e29ae64bc2795d675f0877c0b4ed37275a5a377bf9596741be699268fb7c97e4149ce7fb4173f3539b0907011ae0899e7fec8afe56d2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ # 0.6.8
4
+
5
+ * update marionette 2.0.1 -> 2.0.3 [@gvl]
6
+ * update backbone.paginator 2.0.1 -> 2.0.2 [@gvl]
7
+ * update backbone.virtualcollection 0.4.15 -> 0.5.0 [@gvl]
8
+
3
9
  # 0.6.7
4
10
 
5
11
  * update backbone.associations 0.6.1 -> 0.6.2 [@gvl]
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # js_stack [![Dependency Status](https://gemnasium.com/netguru/js_stack.png)](https://gemnasium.com/netguru/js_stack) [![Gem Version](https://badge.fury.io/rb/js_stack.png)](http://badge.fury.io/rb/js_stack)
1
+ # js_stack [![Dependency Status](http://img.shields.io/gemnasium/netguru/js_stack.svg?style=flat)](https://gemnasium.com/netguru/js_stack) [![Gem Version](http://img.shields.io/gem/v/js_stack.svg?style=flat)](http://badge.fury.io/rb/js_stack)
2
2
 
3
3
  Standard JS SPA stack we use at netguru
4
4
 
@@ -53,10 +53,10 @@ Examples:
53
53
  | Library | Versions | Changelog | Homepage |
54
54
  | :-----: | :------: | :-------: | :------: |
55
55
  | backbone | **1.1.2**, 1.0.0 | [changelog](http://backbonejs.org/#changelog) | [homepage](http://backbonejs.org/) |
56
- | marionette | **2.0.1**, 1.8.8, 1.7.4, 1.6.4, 1.5.1, 1.4.1, 1.1.0 | [changelog](https://github.com/marionettejs/backbone.marionette/blob/master/changelog.md) | [homepage](http://marionettejs.com/) |
56
+ | marionette | **2.0.3**, 1.8.8, 1.7.4, 1.6.4, 1.5.1, 1.4.1, 1.1.0 | [changelog](https://github.com/marionettejs/backbone.marionette/blob/master/changelog.md) | [homepage](http://marionettejs.com/) |
57
57
  | underscore | **1.6.0**, 1.5.2 | [changelog](http://underscorejs.org/#changelog) | [homepage](http://underscorejs.org/) |
58
58
  | hamlcoffee | **1.16** | [changelog](https://github.com/netzpirat/haml_coffee_assets/blob/master/CHANGELOG.md) | [homepage](https://github.com/netzpirat/haml_coffee_assets) |
59
- | js-routes | **0.9.8** | none | [homepage](https://github.com/railsware/js-routes) |
59
+ | js-routes | **0.9.8** | [changelog](https://github.com/railsware/js-routes/blob/master/CHANGELOG.md) | [homepage](https://github.com/railsware/js-routes) |
60
60
 
61
61
  ### Plugins
62
62
 
@@ -66,13 +66,13 @@ Examples:
66
66
  | backbone deepmodel | **0.10.4** | [changelog](https://github.com/powmedia/backbone-deep-model#changelog) | [homepage](https://github.com/powmedia/backbone-deep-model) | Yes
67
67
  | backbone mutators | **0.4.2** | [changelog](https://github.com/asciidisco/Backbone.Mutators#changelog) | [homepage](https://github.com/asciidisco/Backbone.Mutators) | No
68
68
  | backbone pageable | **1.4.8**, 1.3.2 | [changelog](https://github.com/backbone-paginator/backbone-pageable#change-log) | [homepage](https://github.com/wyuenho/backbone-pageable) | Yes
69
- | backbone paginator | **2.0.1** | [changelog](https://github.com/backbone-paginator/backbone.paginator/wiki/Changelog) | [homepage](https://github.com/backbone-paginator/backbone.paginator) | No
69
+ | backbone paginator | **2.0.2** | [changelog](https://github.com/backbone-paginator/backbone.paginator/wiki/Changelog) | [homepage](https://github.com/backbone-paginator/backbone.paginator) | No
70
70
  | backbone routefilter | **0.2.1** | [changelog](https://github.com/boazsender/backbone.routefilter#release-history) | [homepage](https://github.com/boazsender/backbone.routefilter) | No
71
71
  | backbone stickit | **0.8.0**, 0.7.0, 0.6.3 | [changelog](http://nytimes.github.io/backbone.stickit/#change-log) | [homepage](http://nytimes.github.io/backbone.stickit/) | Yes
72
72
  | backbone validation | **0.9.1**, 0.8.1 | [changelog](https://github.com/thedersen/backbone.validation#release-notes) | [homepage](https://github.com/thedersen/backbone.validation) | Yes
73
- | backbone virtualcollection | **0.4.15** | [changelog](https://github.com/p3drosola/Backbone.VirtualCollection#changelog) | [homepage](https://github.com/p3drosola/Backbone.VirtualCollection) | Yes
73
+ | backbone virtualcollection | **0.5.0**, 0.4.15 | [changelog](https://github.com/p3drosola/Backbone.VirtualCollection#changelog) | [homepage](https://github.com/p3drosola/Backbone.VirtualCollection) | Yes
74
74
  | cocktail | **0.5.8** | none | [homepage](https://github.com/onsi/cocktail) | No
75
- | momentjs | **2.7.0** | [changelog](https://github.com/moment/moment/#changelog) | [homepage](https://github.com/derekprior/momentjs-rails) | No
75
+ | momentjs | **2.7.0** | [changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md) | [homepage](https://github.com/derekprior/momentjs-rails) | No
76
76
  | underscore inflections | **0.2.1** | none | [homepage](https://github.com/geetarista/underscore.inflections) | No
77
77
  | underscore string | **2.3.2** | [changelog](https://github.com/epeli/underscore.string#changelog) | [homepage](http://epeli.github.io/underscore.string/) | No
78
78
  > Default: library is included in `js_stack/plugins`
@@ -1,3 +1,3 @@
1
1
  module JsStack
2
- VERSION = '0.6.7'
2
+ VERSION = '0.6.8'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  // MarionetteJS (Backbone.Marionette)
2
2
  // ----------------------------------
3
- // v2.0.1
3
+ // v2.0.3
4
4
  //
5
5
  // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
6
6
  // Distributed under MIT license
@@ -489,7 +489,7 @@
489
489
 
490
490
  var Marionette = Backbone.Marionette = {};
491
491
 
492
- Marionette.VERSION = '2.0.1';
492
+ Marionette.VERSION = '2.0.3';
493
493
 
494
494
  Marionette.noConflict = function() {
495
495
  root.Marionette = previousMarionette;
@@ -589,7 +589,7 @@
589
589
  // Mix in methods from Underscore, for iteration, and other
590
590
  // collection related features.
591
591
  // Borrowing this code from Backbone.Collection:
592
- // http://backbonejs.org/docs/backbone.html#section-106
592
+ // http://backbonejs.org/docs/backbone.html#section-121
593
593
  Marionette.actAsCollection = function(object, listProperty) {
594
594
  var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
595
595
  'select', 'reject', 'every', 'all', 'some', 'any', 'include',
@@ -855,7 +855,6 @@
855
855
  // modules and routers, and as a mediator for workflow
856
856
  // and coordination of other objects, views, and more.
857
857
  Marionette.Controller = function(options) {
858
- this.triggerMethod = Marionette.triggerMethod;
859
858
  this.options = options || {};
860
859
 
861
860
  if (_.isFunction(this.initialize)) {
@@ -888,7 +887,7 @@
888
887
 
889
888
  });
890
889
 
891
- /* jshint maxcomplexity: 10, maxstatements: 27 */
890
+ /* jshint maxcomplexity: 10, maxstatements: 29 */
892
891
 
893
892
  // Region
894
893
  // ------
@@ -1044,6 +1043,13 @@
1044
1043
  var _shouldShowView = isDifferentView || forceShow;
1045
1044
 
1046
1045
  if (_shouldShowView) {
1046
+
1047
+ // We need to listen for if a view is destroyed
1048
+ // in a way other than through the region.
1049
+ // If this happens we need to remove the reference
1050
+ // to the currentView since once a view has been destroyed
1051
+ // we can not reuse it.
1052
+ view.once('destroy', _.bind(this.empty, this));
1047
1053
  view.render();
1048
1054
 
1049
1055
  if (isChangingView) {
@@ -1051,7 +1057,12 @@
1051
1057
  }
1052
1058
 
1053
1059
  this.triggerMethod('before:show', view);
1054
- this.triggerMethod.call(view, 'before:show');
1060
+
1061
+ if (_.isFunction(view.triggerMethod)) {
1062
+ view.triggerMethod('before:show');
1063
+ } else {
1064
+ this.triggerMethod.call(view, 'before:show');
1065
+ }
1055
1066
 
1056
1067
  this.attachHtml(view);
1057
1068
  this.currentView = view;
@@ -1103,19 +1114,31 @@
1103
1114
  // current view, it does nothing and returns immediately.
1104
1115
  empty: function() {
1105
1116
  var view = this.currentView;
1106
- if (!view || view.isDestroyed) { return; }
1107
1117
 
1108
- this.triggerMethod('before:empty', view);
1109
-
1110
- // call 'destroy' or 'remove', depending on which is found
1111
- if (view.destroy) { view.destroy(); }
1112
- else if (view.remove) { view.remove(); }
1118
+ // If there is no view in the region
1119
+ // we should not remove anything
1120
+ if (!view) { return; }
1113
1121
 
1122
+ this.triggerMethod('before:empty', view);
1123
+ this._destroyView();
1114
1124
  this.triggerMethod('empty', view);
1115
1125
 
1126
+ // Remove region pointer to the currentView
1116
1127
  delete this.currentView;
1117
1128
  },
1118
1129
 
1130
+ // call 'destroy' or 'remove', depending on which is found
1131
+ // on the view (if showing a raw Backbone view or a Marionette View)
1132
+ _destroyView: function() {
1133
+ var view = this.currentView;
1134
+
1135
+ if (view.destroy && !view.isDestroyed) {
1136
+ view.destroy();
1137
+ } else if (view.remove) {
1138
+ view.remove();
1139
+ }
1140
+ },
1141
+
1119
1142
  // Attach an existing view to the region. This
1120
1143
  // will not call `render` or `onShow` for the new view,
1121
1144
  // and will not replace the current HTML for the `el`
@@ -1855,20 +1878,18 @@
1855
1878
  // more control over events being triggered, around the rendering
1856
1879
  // process
1857
1880
  _renderChildren: function() {
1858
- this.startBuffering();
1859
-
1860
1881
  this.destroyEmptyView();
1861
1882
  this.destroyChildren();
1862
1883
 
1863
- if (!this.isEmpty(this.collection)) {
1884
+ if (this.isEmpty(this.collection)) {
1885
+ this.showEmptyView();
1886
+ } else {
1864
1887
  this.triggerMethod('before:render:collection', this);
1888
+ this.startBuffering();
1865
1889
  this.showCollection();
1890
+ this.endBuffering();
1866
1891
  this.triggerMethod('render:collection', this);
1867
- } else {
1868
- this.showEmptyView();
1869
1892
  }
1870
-
1871
- this.endBuffering();
1872
1893
  },
1873
1894
 
1874
1895
  // Internal method to loop through collection and show each child view.
@@ -2605,12 +2626,7 @@
2605
2626
  // Wraps several of the view's methods
2606
2627
  // calling the methods first on each behavior
2607
2628
  // and then eventually calling the method on the view.
2608
- Behaviors.wrap(view, behaviors, [
2609
- 'bindUIElements', 'unbindUIElements',
2610
- 'delegateEvents', 'undelegateEvents',
2611
- 'behaviorEvents', 'triggerMethod',
2612
- 'setElement', 'destroy'
2613
- ]);
2629
+ Behaviors.wrap(view, behaviors, _.keys(methods));
2614
2630
  }
2615
2631
 
2616
2632
  var methods = {
@@ -1 +1 @@
1
- //= require js_stack/base/marionette/2.0.1
1
+ //= require js_stack/base/marionette/2.0.3
@@ -1,5 +1,5 @@
1
1
  /*
2
- backbone.paginator 2.0.1
2
+ backbone.paginator 2.0.2
3
3
  http://github.com/backbone-paginator/backbone.paginator
4
4
 
5
5
  Copyright (c) 2013 Jimmy Yuen Ho Wong and contributors
@@ -63,7 +63,6 @@
63
63
  var _isObject = _.isObject;
64
64
  var _keys = _.keys;
65
65
  var _isUndefined = _.isUndefined;
66
- var _result = _.result;
67
66
  var ceil = Math.ceil;
68
67
  var floor = Math.floor;
69
68
  var max = Math.max;
@@ -1129,7 +1128,8 @@
1129
1128
  var data = options.data || {};
1130
1129
 
1131
1130
  // dedup query params
1132
- var url = _result(options, "url") || _result(this, "url") || '';
1131
+ var url = options.url || this.url || "";
1132
+ if (_isFunction(url)) url = url.call(this);
1133
1133
  var qsi = url.indexOf('?');
1134
1134
  if (qsi != -1) {
1135
1135
  _extend(data, queryStringToParams(url.slice(qsi + 1)));
@@ -0,0 +1,204 @@
1
+ (function (root, factory) {
2
+ if (typeof define === 'function' && define.amd) {
3
+ define(['backbone', 'underscore'], function (Backbone, _) {
4
+ Backbone.VirtualCollection = factory(root, Backbone, _);
5
+ root.VirtualCollection = Backbone.VirtualCollection;
6
+ });
7
+ } else if (typeof exports !== 'undefined') {
8
+ var Backbone = require('backbone');
9
+ var _ = require('underscore');
10
+ module.exports = factory(root, Backbone, _);
11
+ } else {
12
+ root.Backbone.VirtualCollection = factory(root, root.Backbone, root._);
13
+ root.VirtualCollection = root.Backbone.VirtualCollection;
14
+ }
15
+ }(this, function (root, Backbone, _) {
16
+ var VirtualCollection = Backbone.Collection.extend({
17
+
18
+ constructor: function (collection, options) {
19
+ options = options || {};
20
+ this.collection = collection;
21
+
22
+ if (options.comparator !== undefined) this.comparator = options.comparator;
23
+ if (options.close_with) this.bindLifecycle(options.close_with, 'close'); // Marionette 1.*
24
+ if (options.destroy_with) this.bindLifecycle(options.destroy_with, 'destroy'); // Marionette 2.*
25
+ if (!this.model) this.model = collection.model;
26
+
27
+ this.accepts = VirtualCollection.buildFilter(options.filter);
28
+ this._rebuildIndex();
29
+ this.listenTo(this.collection, 'add', this._onAdd);
30
+ this.listenTo(this.collection, 'remove', this._onRemove);
31
+ this.listenTo(this.collection, 'change', this._onChange);
32
+ this.listenTo(this.collection, 'reset', this._onReset);
33
+ this.listenTo(this.collection, 'sort', this._onSort);
34
+
35
+ this.initialize.apply(this, arguments);
36
+ },
37
+
38
+ // Marionette 1.*
39
+ bindLifecycle: function (view, method_name) {
40
+ view.on(method_name, _.bind(this.stopListening, this));
41
+ },
42
+
43
+ updateFilter: function (filter) {
44
+ this.accepts = VirtualCollection.buildFilter(filter);
45
+ this._rebuildIndex();
46
+ this.trigger('filter', this, filter);
47
+ this.trigger('reset', this, filter);
48
+ return this;
49
+ },
50
+
51
+ _rebuildIndex: function () {
52
+ this._reset();
53
+ this.collection.each(function (model, i) {
54
+ if (this.accepts(model, i)) {
55
+ this.models.push(model);
56
+ this._byId[model.cid] = model;
57
+ if (model.id) this._byId[model.id] = model;
58
+ }
59
+ }, this);
60
+ this.length = this.models.length;
61
+
62
+ if (this.comparator) this.sort({silent: true});
63
+ },
64
+
65
+ orderViaParent: function (options) {
66
+ this.models = this.collection.filter(function (model) {
67
+ return (this._byId[model.cid] !== undefined);
68
+ }, this);
69
+ if (!options.silent) this.trigger('sort', this, options);
70
+ },
71
+
72
+ _onSort: function (collection, options) {
73
+ if (this.comparator !== undefined) return;
74
+ this.orderViaParent(options);
75
+ },
76
+
77
+ _onAdd: function (model, collection, options) {
78
+ if (this.accepts(model, options.index)) {
79
+ this._indexAdd(model);
80
+ this.trigger('add', model, this, options);
81
+ }
82
+ },
83
+
84
+ _onRemove: function (model, collection, options) {
85
+ if (!this.get(model)) return;
86
+
87
+ var i = this._indexRemove(model)
88
+ , options_clone = _.clone(options);
89
+ options_clone.index = i;
90
+
91
+ this.trigger('remove', model, this, options_clone);
92
+ },
93
+
94
+ _onChange: function (model, options) {
95
+ var already_here = this.get(model);
96
+
97
+ if (this.accepts(model, options.index)) {
98
+ if (already_here) {
99
+ this.trigger('change', model, this, options);
100
+ } else {
101
+ this._indexAdd(model);
102
+ this.trigger('add', model, this, options);
103
+ }
104
+ } else {
105
+ if (already_here) {
106
+ var i = this._indexRemove(model)
107
+ , options_clone = _.clone(options);
108
+ options_clone.index = i;
109
+ this.trigger('remove', model, this, options_clone);
110
+ }
111
+ }
112
+ },
113
+
114
+ _onReset: function (collection, options) {
115
+ this._rebuildIndex();
116
+ this.trigger('reset', this, options);
117
+ },
118
+
119
+ sortedIndex: function (model, value, context) {
120
+ var iterator = _.isFunction(value) ? value : function(target) {
121
+ return target.get(value);
122
+ };
123
+
124
+ if (iterator.length == 1) {
125
+ return _.sortedIndex(this.models, model, iterator, context);
126
+ } else {
127
+ return sortedIndexTwo(this.models, model, iterator, context);
128
+ }
129
+ },
130
+
131
+ _indexAdd: function (model) {
132
+ if (this.get(model)) return;
133
+ var i;
134
+ // uses a binsearch to find the right index
135
+ if (this.comparator) {
136
+ i = this.sortedIndex(model, this.comparator, this);
137
+ } else if (this.comparator === undefined) {
138
+ i = this.sortedIndex(model, function (target) {
139
+ //TODO: indexOf traverses the array every time the iterator is called
140
+ return this.collection.indexOf(target);
141
+ }, this);
142
+ } else {
143
+ i = this.length;
144
+ }
145
+ this.models.splice(i, 0, model);
146
+ this._byId[model.cid] = model;
147
+ if (model.id) this._byId[model.id] = model;
148
+ this.length += 1;
149
+ },
150
+
151
+ _indexRemove: function (model) {
152
+ var i = this.indexOf(model);
153
+ if (i === -1) return i;
154
+ this.models.splice(i, 1);
155
+ delete this._byId[model.cid];
156
+ if (model.id) delete this._byId[model.id];
157
+ this.length -= 1;
158
+ return i;
159
+ }
160
+
161
+ }, { // static props
162
+
163
+ buildFilter: function (options) {
164
+ if (!options) {
165
+ return function () {
166
+ return true;
167
+ };
168
+ } else if (_.isFunction(options)) {
169
+ return options;
170
+ } else if (options.constructor === Object) {
171
+ return function (model) {
172
+ return !Boolean(_(Object.keys(options)).detect(function (key) {
173
+ return model.get(key) !== options[key];
174
+ }));
175
+ };
176
+ }
177
+ }
178
+ });
179
+
180
+ // methods that alter data should proxy to the parent collection
181
+ _.each(['add', 'remove', 'set', 'reset', 'push', 'pop', 'unshift', 'shift', 'slice', 'sync', 'fetch'], function (method_name) {
182
+ VirtualCollection.prototype[method_name] = function () {
183
+ return this.collection[method_name].apply(this.collection, _.toArray(arguments));
184
+ };
185
+ });
186
+
187
+ /**
188
+
189
+ Equivalent to _.sortedIndex, but for comparators with two arguments
190
+
191
+ **/
192
+ function sortedIndexTwo (array, obj, iterator, context) {
193
+ var low = 0, high = array.length;
194
+ while (low < high) {
195
+ var mid = (low + high) >>> 1;
196
+ iterator.call(context, obj, array[mid]) > 0 ? low = mid + 1 : high = mid;
197
+ }
198
+ return low;
199
+ }
200
+
201
+ _.extend(VirtualCollection.prototype, Backbone.Events);
202
+
203
+ return VirtualCollection;
204
+ }));
@@ -1 +1 @@
1
- //= require js_stack/plugins/backbone/paginator/2.0.1
1
+ //= require js_stack/plugins/backbone/paginator/2.0.2
@@ -1 +1 @@
1
- //= require js_stack/plugins/backbone/virtualcollection/0.4.15
1
+ //= require js_stack/plugins/backbone/virtualcollection/0.5.0
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: js_stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.7
4
+ version: 0.6.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomasz Pewiński
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-07-04 00:00:00.000000000 Z
12
+ date: 2014-07-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: haml_coffee_assets
@@ -113,7 +113,7 @@ files:
113
113
  - vendor/assets/javascripts/js_stack/base/marionette/1.6.4.js
114
114
  - vendor/assets/javascripts/js_stack/base/marionette/1.7.4.js
115
115
  - vendor/assets/javascripts/js_stack/base/marionette/1.8.8.js
116
- - vendor/assets/javascripts/js_stack/base/marionette/2.0.1.js
116
+ - vendor/assets/javascripts/js_stack/base/marionette/2.0.3.js
117
117
  - vendor/assets/javascripts/js_stack/base/underscore.js
118
118
  - vendor/assets/javascripts/js_stack/base/underscore/1.5.2.js
119
119
  - vendor/assets/javascripts/js_stack/base/underscore/1.6.0.js
@@ -133,7 +133,7 @@ files:
133
133
  - vendor/assets/javascripts/js_stack/plugins/backbone/mutators/0.4.2.js
134
134
  - vendor/assets/javascripts/js_stack/plugins/backbone/pageable/1.3.2.js
135
135
  - vendor/assets/javascripts/js_stack/plugins/backbone/pageable/1.4.8.js
136
- - vendor/assets/javascripts/js_stack/plugins/backbone/paginator/2.0.1.js
136
+ - vendor/assets/javascripts/js_stack/plugins/backbone/paginator/2.0.2.js
137
137
  - vendor/assets/javascripts/js_stack/plugins/backbone/routefilter/0.2.1.js
138
138
  - vendor/assets/javascripts/js_stack/plugins/backbone/stickit/0.6.3.js
139
139
  - vendor/assets/javascripts/js_stack/plugins/backbone/stickit/0.7.0.js
@@ -141,6 +141,7 @@ files:
141
141
  - vendor/assets/javascripts/js_stack/plugins/backbone/validation/0.8.1.js
142
142
  - vendor/assets/javascripts/js_stack/plugins/backbone/validation/0.9.1.js
143
143
  - vendor/assets/javascripts/js_stack/plugins/backbone/virtualcollection/0.4.15.js
144
+ - vendor/assets/javascripts/js_stack/plugins/backbone/virtualcollection/0.5.0.js
144
145
  - vendor/assets/javascripts/js_stack/plugins/cocktail.js
145
146
  - vendor/assets/javascripts/js_stack/plugins/cocktail/0.5.8.js
146
147
  - vendor/assets/javascripts/js_stack/plugins/moment.js