js_stack 0.6.2 → 0.6.3

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: 71219299a332d408c37bc2e88f96e248d756f33f
4
- data.tar.gz: 092c76d417560a4d394e8be1fc762cc75ddf5c07
3
+ metadata.gz: 859a7e59f443025858bedae178446651c40ae4fb
4
+ data.tar.gz: 93d28d6952ce9eba50d4e3f475bc13a75a3ff395
5
5
  SHA512:
6
- metadata.gz: 3d2c8fddb222803d7ed51098728d25fe0f308d277b61a477c31d24b2bfa62dc3042d716eb73e11553d931789c1533a2ea9785f2682c5f38e9e7e81f91505cd04
7
- data.tar.gz: 3ff6affc6ad629d39470e8eaffea250be399a12debf5a697a6f767749b30912bd2d7a3dae5681e09a26150f3a0706ab155dbe59e18cea021d60faa7940493a3e
6
+ metadata.gz: b03c12e5e0e285a106d6d317d881f62f5f6b0d896f5e08adfaebe00eef944eb7f5bf5cdeb36ec2d609a68748908fa5a8045847cc3777ded290c0aa9a87f012f1
7
+ data.tar.gz: 793a36439f627f0eaf7571d531b78df3d7c2d04391408d78864acbc7c753b95e3cbd7a143a2b2c1afa3bf35d87d2face11176a4ed2850b85986eb4a1c64f2884
data/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Changelog
2
2
 
3
+ # 0.6.3
4
+
5
+ * update backbone.routefilter 0.2.0 -> 0.2.1 [@gvl]
6
+ * update marionette 1.8.4 -> 1.8.5 [@gvl]
7
+
3
8
  # 0.6.2
4
9
 
5
10
  * update marionette 1.8.3 -> 1.8.4 and remove 1.8.3 version [@gvl]
