UNPKG

emap

Version:
180 lines (160 loc) 5.89 kB
// Generated by CoffeeScript 1.10.0 (function() { var Dict, EventMap, slice = [].slice; Dict = require('jsdictionary'); EventMap = (function() { /* 00000000 000 000 00000000 000 000 000000000 00 00 0000000 00000000 000 000 000 000 0000 000 000 000 000 000 000 000 000 0000000 000 000 0000000 000 0 000 000 000000000 000000000 00000000 000 000 000 000 0000 000 000 0 000 000 000 000 00000000 0 00000000 000 000 000 000 000 000 000 000 */ function EventMap() { this.dispatcherMap = new Dict(); } /* 00 00 0000000 00000000 000 000 000 000 000 000 000000000 000000000 00000000 000 0 000 000 000 000 000 000 000 000 000 */ EventMap.prototype.map = function(dispatcher, type, handler, owner, useCapture) { var callback, cb, info, j, len, listenerMap, listeners, ref, ref1, unregister; if (useCapture == null) { useCapture = false; } listenerMap = (ref = this.dispatcherMap.get(dispatcher)) != null ? ref : this.dispatcherMap.map(dispatcher, {}); listeners = (ref1 = listenerMap[type]) != null ? ref1 : listenerMap[type] = []; unregister = null; for (j = 0, len = listeners.length; j < len; j++) { info = listeners[j]; if (info.h === handler && info.o === owner && info.u === useCapture) { return null; } } if (owner) { cb = callback = function() { var args; args = 1 <= arguments.length ? slice.call(arguments, 0) : []; handler.apply(owner, args); return null; }; } else { cb = handler; } if (dispatcher.addEventListener) { dispatcher.addEventListener(type, cb, useCapture); } else if (dispatcher.addListener) { dispatcher.addListener(type, cb, useCapture); } else if (dispatcher.on) { dispatcher.on(type, cb, useCapture); } else if (dispatcher.$on) { unregister = dispatcher.$on(type, cb, useCapture); } else if (dispatcher.add) { dispatcher.add(type, handler, owner); } listeners.push({ d: dispatcher, o: owner, h: handler, u: useCapture, c: callback, unregister: unregister }); return null; }; /* 000 000 000 000 00 00 0000000 00000000 000 000 0000 000 000 000 000 000 000 000 000 000 000 0 000 000000000 000000000 00000000 000 000 000 0000 000 0 000 000 000 000 0000000 000 000 000 000 000 000 000 */ EventMap.prototype.unmap = function(dispatcher, type, handler, owner, useCapture) { var cb, i, info, listenerMap, listeners; if (useCapture == null) { useCapture = false; } listenerMap = this.dispatcherMap.get(dispatcher); if (!listenerMap) { return null; } listeners = listenerMap[type]; if (!listeners) { return null; } i = listeners.length; while (--i >= 0) { info = listeners[i]; if (info.h === handler && info.o === owner && info.u === useCapture) { listeners.splice(i, 1); cb = owner ? info.c : handler; if (info.unregister) { info.unregister(); } else if (dispatcher.removeEventListener) { dispatcher.removeEventListener(type, cb, useCapture); } else if (dispatcher.removeListener) { dispatcher.removeListener(type, cb, useCapture); } else if (dispatcher.off) { dispatcher.off(type, cb, useCapture); } else if (dispatcher.remove) { dispatcher.remove(type, handler, owner); } } } if (!listeners.length) { delete listenerMap[type]; } if (!Dict.hasKeys(listenerMap)) { this.dispatcherMap.unmap(dispatcher); } return null; }; /* 0000000 000 000 000 000 000 000 000000000 000 000 000 000 000 000 000 000 0000000 0000000 */ EventMap.prototype.all = function() { this.dispatcherMap.forEach((function(_this) { return function(dispatcher, listenerMap) { var cb, info, listeners, type; for (type in listenerMap) { listeners = listenerMap[type]; while (info = listeners.shift()) { cb = info.o ? info.c : info.h; if (info.unregister) { info.unregister(); } else if (dispatcher.removeEventListener) { dispatcher.removeEventListener(type, cb, info.u); } else if (dispatcher.removeListener) { dispatcher.removeListener(type, cb, info.u); } else if (dispatcher.off) { dispatcher.off(type, cb, info.u); } else if (dispatcher.remove) { dispatcher.remove(type, info.h, info.o); } } } return _this.dispatcherMap.unmap(dispatcher); }; })(this)); return null; }; return EventMap; })(); /* 00000000 000 000 00000000 0000000 00000000 000000000 0000000 000 000 000 000 000 000 000 000 000 000 000 0000000 00000 00000000 000 000 0000000 000 0000000 000 000 000 000 000 000 000 000 000 000 00000000 000 000 000 0000000 000 000 000 0000000 */ module.exports = EventMap["default"] = EventMap; }).call(this); //# sourceMappingURL=emap.js.map