event-emitters
Version:
30 lines • 934 B
JavaScript
import { EventEmitter } from './EventEmitter';
/**
* This is the same as EventEmitterWithCurrent but the "current value" is optional
*/
export class EventEmitterWithOptionalCurrent extends EventEmitter {
constructor(initialMessage) {
super();
if (arguments.length) {
this.currentMessage = initialMessage;
this.hasCurrentMessage = true;
}
else {
this.hasCurrentMessage = false;
}
}
emit(newMessage) {
this.hasCurrentMessage = true;
this.currentMessage = newMessage;
super.emit(newMessage);
}
subscribe(listener) {
super.subscribe(listener);
if (this.hasCurrentMessage) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
listener(this.currentMessage);
}
return listener;
}
}
//# sourceMappingURL=EventEmitterWithOptionalCurrent.js.map