Revert "Merge pull request #4166 from Tyriar/event_with_emitter"
This reverts commitd22f7c9edd, reversing changes made to1f8e6f0952.
This commit is contained in:
@@ -14,15 +14,13 @@ export interface IEvent<T, U = void> {
|
||||
}
|
||||
|
||||
export interface IEventEmitter<T, U = void> {
|
||||
event: IEvent<T, U>;
|
||||
fire(arg1: T, arg2: U): void;
|
||||
dispose(): void;
|
||||
}
|
||||
|
||||
export interface IEventWithEmitter<T, U = void> extends IEventEmitter<T, U>, IEvent<T, U> {
|
||||
}
|
||||
|
||||
export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
|
||||
private readonly _listeners: IListener<T, U>[] = [];
|
||||
private _listeners: IListener<T, U>[] = [];
|
||||
private _event?: IEvent<T, U>;
|
||||
private _disposed: boolean = false;
|
||||
|
||||
@@ -66,34 +64,6 @@ export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an object that implements both the {@link IEvent} and {@link IEmitter} interfaces. This
|
||||
* allows more concise instantiation. The idea is to internally use the combined
|
||||
* {@link IEventWithEmitter} interface and only expose {@link IEvent} externally.
|
||||
*
|
||||
* @example
|
||||
* ```ts
|
||||
* public readonly onFoo = initEvent<string>();
|
||||
* // ...
|
||||
* onFoo(e => handle(e));
|
||||
* onFoo.fire('bar');
|
||||
* ```
|
||||
*/
|
||||
export function initEvent<T, U = void>(): IEventWithEmitter<T, U> {
|
||||
const emitter = new EventEmitter<T, U>();
|
||||
const event = emitter.event;
|
||||
Object.defineProperty(event, '_listeners', {
|
||||
value: (emitter as any)._listeners
|
||||
});
|
||||
Object.defineProperty(event, 'fire', {
|
||||
value: emitter.fire.bind(emitter)
|
||||
});
|
||||
Object.defineProperty(event, 'dispose', {
|
||||
value: emitter.dispose.bind(emitter)
|
||||
});
|
||||
return event as any;
|
||||
}
|
||||
|
||||
export function forwardEvent<T>(from: IEvent<T>, to: IEventEmitter<T>): IDisposable {
|
||||
return from(e => to.fire(e));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user