Skip to content

Instantly share code, notes, and snippets.

@jesstelford
Created September 24, 2013 16:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jesstelford/6687044 to your computer and use it in GitHub Desktop.
Save jesstelford/6687044 to your computer and use it in GitHub Desktop.
Getting `Cannot read property '_thoraxBind' of undefined` errors in Thorax 2.0.1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title></title>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0/handlebars.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.0.0/backbone-min.js"></script>
<script src="thorax.js"></script>
<script src="main.js"></script>
</head>
<body>
Check the console for <pre>Cannot read property '_thoraxBind' of undefined</pre>
</body>
</html>
MyView = Thorax.View.extend({
events: {
'foo': 'bar'
},
template: 'Hello world'
});
foo = new MyView();
foo.bar = function() {}
!function(){function e(){this.helpers&&_.each(this.helpers,function(e,t){var i=this;this.helpers[t]=function(){var t=_.toArray(arguments),n=_.last(t);return n.context=this,e.apply(i,t)}},this)}function t(e){return'Error "'+e+'". For more information visit http://thoraxjs.org/error-codes.html'+"#"+e}function i(e,t){var i=e.extend;e.extend=function(){var e=i.apply(this,arguments);return e.prototype.name&&(t[e.prototype.name]=e),e}}function n(e,t,i,n){var r,s=e[t];if(_.indexOf(i,".")>=0){var o=i.split(/\./);i=o.pop(),_.each(o,function(e){s=s[e]})}if(s&&(r=s[i]),r||n)return r;throw new Error(t+": "+i+" does not exist.")}function r(e,t){var i;if(_.isString(this[e])?i=ot.Util.getViewClass(this[e],!0):this.name&&!_.isFunction(this[e])&&(i=ot.Util.getViewClass(this.name+(t.extension||""),!0)),i&&!_.isFunction(this[e])&&(this[e]=i),t.required&&!_.isFunction(this[e]))throw new Error("View "+(this.name||this.cid)+" requires: "+e)}function s(e,t){var i;if(_.isString(this[e])?i=ot.Util.getTemplate(this[e],!0):this.name&&!_.isFunction(this[e])&&(i=ot.Util.getTemplate(this.name+(t.extension||""),!0)),!i&&"template"===e&&this._defaultTemplate&&(i=this._defaultTemplate),i&&!_.isFunction(this[e])&&(this[e]=i),t.required&&!_.isFunction(this[e]))throw new Error("View "+(this.name||this.cid)+" requires: "+e)}function o(e,t,i){return e&&e[t]?_.isFunction(e[t])?e[t].call(i||e):e[t]:null}function a(e){_.each(at,function(t){e[t.name]||(e[t.name]=[])})}function l(e){_.each(at,function(t){e[t.name]=[]})}function h(e,t,i,n){var r=[];_.has(e,t)&&r.push(e);var s=e;if(i)for(;s=s.__parent__;)_.has(s,t)&&r.push(s);else for(s=s.constructor;s;)s.prototype&&_.has(s.prototype,t)&&r.push(s.prototype),s=s.__super__&&s.__super__.constructor;for(var a=r.length;a--;)_.each(o(r[a],t,e),n)}function c(e,t,i,n){if(_.isObject(i)){var r=at[t];if(r&&r.event)return e&&e.listenTo&&e[t]&&e[t].cid?d(e,i,n,t):d(e["_"+t+"Events"],i,n),!0}}function u(e,t,i,n,r){function s(){if(e.el)o.apply(r,arguments);else{if(a)throw new Error("destroyed-event:"+e.name+":"+i);a++}}var o=E(n,e),a=0;s._callback=o._callback||o,s._thoraxBind=!0,e.listenTo(t,i,s)}function d(e,t,i,n){function r(t,r){n?u(e,e[n],r,t,i||e):e.push([r,t,i])}_.each(t,function(e,t){_.isArray(e)?_.each(e,function(e){r(e,t)}):r(e,t)})}function p(e){if(!e||!e.data)throw new Error(t("handlebars-no-data"));return e.data}function f(e){e.tag&&(e.tagName=e.tag,delete e.tag),e["class"]&&(e.className=e["class"],delete e["class"])}function m(e){ut.push.apply(ut,e),ht=new RegExp("^(nested\\s+)?("+ut.join("|")+")(?:\\s|$)")}function g(e,t){return function(i){var n=$(i.target).view({helper:!1});n&&n.cid===t&&(i.originalContext=this,e(i))}}function v(e,t){function i(){try{r.apply(s,arguments)}catch(t){ot.onException("thorax-exception: "+(s.name||s.cid)+":"+e,t)}}e+=t.originalName;var n=t.handler,r=_.isFunction(n)?n:this[n];if(!r)throw new Error('Event "'+n+'" does not exist '+(this.name||this.cid)+":"+e);var s=t.context||this;return i._callback=r,i._thoraxBind=!0,i}function y(e,t,i){var n={originalName:e,handler:_.isString(t)?this[t]:t};if(e.match(ht)){var r=ct.exec(e);n.nested=!!r[1],n.name=r[2],n.type="DOM",n.selector=r[3]}else n.name=e,n.type="view";return n.context=i,n}function w(e){for(;e._helperName&&"view"!==e._helperName;)e=e.parent;return e}function b(e){var t=_.pick(e,"fn","inverse","hash","data");return t.data=_.omit(e.data,"cid","view","yield"),t}function C(e,t){function i(e,t){return _.every(e,function(e,i){return t[i]===e})}return e._helperName!==t._helperName?!1:(e=e._helperOptions,t=t._helperOptions,e.args.length===t.args.length&&i(e.args,t.args)&&_.isEqual(_.keys(e.options),_.keys(t.options))&&_.every(e.options,function(n,r){if("data"===r||"hash"===r)return i(e.options[r],t.options[r]);if("fn"===r||"inverse"===r){if(t.options[r]===n)return!0;var s=t.options[r]||{};return n&&_.has(n,"program")&&!n.depth&&s.program===n.program}return t.options[r]===n}))}function x(e,t){function i(i,n){var r=this[e],s=o(this,t.$el);return i===r?this:(r&&this.unbindDataObject(r),i?(this[e]=i,t.loading&&t.loading.call(this),this.bindDataObject(e,i,_.extend({},this.options,n)),s&&s.attr(t.cidAttrName,i.cid),i.trigger("set",i,r)):(this[e]=!1,t.change&&t.change.call(this,!1),s&&s.removeAttr(t.cidAttrName)),this.trigger("change:data-object",e,i,r),this)}t=at[e]=_.defaults({name:"_"+e+"Events",event:!0},t),t.ctor=function(){if(this[e]){var i=this[e];this[e]=null,this[t.set](i)}},ot.View.prototype[t.set]=i}function V(e,t,i){var n=this;h(i,"_"+e+"Events",!0,function(e){u(n,t,e[0],e[1],e[2]||n)})}function T(e,t){e.load?e.load(function(){t&&t.success&&t.success(e)},t):e.fetch(t)}function E(e,t){return _.isFunction(e)?e:t[e]}function H(e,t){if(!t||!t.serializing){var i=this.getObjectOptions(e)||{};this.conditionalRender(i.render)}}function O(e){var t=this.getObjectOptions(e)||void 0;this.shouldRender(t&&t.render)&&this.renderCollection&&this.renderCollection()}function k(e){var t=this.getObjectOptions(e)||void 0;this.shouldRender(t&&t.render)&&this.ensureRendered()}function F(){this.itemFilter&&this.collection.forEach(L,this)}function L(e){var t=this.getCollectionElement();this.itemFilter&&t.find("["+mt+'="'+e.cid+'"]')[j.call(this,e)?"show":"hide"]()}function j(e){return this.itemFilter(e,this.collection.indexOf(e))}function D(){var e=this.getCollectionElement();this.emptyClass&&e.removeClass(this.emptyClass),e.removeAttr(wt),e.empty()}function B(){var e=this.getCollectionElement();this.emptyClass&&e.addClass(this.emptyClass),e.attr(wt,!0),this.appendEmpty()}function N(e,t){return _.each(e,function(i,n){return _.isObject(i)?N(i,t):(t(i,n,e)===!1&&delete e[n],void 0)}),e}function U(){M.call(this),this.model&&this.model.previousAttributes&&this.model.set(this.model.previousAttributes(),{silent:!0})}function S(e,t,i){var n=0;$("select,input,textarea",t.root||e.el).each(function(){(t.children||e===$(this).view({helper:!1}))&&"button"!==this.type&&"cancel"!==this.type&&"submit"!==this.type&&this.name&&(i(this,n),++n)})}function I(e,t,i,n){for(var r,s=e,o=t.split("["),a=i.mode,l=0;l<o.length-1;++l){if(r=o[l].replace("]",""),!s[r]){if("serialize"!==a)return n(void 0,r);s[r]={}}s=s[r]}r=o[o.length-1].replace("]",""),n(s,r)}function M(){this.$("form").removeAttr("data-submit-wait")}function A(e){var t=e.getObjectOptions(e.model)||{};return t.populate===!0?{}:t.populate}function R(e,t){t=t||{},t.target=this,this.trigger(e,t),_.each(this.children,function(i){i.trigger(e,t)})}function q(){++this._renderCount,this.$el.attr(Vt,this.cid)}function P(){if(!this.$("["+Vt+'="'+this.cid+'"]')[0])throw new Error("No layout element found in "+(this.name||this.cid))}function Q(){return this.$("["+Vt+'="'+this.cid+'"]')[0]||this.el[0]||this.el}function z(e){return function(){var t=_.toArray(arguments);t.unshift(e),this.parent.trigger.apply(this.parent,t)}}function W(e){var t=w(this);if(!this[e]){var i=t[e];i&&(this[e]=i)}}function G(e){var t=$(this),i=t.view({helper:!1}),n=t.attr(Et),r=t.attr(Ht),s=!1;n&&(s=i[n].call(i,e)),r&&i.trigger(r,e),"A"===this.tagName&&s===!1&&e.preventDefault()}function J(){K(),Ot=ot._fastClickEventName||"click",$(document).on(Ot,kt,G)}function K(){Ot&&$(document).off(Ot,kt,G)}function X(e,t){function i(){r!==Backbone.history.getFragment()&&(s=!0,o.cancel(),t&&t())}function n(){Backbone.history.off("route",i),s||e.apply(this,arguments)}var r=Backbone.history.getFragment(),s=!1;Backbone.history.on("route",i);var o=_.bind(n,this);return o.cancel=function(){Backbone.history.off("route",i)},o}function Y(e,t,i){if(this.isPopulated())return _.defer(e,this);2===arguments.length&&!_.isFunction(t)&&_.isObject(t)&&(i=t,t=!1);var n=this,r=!1,s=X(_.bind(e,n),function(){r=!0,n._request&&(n._aborted=!0,n._request.abort()),t&&t.call(n,!1)});this.fetch(_.defaults({success:s,error:function(){s.cancel(),!r&&t&&t.apply(n,[!0].concat(_.toArray(arguments)))}},i))}function Z(e,i){if(e.resetQueue)this.fetchQueue=void 0;else if(this.fetchQueue){var n=(this.fetchQueue[0]||{}).reset;if(n!==e.reset)throw new Error(t("mixed-fetch"))}return this.fetchQueue?(this.fetchQueue.push(e),void 0):(this.fetchQueue=[e],e=_.defaults({success:et(this,this.fetchQueue,"success"),error:et(this,this.fetchQueue,"error"),complete:et(this,this.fetchQueue,"complete")},e),i&&i.call(this,e),e)}function et(e,t,i){return function(){var n=arguments;_.each(t,function(e){e[i]&&e[i].apply(this,n)},this),e.fetchQueue===t&&(e.fetchQueue=void 0)}}function tt(){this.render()}$.fn.forEach||($.fn.forEach=function(e,t){$.fn.each.call(this,function(i){e.call(t||this,this,i)})});var it="data-view-name",nt="data-view-cid",rt="data-view-helper",st={};Handlebars.templates||(Handlebars.templates={});var ot=this.Thorax={templatePathPrefix:"",Views:{},onException:function(e,t){throw t},templates:Handlebars.templates};ot.View=Backbone.View.extend({constructor:function(){var e=Backbone.View.apply(this,arguments);return _.each(at,function(t){t.ctor&&t.ctor.call(this,e)},this),e},_configure:function(t){var i=this;this._referenceCount=0,this._objectOptionsByCid={},this._boundDataObjectsByCid={},_.each(at,function(e){i[e.name]=[]}),st[this.cid]=this,this.children={},this._renderCount=0,_.extend(this,t||{}),e.call(this),_.each(at,function(e){e.configure&&e.configure.call(this)},this),this.trigger("configure")},setElement:function(){var e=Backbone.View.prototype.setElement.apply(this,arguments);return this.name&&this.$el.attr(it,this.name),this.$el.attr(nt,this.cid),e},_addChild:function(e){return this.children[e.cid]?void 0:(e.retain(),this.children[e.cid]=e,e.parent&&e.parent!==this&&!e._helperOptions&&e.parent._removeChild(e),e.parent=this,this.trigger("child",e),e)},_removeChild:function(e){return delete this.children[e.cid],e.parent=null,e.release(),e},_destroy:function(){_.each(this._boundDataObjectsByCid,this.unbindDataObject,this),this.trigger("destroyed"),delete st[this.cid],_.each(this.children,function(e){this._removeChild(e)},this),this.el&&(this.undelegateEvents(),this.remove(),this.off()),this.el=this.$el=void 0,this.parent=void 0,this.model=this.collection=this._collection=void 0,this._helperOptions=void 0},render:function(e){if(this._rendering)throw new Error(t("nested-render"));this._previousHelpers=_.filter(this.children,function(e){return e._helperOptions});var i={};_.each(this.children,function(e,t){e._helperOptions||(i[t]=e)}),this.children=i,this.trigger("before:rendered"),this._rendering=!0;try{!_.isUndefined(e)&&(_.isElement(e)||ot.Util.is$(e)||e&&e.el||_.isString(e)||_.isFunction(e))?_.isFunction(e)&&(e=this.renderTemplate(e)):(s.call(this,"template",{required:!0}),e=this.renderTemplate(this.template)),_.each(this._previousHelpers,function(e){this._removeChild(e)},this),this._previousHelpers=void 0,this.html(e&&e.el||e&&e.string||e),++this._renderCount,this.trigger("rendered")}finally{this._rendering=!1}return e},context:function(){return _.extend({},this.model&&this.model.attributes||{})},_getContext:function(){return _.extend({},this,o(this,"context")||{})},_getData:function(e){return{view:this,cid:_.uniqueId("t"),yield:function(){return e.fn&&e.fn(e)}}},renderTemplate:function(e,t,i){var n;return t=t||this._getContext(),n=_.isFunction(e)?e:ot.Util.getTemplate(e,i),n?n(t,{helpers:this.helpers,data:this._getData(t)}):""},ensureRendered:function(){!this._renderCount&&this.render()},shouldRender:function(e){return e||null==e&&this._renderCount},conditionalRender:function(e){this.shouldRender(e)&&this.render()},appendTo:function(e){this.ensureRendered(),$(e).append(this.el),this.trigger("ready",{target:this})},html:function(e){if(_.isUndefined(e))return this.el.innerHTML;this.trigger("before:append");var t=this._replaceHTML(e);return this.trigger("append"),t},release:function(){--this._referenceCount,this._referenceCount<=0&&this._destroy()},retain:function(e){++this._referenceCount,e&&this.listenTo(e,"destroyed",e.release)},_replaceHTML:function(e){return this.el.innerHTML="",this.$el.append(e)},_anchorClick:function(e){var t=$(e.currentTarget),i=t.attr("href");return i&&("#"===i[0]||"/"===i[0]&&"/"!==i[1])?(Backbone.history.navigate(i,{trigger:!0}),!1):!0}}),ot.View.extend=function(){a(this);var e=Backbone.View.extend.apply(this,arguments);return e.__parent__=this,l(e),e},i(ot.View,ot.Views),$.fn.view=function(e){e=_.defaults(e||{},{helper:!0});var t="["+nt+"]";e.helper||(t+=":not(["+rt+"])");var i=$(this).closest(t);return i&&st[i.attr(nt)]||!1};var at={};ot.Util={getViewInstance:function(e,t){var i=ot.Util.getViewClass(e,!0);return i?new i(t||{}):e},getViewClass:function(e,t){return _.isString(e)?n(ot,"Views",e,t):_.isFunction(e)?e:!1},getTemplate:function(e,t){var i,n=ot.templatePathPrefix;if(n&&e.substr(0,n.length)!==n&&(e=n+e),e=e.replace(/\.handlebars$/,""),i=Handlebars.templates[e],i||(e+=".handlebars",i=Handlebars.templates[e]),!i&&!t)throw new Error("templates: "+e+" does not exist.");return i},is$:function(e){return _.isObject(e)&&"length"in e},expandToken:function(e,t){function i(e,t){if(e.match(/^("|')/)&&e.match(/("|')$/))return e.replace(/(^("|')|('|")$)/g,"");for(var i=e.split("."),n=i.length,r=0;t&&n>r;r++)"this"!==i[r]&&(t=t[i[r]]);return t}if(e&&e.indexOf&&e.indexOf("{{")>=0){for(var n,r=/(?:\{?[^{]+)|(?:\{\{([^}]+)\}\})/g,s=[];n=r.exec(e);)if(n[1]){var o=n[1].split(/\s+/);if(o.length>1){var a=o.shift();o=_.map(o,function(e){return i(e,t)}),Handlebars.helpers[a]?s.push(Handlebars.helpers[a].apply(t,o)):s.push(n[0])}else s.push(i(o[0],t))}else s.push(n[0]);e=s.join("")}return e},tag:function(e,t,i){var n=_.omit(e,"tagName"),r=e.tagName||"div";return"<"+r+" "+_.map(n,function(e,t){if(_.isUndefined(e)||"expand-tokens"===t)return"";var n=e;return i&&(n=ot.Util.expandToken(e,i)),("className"===t?"class":t)+'="'+Handlebars.Utils.escapeExpression(n)+'"'}).join(" ")+">"+(_.isUndefined(t)?"":t)+"</"+r+">"}},ot.Mixins={},_.extend(ot.View,{mixin:function(e){ot.Mixins[e](this)},registerMixin:function(e,t,i){ot.Mixins[e]=function(e){var n=!!e.cid;i&&_.extend(n?e:e.prototype,i),n?t.call(e):e.on("configure",t)}}}),ot.View.prototype.mixin=function(e){ot.Mixins[e](this)};var lt=ot.View.prototype.on;at.event={name:"_events",configure:function(){var e=this;h(this.constructor,"_events",!0,function(t){e.on.apply(e,t)}),h(this,"events",!1,function(t,i){e.on(i,t,e)})}},_.extend(ot.View,{on:function(e,t){return a(this),c(this,e,t)?this:(_.isObject(e)?_.each(e,function(e,t){this.on(t,e)},this):_.isArray(t)?_.each(t,function(t){this._events.push([e,t])},this):this._events.push([e,t]),this)}}),_.extend(ot.View.prototype,{on:function(e,t,i){return c(this,e,t,i)?this:(_.isObject(e)&&arguments.length<3?_.each(e,function(e,i){this.on(i,e,t||this)},this):_.each(_.isArray(t)?t:[t],function(t){var n=y.call(this,e,t,i||this);"DOM"!==n.type||this._eventsDelegated?this._addEvent(n):(this._eventsToDelegate||(this._eventsToDelegate=[]),this._eventsToDelegate.push(n))},this),this)},delegateEvents:function(e){this.undelegateEvents(),e&&(_.isFunction(e)&&(e=e.call(this)),this._eventsToDelegate=[],this.on(e)),this._eventsToDelegate&&_.each(this._eventsToDelegate,this._addEvent,this),this._eventsDelegated=!0},_addEvent:function(e){if(e.handler._thoraxBind)return lt.call(this,e.name,e.handler,e.context||this);var t=v.call(this,e.type+"-event:",e);if("view"===e.type)e.context&&e.context!==this&&e.context instanceof ot.View?u(e.context,this,e.name,t,e.context):lt.call(this,e.name,t,e.context||this);else{e.nested||(t=g(t,this.cid));var i=e.name+".delegateEvents"+this.cid;e.selector?this.$el.on(i,e.selector,t):this.$el.on(i,t)}}}),ot.View.prototype.bind=ot.View.prototype.on,ot.View.on("ready",function(e){function t(t){t._isReady||t.trigger("ready",e)}this._isReady||(this._isReady=!0,_.each(this.children,t),this.on("child",t))});var ht,ct=/^(nested\s+)?(\S+)(?:\s+(.+))?/,ut=[];m(["mousedown","mouseup","mousemove","mouseover","mouseout","touchstart","touchend","touchmove","click","dblclick","keyup","keydown","keypress","submit","change","focus","blur"]);var dt="data-view-tmp",pt={},ft={_ensureElement:function(){ot.View.prototype._ensureElement.apply(this,arguments),this.$el.attr(rt,this._helperName)},_getContext:function(){return this.parent._getContext.apply(this.parent,arguments)}};ot.HelperView=ot.View.extend(ft),Handlebars.registerViewHelper=function(e,t,i){2===arguments.length&&(t.factory?i=t.callback:(i=t,t=ot.HelperView));var n=t.attributeWhiteList;Handlebars.registerHelper(e,function(){var r=_.toArray(arguments),s=r.pop(),o=p(s).view,a=s.hash["expand-tokens"];a&&(delete s.hash["expand-tokens"],_.each(s.hash,function(e,t){s.hash[t]=ot.Util.expandToken(e,this)},this));var l={inverse:s.inverse,options:s.hash,declaringView:o,parent:w(o),_helperName:e,_helperOptions:{options:b(s),args:_.clone(r)}};f(s.hash);var h=_.clone(s.hash);n&&_.each(n,function(e,t){delete h[t],_.isUndefined(s.hash[t])||(l[e]=s.hash[t])}),h.tagName&&(l.tagName=h.tagName),l.attributes=function(){var e=t.prototype&&t.prototype.attributes||{};return _.isFunction(e)&&(e=e.apply(this,arguments)),_.extend(e,_.omit(h,["tagName"])),e.className&&(e["class"]=e.className,delete e.className),e},s.fn?l.template=s.fn:t&&t.prototype&&!t.prototype.template&&(l.template=Handlebars.VM.noop);var c=_.find(o._previousHelpers,function(e){return C(l,e)});if(c)o._previousHelpers=_.without(o._previousHelpers,c),o.children[c.cid]=c;else{if(t.factory){if(c=t.factory(r,l),!c)return"";c._helperName=l._helperName,c._helperOptions=l._helperOptions}else c=new t(l);r.push(c),o._addChild(c),o.trigger.apply(o,["helper",e].concat(r)),o.trigger.apply(o,["helper:"+e].concat(r)),i&&i.apply(this,r)}return h[dt]=c.cid,t.modifyHTMLAttributes&&t.modifyHTMLAttributes(h,c),new Handlebars.SafeString(ot.Util.tag(h,"",a?this:null))});var r=Handlebars.helpers[e];return r},ot.View.on("append",function(e,t){(e||this.$el).find("["+dt+"]").forEach(function(e){var i=e.getAttribute(dt),n=this.children[i];n&&(pt[i]?(n.render(pt[i]),delete pt[i]):n.ensureRendered(),$(e).replaceWith(n.el),t&&t(n.el))},this)}),_.extend(ot.View.prototype,{getObjectOptions:function(e){return e&&this._objectOptionsByCid[e.cid]},bindDataObject:function(e,t,i){if(this._boundDataObjectsByCid[t.cid])return!1;this._boundDataObjectsByCid[t.cid]=t;var i=this._modifyDataObjectOptions(t,_.extend({},at[e].defaultOptions,i));this._objectOptionsByCid[t.cid]=i,V.call(this,e,t,this.constructor),V.call(this,e,t,this);var n=at[e];return n.bindCallback&&n.bindCallback.call(this,t,i),t.shouldFetch&&t.shouldFetch(i)?T(t,i):at[e].change&&at[e].change.call(this,t,i),!0},unbindDataObject:function(e){return this._boundDataObjectsByCid[e.cid]?(delete this._boundDataObjectsByCid[e.cid],this.stopListening(e),delete this._objectOptionsByCid[e.cid],!0):!1},_modifyDataObjectOptions:function(e,t){return t}});var mt="data-model-cid";ot.Model=Backbone.Model.extend({isEmpty:function(){return!this.isPopulated()},isPopulated:function(){var e=_.clone(this.attributes),t=o(this,"defaults")||{};for(var i in t){if(e[i]!=t[i])return!0;delete e[i]}var n=_.keys(e);return n.length>1||1===n.length&&n[0]!==this.idAttribute},shouldFetch:function(e){var t;try{t=o(this,"url")}catch(i){t=!1}return e.fetch&&!!t&&!this.isPopulated()}}),ot.Models={},i(ot.Model,ot.Models),x("model",{set:"setModel",defaultOptions:{render:void 0,fetch:!0,success:!1,invalid:!0},change:H,$el:"$el",cidAttrName:mt}),ot.View.on({model:{invalid:function(e,t){this.getObjectOptions(e).invalid&&this.trigger("invalid",t,e)},error:function(e,t){this.trigger("error",t,e)},change:function(e,t){at.model.change.call(this,e,t)}}}),$.fn.model=function(e){var t=$(this),i=t.closest("["+mt+"]"),n=i&&i.attr(mt);if(n){var e=e||t.view();if(e&&e.model&&e.model.cid===n)return e.model||!1;var r=t.collection(e);if(r)return r.get(n)}return!1};var gt=Backbone.Collection.prototype.fetch,_t=Backbone.Collection.prototype.set,vt=ot.View.prototype._replaceHTML,yt="data-collection-cid",wt="data-collection-empty",bt="data-collection-element",Ct=1;ot.Collection=Backbone.Collection.extend({model:ot.Model||Backbone.Model,initialize:function(){return this.cid=_.uniqueId("collection"),Backbone.Collection.prototype.initialize.apply(this,arguments)},isEmpty:function(){return this.length>0?!1:0===this.length&&this.isPopulated()},isPopulated:function(){return this._fetched||this.length>0||!this.length&&!o(this,"url")},shouldFetch:function(e){return e.fetch&&!!o(this,"url")&&!this.isPopulated()},fetch:function(e){e=e||{};var t=e.success;return e.success=function(e,i){e._fetched=!0,t&&t(e,i)},gt.apply(this,arguments)},set:function(e,t){return this._fetched=!!e,_t.call(this,e,t)}}),_.extend(ot.View.prototype,{getCollectionViews:function(e){return _.filter(this.children,function(t){return t instanceof ot.CollectionView?!e||t.collection===e:!1})},updateFilter:function(e){_.invoke(this.getCollectionViews(e),"updateFilter")}}),ot.Collections={},i(ot.Collection,ot.Collections),x("collection",{set:"setCollection",bindCallback:k,defaultOptions:{render:void 0,fetch:!0,success:!1,invalid:!0,change:!0},change:O,$el:"getCollectionElement",cidAttrName:yt}),ot.CollectionView=ot.View.extend({_defaultTemplate:Handlebars.VM.noop,_collectionSelector:"["+bt+"]",_replaceHTML:function(e){if(!(this.collection&&this.getObjectOptions(this.collection)&&this._renderCount))return vt.call(this,e);var t,i=this.getCollectionElement();t=vt.call(this,e),i.attr("data-view-cid")||this.getCollectionElement().replaceWith(i)},render:function(){var e=this.shouldRender();ot.View.prototype.render.apply(this,arguments),e||this.renderCollection()},appendItem:function(e,t,i){if(e){var n,r=this.getCollectionElement();if(i=_.defaults(i||{},{filter:!0}),t&&t.el&&(t=r.children().indexOf(t.el)+1),e.el||_.isString(e)?(n=e,e=!1):(t=t||this.collection.indexOf(e)||0,n=this.renderItem(e,t)),n){n.cid&&(n.ensureRendered(),this._addChild(n)),_.isString(n)&&!n.match(/^\s*</m)&&(n="<div>"+n+"</div>");var s=n.$el||$($.trim(n)).filter(function(){return this.nodeType===Ct});e&&s.attr(mt,e.cid);var o=t>0?this.collection.at(t-1):!1;if(o){var a=r.children("["+mt+'="'+o.cid+'"]').last();a.after(s)}else r.prepend(s);this.trigger("append",null,function(t){t.setAttribute(mt,e.cid)}),i.silent||this.trigger("rendered:item",this,this.collection,e,s,t),i.filter&&L.call(this,e)}return n}},updateItem:function(e){var t=this.getCollectionElement(),i=t.find("["+mt+'="'+e.cid+'"]');i.attr(nt)||(this.removeItem(i),this.appendItem(e))},removeItem:function(e){var t=e;if(e.cid){var i=this.getCollectionElement();t=i.find("["+mt+'="'+e.cid+'"]')}if(!t.length)return!1;t.remove();var n=t.attr(nt),r=this.children[n];return r&&this._removeChild(r),!0},renderCollection:function(){this.collection?(this.collection.isEmpty()?B.call(this):(D.call(this),this.collection.forEach(function(e,t){this.appendItem(e,t)},this)),this.trigger("rendered:collection",this,this.collection)):B.call(this)},emptyClass:"empty",renderEmpty:function(){if(this.emptyView||r.call(this,"emptyView",{extension:"-empty"}),this.emptyTemplate||this.emptyView||s.call(this,"emptyTemplate",{extension:"-empty",required:!1}),this.emptyView){var e={};this.emptyTemplate&&(e.template=this.emptyTemplate);var t=ot.Util.getViewInstance(this.emptyView,e);return t.ensureRendered(),t}return this.emptyTemplate&&this.renderTemplate(this.emptyTemplate)},renderItem:function(e,t){if(this.itemView||r.call(this,"itemView",{extension:"-item",required:!1}),this.itemTemplate||this.itemView||s.call(this,"itemTemplate",{extension:"-item",required:!this.itemView}),this.itemView){var i={model:e};return this.itemTemplate&&(i.template=this.itemTemplate),ot.Util.getViewInstance(this.itemView,i)}return this.renderTemplate(this.itemTemplate,this.itemContext(e,t))},itemContext:function(e){return e.attributes},appendEmpty:function(){var e=this.getCollectionElement();e.empty();var t=this.renderEmpty();t&&this.appendItem(t,0,{silent:!0,filter:!1}),this.trigger("rendered:empty",this,this.collection)},getCollectionElement:function(){var e=this.$(this._collectionSelector);return 0===e.length?this.$el:e},updateFilter:function(){F.call(this)}}),ot.CollectionView.on({collection:{reset:O,sort:O,change:function(e){var t=this.getObjectOptions(this.collection);t&&t.change&&this.updateItem(e),L.call(this,e)},add:function(e){var t=this.getCollectionElement();if(1===this.collection.length&&t.length&&D.call(this),t.length){var i=this.collection.indexOf(e);this.appendItem(e,i)}},remove:function(e){var t=this.getCollectionElement();this.removeItem(e),0===this.collection.length&&t.length&&B.call(this)}}}),ot.View.on({collection:{invalid:function(e,t){this.getObjectOptions(e).invalid&&this.trigger("invalid",t,e)},error:function(e,t){this.trigger("error",t,e)}}}),$.fn.collection=function(e){if(e&&e.collection)return e.collection;var t=$(this),i=t.closest("["+yt+"]"),n=i&&i.attr(yt);return n&&(e=t.view())?e.collection:!1},at.model.defaultOptions.populate=!0;var xt=at.model.change;at.model.change=function(e,t){if(this._isChanging=!0,xt.apply(this,arguments),this._isChanging=!1,!t||!t.serializing){var i=A(this);this._renderCount&&i&&this.populate(!i.context&&this.model.attributes,i)}},_.extend(ot.View.prototype,{serialize:function(){for(var e,t,i,n=0;n<arguments.length;++n)_.isFunction(arguments[n])?e=arguments[n]:_.isObject(arguments[n])&&("stopPropagation"in arguments[n]&&"preventDefault"in arguments[n]?i=arguments[n]:t=arguments[n]);if(!i||this._preventDuplicateSubmission(i)){t=_.extend({set:!0,validate:!0,children:!0},t||{});var r=t.attributes||{},s=this,o=[];if(S(this,t,function(e){var i=s._getInputValue(e,t,o);_.isUndefined(i)||I(r,e.name,{mode:"serialize"},function(e,t){e[t]?_.isArray(e[t])?e[t].push(i):e[t]=[e[t],i]:e[t]=i})}),t._silent||this.trigger("serialize",r,t),t.validate){var a=this.validateInput(r);if(a&&a.length&&(o=o.concat(a)),this.trigger("validate",r,o,t),o.length)return this.trigger("invalid",o),void 0}return t.set&&this.model&&!this.model.set(r,{silent:t.silent,serializing:!0})?!1:(e&&e.call(this,r,_.bind(M,this)),r)}},_preventDuplicateSubmission:function(e,t){e.preventDefault();var i=$(e.target);return"form"!==(e.target.tagName||"").toLowerCase()&&(i=$(e.target).closest("form")),i.attr("data-submit-wait")?!1:(i.attr("data-submit-wait","true"),t&&t.call(this,e),!0)},populate:function(e,t){t=_.extend({children:!0},t||{});var i,e=e||this._getContext();S(this,t,function(t){I(e,t.name,{mode:"populate"},function(e,n){if(i=e&&e[n],!_.isUndefined(i)){var r="checkbox"===t.type||"radio"===t.type;r&&_.isBoolean(i)?t.checked=i:r?t.checked=i==t.value:t.value=i}})}),++this._populateCount,t._silent||this.trigger("populate",e)},validateInput:function(){},_getInputValue:function(e){if("checkbox"!==e.type&&"radio"!==e.type){if(e.multiple===!0){var t=[];return $("option",e).each(function(){this.selected&&t.push(this.value)}),t}return e.value}return e.checked?e.getAttribute("value")||!0:void 0},_populateCount:0}),ot.View.on({"before:rendered":function(){if(this._renderCount){var e=this.getObjectOptions(this.model);this.previousFormData=N(this.serialize(_.extend({set:!1,validate:!1,_silent:!0},e)),function(e){return""!==e&&null!=e})}},rendered:function(){var e=A(this);!e||this._isChanging||this._populateCount||this.populate(!e.context&&this.model.attributes,e),this.previousFormData&&this.populate(this.previousFormData,_.extend({_silent:!0},e)),this.previousFormData=null}}),ot.View.on({invalid:U,error:U,deactivated:function(){this.$el&&M.call(this)}});var Vt="data-layout-cid";ot.LayoutView=ot.View.extend({_defaultTemplate:Handlebars.VM.noop,render:function(){var e=ot.View.prototype.render.apply(this,arguments);return this.template===Handlebars.VM.noop?q.call(this):P.call(this),e},setView:function(e,t){t=_.extend({scroll:!0},t||{}),_.isString(e)&&(e=new(ot.Util.registryGet(ot,"Views",e,!1))),this.ensureRendered();var i,n,r,s=this._view;return e===s?!1:(this.trigger("change:view:start",e,s,t),n=_.bind(function(){s&&(s.$el.remove(),R.call(s,"deactivated",t),this._removeChild(s))},this),i=_.bind(function(){if(e){e.ensureRendered(),R.call(this,"activated",t),e.trigger("activated",t),this._view=e;var i=Q.call(this);this._view.appendTo(i),this._addChild(e)}else this._view=void 0},this),r=_.bind(function(){this.trigger("change:view:end",e,s,t)},this),t.transition?t.transition(e,s,i,n,r):(n(),i(),r()),e)},getView:function(){return this._view}}),Handlebars.registerHelper("layout-element",function(e){var i=p(e).view;if(!i.getView)throw new Error(t("layout-element-helper"));return e.hash[Vt]=i.cid,f(e.hash),new Handlebars.SafeString(ot.Util.tag.call(this,e.hash,"",this))}),ot.CollectionHelperView=ot.CollectionView.extend({events:{"rendered:item":z("rendered:item"),"rendered:collection":z("rendered:collection"),"rendered:empty":z("rendered:empty")},getCollectionElement:function(){return this.$el},constructor:function(e){e.options["item-template"]&&(e.itemTemplate=ot.Util.getTemplate(e.options["item-template"])),e.options["empty-template"]&&(e.emptyTemplate=ot.Util.getTemplate(e.options["empty-template"])),!e.itemTemplate&&e.template&&e.template!==Handlebars.VM.noop&&(e.itemTemplate=e.template,e.template=Handlebars.VM.noop),!e.emptyTemplate&&e.inverse&&e.inverse!==Handlebars.VM.noop&&(e.emptyTemplate=e.inverse,e.inverse=Handlebars.VM.noop);var t=_.isFunction(e.itemContext),i=_.isFunction(e.itemFilter),n=ot.HelperView.call(this,e);return t?this.itemContext=_.bind(this.itemContext,this.parent):_.isString(this.itemContext)&&(this.itemContext=_.bind(this.parent[this.itemContext],this.parent)),i?this.itemFilter=_.bind(this.itemFilter,this.parent):_.isString(this.itemFilter)&&(this.itemFilter=_.bind(this.parent[this.itemFilter],this.parent)),this.parent.name&&(this.emptyView||this.parent.renderEmpty||(this.emptyView=ot.Util.getViewClass(this.parent.name+"-empty",!0)),this.emptyTemplate||this.parent.renderEmpty||(this.emptyTemplate=ot.Util.getTemplate(this.parent.name+"-empty",!0)),this.itemView||this.parent.renderItem||(this.itemView=ot.Util.getViewClass(this.parent.name+"-item",!0)),this.itemTemplate||this.parent.renderItem||(this.itemTemplate=ot.Util.getTemplate(this.parent.name+"-item",!!this.itemView))),n},setAsPrimaryCollectionHelper:function(){_.each(Tt,function(e){W.call(this,e)},this);var e=this;_.each(["itemFilter","itemContext","renderItem","renderEmpty"],function(t){e.parent[t]&&(e[t]=function(){return e.parent[t].apply(e.parent,arguments)})})}}),_.extend(ot.CollectionHelperView.prototype,ft),ot.CollectionHelperView.attributeWhiteList={"item-context":"itemContext","item-filter":"itemFilter","item-template":"itemTemplate","empty-template":"emptyTemplate","item-view":"itemView","empty-view":"emptyView","empty-class":"emptyClass"};var Tt=["itemTemplate","itemView","emptyTemplate","emptyView"];Handlebars.registerViewHelper("collection",ot.CollectionHelperView,function(e,t){1===arguments.length&&(t=e,e=t.parent.collection,e&&t.setAsPrimaryCollectionHelper(),t.$el.attr(bt,"true"),t.listenTo(t.parent,"change:data-object",function(e,i){"collection"===e&&(t.setAsPrimaryCollectionHelper(),t.setCollection(i))})),e&&t.setCollection(e)}),Handlebars.registerHelper("collection-element",function(e){if(!p(e).view.renderCollection)throw new Error(t("collection-element-helper"));var i=e.hash;return f(i),i.tagName=i.tagName||"div",i[bt]=!0,new Handlebars.SafeString(ot.Util.tag.call(this,i,"",this))}),Handlebars.registerHelper("empty",function(e,t){1===arguments.length&&(t=e);var i=p(t).view;return 1===arguments.length&&(e=i.model),i._emptyListeners||(i._emptyListeners={}),e&&!i._emptyListeners[e.cid]&&e.models&&"length"in e&&(i._emptyListeners[e.cid]=!0,i.listenTo(e,"remove",function(){0===e.length&&i.render()}),i.listenTo(e,"add",function(){1===e.length&&i.render()}),i.listenTo(e,"reset",function(){i.render()})),!e||e.isEmpty()?t.fn(this):t.inverse(this)}),Handlebars.registerHelper("template",function(e,t){var i=_.extend({fn:t&&t.fn},this,t?t.hash:{}),n=p(t).view.renderTemplate(e,i);return new Handlebars.SafeString(n)}),Handlebars.registerHelper("yield",function(e){return p(e).yield&&e.data.yield()}),Handlebars.registerHelper("url",function(e){var t;
if(arguments.length>2)t=_.map(_.head(arguments,arguments.length-1),encodeURIComponent).join("/");else{var i=arguments[1],n=i&&i.hash||i;t=n&&n["expand-tokens"]?ot.Util.expandToken(e,this):e}if(Backbone.history._hasPushState){var r=Backbone.history.options.root;return"/"===r&&"/"===t.substr(0,1)?t:r+t}return"#"+t}),Handlebars.registerViewHelper("view",{factory:function(e,t){var i=e.length>=1?e[0]:ot.View;return ot.Util.getViewInstance(i,t.options)},modifyHTMLAttributes:function(e,t){e.tagName=t.el.tagName.toLowerCase()},callback:function(e){var i=arguments[arguments.length-1],n=i._helperOptions.options,r=i.cid;if(!_.isString(e)&&n.hash&&_.keys(n.hash).length>0)throw new Error(t("view-helper-hash-args"));n.fn&&(pt[r]=n.fn)}});var Et="data-call-method",Ht="data-trigger-event";Handlebars.registerHelper("button",function(e,i){1===arguments.length&&(i=e,e=i.hash.method);var n=i.hash,r=n["expand-tokens"];if(delete n["expand-tokens"],!e&&!i.hash.trigger)throw new Error(t("button-trigger"));return f(n),n.tagName=n.tagName||"button",n.trigger&&(n[Ht]=n.trigger),delete n.trigger,e&&(n[Et]=e),new Handlebars.SafeString(ot.Util.tag(n,i.fn?i.fn(this):"",r?this:null))}),Handlebars.registerHelper("link",function(){var e=_.toArray(arguments),i=e.pop(),n=i.hash,r=0===e.length?[n.href]:e,s=n["expand-tokens"];if(delete n["expand-tokens"],!r[0]&&""!==r[0])throw new Error(t("link-href"));return f(n),r.push(i),n.href=Handlebars.helpers.url.apply(this,r),n.tagName=n.tagName||"a",n.trigger&&(n[Ht]=i.hash.trigger),delete n.trigger,n[Et]="_anchorClick",new Handlebars.SafeString(ot.Util.tag(n,i.fn?i.fn(this):"",s?this:null))});var Ot,kt="["+Et+"], ["+Ht+"]";$(document).ready(function(){ot._fastClickEventName||J()});var $t="data-element-tmp";Handlebars.registerHelper("element",function(e,t){f(t.hash);var i=_.uniqueId("element"),n=p(t).view;return t.hash[$t]=i,n._elementsByCid||(n._elementsByCid={}),n._elementsByCid[i]=e,new Handlebars.SafeString(ot.Util.tag(t.hash))}),ot.View.on("append",function(e,t){(e||this.$el).find("["+$t+"]").forEach(function(e){var i=$(e),n=i.attr($t),r=this._elementsByCid[n];_.isFunction(r)&&(r=r.call(this)),i.replaceWith(r),t&&t(r)},this)}),Handlebars.registerHelper("super",function(e){var i=p(e).view,n=i.constructor&&i.constructor.__super__;if(n){var r=n.template;if(!r){if(!n.name)throw new Error(t("super-parent"));r=n.name}return _.isString(r)&&(r=ot.Util.getTemplate(r,!1)),new Handlebars.SafeString(r(this,e))}return""});var Ft,Lt="load:start",jt="load:end";ot.setRootObject=function(e){Ft=e},ot.loadHandler=function(e,t,i){var n=_.uniqueId("load");return function(r,s,o){function a(){if(!h.timeout||h.run){var t=void 0!==l._loadingTimeoutDuration?l._loadingTimeoutDuration:ot.View.prototype._loadingTimeoutDuration;h.timeout=setTimeout(function(){try{h.events.length&&(h.run=!0,e.call(l,h.message,h.background,h))}catch(t){ot.onException("loadStart",t)}},1e3*t)}}var l=i||this;l._loadInfo=l._loadInfo||{};var h=l._loadInfo[n];h?(clearTimeout(h.endTimeout),h.message=r,!s&&h.background&&(h.background=!1,a())):(h=l._loadInfo[n]=_.extend({isLoading:function(){return h.events.length},cid:n,events:[],timeout:0,message:r,background:!!s},Backbone.Events),a()),_.indexOf(h.events,o)>=0||(h.events.push(o),o.on(jt,function c(){var e=l._loadingTimeoutEndDuration;void 0===e&&(e=ot.View.prototype._loadingTimeoutEndDuration);var i=h.events,r=_.indexOf(i,o);r>=0&&!o.isLoading()&&(i.splice(r,1),_.indexOf(i,o)<0&&o.off(jt,c)),i.length||(clearTimeout(h.endTimeout),h.endTimeout=setTimeout(function(){try{i.length||(h.run&&(t&&t.call(l,h.background,h),h.trigger(jt,h)),clearTimeout(h.timeout),h=l._loadInfo[n]=void 0)}catch(e){ot.onException("loadEnd",e)}},1e3*e))}))}},ot.forwardLoadEvents=function(e,t,i){function n(r,s,o){i&&e.off(Lt,n),t.trigger(Lt,r,s,o)}return e.on(Lt,n),{off:function(){e.off(Lt,n)}}},ot.mixinLoadable=function(e,t){_.extend(e,{_loadingClassName:"loading",_loadingTimeoutDuration:.33,_loadingTimeoutEndDuration:.1,onLoadStart:function(e,i,n){var r=t?this.parent:this;r&&r.el&&(r.nonBlockingLoad||i||!Ft||Ft===this||Ft.trigger(Lt,e,i,n),r._isLoading=!0,$(r.el).addClass(r._loadingClassName),r.trigger("change:load-state","start",i))},onLoadEnd:function(){var e=t?this.parent:this;e&&e.el&&(e._isLoading=!1,$(e.el).removeClass(e._loadingClassName),e.trigger("change:load-state","end"))}})},ot.mixinLoadableEvents=function(e,t){_.extend(e,{_loadCount:0,isLoading:function(){return this._loadCount>0},loadStart:function(e,i){this._loadCount++;var n=t?this.parent:this;n.trigger(Lt,e,i,n)},loadEnd:function(){this._loadCount--;var e=t?this.parent:this;e.trigger(jt,e)}})},ot.mixinLoadable(ot.View.prototype),ot.mixinLoadableEvents(ot.View.prototype),ot.HelperView&&(ot.mixinLoadable(ot.HelperView.prototype,!0),ot.mixinLoadableEvents(ot.HelperView.prototype,!0)),ot.CollectionHelperView&&(ot.mixinLoadable(ot.CollectionHelperView.prototype,!0),ot.mixinLoadableEvents(ot.CollectionHelperView.prototype,!0)),ot.sync=function(e,t,i){var n=this,r=i.complete;return i.complete=function(){n._request=void 0,n._aborted=!1,r&&r.apply(this,arguments)},this._request=Backbone.sync.apply(this,arguments),this._request};var Dt=[];ot.Model&&Dt.push(ot.Model),ot.Collection&&Dt.push(ot.Collection),_.each(Dt,function(e){var t=e.prototype.fetch;ot.mixinLoadableEvents(e.prototype,!1),_.extend(e.prototype,{sync:ot.sync,fetch:function(i){function n(e){var t=i[e];i[e]=function(){r.loadEnd(),t&&t.apply(this,arguments)}}if(i=i||{},e===ot.Collection&&(_.find(["reset","remove","add","update"],function(e){return!_.isUndefined(i[e])})||(i.reset=!0)),!i.loadTriggered){var r=this;n("success"),n("error"),r.loadStart(void 0,i.background)}return Z.call(this,i||{},t)},load:function(e,t,i){2!==arguments.length||_.isFunction(t)||(i=t,t=!1),i=i||{},i.background||this.isPopulated()||!Ft||(this.isLoading()?Ft.trigger(Lt,i.message,i.background,this):ot.forwardLoadEvents(this,Ft,!0)),Y.call(this,e,t,i)}})}),ot.Util.bindToRoute=X,ot.View.prototype._modifyDataObjectOptions=function(e,t){return t.ignoreErrors=this.ignoreFetchError,t.background=this.nonBlockingLoad,t},ot.HelperView.prototype._modifyDataObjectOptions=ot.CollectionHelperView.prototype._modifyDataObjectOptions=function(e,t){return t.ignoreErrors=this.parent.ignoreFetchError,t.background=this.parent.nonBlockingLoad,t},at.collection.loading=function(){var e=this.loadingView,t=this.loadingTemplate,i=this.loadingPlacement;if(e||t){var n=ot.loadHandler(_.bind(function(){var n;if(0===this.collection.length&&this.$el.empty(),e){var r=ot.Util.getViewInstance(e);this._addChild(r),t?r.render(t):r.render(),n=r}else n=this.renderTemplate(t);var s=i?i.call(this):this.collection.length;this.appendItem(n,s),this.$el.children().eq(s).attr("data-loading-element",this.collection.cid)},this),_.bind(function(){this.$el.find('[data-loading-element="'+this.collection.cid+'"]').remove()},this),this.collection);this.listenTo(this.collection,"load:start",n)}},ot.CollectionHelperView&&_.extend(ot.CollectionHelperView.attributeWhiteList,{"loading-template":"loadingTemplate","loading-view":"loadingView","loading-placement":"loadingPlacement"}),ot.View.on({"load:start":ot.loadHandler(function(e,t,i){this.onLoadStart(e,t,i)},function(e,t){this.onLoadEnd(t)}),collection:{"load:start":function(e,t,i){this.trigger(Lt,e,t,i)}},model:{"load:start":function(e,t,i){this.trigger(Lt,e,t,i)}}}),Handlebars.registerHelper("loading",function(e){var t=p(e).view;return t.off("change:load-state",tt,t),t.on("change:load-state",tt,t),t._isLoading?e.fn(this):e.inverse(this)});var Bt=/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());Bt&&(ot.View.on("before:append",function(){this._renderCount>0&&(_.each(this._elementsByCid,function(e){$(e).detach()}),_.each(this.children,function(e){e.$el.detach()}))}),ot.CollectionView.prototype._replaceHTML=function(e){if(!this.getObjectOptions(this.collection)||!this._renderCount)return vt.call(this,e);var t,i=this.getCollectionElement().clone(!0,!0);t=vt.call(this,e),i.attr("data-view-cid")||this.getCollectionElement().replaceWith(i)})}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment