2016-03-23 11:39:10 -05:00
|
|
|
///<reference path="../../headers/common.d.ts" />
|
2016-03-22 12:21:21 -05:00
|
|
|
|
2016-04-07 18:47:48 -05:00
|
|
|
import EventEmitter from 'eventemitter3';
|
2016-03-22 12:21:21 -05:00
|
|
|
|
|
|
|
var hasOwnProp = {}.hasOwnProperty;
|
|
|
|
|
|
|
|
function createName(name) {
|
|
|
|
return '$' + name;
|
|
|
|
}
|
|
|
|
|
|
|
|
export class Emitter {
|
2016-04-07 18:47:48 -05:00
|
|
|
emitter: any;
|
2016-03-22 12:21:21 -05:00
|
|
|
|
|
|
|
constructor() {
|
2016-04-07 18:47:48 -05:00
|
|
|
this.emitter = new EventEmitter();
|
2016-03-22 12:21:21 -05:00
|
|
|
}
|
|
|
|
|
2016-03-23 06:50:56 -05:00
|
|
|
emit(name, data?) {
|
2016-04-07 18:47:48 -05:00
|
|
|
this.emitter.emit(name, data);
|
2016-03-22 12:21:21 -05:00
|
|
|
}
|
|
|
|
|
2016-03-25 09:52:28 -05:00
|
|
|
on(name, handler, scope?) {
|
2016-04-07 18:47:48 -05:00
|
|
|
this.emitter.on(name, handler);
|
2016-03-25 09:35:58 -05:00
|
|
|
|
2016-03-25 09:52:28 -05:00
|
|
|
if (scope) {
|
2016-04-26 05:39:24 -05:00
|
|
|
scope.$on('$destroy', () => {
|
2016-04-07 18:47:48 -05:00
|
|
|
this.emitter.off(name, handler);
|
2016-03-25 09:35:58 -05:00
|
|
|
});
|
|
|
|
}
|
2016-03-22 12:21:21 -05:00
|
|
|
}
|
|
|
|
|
2016-04-07 18:47:48 -05:00
|
|
|
off(name, handler) {
|
|
|
|
this.emitter.off(name, handler);
|
2016-03-22 12:21:21 -05:00
|
|
|
}
|
|
|
|
}
|