grafana/public/app/core/utils/emitter.ts

37 lines
757 B
TypeScript
Raw Normal View History

import { EventEmitter } from 'eventemitter3';
export class Emitter {
private emitter: EventEmitter;
constructor() {
this.emitter = new EventEmitter();
}
emit(name: string, data?: any) {
this.emitter.emit(name, data);
}
on(name: string, handler: (payload?: any) => void, scope?: any) {
this.emitter.on(name, handler);
2016-03-25 09:52:28 -05:00
if (scope) {
2018-08-29 07:26:50 -05:00
const unbind = scope.$on('$destroy', () => {
this.emitter.off(name, handler);
unbind();
});
}
}
removeAllListeners(evt?: string) {
this.emitter.removeAllListeners(evt);
}
off(name: string, handler: (payload?: any) => void) {
this.emitter.off(name, handler);
}
getEventCount(): number {
return (this.emitter as any)._eventsCount;
}
}