data/README.md CHANGED
@@ -53,7 +53,7 @@ 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 | **1.8.4**, 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 | **1.8.5**, 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
59
  | js-routes | **0.9.7** | none | [homepage](https://github.com/railsware/js-routes) |
@@ -66,7 +66,7 @@ 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 routefilter | **0.2.0** | [changelog](https://github.com/boazsender/backbone.routefilter#release-history) | [homepage](https://github.com/boazsender/backbone.routefilter) | No
69
+ | backbone routefilter | **0.2.1** | [changelog](https://github.com/boazsender/backbone.routefilter#release-history) | [homepage](https://github.com/boazsender/backbone.routefilter) | No
70
70
  | 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
71
71
  | 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
72
72
  | backbone virtualcollection | **0.4.15** | [changelog](https://github.com/p3drosola/Backbone.VirtualCollection#changelog) | [homepage](https://github.com/p3drosola/Backbone.VirtualCollection) | Yes
@@ -1,3 +1,3 @@
1
1
  module JsStack
2
- VERSION = '0.6.2'
2
+ VERSION = '0.6.3'
3
3
  end
@@ -1,6 +1,6 @@
1
1
  // MarionetteJS (Backbone.Marionette)
2
2
  // ----------------------------------
3
- // v1.8.4
3
+ // v1.8.5
4
4
  //
5
5
  // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
6
6
  // Distributed under MIT license
@@ -17,637 +17,459 @@
17
17
  */
18
18
 
19
19
 
20
- // Backbone.BabySitter
21
- // -------------------
22
- // v0.1.2
23
- //
24
- // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
25
- // Distributed under MIT license
26
- //
27
- // http://github.com/marionettejs/backbone.babysitter
28
-
29
- (function(root, factory) {
30
-
31
- if (typeof define === 'function' && define.amd) {
32
- define(['exports', 'backbone', 'underscore'], function(exports, Backbone, _) {
33
- return factory(Backbone, _);
34
- });
35
- } else if (typeof exports !== 'undefined') {
36
- var Backbone = require('backbone');
37
- var _ = require('underscore');
38
- module.exports = factory(Backbone, _);
39
- } else {
40
- factory(root.Backbone, root._);
41
- }
42
-
43
- }(this, function(Backbone, _) {
20
+ var Marionette = (function(global, Backbone, _){
44
21
  "use strict";
45
22
 
46
- var previousChildViewContainer = Backbone.ChildViewContainer;
47
-
48
- // BabySitter.ChildViewContainer
49
- // -----------------------------
23
+ // Backbone.BabySitter
24
+ // -------------------
25
+ // v0.1.4
50
26
  //
51
- // Provide a container to store, retrieve and
52
- // shut down child views.
53
-
54
- Backbone.ChildViewContainer = (function (Backbone, _) {
55
-
56
- // Container Constructor
57
- // ---------------------
58
-
59
- var Container = function(views){
60
- this._views = {};
61
- this._indexByModel = {};
62
- this._indexByCustom = {};
63
- this._updateLength();
64
-
65
- _.each(views, this.add, this);
27
+ // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
28
+ // Distributed under MIT license
29
+ //
30
+ // http://github.com/marionettejs/backbone.babysitter
31
+ (function(Backbone, _) {
32
+ "use strict";
33
+ var previousChildViewContainer = Backbone.ChildViewContainer;
34
+ // BabySitter.ChildViewContainer
35
+ // -----------------------------
36
+ //
37
+ // Provide a container to store, retrieve and
38
+ // shut down child views.
39
+ Backbone.ChildViewContainer = function(Backbone, _) {
40
+ // Container Constructor
41
+ // ---------------------
42
+ var Container = function(views) {
43
+ this._views = {};
44
+ this._indexByModel = {};
45
+ this._indexByCustom = {};
46
+ this._updateLength();
47
+ _.each(views, this.add, this);
48
+ };
49
+ // Container Methods
50
+ // -----------------
51
+ _.extend(Container.prototype, {
52
+ // Add a view to this container. Stores the view
53
+ // by `cid` and makes it searchable by the model
54
+ // cid (and model itself). Optionally specify
55
+ // a custom key to store an retrieve the view.
56
+ add: function(view, customIndex) {
57
+ var viewCid = view.cid;
58
+ // store the view
59
+ this._views[viewCid] = view;
60
+ // index it by model
61
+ if (view.model) {
62
+ this._indexByModel[view.model.cid] = viewCid;
63
+ }
64
+ // index by custom
65
+ if (customIndex) {
66
+ this._indexByCustom[customIndex] = viewCid;
67
+ }
68
+ this._updateLength();
69
+ return this;
70
+ },
71
+ // Find a view by the model that was attached to
72
+ // it. Uses the model's `cid` to find it.
73
+ findByModel: function(model) {
74
+ return this.findByModelCid(model.cid);
75
+ },
76
+ // Find a view by the `cid` of the model that was attached to
77
+ // it. Uses the model's `cid` to find the view `cid` and
78
+ // retrieve the view using it.
79
+ findByModelCid: function(modelCid) {
80
+ var viewCid = this._indexByModel[modelCid];
81
+ return this.findByCid(viewCid);
82
+ },
83
+ // Find a view by a custom indexer.
84
+ findByCustom: function(index) {
85
+ var viewCid = this._indexByCustom[index];
86
+ return this.findByCid(viewCid);
87
+ },
88
+ // Find by index. This is not guaranteed to be a
89
+ // stable index.
90
+ findByIndex: function(index) {
91
+ return _.values(this._views)[index];
92
+ },
93
+ // retrieve a view by its `cid` directly
94
+ findByCid: function(cid) {
95
+ return this._views[cid];
96
+ },
97
+ // Remove a view
98
+ remove: function(view) {
99
+ var viewCid = view.cid;
100
+ // delete model index
101
+ if (view.model) {
102
+ delete this._indexByModel[view.model.cid];
103
+ }
104
+ // delete custom index
105
+ _.any(this._indexByCustom, function(cid, key) {
106
+ if (cid === viewCid) {
107
+ delete this._indexByCustom[key];
108
+ return true;
109
+ }
110
+ }, this);
111
+ // remove the view from the container
112
+ delete this._views[viewCid];
113
+ // update the length
114
+ this._updateLength();
115
+ return this;
116
+ },
117
+ // Call a method on every view in the container,
118
+ // passing parameters to the call method one at a
119
+ // time, like `function.call`.
120
+ call: function(method) {
121
+ this.apply(method, _.tail(arguments));
122
+ },
123
+ // Apply a method on every view in the container,
124
+ // passing parameters to the call method one at a
125
+ // time, like `function.apply`.
126
+ apply: function(method, args) {
127
+ _.each(this._views, function(view) {
128
+ if (_.isFunction(view[method])) {
129
+ view[method].apply(view, args || []);
130
+ }
131
+ });
132
+ },
133
+ // Update the `.length` attribute on this container
134
+ _updateLength: function() {
135
+ this.length = _.size(this._views);
136
+ }
137
+ });
138
+ // Borrowing this code from Backbone.Collection:
139
+ // http://backbonejs.org/docs/backbone.html#section-106
140
+ //
141
+ // Mix in methods from Underscore, for iteration, and other
142
+ // collection related features.
143
+ var methods = [ "forEach", "each", "map", "find", "detect", "filter", "select", "reject", "every", "all", "some", "any", "include", "contains", "invoke", "toArray", "first", "initial", "rest", "last", "without", "isEmpty", "pluck" ];
144
+ _.each(methods, function(method) {
145
+ Container.prototype[method] = function() {
146
+ var views = _.values(this._views);
147
+ var args = [ views ].concat(_.toArray(arguments));
148
+ return _[method].apply(_, args);
149
+ };
150
+ });
151
+ // return the public API
152
+ return Container;
153
+ }(Backbone, _);
154
+ Backbone.ChildViewContainer.VERSION = "0.1.4";
155
+ Backbone.ChildViewContainer.noConflict = function() {
156
+ Backbone.ChildViewContainer = previousChildViewContainer;
157
+ return this;
66
158
  };
67
-
68
- // Container Methods
69
- // -----------------
70
-
71
- _.extend(Container.prototype, {
72
-
73
- // Add a view to this container. Stores the view
74
- // by `cid` and makes it searchable by the model
75
- // cid (and model itself). Optionally specify
76
- // a custom key to store an retrieve the view.
77
- add: function(view, customIndex){
78
- var viewCid = view.cid;
79
-
80
- // store the view
81
- this._views[viewCid] = view;
82
-
83
- // index it by model
84
- if (view.model){
85
- this._indexByModel[view.model.cid] = viewCid;
159
+ return Backbone.ChildViewContainer;
160
+ })(Backbone, _);
161
+ // Backbone.Wreqr (Backbone.Marionette)
162
+ // ----------------------------------
163
+ // v1.3.1
164
+ //
165
+ // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
166
+ // Distributed under MIT license
167
+ //
168
+ // http://github.com/marionettejs/backbone.wreqr
169
+ (function(Backbone, _) {
170
+ "use strict";
171
+ var previousWreqr = Backbone.Wreqr;
172
+ var Wreqr = Backbone.Wreqr = {};
173
+ Backbone.Wreqr.VERSION = "1.3.1";
174
+ Backbone.Wreqr.noConflict = function() {
175
+ Backbone.Wreqr = previousWreqr;
176
+ return this;
177
+ };
178
+ // Handlers
179
+ // --------
180
+ // A registry of functions to call, given a name
181
+ Wreqr.Handlers = function(Backbone, _) {
182
+ "use strict";
183
+ // Constructor
184
+ // -----------
185
+ var Handlers = function(options) {
186
+ this.options = options;
187
+ this._wreqrHandlers = {};
188
+ if (_.isFunction(this.initialize)) {
189
+ this.initialize(options);
86
190
  }
87
-
88
- // index by custom
89
- if (customIndex){
90
- this._indexByCustom[customIndex] = viewCid;
191
+ };
192
+ Handlers.extend = Backbone.Model.extend;
193
+ // Instance Members
194
+ // ----------------
195
+ _.extend(Handlers.prototype, Backbone.Events, {
196
+ // Add multiple handlers using an object literal configuration
197
+ setHandlers: function(handlers) {
198
+ _.each(handlers, function(handler, name) {
199
+ var context = null;
200
+ if (_.isObject(handler) && !_.isFunction(handler)) {
201
+ context = handler.context;
202
+ handler = handler.callback;
203
+ }
204
+ this.setHandler(name, handler, context);
205
+ }, this);
206
+ },
207
+ // Add a handler for the given name, with an
208
+ // optional context to run the handler within
209
+ setHandler: function(name, handler, context) {
210
+ var config = {
211
+ callback: handler,
212
+ context: context
213
+ };
214
+ this._wreqrHandlers[name] = config;
215
+ this.trigger("handler:add", name, handler, context);
216
+ },
217
+ // Determine whether or not a handler is registered
218
+ hasHandler: function(name) {
219
+ return !!this._wreqrHandlers[name];
220
+ },
221
+ // Get the currently registered handler for
222
+ // the specified name. Throws an exception if
223
+ // no handler is found.
224
+ getHandler: function(name) {
225
+ var config = this._wreqrHandlers[name];
226
+ if (!config) {
227
+ return;
228
+ }
229
+ return function() {
230
+ var args = Array.prototype.slice.apply(arguments);
231
+ return config.callback.apply(config.context, args);
232
+ };
233
+ },
234
+ // Remove a handler for the specified name
235
+ removeHandler: function(name) {
236
+ delete this._wreqrHandlers[name];
237
+ },
238
+ // Remove all handlers from this registry
239
+ removeAllHandlers: function() {
240
+ this._wreqrHandlers = {};
91
241
  }
92
-
93
- this._updateLength();
94
- return this;
95
- },
96
-
97
- // Find a view by the model that was attached to
98
- // it. Uses the model's `cid` to find it.
99
- findByModel: function(model){
100
- return this.findByModelCid(model.cid);
101
- },
102
-
103
- // Find a view by the `cid` of the model that was attached to
104
- // it. Uses the model's `cid` to find the view `cid` and
105
- // retrieve the view using it.
106
- findByModelCid: function(modelCid){
107
- var viewCid = this._indexByModel[modelCid];
108
- return this.findByCid(viewCid);
109
- },
110
-
111
- // Find a view by a custom indexer.
112
- findByCustom: function(index){
113
- var viewCid = this._indexByCustom[index];
114
- return this.findByCid(viewCid);
115
- },
116
-
117
- // Find by index. This is not guaranteed to be a
118
- // stable index.
119
- findByIndex: function(index){
120
- return _.values(this._views)[index];
121
- },
122
-
123
- // retrieve a view by its `cid` directly
124
- findByCid: function(cid){
125
- return this._views[cid];
126
- },
127
-
128
- // Remove a view
129
- remove: function(view){
130
- var viewCid = view.cid;
131
-
132
- // delete model index
133
- if (view.model){
134
- delete this._indexByModel[view.model.cid];
242
+ });
243
+ return Handlers;
244
+ }(Backbone, _);
245
+ // Wreqr.CommandStorage
246
+ // --------------------
247
+ //
248
+ // Store and retrieve commands for execution.
249
+ Wreqr.CommandStorage = function() {
250
+ "use strict";
251
+ // Constructor function
252
+ var CommandStorage = function(options) {
253
+ this.options = options;
254
+ this._commands = {};
255
+ if (_.isFunction(this.initialize)) {
256
+ this.initialize(options);
135
257
  }
136
-
137
- // delete custom index
138
- _.any(this._indexByCustom, function(cid, key) {
139
- if (cid === viewCid) {
140
- delete this._indexByCustom[key];
141
- return true;
258
+ };
259
+ // Instance methods
260
+ _.extend(CommandStorage.prototype, Backbone.Events, {
261
+ // Get an object literal by command name, that contains
262
+ // the `commandName` and the `instances` of all commands
263
+ // represented as an array of arguments to process
264
+ getCommands: function(commandName) {
265
+ var commands = this._commands[commandName];
266
+ // we don't have it, so add it
267
+ if (!commands) {
268
+ // build the configuration
269
+ commands = {
270
+ command: commandName,
271
+ instances: []
272
+ };
273
+ // store it
274
+ this._commands[commandName] = commands;
142
275
  }
143
- }, this);
144
-
145
- // remove the view from the container
146
- delete this._views[viewCid];
147
-
148
- // update the length
149
- this._updateLength();
150
- return this;
151
- },
152
-
153
- // Call a method on every view in the container,
154
- // passing parameters to the call method one at a
155
- // time, like `function.call`.
156
- call: function(method){
157
- this.apply(method, _.tail(arguments));
158
- },
159
-
160
- // Apply a method on every view in the container,
161
- // passing parameters to the call method one at a
162
- // time, like `function.apply`.
163
- apply: function(method, args){
164
- _.each(this._views, function(view){
165
- if (_.isFunction(view[method])){
166
- view[method].apply(view, args || []);
276
+ return commands;
277
+ },
278
+ // Add a command by name, to the storage and store the
279
+ // args for the command
280
+ addCommand: function(commandName, args) {
281
+ var command = this.getCommands(commandName);
282
+ command.instances.push(args);
283
+ },
284
+ // Clear all commands for the given `commandName`
285
+ clearCommands: function(commandName) {
286
+ var command = this.getCommands(commandName);
287
+ command.instances = [];
288
+ }
289
+ });
290
+ return CommandStorage;
291
+ }();
292
+ // Wreqr.Commands
293
+ // --------------
294
+ //
295
+ // A simple command pattern implementation. Register a command
296
+ // handler and execute it.
297
+ Wreqr.Commands = function(Wreqr) {
298
+ "use strict";
299
+ return Wreqr.Handlers.extend({
300
+ // default storage type
301
+ storageType: Wreqr.CommandStorage,
302
+ constructor: function(options) {
303
+ this.options = options || {};
304
+ this._initializeStorage(this.options);
305
+ this.on("handler:add", this._executeCommands, this);
306
+ var args = Array.prototype.slice.call(arguments);
307
+ Wreqr.Handlers.prototype.constructor.apply(this, args);
308
+ },
309
+ // Execute a named command with the supplied args
310
+ execute: function(name, args) {
311
+ name = arguments[0];
312
+ args = Array.prototype.slice.call(arguments, 1);
313
+ if (this.hasHandler(name)) {
314
+ this.getHandler(name).apply(this, args);
315
+ } else {
316
+ this.storage.addCommand(name, args);
167
317
  }
168
- });
169
- },
170
-
171
- // Update the `.length` attribute on this container
172
- _updateLength: function(){
173
- this.length = _.size(this._views);
174
- }
175
- });
176
-
177
- // Borrowing this code from Backbone.Collection:
178
- // http://backbonejs.org/docs/backbone.html#section-106
318
+ },
319
+ // Internal method to handle bulk execution of stored commands
320
+ _executeCommands: function(name, handler, context) {
321
+ var command = this.storage.getCommands(name);
322
+ // loop through and execute all the stored command instances
323
+ _.each(command.instances, function(args) {
324
+ handler.apply(context, args);
325
+ });
326
+ this.storage.clearCommands(name);
327
+ },
328
+ // Internal method to initialize storage either from the type's
329
+ // `storageType` or the instance `options.storageType`.
330
+ _initializeStorage: function(options) {
331
+ var storage;
332
+ var StorageType = options.storageType || this.storageType;
333
+ if (_.isFunction(StorageType)) {
334
+ storage = new StorageType();
335
+ } else {
336
+ storage = StorageType;
337
+ }
338
+ this.storage = storage;
339
+ }
340
+ });
341
+ }(Wreqr);
342
+ // Wreqr.RequestResponse
343
+ // ---------------------
344
+ //
345
+ // A simple request/response implementation. Register a
346
+ // request handler, and return a response from it
347
+ Wreqr.RequestResponse = function(Wreqr) {
348
+ "use strict";
349
+ return Wreqr.Handlers.extend({
350
+ request: function() {
351
+ var name = arguments[0];
352
+ var args = Array.prototype.slice.call(arguments, 1);
353
+ if (this.hasHandler(name)) {
354
+ return this.getHandler(name).apply(this, args);
355
+ }
356
+ }
357
+ });
358
+ }(Wreqr);
359
+ // Event Aggregator
360
+ // ----------------
361
+ // A pub-sub object that can be used to decouple various parts
362
+ // of an application through event-driven architecture.
363
+ Wreqr.EventAggregator = function(Backbone, _) {
364
+ "use strict";
365
+ var EA = function() {};
366
+ // Copy the `extend` function used by Backbone's classes
367
+ EA.extend = Backbone.Model.extend;
368
+ // Copy the basic Backbone.Events on to the event aggregator
369
+ _.extend(EA.prototype, Backbone.Events);
370
+ return EA;
371
+ }(Backbone, _);
372
+ // Wreqr.Channel
373
+ // --------------
179
374
  //
180
- // Mix in methods from Underscore, for iteration, and other
181
- // collection related features.
182
- var methods = ['forEach', 'each', 'map', 'find', 'detect', 'filter',
183
- 'select', 'reject', 'every', 'all', 'some', 'any', 'include',
184
- 'contains', 'invoke', 'toArray', 'first', 'initial', 'rest',
185
- 'last', 'without', 'isEmpty', 'pluck'];
186
-
187
- _.each(methods, function(method) {
188
- Container.prototype[method] = function() {
189
- var views = _.values(this._views);
190
- var args = [views].concat(_.toArray(arguments));
191
- return _[method].apply(_, args);
375
+ // An object that wraps the three messaging systems:
376
+ // EventAggregator, RequestResponse, Commands
377
+ Wreqr.Channel = function(Wreqr) {
378
+ "use strict";
379
+ var Channel = function(channelName) {
380
+ this.vent = new Backbone.Wreqr.EventAggregator();
381
+ this.reqres = new Backbone.Wreqr.RequestResponse();
382
+ this.commands = new Backbone.Wreqr.Commands();
383
+ this.channelName = channelName;
192
384
  };
193
- });
194
-
195
- // return the public API
196
- return Container;
197
- })(Backbone, _);
198
-
199
- Backbone.ChildViewContainer.VERSION = '0.1.2';
200
-
201
- Backbone.ChildViewContainer.noConflict = function () {
202
- Backbone.ChildViewContainer = previousChildViewContainer;
203
- return this;
204
- };
205
-
206
- return Backbone.ChildViewContainer;
207
-
208
- }));
209
-
210
- // Backbone.Wreqr (Backbone.Marionette)
211
- // ----------------------------------
212
- // v1.3.0
213
- //
214
- // Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
215
- // Distributed under MIT license
216
- //
217
- // http://github.com/marionettejs/backbone.wreqr
218
-
219
-
220
- (function(root, factory) {
221
-
222
- if (typeof define === 'function' && define.amd) {
223
- define(['exports', 'backbone', 'underscore'], function(exports, Backbone, _) {
224
- factory(exports, Backbone, _);
225
- });
226
- } else if (typeof exports !== 'undefined') {
227
- var Backbone = require('backbone');
228
- var _ = require('underscore');
229
- factory(exports, Backbone, _);
230
- } else {
231
- factory({}, root.Backbone, root._);
232
- }
233
-
234
- }(this, function(Wreqr, Backbone, _) {
235
- "use strict";
236
-
237
- var previousWreqr = Backbone.Wreqr;
238
-
239
- Backbone.Wreqr = Wreqr;
240
-
241
- Backbone.Wreqr.VERSION = '1.3.0';
242
-
243
- Backbone.Wreqr.noConflict = function () {
244
- Backbone.Wreqr = previousWreqr;
245
- return this;
246
- };
247
-
248
- // Handlers
249
- // --------
250
- // A registry of functions to call, given a name
251
-
252
- Wreqr.Handlers = (function(Backbone, _){
253
- "use strict";
254
-
255
- // Constructor
256
- // -----------
257
-
258
- var Handlers = function(options){
259
- this.options = options;
260
- this._wreqrHandlers = {};
261
-
262
- if (_.isFunction(this.initialize)){
263
- this.initialize(options);
264
- }
265
- };
266
-
267
- Handlers.extend = Backbone.Model.extend;
268
-
269
- // Instance Members
270
- // ----------------
271
-
272
- _.extend(Handlers.prototype, Backbone.Events, {
273
-
274
- // Add multiple handlers using an object literal configuration
275
- setHandlers: function(handlers){
276
- _.each(handlers, function(handler, name){
277
- var context = null;
278
-
279
- if (_.isObject(handler) && !_.isFunction(handler)){
280
- context = handler.context;
281
- handler = handler.callback;
385
+ _.extend(Channel.prototype, {
386
+ // Remove all handlers from the messaging systems of this channel
387
+ reset: function() {
388
+ this.vent.off();
389
+ this.vent.stopListening();
390
+ this.reqres.removeAllHandlers();
391
+ this.commands.removeAllHandlers();
392
+ return this;
393
+ },
394
+ // Connect a hash of events; one for each messaging system
395
+ connectEvents: function(hash, context) {
396
+ this._connect("vent", hash, context);
397
+ return this;
398
+ },
399
+ connectCommands: function(hash, context) {
400
+ this._connect("commands", hash, context);
401
+ return this;
402
+ },
403
+ connectRequests: function(hash, context) {
404
+ this._connect("reqres", hash, context);
405
+ return this;
406
+ },
407
+ // Attach the handlers to a given message system `type`
408
+ _connect: function(type, hash, context) {
409
+ if (!hash) {
410
+ return;
411
+ }
412
+ context = context || this;
413
+ var method = type === "vent" ? "on" : "setHandler";
414
+ _.each(hash, function(fn, eventName) {
415
+ this[type][method](eventName, _.bind(fn, context));
416
+ }, this);
282
417
  }
283
-
284
- this.setHandler(name, handler, context);
285
- }, this);
286
- },
287
-
288
- // Add a handler for the given name, with an
289
- // optional context to run the handler within
290
- setHandler: function(name, handler, context){
291
- var config = {
292
- callback: handler,
293
- context: context
418
+ });
419
+ return Channel;
420
+ }(Wreqr);
421
+ // Wreqr.Radio
422
+ // --------------
423
+ //
424
+ // An object that lets you communicate with many channels.
425
+ Wreqr.radio = function(Wreqr) {
426
+ "use strict";
427
+ var Radio = function() {
428
+ this._channels = {};
429
+ this.vent = {};
430
+ this.commands = {};
431
+ this.reqres = {};
432
+ this._proxyMethods();
294
433
  };
295
-
296
- this._wreqrHandlers[name] = config;
297
-
298
- this.trigger("handler:add", name, handler, context);
299
- },
300
-
301
- // Determine whether or not a handler is registered
302
- hasHandler: function(name){
303
- return !! this._wreqrHandlers[name];
304
- },
305
-
306
- // Get the currently registered handler for
307
- // the specified name. Throws an exception if
308
- // no handler is found.
309
- getHandler: function(name){
310
- var config = this._wreqrHandlers[name];
311
-
312
- if (!config){
313
- return;
314
- }
315
-
316
- return function(){
317
- var args = Array.prototype.slice.apply(arguments);
318
- return config.callback.apply(config.context, args);
434
+ _.extend(Radio.prototype, {
435
+ channel: function(channelName) {
436
+ if (!channelName) {
437
+ throw new Error("Channel must receive a name");
438
+ }
439
+ return this._getChannel(channelName);
440
+ },
441
+ _getChannel: function(channelName) {
442
+ var channel = this._channels[channelName];
443
+ if (!channel) {
444
+ channel = new Wreqr.Channel(channelName);
445
+ this._channels[channelName] = channel;
446
+ }
447
+ return channel;
448
+ },
449
+ _proxyMethods: function() {
450
+ _.each([ "vent", "commands", "reqres" ], function(system) {
451
+ _.each(messageSystems[system], function(method) {
452
+ this[system][method] = proxyMethod(this, system, method);
453
+ }, this);
454
+ }, this);
455
+ }
456
+ });
457
+ var messageSystems = {
458
+ vent: [ "on", "off", "trigger", "once", "stopListening", "listenTo", "listenToOnce" ],
459
+ commands: [ "execute", "setHandler", "setHandlers", "removeHandler", "removeAllHandlers" ],
460
+ reqres: [ "request", "setHandler", "setHandlers", "removeHandler", "removeAllHandlers" ]
319
461
  };
320
- },
321
-
322
- // Remove a handler for the specified name
323
- removeHandler: function(name){
324
- delete this._wreqrHandlers[name];
325
- },
326
-
327
- // Remove all handlers from this registry
328
- removeAllHandlers: function(){
329
- this._wreqrHandlers = {};
330
- }
331
- });
332
-
333
- return Handlers;
334
- })(Backbone, _);
335
-
336
- // Wreqr.CommandStorage
337
- // --------------------
338
- //
339
- // Store and retrieve commands for execution.
340
- Wreqr.CommandStorage = (function(){
341
- "use strict";
342
-
343
- // Constructor function
344
- var CommandStorage = function(options){
345
- this.options = options;
346
- this._commands = {};
347
-
348
- if (_.isFunction(this.initialize)){
349
- this.initialize(options);
350
- }
351
- };
352
-
353
- // Instance methods
354
- _.extend(CommandStorage.prototype, Backbone.Events, {
355
-
356
- // Get an object literal by command name, that contains
357
- // the `commandName` and the `instances` of all commands
358
- // represented as an array of arguments to process
359
- getCommands: function(commandName){
360
- var commands = this._commands[commandName];
361
-
362
- // we don't have it, so add it
363
- if (!commands){
364
-
365
- // build the configuration
366
- commands = {
367
- command: commandName,
368
- instances: []
462
+ var proxyMethod = function(radio, system, method) {
463
+ return function(channelName) {
464
+ var messageSystem = radio._getChannel(channelName)[system];
465
+ var args = Array.prototype.slice.call(arguments, 1);
466
+ return messageSystem[method].apply(messageSystem, args);
369
467
  };
370
-
371
- // store it
372
- this._commands[commandName] = commands;
373
- }
374
-
375
- return commands;
376
- },
377
-
378
- // Add a command by name, to the storage and store the
379
- // args for the command
380
- addCommand: function(commandName, args){
381
- var command = this.getCommands(commandName);
382
- command.instances.push(args);
383
- },
384
-
385
- // Clear all commands for the given `commandName`
386
- clearCommands: function(commandName){
387
- var command = this.getCommands(commandName);
388
- command.instances = [];
389
- }
390
- });
391
-
392
- return CommandStorage;
393
- })();
394
-
395
- // Wreqr.Commands
396
- // --------------
397
- //
398
- // A simple command pattern implementation. Register a command
399
- // handler and execute it.
400
- Wreqr.Commands = (function(Wreqr){
401
- "use strict";
402
-
403
- return Wreqr.Handlers.extend({
404
- // default storage type
405
- storageType: Wreqr.CommandStorage,
406
-
407
- constructor: function(options){
408
- this.options = options || {};
409
-
410
- this._initializeStorage(this.options);
411
- this.on("handler:add", this._executeCommands, this);
412
-
413
- var args = Array.prototype.slice.call(arguments);
414
- Wreqr.Handlers.prototype.constructor.apply(this, args);
415
- },
416
-
417
- // Execute a named command with the supplied args
418
- execute: function(name, args){
419
- name = arguments[0];
420
- args = Array.prototype.slice.call(arguments, 1);
421
-
422
- if (this.hasHandler(name)){
423
- this.getHandler(name).apply(this, args);
424
- } else {
425
- this.storage.addCommand(name, args);
426
- }
427
-
428
- },
429
-
430
- // Internal method to handle bulk execution of stored commands
431
- _executeCommands: function(name, handler, context){
432
- var command = this.storage.getCommands(name);
433
-
434
- // loop through and execute all the stored command instances
435
- _.each(command.instances, function(args){
436
- handler.apply(context, args);
437
- });
438
-
439
- this.storage.clearCommands(name);
440
- },
441
-
442
- // Internal method to initialize storage either from the type's
443
- // `storageType` or the instance `options.storageType`.
444
- _initializeStorage: function(options){
445
- var storage;
446
-
447
- var StorageType = options.storageType || this.storageType;
448
- if (_.isFunction(StorageType)){
449
- storage = new StorageType();
450
- } else {
451
- storage = StorageType;
452
- }
453
-
454
- this.storage = storage;
455
- }
456
- });
457
-
458
- })(Wreqr);
459
-
460
- // Wreqr.RequestResponse
461
- // ---------------------
462
- //
463
- // A simple request/response implementation. Register a
464
- // request handler, and return a response from it
465
- Wreqr.RequestResponse = (function(Wreqr){
466
- "use strict";
467
-
468
- return Wreqr.Handlers.extend({
469
- request: function(){
470
- var name = arguments[0];
471
- var args = Array.prototype.slice.call(arguments, 1);
472
- if (this.hasHandler(name)) {
473
- return this.getHandler(name).apply(this, args);
474
- }
475
- }
476
- });
477
-
478
- })(Wreqr);
479
-
480
- // Event Aggregator
481
- // ----------------
482
- // A pub-sub object that can be used to decouple various parts
483
- // of an application through event-driven architecture.
484
-
485
- Wreqr.EventAggregator = (function(Backbone, _){
486
- "use strict";
487
- var EA = function(){};
488
-
489
- // Copy the `extend` function used by Backbone's classes
490
- EA.extend = Backbone.Model.extend;
491
-
492
- // Copy the basic Backbone.Events on to the event aggregator
493
- _.extend(EA.prototype, Backbone.Events);
494
-
495
- return EA;
496
- })(Backbone, _);
497
-
498
- // Wreqr.Channel
499
- // --------------
500
- //
501
- // An object that wraps the three messaging systems:
502
- // EventAggregator, RequestResponse, Commands
503
- Wreqr.Channel = (function(Wreqr){
504
- "use strict";
505
-
506
- var Channel = function(channelName) {
507
- this.vent = new Backbone.Wreqr.EventAggregator();
508
- this.reqres = new Backbone.Wreqr.RequestResponse();
509
- this.commands = new Backbone.Wreqr.Commands();
510
- this.channelName = channelName;
511
- };
512
-
513
- _.extend(Channel.prototype, {
514
-
515
- // Remove all handlers from the messaging systems of this channel
516
- reset: function() {
517
- this.vent.off();
518
- this.vent.stopListening();
519
- this.reqres.removeAllHandlers();
520
- this.commands.removeAllHandlers();
521
- return this;
522
- },
523
-
524
- // Connect a hash of events; one for each messaging system
525
- connectEvents: function(hash, context) {
526
- this._connect('vent', hash, context);
527
- return this;
528
- },
529
-
530
- connectCommands: function(hash, context) {
531
- this._connect('commands', hash, context);
532
- return this;
533
- },
534
-
535
- connectRequests: function(hash, context) {
536
- this._connect('reqres', hash, context);
537
- return this;
538
- },
539
-
540
- // Attach the handlers to a given message system `type`
541
- _connect: function(type, hash, context) {
542
- if (!hash) {
543
- return;
544
- }
545
-
546
- context = context || this;
547
- var method = (type === 'vent') ? 'on' : 'setHandler';
548
-
549
- _.each(hash, function(fn, eventName) {
550
- this[type][method](eventName, _.bind(fn, context));
551
- }, this);
552
- }
553
- });
554
-
555
-
556
- return Channel;
557
- })(Wreqr);
558
-
559
- // Wreqr.Radio
560
- // --------------
561
- //
562
- // An object that lets you communicate with many channels.
563
- Wreqr.radio = (function(Wreqr){
564
- "use strict";
565
-
566
- var Radio = function() {
567
- this._channels = {};
568
- this.vent = {};
569
- this.commands = {};
570
- this.reqres = {};
571
- this._proxyMethods();
572
- };
573
-
574
- _.extend(Radio.prototype, {
575
-
576
- channel: function(channelName) {
577
- if (!channelName) {
578
- throw new Error('Channel must receive a name');
579
- }
580
-
581
- return this._getChannel( channelName );
582
- },
583
-
584
- _getChannel: function(channelName) {
585
- var channel = this._channels[channelName];
586
-
587
- if(!channel) {
588
- channel = new Wreqr.Channel(channelName);
589
- this._channels[channelName] = channel;
590
- }
591
-
592
- return channel;
593
- },
594
-
595
- _proxyMethods: function() {
596
- _.each(['vent', 'commands', 'reqres'], function(system) {
597
- _.each( messageSystems[system], function(method) {
598
- this[system][method] = proxyMethod(this, system, method);
599
- }, this);
600
- }, this);
601
- }
602
- });
603
-
604
-
605
- var messageSystems = {
606
- vent: [
607
- 'on',
608
- 'off',
609
- 'trigger',
610
- 'once',
611
- 'stopListening',
612
- 'listenTo',
613
- 'listenToOnce'
614
- ],
615
-
616
- commands: [
617
- 'execute',
618
- 'setHandler',
619
- 'setHandlers',
620
- 'removeHandler',
621
- 'removeAllHandlers'
622
- ],
623
-
624
- reqres: [
625
- 'request',
626
- 'setHandler',
627
- 'setHandlers',
628
- 'removeHandler',
629
- 'removeAllHandlers'
630
- ]
631
- };
632
-
633
- var proxyMethod = function(radio, system, method) {
634
- return function(channelName) {
635
- var messageSystem = radio._getChannel(channelName)[system];
636
- var args = Array.prototype.slice.call(arguments, 1);
637
-
638
- return messageSystem[method].apply(messageSystem, args);
639
- };
640
- };
641
-
642
- return new Radio();
643
-
644
- })(Wreqr);
645
-
646
-
647
- }));
648
-
649
- var Marionette = (function(global, Backbone, _){
650
- "use strict";
468
+ };
469
+ return new Radio();
470
+ }(Wreqr);
471
+ return Backbone.Wreqr;
472
+ })(Backbone, _);
651
473
 
652
474
  // Define and export the Marionette namespace
653
475
  var Marionette = {};
@@ -1 +1 @@
1
- //= require js_stack/base/marionette/1.8.4
1
+ //= require js_stack/base/marionette/1.8.5
@@ -1,8 +1,16 @@
1
- /*! backbone.routefilter - v0.2.0 - 2013-02-16
1
+ /*! backbone.routefilter - v0.2.1 - 2014-05-06
2
2
  * https://github.com/boazsender/backbone.routefilter
3
- * Copyright (c) 2013 Boaz Sender; Licensed MIT */
4
-
5
- (function(Backbone, _) {
3
+ * Copyright (c) 2014 Boaz Sender; Licensed MIT */
4
+
5
+ (function(factory) {
6
+ if (typeof define === 'function' && define.amd) {
7
+ define(['backbone', 'underscore'], factory);
8
+ } else if (typeof exports === 'object') {
9
+ module.exports = factory(require('backbone'), require('underscore'));
10
+ } else {
11
+ factory(window.Backbone, window._);
12
+ }
13
+ })(function(Backbone, _) {
6
14
 
7
15
  // Save a reference to the original route method to be called
8
16
  // after we pave it over.
@@ -117,4 +125,4 @@
117
125
 
118
126
  });
119
127
 
120
- }(Backbone, _));
128
+ });
@@ -1 +1 @@
1
- //= require js_stack/plugins/backbone/routefilter/0.2.0
1
+ //= require js_stack/plugins/backbone/routefilter/0.2.1
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.2
4
+ version: 0.6.3
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-05-05 00:00:00.000000000 Z
12
+ date: 2014-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: haml_coffee_assets
@@ -112,7 +112,7 @@ files:
112
112
  - vendor/assets/javascripts/js_stack/base/marionette/1.5.1.js
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
- - vendor/assets/javascripts/js_stack/base/marionette/1.8.4.js
115
+ - vendor/assets/javascripts/js_stack/base/marionette/1.8.5.js
116
116
  - vendor/assets/javascripts/js_stack/base/underscore.js
117
117
  - vendor/assets/javascripts/js_stack/base/underscore/1.5.2.js
118
118
  - vendor/assets/javascripts/js_stack/base/underscore/1.6.0.js
@@ -131,7 +131,7 @@ files:
131
131
  - vendor/assets/javascripts/js_stack/plugins/backbone/mutators/0.4.2.js
132
132
  - vendor/assets/javascripts/js_stack/plugins/backbone/pageable/1.3.2.js
133
133
  - vendor/assets/javascripts/js_stack/plugins/backbone/pageable/1.4.8.js
134
- - vendor/assets/javascripts/js_stack/plugins/backbone/routefilter/0.2.0.js
134
+ - vendor/assets/javascripts/js_stack/plugins/backbone/routefilter/0.2.1.js
135
135
  - vendor/assets/javascripts/js_stack/plugins/backbone/stickit/0.6.3.js
136
136
  - vendor/assets/javascripts/js_stack/plugins/backbone/stickit/0.7.0.js
137
137
  - vendor/assets/javascripts/js_stack/plugins/backbone/stickit/0.8.0.js