b2
Version:
A super lightweight framework based on backbone.js
2 lines • 6.19 kB
JavaScript
!function(e,t){if("function"==typeof define&&define.amd)define(["backbone","underscore","jquery","exports"],function(n,i,r,o){e.B2=t(e,o,n,i,r)});else if("undefined"!=typeof exports){var n=require("backbone"),i=require("underscore");t(e,exports,n,i)}else e.B2=t(e,{},e.Backbone,e._,e.jQuery||e.Zepto||e.ender||e.$)}(this,function(e,t,n,i,r){var o=e.B2;t.VERSION="0.1.11",t.noConflict=function(){return e.B2=o,this};var s={};try{s=window.localStorage}catch(e){}t.localStorage=s,t.log=function(){if(t.debug&&window.console&&window.console.log)return console.log.apply(window.console,arguments)},i.extend(t,n),t.rootViews={},t.getComponentByUniqueName=function(e){function n(e,t){var r;return i.each(e,function(e){if(r)return!1;r=e._uuid+"_"+e._componentName===t?e:n(e._components,t)}),r}return n(t.rootViews,e)},t.View=n.View.extend({template:function(){return""},appEvents:{},broadcastEvents:{},broadcast:function(){var e=[].slice.apply(arguments);e.unshift("__broadcast__"),this.trigger.apply(this,e)},registerComponent:function(e,n,o,s){if(this.isRemoved)return n.remove(),t.log("i am already removed, dont register components to me.",this._uuid,this._componentName),n;var a;if(this._parentView||(t.rootViews[this.cid]=this),this._components=this._components||{},this._components.hasOwnProperty(e)){var p=this._components[e];p.trigger&&p.trigger("beforeRemove"),this.stopListening(p,"all"),p.remove()}this._components[e]=n,n._parentView=this,t.rootViews[n.cid]&&delete t.rootViews[n.cid],n._componentName=e,n._uuid=i.uniqueId(),n.$el.attr("data-component-unique-name",n._uuid+"_"+e);var c=/^(\S+)\s*(\S+)$/;for(var d in this.appEvents)if(this.appEvents.hasOwnProperty(d)){var l=this.appEvents[d],h=d.match(c),u=h[1],f=h[2];if(h&&f){var v=/\/(.*?)\//.exec(f),m=v&&v[1];m&&(f=new RegExp(m.replace(/\\/g,"\\\\")))}if(f){var _=!1;if(i.isRegExp(f)&&f.test(e)?_=!0:f==e&&(_=!0),_){var y=u.split(/,/),g=this[l];for(a=0;a<y.length;a++)"all"!==y[a]&&this.listenTo(n,y[a],g)}}}return this.listenTo(n,"all",function(e){"__broadcast__"!==e&&(this.appEvents.hasOwnProperty("all")?this[this.appEvents.all].apply(this,[arguments[0],n].concat(i.toArray(arguments).slice(1))):n._events&&n._events[e]||this.trigger.apply(this,arguments))}),n.listenTo(this,"__broadcast__",function(){var e=[].slice.apply(arguments),t=e.shift();if(n.broadcastEvents.hasOwnProperty(t)){var r=n.broadcastEvents[t];(i.isString(r)?n[r]:r).apply(n,e)}else n.broadcast.apply(n,arguments)}),o&&(i.isString(o)?this.$(o).append(n.el):r(o).append(n.el),!0!==s&&n.render()),n},getComponent:function(e){return this._components?this._components[e]:null},getComponents:function(){return this._components||{}},freeChildren:function(e){i.each(this._components,function(t,n){(!e||(i.isRegExp(e)?e.test(n):e===n||e===t))&&(this.stopListening(t,"all"),t.remove(),this._components[n]&&(delete this._components[n],delete t._parentView))},this)},_addFieldToFormParams:function(e,t,n){if(i.isObject(n)&&!i.isArray(n)){var r=n[e];if(void 0===r)n[e]=t;else if(i.isArray(r))i.isArray(r)&&r.push(t);else{var o=r;n[e]=[o],n[e].push(t)}}else i.isArray(n)&&n.push({name:e,value:t})},_parseSerializeOpts:function(e){var t={},n=(e||"").split(";"),o={false:!1,true:!0};return i.each(n,function(e){e=e.split(":");var n=r.trim(e[0]),s=r.trim(e[1]);t[n]=i.isUndefined(o[s])?s:o[s]}),i.defaults(t,{trim:!0})},serializeForm:function(e,t,n,o){var s=this;e=e||this.el;var a=r(e).find("input, select, textarea").filter(function(){var n=!1,i=r(this).closest("."+o);return 0===i.length?n=!0:r.contains(e,i[0])||(n=!0),n&&this.name&&-1===this.name.indexOf(t||"ignore")}),p={};return n&&(p=[]),a.each(function(){var e=r(this),t=e.attr("name"),n=s._parseSerializeOpts(e.attr("data-serialize-opts")),o=e.val();o=n.trim?r.trim(o):o;var a=e.attr("value2"),c=!0,d=e.attr("data-inverse-value"),l=e.data("dataTypeToParse");switch(e.prop("type")){case"radio":e.prop("checked")?t=e.attr("name"):c=!1;break;case"checkbox":e.prop("checked")?null!=o&&"on"!=o||(o=!0):o=null!=a&&a,d&&(o=!o)}if(i.isString(l))switch(l.toLowerCase()){case"int":var h=parseInt(o,10);o=isNaN(h)?o:h;break;case"float":var u=parseFloat(o);o=isNaN(u)?o:u}c&&s._addFieldToFormParams(t,o,p)}),p},serializeArray:function(e,t){return this.serializeForm(e,t,!0)},getParentView:function(){return this._parentView},remove:function(){this.freeChildren(),this.trigger("beforeRemove");var e=this._parentView;e&&(e.stopListening(this),e._components&&delete e._components[this._componentName],delete this._parentView),t.rootViews[this.cid]&&delete t.rootViews[this.cid],n.View.prototype.remove.apply(this,arguments),this.isRemoved=!0},render:function(){this.$el.html(this.template())}}),t.Model=n.Model.extend({}),t.Collection=n.Collection.extend({}),t.Router=n.Router.extend({}),t.History=n.History.extend({});t.Model.extend=t.Collection.extend=t.Router.extend=t.View.extend=t.History.extend=function(e,t,n){n=n||[];var r,o=this,s=o.prototype;r=e&&i.has(e,"constructor")?e.constructor:function(){return o.apply(this,arguments)},i.extend(r,o,t);var a=function(){this.constructor=r};a.prototype=o.prototype;var p=r.prototype=new a,c=/xyz/.test(function(){return"xyz"})?/\b_super\b/:/.*/,d=/'manage ajax';/;for(var l in e)e.hasOwnProperty(l)&&(p[l]="function"==typeof e[l]&&(d.test(e[l])||"function"==typeof s[l]&&(c.test(e[l])||n.indexOf(l)>-1))?function(e,t){return function(){var n=this._super;d.test(t)&&(t.viewId="_"+this.cid+"_"),this._super=s[e];var i=t.apply(this,arguments);return this._super=n,i}}(l,e[l]):e[l]);return r.__super__=o.prototype,r};var a=t.View.extend;t.View.extend=function(e,n){if(e.render){var r=e.render;e.render=function(){if(this.isRemoved)return t.log("i am already removed, dont render me",this._uuid,this._componentName),this;this.onRenderBegin&&this.onRenderBegin(),this.freeChildren&&this.freeChildren();var e=r.apply(this,arguments);return this.onRenderEnd&&this.onRenderEnd(),e}}var o=a.call(this,e,n,["render"]);return o.prototype.events=i.extend({},this.prototype.events,e.events),o.prototype.appEvents=i.extend({},this.prototype.appEvents,e.appEvents),o.prototype.broadcastEvents=i.extend({},this.prototype.broadcastEvents,e.broadcastEvents),o}});
//# sourceMappingURL=b2-min.js.map