| 1 |
define("udx.event",function(){function a(){this._events={},this._conf&&b.call(this,this._conf)}function b(a){this._conf=a||e.event.prototype.defaults,console.log("configure",this._conf),this._conf.wildcard&&(this.listenerTree={})}function c(a,b,d,e){if(!d)return[];var f,g,h,i,j,k,l,m=[],n=b.length,o=b[e],p=b[e+1];if(e===n&&d._listeners){if("function"==typeof d._listeners)return a&&a.push(d._listeners),[d];for(f=0,g=d._listeners.length;g>f;f++)a&&a.push(d._listeners[f]);return[d]}if("*"===o||"**"===o||d[o]){if("*"===o){for(h in d)"_listeners"!==h&&d.hasOwnProperty(h)&&(m=m.concat(c(a,b,d[h],e+1)));return m}if("**"===o){l=e+1===n||e+2===n&&"*"===p,l&&d._listeners&&(m=m.concat(c(a,b,d,n)));for(h in d)"_listeners"!==h&&d.hasOwnProperty(h)&&("*"===h||"**"===h?(d[h]._listeners&&!l&&(m=m.concat(c(a,b,d[h],n))),m=m.concat(c(a,b,d[h],e))):m=m.concat(h===p?c(a,b,d[h],e+2):c(a,b,d[h],e)));return m}m=m.concat(c(a,b,d[o],e+1))}if(i=d["*"],i&&c(a,b,i,e+1),j=d["**"])if(n>e){j._listeners&&c(a,b,j,n);for(h in j)"_listeners"!==h&&j.hasOwnProperty(h)&&(h===p?c(a,b,j[h],e+2):h===o?c(a,b,j[h],e+1):(k={},k[h]=j[h],c(a,b,{"**":k},e+1)))}else j._listeners?c(a,b,j,n):j["*"]&&j["*"]._listeners&&c(a,b,j["*"],n);return m}function d(a,b){a="string"==typeof a?a.split(this._conf.delimiter):a.slice();for(var c=0,d=a.length;d>c+1;c++)if("**"===a[c]&&"**"===a[c+1])return;for(var e=this.listenerTree,g=a.shift();g;){if(e[g]||(e[g]={}),e=e[g],0===a.length){if(e._listeners){if("function"==typeof e._listeners)e._listeners=[e._listeners,b];else if(f(e._listeners)&&(e._listeners.push(b),!e._listeners.warned)){var h=this.defaultMaxListeners;"undefined"!=typeof this._events.maxListeners&&(h=this._events.maxListeners),h>0&&e._listeners.length>h&&(e._listeners.warned=!0,console.error("(node) warning: possible ud.event memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",e._listeners.length),console.trace())}}else e._listeners=b;return!0}g=a.shift()}return!0}var e="object"==typeof e?e:{},f=Array.isArray?Array.isArray:function(a){return"[object Array]"===Object.prototype.toString.call(a)};e.event=function(a){this._events={},b.call(this,a)},e.event.bestow=function(a,b){var c=new e.event(b);a=a&&"object"==typeof a?a:{};for(var d in c)"function"==typeof Object.defineProperty?Object.defineProperty(a,d,{value:c[d],enumerable:"function"==typeof c[d]?!1:!0,writable:"function"==typeof c[d]?!1:!0}):a[d]=c[d];return a},e.event.prototype.defaults={wildcard:!0,defaultMaxListeners:20,delimiter:"."},e.event.prototype.setMaxListeners=function(b){this._events||a.call(this),this._events.maxListeners=b,this._conf||(this._conf={}),this._conf.maxListeners=b},e.event.prototype.event="",e.event.prototype.once=function(a,b){return this.many(a,1,b),this},e.event.prototype.many=function(a,b,c){function d(){0===--b&&e.off(a,d),c.apply(this,arguments)}var e=this;if("function"!=typeof c)throw new Error("many only accepts instances of Function");return d._origin=c,this.on(a,d),e},e.event.prototype.emit=function(){this._events||a.call(this);var b=arguments[0];if(this._all){for(var d=arguments.length,e=new Array(d-1),f=1;d>f;f++)e[f-1]=arguments[f];for(f=0,d=this._all.length;d>f;f++)this.event=b,this._all[f].apply(this,e)}if("error"===b&&!(this._all||this._events.error||this._conf.wildcard&&this.listenerTree.error))throw arguments[1]instanceof Error?arguments[1]:new Error("Uncaught, unspecified 'error' event.");var g;if(this._conf.wildcard){g=[];var h="string"==typeof b?b.split(this._conf.delimiter):b.slice();c.call(this,g,h,this.listenerTree,0)}else g=this._events[b];if("function"==typeof g){if(this.event=b,1===arguments.length)g.call(this);else if(arguments.length>1)switch(arguments.length){case 2:g.call(this,arguments[1]);break;case 3:g.call(this,arguments[1],arguments[2]);break;default:for(var d=arguments.length,e=new Array(d-1),f=1;d>f;f++)e[f-1]=arguments[f];g.apply(this,e)}return!0}if(g){for(var d=arguments.length,e=new Array(d-1),f=1;d>f;f++)e[f-1]=arguments[f];for(var i=g.slice(),f=0,d=i.length;d>f;f++)this.event=b,i[f].apply(this,e);return i.length>0||this._all}return this._all},e.event.prototype.on=function(b,c){if("function"==typeof b)return this.onAny(b),this;if("function"!=typeof c)throw new Error("on only accepts instances of Function");if(this._events||a.call(this),this._conf.wildcard)return d.call(this,b,c),this;if(this._events[b]){if("function"==typeof this._events[b])this._events[b]=[this._events[b],c];else if(f(this._events[b])&&(this._events[b].push(c),!this._events[b].warned)){var e=this.defaultMaxListeners;"undefined"!=typeof this._events.maxListeners&&(e=this._events.maxListeners),e>0&&this._events[b].length>e&&(this._events[b].warned=!0,console.error("(node) warning: possible ud.event memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[b].length),console.trace())}}else this._events[b]=c;return this},e.event.prototype.onAny=function(a){if(this._all||(this._all=[]),"function"!=typeof a)throw new Error("onAny only accepts instances of Function");return this._all.push(a),this},e.event.prototype.addListener=e.event.prototype.on,e.event.prototype.off=function(a,b){if("function"!=typeof b)throw new Error("removeListener only takes instances of Function");var d,e=[];if(this._conf.wildcard){var g="string"==typeof a?a.split(this._conf.delimiter):a.slice();e=c.call(this,null,g,this.listenerTree,0)}else{if(!this._events[a])return this;d=this._events[a],e.push({_listeners:d})}for(var h=0;h<e.length;h++){var i=e[h];if(d=i._listeners,f(d)){for(var j=-1,k=0,l=d.length;l>k;k++)if(d[k]===b||d[k].listener&&d[k].listener===b||d[k]._origin&&d[k]._origin===b){j=k;break}if(0>j)return this;this._conf.wildcard?i._listeners.splice(j,1):this._events[a].splice(j,1),0===d.length&&(this._conf.wildcard?delete i._listeners:delete this._events[a])}else(d===b||d.listener&&d.listener===b||d._origin&&d._origin===b)&&(this._conf.wildcard?delete i._listeners:delete this._events[a])}return this},e.event.prototype.offAny=function(a){var b,c=0,d=0;if(a&&this._all&&this._all.length>0){for(b=this._all,c=0,d=b.length;d>c;c++)if(a===b[c])return b.splice(c,1),this}else this._all=[];return this},e.event.prototype.removeListener=e.event.prototype.off,e.event.prototype.removeAllListeners=function(b){if(0===arguments.length)return!this._events||a.call(this),this;if(this._conf.wildcard)for(var d="string"==typeof b?b.split(this._conf.delimiter):b.slice(),e=c.call(this,null,d,this.listenerTree,0),f=0;f<e.length;f++){var g=e[f];g._listeners=null}else{if(!this._events[b])return this;this._events[b]=null}return this},e.event.prototype.listeners=function(b){if(this._conf.wildcard){var d=[],e="string"==typeof b?b.split(this._conf.delimiter):b.slice();return c.call(this,d,e,this.listenerTree,0),d}return this._events||a.call(this),this._events[b]||(this._events[b]=[]),f(this._events[b])||(this._events[b]=[this._events[b]]),this._events[b]},e.event.prototype.listenersAny=function(){return this._all?this._all:[]}}); |