47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
/**
|
|
* A simple event relay.
|
|
* Create a listener with `createListener` and dispatch events with `dispatchEvent`.
|
|
* For each supported event type, create a new instance of `EventRelay` and expose it as a property.
|
|
*
|
|
* For example, this code:
|
|
* ```ts
|
|
* class MyClass {
|
|
* public readonly onSomethingHappened = new EventRelay<string>();
|
|
*
|
|
* public doSomething(whatToDo: string) {
|
|
* this.onSomethingHappened.dispatchEvent(whatToDo);
|
|
* console.log("Done notifying listeners");
|
|
* }
|
|
* }
|
|
*
|
|
* const myClass = new MyClass();
|
|
* myClass.onSomethingHappened.createListener((whatHappened) => {
|
|
* console.log(`Something happened: ${whatHappened}`);
|
|
* });
|
|
* myClass.doSomething("eat a cookie");
|
|
* ```
|
|
*
|
|
* Will print this:
|
|
* ```
|
|
* Something happened: eat a cookie
|
|
* Done notifying listeners
|
|
* ```
|
|
*/
|
|
export declare class EventRelay<T> {
|
|
constructor();
|
|
createListener(callback: ((data: T) => void)): EventRelayListenerHandle;
|
|
createOnceListener(callback: ((data: T) => void)): EventRelayListenerHandle;
|
|
dispatchEvent(data: T): void;
|
|
clearListeners(): void;
|
|
get listenerCount(): number;
|
|
get disposed(): boolean;
|
|
dispose(): void;
|
|
[Symbol.dispose](): void;
|
|
}
|
|
export declare class EventRelayListenerHandle {
|
|
private constructor();
|
|
dispose(): void;
|
|
[Symbol.dispose](): void;
|
|
get disposed(): boolean;
|
|
}
|
|
//# sourceMappingURL=EventRelay.d.ts.map
|