// Backbone.Marionette.Async, v0.2.0 // Copyright (c)2012 Derick Bailey, Muted Solutions, LLC. // Distributed under MIT license // http://github.com/derickbailey/backbone.marionette.async Backbone.Marionette.Async=function(e,t,n,r){var i={init:function(){t.TemplateCache=i.TemplateCache,t.Renderer=i.Renderer,n.extend(t.ItemView.prototype,i.ItemView),n.extend(t.CollectionView.prototype,i.CollectionView),n.extend(t.CompositeView.prototype,i.CompositeView),n.extend(t.Region.prototype,i.Region)}};i.ItemView={render:function(){var e=this,n=r.Deferred(),i=function(){e.trigger("before:render",e),e.trigger("item:before:render",e);var t=e.serializeData();r.when(t).then(o)},o=function(n){var i=e.getTemplate(),s=t.Renderer.render(i,n);r.when(s).then(u)},u=function(t){e.$el.html(t),s(e.onRender,a,e)},a=function(){e.trigger("render",e),e.trigger("item:rendered",e),n.resolve()};return s(this.beforeRender,i,this),n.promise()}},i.CollectionView={render:function(){var e=this,t=r.Deferred(),n;this.triggerBeforeRender(),this.closeEmptyView(),this.closeChildren();if(this.collection&&this.collection.length>0)n=this.showCollection();else{var i=this.showEmptyView();n=[i]}return t.done(function(){e.triggerRendered()}),r.when.apply(this,n).then(function(){t.resolveWith(e)}),t.promise()},showCollection:function(){var e=this,t=[],n=this.getItemView();return this.collection.each(function(r,i){var s=e.addItemView(r,n,i);t.push(s)}),t},showEmptyView:function(t){var n,r=this.options.emptyView||this.emptyView;if(r&&!this._showingEmptyView){this._showingEmptyView=!0;var i=new e.Model;n=this.addItemView(i,r,0)}return n},renderItemView:function(e,t){var n=this,i=e.render();return r.when(i).then(function(){n.appendHtml(n,e,t)}),i}},i.CompositeView={render:function(){var e=this,t=r.Deferred();this.resetItemViewContainer();var n=this.renderModel();return r.when(n).then(function(n){e.$el.html(n),e.trigger("composite:model:rendered"),e.trigger("render");var i=e.renderCollection();r.when(i).then(function(){t.resolve()})}),t.done(function(){e.trigger("composite:rendered")}),t.promise()},renderCollection:function(){var e=t.CollectionView.prototype.render.apply(this,arguments);return e.done(function(){this.trigger("composite:collection:rendered")}),e.promise()}},i.Region={show:function(e){var t=this,n=r.Deferred();return this.ensureEl(),this.close(),r.when(e.render()).then(function(){t.open(e),e.onShow&&e.onShow(),e.trigger("show"),t.onShow&&t.onShow(e),t.trigger("view:show",e),n.resolve()}),this.currentView=e,n.promise()}},i.Renderer={render:function(e,n){var i=r.Deferred(),s=t.TemplateCache.get(e);return r.when(s).then(function(e){var t=e(n);i.resolve(t)}),i.promise()}},i.TemplateCache=function(e){this.templateId=e},n.extend(i.TemplateCache,{templateCaches:{},get:function(e){var n=this,r=this.templateCaches[e];return r||(r=new t.TemplateCache(e),this.templateCaches[e]=r),r.load()},clear:function(){var e,t=arguments.length;if(t>0)for(e=0;e