1850
*/
1851
export class Relay<T> implements IDisposable {
1853
>
private listening = false;
1854
>
private inputEvent: Event<T> = Event.None;
1855
>
private inputEventListener: IDisposable = Disposable.None;
1856
>
1857
>
private readonly emitter = new Emitter<T>({
1858
>
onDidAddFirstListener: () => {
1859
>
this.listening = true;
1860
>
this.inputEventListener = this.inputEvent(this.emitter.fire, this.emitter);
1861
>
},
1862
>
onDidRemoveLastListener: () => {
1863
>
this.listening = false;
1864
>
this.inputEventListener.dispose();
1865
>
}
1866
>
});
1867
>
1868
>
readonly event: Event<T> = this.emitter.event;
1869
1870
set input(event: Event<T>) {
1871
>
this.inputEvent = event;
event.ts
1872
>
1873
>
if (this.listening) {
1874
>
this.inputEventListener.dispose();
1875
>
this.inputEventListener = event(this.emitter.fire, this.emitter);
1876
>
}
1877
>
}
1878
1879
dispose() {