mirror of
https://github.com/wahyd4/cdnjs.git
synced 2026-08-13 14:55:54 +10:00
add backbone.babysitter v0.0.5/0.0.6/0.1.0/0.1.1
This commit is contained in:
@@ -0,0 +1,198 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.0.5
|
||||
//
|
||||
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/babysitterjs/backbone.babysitter
|
||||
|
||||
// Backbone.ChildViewContainer
|
||||
// ---------------------------
|
||||
//
|
||||
// Provide a container to store, retrieve and
|
||||
// shut down child views.
|
||||
|
||||
Backbone.ChildViewContainer = (function(Backbone, _){
|
||||
|
||||
// Container Constructor
|
||||
// ---------------------
|
||||
|
||||
var Container = function(initialViews){
|
||||
this._views = {};
|
||||
this._indexByModel = {};
|
||||
this._indexByCollection = {};
|
||||
this._indexByCustom = {};
|
||||
this._updateLength();
|
||||
|
||||
this._addInitialViews(initialViews);
|
||||
};
|
||||
|
||||
// Container Methods
|
||||
// -----------------
|
||||
|
||||
_.extend(Container.prototype, {
|
||||
|
||||
// Add a view to this container. Stores the view
|
||||
// by `cid` and makes it searchable by the model
|
||||
// and/or collection of the view. Optionally specify
|
||||
// a custom key to store an retrieve the view.
|
||||
add: function(view, customIndex){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// store the view
|
||||
this._views[viewCid] = view;
|
||||
|
||||
// index it by model
|
||||
if (view.model){
|
||||
this._indexByModel[view.model.cid] = viewCid;
|
||||
}
|
||||
|
||||
// index it by collection
|
||||
if (view.collection){
|
||||
this._indexByCollection[view.collection.cid] = viewCid;
|
||||
}
|
||||
|
||||
// index by custom
|
||||
if (customIndex){
|
||||
this._indexByCustom[customIndex] = viewCid;
|
||||
}
|
||||
|
||||
this._updateLength();
|
||||
},
|
||||
|
||||
// Find a view by the model that was attached to
|
||||
// it. Uses the model's `cid` to find it, and
|
||||
// retrieves the view by it's `cid` from the result
|
||||
findByModel: function(model){
|
||||
var viewCid = this._indexByModel[model.cid];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find a view by the collection that was attached to
|
||||
// it. Uses the collection's `cid` to find it, and
|
||||
// retrieves the view by it's `cid` from the result
|
||||
findByCollection: function(col){
|
||||
var viewCid = this._indexByCollection[col.cid];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find a view by a custom indexer.
|
||||
findByCustom: function(index){
|
||||
var viewCid = this._indexByCustom[index];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find by index. This is not guaranteed to be a
|
||||
// stable index.
|
||||
findByIndex: function(index){
|
||||
return _.values(this._views)[index];
|
||||
},
|
||||
|
||||
// retrieve a view by it's `cid` directly
|
||||
findByCid: function(cid){
|
||||
return this._views[cid];
|
||||
},
|
||||
|
||||
// Remove a view
|
||||
remove: function(view){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// delete model index
|
||||
if (view.model){
|
||||
delete this._indexByModel[view.model.cid];
|
||||
}
|
||||
|
||||
// delete collection index
|
||||
if (view.collection){
|
||||
delete this._indexByCollection[view.collection.cid];
|
||||
}
|
||||
|
||||
// delete custom index
|
||||
var cust;
|
||||
|
||||
for (var key in this._indexByCustom){
|
||||
if (this._indexByCustom.hasOwnProperty(key)){
|
||||
if (this._indexByCustom[key] === viewCid){
|
||||
cust = key;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (cust){
|
||||
delete this._indexByCustom[cust];
|
||||
}
|
||||
|
||||
// remove the view from the container
|
||||
delete this._views[viewCid];
|
||||
|
||||
// update the length
|
||||
this._updateLength();
|
||||
},
|
||||
|
||||
// Call a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.call`.
|
||||
call: function(method, args){
|
||||
args = Array.prototype.slice.call(arguments, 1);
|
||||
this.apply(method, args);
|
||||
},
|
||||
|
||||
// Apply a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.apply`.
|
||||
apply: function(method, args){
|
||||
var view;
|
||||
|
||||
// fix for IE < 9
|
||||
args = args || [];
|
||||
|
||||
_.each(this._views, function(view, key){
|
||||
if (_.isFunction(view[method])){
|
||||
view[method].apply(view, args);
|
||||
}
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
// Update the `.length` attribute on this container
|
||||
_updateLength: function(){
|
||||
this.length = _.size(this._views);
|
||||
},
|
||||
|
||||
// set up an initial list of views
|
||||
_addInitialViews: function(views){
|
||||
if (!views){ return; }
|
||||
|
||||
var view, i,
|
||||
length = views.length;
|
||||
|
||||
for (i=0; i<length; i++){
|
||||
view = views[i];
|
||||
this.add(view);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Borrowing this code from Backbone.Collection:
|
||||
// http://backbonejs.org/docs/backbone.html#section-106
|
||||
//
|
||||
// Mix in methods from Underscore, for iteration, and other
|
||||
// collection related features.
|
||||
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'];
|
||||
|
||||
_.each(methods, function(method) {
|
||||
Container.prototype[method] = function() {
|
||||
var views = _.values(this._views);
|
||||
var args = [views].concat(_.toArray(arguments));
|
||||
return _[method].apply(_, args);
|
||||
};
|
||||
});
|
||||
|
||||
// return the public API
|
||||
return Container;
|
||||
})(Backbone, _);
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"lib/backbone.babysitter.min.js","sources":["?"],"names":["Backbone","ChildViewContainer","_","Container","initialViews","this","_views","_indexByModel","_indexByCollection","_indexByCustom","_updateLength","_addInitialViews","extend","prototype","add","view","customIndex","viewCid","cid","model","collection","findByModel","findByCid","findByCollection","col","findByCustom","index","findByIndex","values","remove","cust","key","hasOwnProperty","call","method","args","Array","slice","arguments","apply","each","isFunction","length","size","views","i","methods","concat","toArray"],"mappings":"AAeAA,SAASC,mBAAqB,SAAUD,EAAUE,GAKhD,GAAIC,GAAY,SAASC,GACvBC,KAAKC,UACLD,KAAKE,iBACLF,KAAKG,sBACLH,KAAKI,kBACLJ,KAAKK,gBAELL,KAAKM,iBAAiBP,GAMxBF,GAAEU,OAAOT,EAAUU,WAMjBC,IAAK,SAASC,EAAMC,GAClB,GAAIC,GAAUF,EAAKG,GAGnBb,MAAKC,OAAOW,GAAWF,EAGnBA,EAAKI,QACPd,KAAKE,cAAcQ,EAAKI,MAAMD,KAAOD,GAInCF,EAAKK,aACPf,KAAKG,mBAAmBO,EAAKK,WAAWF,KAAOD,GAI7CD,IACFX,KAAKI,eAAeO,GAAeC,GAGrCZ,KAAKK,iBAMPW,YAAa,SAASF,GACpB,GAAIF,GAAUZ,KAAKE,cAAcY,EAAMD,IACvC,OAAOb,MAAKiB,UAAUL,IAMxBM,iBAAkB,SAASC,GACzB,GAAIP,GAAUZ,KAAKG,mBAAmBgB,EAAIN,IAC1C,OAAOb,MAAKiB,UAAUL,IAIxBQ,aAAc,SAASC,GACrB,GAAIT,GAAUZ,KAAKI,eAAeiB,EAClC,OAAOrB,MAAKiB,UAAUL,IAKxBU,YAAa,SAASD,GACpB,MAAOxB,GAAE0B,OAAOvB,KAAKC,QAAQoB,IAI/BJ,UAAW,SAASJ,GAClB,MAAOb,MAAKC,OAAOY,IAIrBW,OAAQ,SAASd,GACf,GAAIE,GAAUF,EAAKG,GAGfH,GAAKI,aACAd,MAAKE,cAAcQ,EAAKI,MAAMD,KAInCH,EAAKK,kBACAf,MAAKG,mBAAmBO,EAAKK,WAAWF,IAIjD,IAAIY,EAEJ,KAAK,GAAIC,KAAO1B,MAAKI,eACnB,GAAIJ,KAAKI,eAAeuB,eAAeD,IACjC1B,KAAKI,eAAesB,KAASd,EAAQ,CACvCa,EAAOC,CACP,OAKFD,SACKzB,MAAKI,eAAeqB,SAItBzB,MAAKC,OAAOW,GAGnBZ,KAAKK,iBAMPuB,KAAM,SAASC,EAAQC,GACrBA,EAAOC,MAAMvB,UAAUwB,MAAMJ,KAAKK,UAAW,GAC7CjC,KAAKkC,MAAML,EAAQC,IAMrBI,MAAO,SAASL,EAAQC,GAItBA,EAAOA,MAEPjC,EAAEsC,KAAKnC,KAAKC,OAAQ,SAASS,GACvBb,EAAEuC,WAAW1B,EAAKmB,KACpBnB,EAAKmB,GAAQK,MAAMxB,EAAMoB,MAO/BzB,cAAe,WACbL,KAAKqC,OAASxC,EAAEyC,KAAKtC,KAAKC,SAI5BK,iBAAkB,SAASiC,GACzB,GAAKA,EAAL,CAEA,GAAI7B,GAAM8B,EACNH,EAASE,EAAMF,MAEnB,KAAKG,EAAE,EAAKH,EAAFG,EAAUA,IAClB9B,EAAO6B,EAAMC,GACbxC,KAAKS,IAAIC,MAUf,IAAI+B,IAAW,UAAW,OAAQ,MAAO,OAAQ,SAAU,SACzD,SAAU,SAAU,QAAS,MAAO,OAAQ,MAAO,UACnD,WAAY,SAAU,UAAW,QAAS,UAAW,OACrD,OAAQ,UAAW,UAAW,QAWhC,OATA5C,GAAEsC,KAAKM,EAAS,SAASZ,GACvB/B,EAAUU,UAAUqB,GAAU,WAC5B,GAAIU,GAAQ1C,EAAE0B,OAAOvB,KAAKC,QACtB6B,GAAQS,GAAOG,OAAO7C,EAAE8C,QAAQV,WACpC,OAAOpC,GAAEgC,GAAQK,MAAMrC,EAAGiC,MAKvBhC,GACNH,SAAUE"}
|
||||
@@ -0,0 +1,11 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.0.5
|
||||
//
|
||||
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/babysitterjs/backbone.babysitter
|
||||
|
||||
Backbone.ChildViewContainer=function(i,t){var e=function(i){this._views={},this._indexByModel={},this._indexByCollection={},this._indexByCustom={},this._updateLength(),this._addInitialViews(i)};t.extend(e.prototype,{add:function(i,t){var e=i.cid;this._views[e]=i,i.model&&(this._indexByModel[i.model.cid]=e),i.collection&&(this._indexByCollection[i.collection.cid]=e),t&&(this._indexByCustom[t]=e),this._updateLength()},findByModel:function(i){var t=this._indexByModel[i.cid];return this.findByCid(t)},findByCollection:function(i){var t=this._indexByCollection[i.cid];return this.findByCid(t)},findByCustom:function(i){var t=this._indexByCustom[i];return this.findByCid(t)},findByIndex:function(i){return t.values(this._views)[i]},findByCid:function(i){return this._views[i]},remove:function(i){var t=i.cid;i.model&&delete this._indexByModel[i.model.cid],i.collection&&delete this._indexByCollection[i.collection.cid];var e;for(var n in this._indexByCustom)if(this._indexByCustom.hasOwnProperty(n)&&this._indexByCustom[n]===t){e=n;break}e&&delete this._indexByCustom[e],delete this._views[t],this._updateLength()},call:function(i,t){t=Array.prototype.slice.call(arguments,1),this.apply(i,t)},apply:function(i,e){e=e||[],t.each(this._views,function(n){t.isFunction(n[i])&&n[i].apply(n,e)})},_updateLength:function(){this.length=t.size(this._views)},_addInitialViews:function(i){if(i){var t,e,n=i.length;for(e=0;n>e;e++)t=i[e],this.add(t)}}});var n=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return t.each(n,function(i){e.prototype[i]=function(){var e=t.values(this._views),n=[e].concat(t.toArray(arguments));return t[i].apply(t,n)}}),e}(Backbone,_);
|
||||
//@ sourceMappingURL=backbone.babysitter.map
|
||||
@@ -0,0 +1,157 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.0.6
|
||||
//
|
||||
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/babysitterjs/backbone.babysitter
|
||||
|
||||
// Backbone.ChildViewContainer
|
||||
// ---------------------------
|
||||
//
|
||||
// Provide a container to store, retrieve and
|
||||
// shut down child views.
|
||||
|
||||
Backbone.ChildViewContainer = (function(Backbone, _){
|
||||
|
||||
// Container Constructor
|
||||
// ---------------------
|
||||
|
||||
var Container = function(views){
|
||||
this._views = {};
|
||||
this._indexByModel = {};
|
||||
this._indexByCustom = {};
|
||||
this._updateLength();
|
||||
|
||||
_.each(views, this.add, this);
|
||||
};
|
||||
|
||||
// Container Methods
|
||||
// -----------------
|
||||
|
||||
_.extend(Container.prototype, {
|
||||
|
||||
// Add a view to this container. Stores the view
|
||||
// by `cid` and makes it searchable by the model
|
||||
// cid (and model itself). Optionally specify
|
||||
// a custom key to store an retrieve the view.
|
||||
add: function(view, customIndex){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// store the view
|
||||
this._views[viewCid] = view;
|
||||
|
||||
// index it by model
|
||||
if (view.model){
|
||||
this._indexByModel[view.model.cid] = viewCid;
|
||||
}
|
||||
|
||||
// index by custom
|
||||
if (customIndex){
|
||||
this._indexByCustom[customIndex] = viewCid;
|
||||
}
|
||||
|
||||
this._updateLength();
|
||||
},
|
||||
|
||||
// Find a view by the model that was attached to
|
||||
// it. Uses the model's `cid` to find it.
|
||||
findByModel: function(model){
|
||||
return this.findByModelCid(model.cid);
|
||||
},
|
||||
|
||||
// Find a view by the `cid` of the model that was attached to
|
||||
// it. Uses the model's `cid` to find the view `cid` and
|
||||
// retrieve the view using it.
|
||||
findByModelCid: function(modelCid){
|
||||
var viewCid = this._indexByModel[modelCid];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find a view by a custom indexer.
|
||||
findByCustom: function(index){
|
||||
var viewCid = this._indexByCustom[index];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find by index. This is not guaranteed to be a
|
||||
// stable index.
|
||||
findByIndex: function(index){
|
||||
return _.values(this._views)[index];
|
||||
},
|
||||
|
||||
// retrieve a view by it's `cid` directly
|
||||
findByCid: function(cid){
|
||||
return this._views[cid];
|
||||
},
|
||||
|
||||
// Remove a view
|
||||
remove: function(view){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// delete model index
|
||||
if (view.model){
|
||||
delete this._indexByModel[view.model.cid];
|
||||
}
|
||||
|
||||
// delete custom index
|
||||
_.any(this._indexByCustom, function(cid, key) {
|
||||
if (cid === viewCid) {
|
||||
delete this._indexByCustom[key];
|
||||
return true;
|
||||
}
|
||||
}, this);
|
||||
|
||||
// remove the view from the container
|
||||
delete this._views[viewCid];
|
||||
|
||||
// update the length
|
||||
this._updateLength();
|
||||
},
|
||||
|
||||
// Call a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.call`.
|
||||
call: function(method){
|
||||
this.apply(method, _.tail(arguments));
|
||||
},
|
||||
|
||||
// Apply a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.apply`.
|
||||
apply: function(method, args){
|
||||
_.each(this._views, function(view){
|
||||
if (_.isFunction(view[method])){
|
||||
view[method].apply(view, args || []);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// Update the `.length` attribute on this container
|
||||
_updateLength: function(){
|
||||
this.length = _.size(this._views);
|
||||
}
|
||||
});
|
||||
|
||||
// Borrowing this code from Backbone.Collection:
|
||||
// http://backbonejs.org/docs/backbone.html#section-106
|
||||
//
|
||||
// Mix in methods from Underscore, for iteration, and other
|
||||
// collection related features.
|
||||
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'];
|
||||
|
||||
_.each(methods, function(method) {
|
||||
Container.prototype[method] = function() {
|
||||
var views = _.values(this._views);
|
||||
var args = [views].concat(_.toArray(arguments));
|
||||
return _[method].apply(_, args);
|
||||
};
|
||||
});
|
||||
|
||||
// return the public API
|
||||
return Container;
|
||||
})(Backbone, _);
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"lib/backbone.babysitter.min.js","sources":["?"],"names":["Backbone","ChildViewContainer","_","Container","views","this","_views","_indexByModel","_indexByCustom","_updateLength","each","add","extend","prototype","view","customIndex","viewCid","cid","model","findByModel","findByModelCid","modelCid","findByCid","findByCustom","index","findByIndex","values","remove","any","key","call","method","apply","tail","arguments","args","isFunction","length","size","methods","concat","toArray"],"mappings":"AAeAA,SAASC,mBAAqB,SAAUD,EAAUE,GAKhD,GAAIC,GAAY,SAASC,GACvBC,KAAKC,UACLD,KAAKE,iBACLF,KAAKG,kBACLH,KAAKI,gBAELP,EAAEQ,KAAKN,EAAOC,KAAKM,IAAKN,MAM1BH,GAAEU,OAAOT,EAAUU,WAMjBF,IAAK,SAASG,EAAMC,GAClB,GAAIC,GAAUF,EAAKG,GAGnBZ,MAAKC,OAAOU,GAAWF,EAGnBA,EAAKI,QACPb,KAAKE,cAAcO,EAAKI,MAAMD,KAAOD,GAInCD,IACFV,KAAKG,eAAeO,GAAeC,GAGrCX,KAAKI,iBAKPU,YAAa,SAASD,GACpB,MAAOb,MAAKe,eAAeF,EAAMD,MAMnCG,eAAgB,SAASC,GACvB,GAAIL,GAAUX,KAAKE,cAAcc,EACjC,OAAOhB,MAAKiB,UAAUN,IAIxBO,aAAc,SAASC,GACrB,GAAIR,GAAUX,KAAKG,eAAegB,EAClC,OAAOnB,MAAKiB,UAAUN,IAKxBS,YAAa,SAASD,GACpB,MAAOtB,GAAEwB,OAAOrB,KAAKC,QAAQkB,IAI/BF,UAAW,SAASL,GAClB,MAAOZ,MAAKC,OAAOW,IAIrBU,OAAQ,SAASb,GACf,GAAIE,GAAUF,EAAKG,GAGfH,GAAKI,aACAb,MAAKE,cAAcO,EAAKI,MAAMD,KAIvCf,EAAE0B,IAAIvB,KAAKG,eAAgB,SAASS,EAAKY,GACvC,MAAIZ,KAAQD,SACHX,MAAKG,eAAeqB,IACpB,GAFT,QAICxB,YAGIA,MAAKC,OAAOU,GAGnBX,KAAKI,iBAMPqB,KAAM,SAASC,GACb1B,KAAK2B,MAAMD,EAAQ7B,EAAE+B,KAAKC,aAM5BF,MAAO,SAASD,EAAQI,GACtBjC,EAAEQ,KAAKL,KAAKC,OAAQ,SAASQ,GACvBZ,EAAEkC,WAAWtB,EAAKiB,KACpBjB,EAAKiB,GAAQC,MAAMlB,EAAMqB,UAM/B1B,cAAe,WACbJ,KAAKgC,OAASnC,EAAEoC,KAAKjC,KAAKC,UAS9B,IAAIiC,IAAW,UAAW,OAAQ,MAAO,OAAQ,SAAU,SACzD,SAAU,SAAU,QAAS,MAAO,OAAQ,MAAO,UACnD,WAAY,SAAU,UAAW,QAAS,UAAW,OACrD,OAAQ,UAAW,UAAW,QAWhC,OATArC,GAAEQ,KAAK6B,EAAS,SAASR,GACvB5B,EAAUU,UAAUkB,GAAU,WAC5B,GAAI3B,GAAQF,EAAEwB,OAAOrB,KAAKC,QACtB6B,GAAQ/B,GAAOoC,OAAOtC,EAAEuC,QAAQP,WACpC,OAAOhC,GAAE6B,GAAQC,MAAM9B,EAAGiC,MAKvBhC,GACNH,SAAUE"}
|
||||
@@ -0,0 +1,11 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.0.6
|
||||
//
|
||||
// Copyright (c)2013 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/babysitterjs/backbone.babysitter
|
||||
|
||||
Backbone.ChildViewContainer=function(i,t){var e=function(i){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),t.each(i,this.add,this)};t.extend(e.prototype,{add:function(i,t){var e=i.cid;this._views[e]=i,i.model&&(this._indexByModel[i.model.cid]=e),t&&(this._indexByCustom[t]=e),this._updateLength()},findByModel:function(i){return this.findByModelCid(i.cid)},findByModelCid:function(i){var t=this._indexByModel[i];return this.findByCid(t)},findByCustom:function(i){var t=this._indexByCustom[i];return this.findByCid(t)},findByIndex:function(i){return t.values(this._views)[i]},findByCid:function(i){return this._views[i]},remove:function(i){var e=i.cid;i.model&&delete this._indexByModel[i.model.cid],t.any(this._indexByCustom,function(i,t){return i===e?(delete this._indexByCustom[t],!0):void 0},this),delete this._views[e],this._updateLength()},call:function(i){this.apply(i,t.tail(arguments))},apply:function(i,e){t.each(this._views,function(n){t.isFunction(n[i])&&n[i].apply(n,e||[])})},_updateLength:function(){this.length=t.size(this._views)}});var n=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return t.each(n,function(i){e.prototype[i]=function(){var e=t.values(this._views),n=[e].concat(t.toArray(arguments));return t[i].apply(t,n)}}),e}(Backbone,_);
|
||||
//@ sourceMappingURL=backbone.babysitter.map
|
||||
@@ -0,0 +1,159 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.1.0
|
||||
//
|
||||
// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/marionettejs/backbone.babysitter
|
||||
|
||||
// Backbone.ChildViewContainer
|
||||
// ---------------------------
|
||||
//
|
||||
// Provide a container to store, retrieve and
|
||||
// shut down child views.
|
||||
|
||||
Backbone.ChildViewContainer = (function(Backbone, _){
|
||||
|
||||
// Container Constructor
|
||||
// ---------------------
|
||||
|
||||
var Container = function(views){
|
||||
this._views = {};
|
||||
this._indexByModel = {};
|
||||
this._indexByCustom = {};
|
||||
this._updateLength();
|
||||
|
||||
_.each(views, this.add, this);
|
||||
};
|
||||
|
||||
// Container Methods
|
||||
// -----------------
|
||||
|
||||
_.extend(Container.prototype, {
|
||||
|
||||
// Add a view to this container. Stores the view
|
||||
// by `cid` and makes it searchable by the model
|
||||
// cid (and model itself). Optionally specify
|
||||
// a custom key to store an retrieve the view.
|
||||
add: function(view, customIndex){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// store the view
|
||||
this._views[viewCid] = view;
|
||||
|
||||
// index it by model
|
||||
if (view.model){
|
||||
this._indexByModel[view.model.cid] = viewCid;
|
||||
}
|
||||
|
||||
// index by custom
|
||||
if (customIndex){
|
||||
this._indexByCustom[customIndex] = viewCid;
|
||||
}
|
||||
|
||||
this._updateLength();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Find a view by the model that was attached to
|
||||
// it. Uses the model's `cid` to find it.
|
||||
findByModel: function(model){
|
||||
return this.findByModelCid(model.cid);
|
||||
},
|
||||
|
||||
// Find a view by the `cid` of the model that was attached to
|
||||
// it. Uses the model's `cid` to find the view `cid` and
|
||||
// retrieve the view using it.
|
||||
findByModelCid: function(modelCid){
|
||||
var viewCid = this._indexByModel[modelCid];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find a view by a custom indexer.
|
||||
findByCustom: function(index){
|
||||
var viewCid = this._indexByCustom[index];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find by index. This is not guaranteed to be a
|
||||
// stable index.
|
||||
findByIndex: function(index){
|
||||
return _.values(this._views)[index];
|
||||
},
|
||||
|
||||
// retrieve a view by its `cid` directly
|
||||
findByCid: function(cid){
|
||||
return this._views[cid];
|
||||
},
|
||||
|
||||
// Remove a view
|
||||
remove: function(view){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// delete model index
|
||||
if (view.model){
|
||||
delete this._indexByModel[view.model.cid];
|
||||
}
|
||||
|
||||
// delete custom index
|
||||
_.any(this._indexByCustom, function(cid, key) {
|
||||
if (cid === viewCid) {
|
||||
delete this._indexByCustom[key];
|
||||
return true;
|
||||
}
|
||||
}, this);
|
||||
|
||||
// remove the view from the container
|
||||
delete this._views[viewCid];
|
||||
|
||||
// update the length
|
||||
this._updateLength();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Call a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.call`.
|
||||
call: function(method){
|
||||
this.apply(method, _.tail(arguments));
|
||||
},
|
||||
|
||||
// Apply a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.apply`.
|
||||
apply: function(method, args){
|
||||
_.each(this._views, function(view){
|
||||
if (_.isFunction(view[method])){
|
||||
view[method].apply(view, args || []);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// Update the `.length` attribute on this container
|
||||
_updateLength: function(){
|
||||
this.length = _.size(this._views);
|
||||
}
|
||||
});
|
||||
|
||||
// Borrowing this code from Backbone.Collection:
|
||||
// http://backbonejs.org/docs/backbone.html#section-106
|
||||
//
|
||||
// Mix in methods from Underscore, for iteration, and other
|
||||
// collection related features.
|
||||
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'];
|
||||
|
||||
_.each(methods, function(method) {
|
||||
Container.prototype[method] = function() {
|
||||
var views = _.values(this._views);
|
||||
var args = [views].concat(_.toArray(arguments));
|
||||
return _[method].apply(_, args);
|
||||
};
|
||||
});
|
||||
|
||||
// return the public API
|
||||
return Container;
|
||||
})(Backbone, _);
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"lib/backbone.babysitter.min.js","sources":["?"],"names":["Backbone","ChildViewContainer","_","Container","views","this","_views","_indexByModel","_indexByCustom","_updateLength","each","add","extend","prototype","view","customIndex","viewCid","cid","model","findByModel","findByModelCid","modelCid","findByCid","findByCustom","index","findByIndex","values","remove","any","key","call","method","apply","tail","arguments","args","isFunction","length","size","methods","concat","toArray"],"mappings":"AAeAA,SAASC,mBAAqB,SAAUD,EAAUE,GAKhD,GAAIC,GAAY,SAASC,GACvBC,KAAKC,UACLD,KAAKE,iBACLF,KAAKG,kBACLH,KAAKI,gBAELP,EAAEQ,KAAKN,EAAOC,KAAKM,IAAKN,MAM1BH,GAAEU,OAAOT,EAAUU,WAMjBF,IAAK,SAASG,EAAMC,GAClB,GAAIC,GAAUF,EAAKG,GAgBnB,OAbAZ,MAAKC,OAAOU,GAAWF,EAGnBA,EAAKI,QACPb,KAAKE,cAAcO,EAAKI,MAAMD,KAAOD,GAInCD,IACFV,KAAKG,eAAeO,GAAeC,GAGrCX,KAAKI,gBACEJ,MAKTc,YAAa,SAASD,GACpB,MAAOb,MAAKe,eAAeF,EAAMD,MAMnCG,eAAgB,SAASC,GACvB,GAAIL,GAAUX,KAAKE,cAAcc,EACjC,OAAOhB,MAAKiB,UAAUN,IAIxBO,aAAc,SAASC,GACrB,GAAIR,GAAUX,KAAKG,eAAegB,EAClC,OAAOnB,MAAKiB,UAAUN,IAKxBS,YAAa,SAASD,GACpB,MAAOtB,GAAEwB,OAAOrB,KAAKC,QAAQkB,IAI/BF,UAAW,SAASL,GAClB,MAAOZ,MAAKC,OAAOW,IAIrBU,OAAQ,SAASb,GACf,GAAIE,GAAUF,EAAKG,GAoBnB,OAjBIH,GAAKI,aACAb,MAAKE,cAAcO,EAAKI,MAAMD,KAIvCf,EAAE0B,IAAIvB,KAAKG,eAAgB,SAASS,EAAKY,GACvC,MAAIZ,KAAQD,SACHX,MAAKG,eAAeqB,IACpB,GAFT,QAICxB,YAGIA,MAAKC,OAAOU,GAGnBX,KAAKI,gBACEJ,MAMTyB,KAAM,SAASC,GACb1B,KAAK2B,MAAMD,EAAQ7B,EAAE+B,KAAKC,aAM5BF,MAAO,SAASD,EAAQI,GACtBjC,EAAEQ,KAAKL,KAAKC,OAAQ,SAASQ,GACvBZ,EAAEkC,WAAWtB,EAAKiB,KACpBjB,EAAKiB,GAAQC,MAAMlB,EAAMqB,UAM/B1B,cAAe,WACbJ,KAAKgC,OAASnC,EAAEoC,KAAKjC,KAAKC,UAS9B,IAAIiC,IAAW,UAAW,OAAQ,MAAO,OAAQ,SAAU,SACzD,SAAU,SAAU,QAAS,MAAO,OAAQ,MAAO,UACnD,WAAY,SAAU,UAAW,QAAS,UAAW,OACrD,OAAQ,UAAW,UAAW,QAWhC,OATArC,GAAEQ,KAAK6B,EAAS,SAASR,GACvB5B,EAAUU,UAAUkB,GAAU,WAC5B,GAAI3B,GAAQF,EAAEwB,OAAOrB,KAAKC,QACtB6B,GAAQ/B,GAAOoC,OAAOtC,EAAEuC,QAAQP,WACpC,OAAOhC,GAAE6B,GAAQC,MAAM9B,EAAGiC,MAKvBhC,GACNH,SAAUE"}
|
||||
@@ -0,0 +1,11 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.1.0
|
||||
//
|
||||
// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/marionettejs/backbone.babysitter
|
||||
|
||||
Backbone.ChildViewContainer=function(i,t){var e=function(i){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),t.each(i,this.add,this)};t.extend(e.prototype,{add:function(i,t){var e=i.cid;return this._views[e]=i,i.model&&(this._indexByModel[i.model.cid]=e),t&&(this._indexByCustom[t]=e),this._updateLength(),this},findByModel:function(i){return this.findByModelCid(i.cid)},findByModelCid:function(i){var t=this._indexByModel[i];return this.findByCid(t)},findByCustom:function(i){var t=this._indexByCustom[i];return this.findByCid(t)},findByIndex:function(i){return t.values(this._views)[i]},findByCid:function(i){return this._views[i]},remove:function(i){var e=i.cid;return i.model&&delete this._indexByModel[i.model.cid],t.any(this._indexByCustom,function(i,t){return i===e?(delete this._indexByCustom[t],!0):void 0},this),delete this._views[e],this._updateLength(),this},call:function(i){this.apply(i,t.tail(arguments))},apply:function(i,e){t.each(this._views,function(n){t.isFunction(n[i])&&n[i].apply(n,e||[])})},_updateLength:function(){this.length=t.size(this._views)}});var n=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return t.each(n,function(i){e.prototype[i]=function(){var e=t.values(this._views),n=[e].concat(t.toArray(arguments));return t[i].apply(t,n)}}),e}(Backbone,_);
|
||||
//@ sourceMappingURL=backbone.babysitter.map
|
||||
@@ -0,0 +1,159 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.1.0
|
||||
//
|
||||
// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/marionettejs/backbone.babysitter
|
||||
|
||||
// Backbone.ChildViewContainer
|
||||
// ---------------------------
|
||||
//
|
||||
// Provide a container to store, retrieve and
|
||||
// shut down child views.
|
||||
|
||||
Backbone.ChildViewContainer = (function(Backbone, _){
|
||||
|
||||
// Container Constructor
|
||||
// ---------------------
|
||||
|
||||
var Container = function(views){
|
||||
this._views = {};
|
||||
this._indexByModel = {};
|
||||
this._indexByCustom = {};
|
||||
this._updateLength();
|
||||
|
||||
_.each(views, this.add, this);
|
||||
};
|
||||
|
||||
// Container Methods
|
||||
// -----------------
|
||||
|
||||
_.extend(Container.prototype, {
|
||||
|
||||
// Add a view to this container. Stores the view
|
||||
// by `cid` and makes it searchable by the model
|
||||
// cid (and model itself). Optionally specify
|
||||
// a custom key to store an retrieve the view.
|
||||
add: function(view, customIndex){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// store the view
|
||||
this._views[viewCid] = view;
|
||||
|
||||
// index it by model
|
||||
if (view.model){
|
||||
this._indexByModel[view.model.cid] = viewCid;
|
||||
}
|
||||
|
||||
// index by custom
|
||||
if (customIndex){
|
||||
this._indexByCustom[customIndex] = viewCid;
|
||||
}
|
||||
|
||||
this._updateLength();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Find a view by the model that was attached to
|
||||
// it. Uses the model's `cid` to find it.
|
||||
findByModel: function(model){
|
||||
return this.findByModelCid(model.cid);
|
||||
},
|
||||
|
||||
// Find a view by the `cid` of the model that was attached to
|
||||
// it. Uses the model's `cid` to find the view `cid` and
|
||||
// retrieve the view using it.
|
||||
findByModelCid: function(modelCid){
|
||||
var viewCid = this._indexByModel[modelCid];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find a view by a custom indexer.
|
||||
findByCustom: function(index){
|
||||
var viewCid = this._indexByCustom[index];
|
||||
return this.findByCid(viewCid);
|
||||
},
|
||||
|
||||
// Find by index. This is not guaranteed to be a
|
||||
// stable index.
|
||||
findByIndex: function(index){
|
||||
return _.values(this._views)[index];
|
||||
},
|
||||
|
||||
// retrieve a view by its `cid` directly
|
||||
findByCid: function(cid){
|
||||
return this._views[cid];
|
||||
},
|
||||
|
||||
// Remove a view
|
||||
remove: function(view){
|
||||
var viewCid = view.cid;
|
||||
|
||||
// delete model index
|
||||
if (view.model){
|
||||
delete this._indexByModel[view.model.cid];
|
||||
}
|
||||
|
||||
// delete custom index
|
||||
_.any(this._indexByCustom, function(cid, key) {
|
||||
if (cid === viewCid) {
|
||||
delete this._indexByCustom[key];
|
||||
return true;
|
||||
}
|
||||
}, this);
|
||||
|
||||
// remove the view from the container
|
||||
delete this._views[viewCid];
|
||||
|
||||
// update the length
|
||||
this._updateLength();
|
||||
return this;
|
||||
},
|
||||
|
||||
// Call a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.call`.
|
||||
call: function(method){
|
||||
this.apply(method, _.tail(arguments));
|
||||
},
|
||||
|
||||
// Apply a method on every view in the container,
|
||||
// passing parameters to the call method one at a
|
||||
// time, like `function.apply`.
|
||||
apply: function(method, args){
|
||||
_.each(this._views, function(view){
|
||||
if (_.isFunction(view[method])){
|
||||
view[method].apply(view, args || []);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
// Update the `.length` attribute on this container
|
||||
_updateLength: function(){
|
||||
this.length = _.size(this._views);
|
||||
}
|
||||
});
|
||||
|
||||
// Borrowing this code from Backbone.Collection:
|
||||
// http://backbonejs.org/docs/backbone.html#section-106
|
||||
//
|
||||
// Mix in methods from Underscore, for iteration, and other
|
||||
// collection related features.
|
||||
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'];
|
||||
|
||||
_.each(methods, function(method) {
|
||||
Container.prototype[method] = function() {
|
||||
var views = _.values(this._views);
|
||||
var args = [views].concat(_.toArray(arguments));
|
||||
return _[method].apply(_, args);
|
||||
};
|
||||
});
|
||||
|
||||
// return the public API
|
||||
return Container;
|
||||
})(Backbone, _);
|
||||
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"lib/backbone.babysitter.min.js","sources":["?"],"names":["Backbone","ChildViewContainer","_","Container","views","this","_views","_indexByModel","_indexByCustom","_updateLength","each","add","extend","prototype","view","customIndex","viewCid","cid","model","findByModel","findByModelCid","modelCid","findByCid","findByCustom","index","findByIndex","values","remove","any","key","call","method","apply","tail","arguments","args","isFunction","length","size","methods","concat","toArray"],"mappings":"AAeAA,SAASC,mBAAqB,SAAUD,EAAUE,GAKhD,GAAIC,GAAY,SAASC,GACvBC,KAAKC,UACLD,KAAKE,iBACLF,KAAKG,kBACLH,KAAKI,gBAELP,EAAEQ,KAAKN,EAAOC,KAAKM,IAAKN,MAM1BH,GAAEU,OAAOT,EAAUU,WAMjBF,IAAK,SAASG,EAAMC,GAClB,GAAIC,GAAUF,EAAKG,GAgBnB,OAbAZ,MAAKC,OAAOU,GAAWF,EAGnBA,EAAKI,QACPb,KAAKE,cAAcO,EAAKI,MAAMD,KAAOD,GAInCD,IACFV,KAAKG,eAAeO,GAAeC,GAGrCX,KAAKI,gBACEJ,MAKTc,YAAa,SAASD,GACpB,MAAOb,MAAKe,eAAeF,EAAMD,MAMnCG,eAAgB,SAASC,GACvB,GAAIL,GAAUX,KAAKE,cAAcc,EACjC,OAAOhB,MAAKiB,UAAUN,IAIxBO,aAAc,SAASC,GACrB,GAAIR,GAAUX,KAAKG,eAAegB,EAClC,OAAOnB,MAAKiB,UAAUN,IAKxBS,YAAa,SAASD,GACpB,MAAOtB,GAAEwB,OAAOrB,KAAKC,QAAQkB,IAI/BF,UAAW,SAASL,GAClB,MAAOZ,MAAKC,OAAOW,IAIrBU,OAAQ,SAASb,GACf,GAAIE,GAAUF,EAAKG,GAoBnB,OAjBIH,GAAKI,aACAb,MAAKE,cAAcO,EAAKI,MAAMD,KAIvCf,EAAE0B,IAAIvB,KAAKG,eAAgB,SAASS,EAAKY,GACvC,MAAIZ,KAAQD,SACHX,MAAKG,eAAeqB,IACpB,GAFT,QAICxB,YAGIA,MAAKC,OAAOU,GAGnBX,KAAKI,gBACEJ,MAMTyB,KAAM,SAASC,GACb1B,KAAK2B,MAAMD,EAAQ7B,EAAE+B,KAAKC,aAM5BF,MAAO,SAASD,EAAQI,GACtBjC,EAAEQ,KAAKL,KAAKC,OAAQ,SAASQ,GACvBZ,EAAEkC,WAAWtB,EAAKiB,KACpBjB,EAAKiB,GAAQC,MAAMlB,EAAMqB,UAM/B1B,cAAe,WACbJ,KAAKgC,OAASnC,EAAEoC,KAAKjC,KAAKC,UAS9B,IAAIiC,IAAW,UAAW,OAAQ,MAAO,OAAQ,SAAU,SACzD,SAAU,SAAU,QAAS,MAAO,OAAQ,MAAO,UACnD,WAAY,SAAU,UAAW,QAAS,UAAW,OACrD,OAAQ,UAAW,UAAW,QAWhC,OATArC,GAAEQ,KAAK6B,EAAS,SAASR,GACvB5B,EAAUU,UAAUkB,GAAU,WAC5B,GAAI3B,GAAQF,EAAEwB,OAAOrB,KAAKC,QACtB6B,GAAQ/B,GAAOoC,OAAOtC,EAAEuC,QAAQP,WACpC,OAAOhC,GAAE6B,GAAQC,MAAM9B,EAAGiC,MAKvBhC,GACNH,SAAUE"}
|
||||
@@ -0,0 +1,11 @@
|
||||
// Backbone.BabySitter
|
||||
// -------------------
|
||||
// v0.1.0
|
||||
//
|
||||
// Copyright (c)2014 Derick Bailey, Muted Solutions, LLC.
|
||||
// Distributed under MIT license
|
||||
//
|
||||
// http://github.com/marionettejs/backbone.babysitter
|
||||
|
||||
Backbone.ChildViewContainer=function(i,t){var e=function(i){this._views={},this._indexByModel={},this._indexByCustom={},this._updateLength(),t.each(i,this.add,this)};t.extend(e.prototype,{add:function(i,t){var e=i.cid;return this._views[e]=i,i.model&&(this._indexByModel[i.model.cid]=e),t&&(this._indexByCustom[t]=e),this._updateLength(),this},findByModel:function(i){return this.findByModelCid(i.cid)},findByModelCid:function(i){var t=this._indexByModel[i];return this.findByCid(t)},findByCustom:function(i){var t=this._indexByCustom[i];return this.findByCid(t)},findByIndex:function(i){return t.values(this._views)[i]},findByCid:function(i){return this._views[i]},remove:function(i){var e=i.cid;return i.model&&delete this._indexByModel[i.model.cid],t.any(this._indexByCustom,function(i,t){return i===e?(delete this._indexByCustom[t],!0):void 0},this),delete this._views[e],this._updateLength(),this},call:function(i){this.apply(i,t.tail(arguments))},apply:function(i,e){t.each(this._views,function(n){t.isFunction(n[i])&&n[i].apply(n,e||[])})},_updateLength:function(){this.length=t.size(this._views)}});var n=["forEach","each","map","find","detect","filter","select","reject","every","all","some","any","include","contains","invoke","toArray","first","initial","rest","last","without","isEmpty","pluck"];return t.each(n,function(i){e.prototype[i]=function(){var e=t.values(this._views),n=[e].concat(t.toArray(arguments));return t[i].apply(t,n)}}),e}(Backbone,_);
|
||||
//@ sourceMappingURL=backbone.babysitter.map
|
||||
Reference in New Issue
Block a user