2018-01-04 10:12:02 +01:00
|
|
|
import { EventEmitter } from 'eventemitter3';
|
2016-03-22 18:21:21 +01:00
|
|
|
|
|
|
|
|
export class Emitter {
|
2016-04-07 19:47:48 -04:00
|
|
|
emitter: any;
|
2016-03-22 18:21:21 +01:00
|
|
|
|
|
|
|
|
constructor() {
|
2016-04-07 19:47:48 -04:00
|
|
|
this.emitter = new EventEmitter();
|
2016-03-22 18:21:21 +01:00
|
|
|
}
|
|
|
|
|
|
2016-03-23 12:50:56 +01:00
|
|
|
emit(name, data?) {
|
2016-04-07 19:47:48 -04:00
|
|
|
this.emitter.emit(name, data);
|
2016-03-22 18:21:21 +01:00
|
|
|
}
|
|
|
|
|
|
2016-03-25 15:52:28 +01:00
|
|
|
on(name, handler, scope?) {
|
2016-04-07 19:47:48 -04:00
|
|
|
this.emitter.on(name, handler);
|
2016-03-25 15:35:58 +01:00
|
|
|
|
2016-03-25 15:52:28 +01:00
|
|
|
if (scope) {
|
2018-08-29 14:26:50 +02:00
|
|
|
const unbind = scope.$on('$destroy', () => {
|
2016-04-07 19:47:48 -04:00
|
|
|
this.emitter.off(name, handler);
|
2016-10-30 15:14:18 +01:00
|
|
|
unbind();
|
2016-03-25 15:35:58 +01:00
|
|
|
});
|
|
|
|
|
}
|
2016-03-22 18:21:21 +01:00
|
|
|
}
|
|
|
|
|
|
2016-10-30 15:14:18 +01:00
|
|
|
removeAllListeners(evt?) {
|
|
|
|
|
this.emitter.removeAllListeners(evt);
|
|
|
|
|
}
|
|
|
|
|
|
2016-04-07 19:47:48 -04:00
|
|
|
off(name, handler) {
|
|
|
|
|
this.emitter.off(name, handler);
|
2016-03-22 18:21:21 +01:00
|
|
|
}
|
|
|
|
|
}
|