| 1 |
- define(function(t,e,n){"use strict";var i=t("./util"),s=function(t){var e,n=!1;return function(){return n?e:(n=!0,e=t.apply(this,arguments),t=null,e)}},r={on:function(t,e,n){if(!l(this,"on",t,[e,n])||!e)return this;this._events||(this._events={});var i=this._events[t]||(this._events[t]=[]);return i.push({callback:e,context:n,ctx:n||this}),this},once:function(t,e,n){if(!l(this,"once",t,[e,n])||!e)return this;var i=this,r=s(function(){i.off(t,r),e.apply(this,arguments)});return r._callback=e,this.on(t,r,n)},off:function(t,e,n){if(!this._events||!l(this,"off",t,[e,n]))return this;if(!t&&!e&&!n)return this._events=void 0,this;for(var i=t?[t]:Object.keys(this._events),s=0,r=i.length;s<r;s++){t=i[s];var c=this._events[t];if(c)if(e||n){for(var o=[],a=0,h=c.length;a<h;a++){var f=c[a];(e&&e!==f.callback&&e!==f.callback._callback||n&&n!==f.context)&&o.push(f)}o.length?this._events[t]=o:delete this._events[t]}else delete this._events[t]}return this},trigger:function(t){if(!this._events)return this;var e=Array.prototype.slice.call(arguments,1);if(!l(this,"trigger",t,e))return this;var n=this._events[t],i=this._events.all;return n&&o(n,e),i&&o(i,arguments),this},listenTo:function(t,e,n){var s=this._listeningTo||(this._listeningTo={}),r=t._listenId||(t._listenId=i.guid("l"));return s[r]=t,n||"object"!=typeof e||(n=this),t.on(e,n,this),this},listenToOnce:function(t,e,n){if("object"==typeof e){for(var i in e)this.listenToOnce(t,i,e[i]);return this}var r=s(function(){this.stopListening(t,e,r),n.apply(this,arguments)});return r._callback=n,this.listenTo(t,e,r)},stopListening:function(t,e,n){var s=this._listeningTo;if(!s)return this;var r=!e&&!n;n||"object"!=typeof e||(n=this),t&&((s={})[t._listenId]=t);for(var c in s)t=s[c],t.off(e,n,this),(r||i.isEmpty(t._events))&&delete this._listeningTo[c];return this}},c=/\s+/,l=function(t,e,n,i){if(!n)return!0;if("object"==typeof n){for(var s in n)t[e].apply(t,[s,n[s]].concat(i));return!1}if(c.test(n)){for(var r=n.split(c),l=0,o=r.length;l<o;l++)t[e].apply(t,[r[l]].concat(i));return!1}return!0},o=function(t,e){var n,i=-1,s=t.length,r=e[0],c=e[1],l=e[2];switch(e.length){case 0:for(;++i<s;)(n=t[i]).callback.call(n.ctx);return;case 1:for(;++i<s;)(n=t[i]).callback.call(n.ctx,r);return;case 2:for(;++i<s;)(n=t[i]).callback.call(n.ctx,r,c);return;case 3:for(;++i<s;)(n=t[i]).callback.call(n.ctx,r,c,l);return;default:for(;++i<s;)(n=t[i]).callback.apply(n.ctx,e);return}};return r.bind=r.on,r.unbind=r.off,"object"==typeof n&&n.exports?void(n.exports=r):r});
|