MCPcopy Create free account
hub / github.com/JavaCS3/xterm-player / EventEmitter

Class EventEmitter

src/Events.ts:17–56  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

15}
16
17export class EventEmitter<T> implements IEventEmitter<T> {
18 private _listeners: IListener<T>[] = []
19 private _event?: IEvent<T>
20 private _disposed: boolean = false
21
22 public get onEvent(): IEvent<T> {
23 if (!this._event) {
24 this._event = (listener: IListener<T>) => {
25 this._listeners.push(listener)
26 const disposable = {
27 dispose: () => {
28 if (!this._disposed) {
29 for (let i = 0; i < this._listeners.length; i++) {
30 if (this._listeners[i] === listener) {
31 this._listeners.splice(i, 1)
32 return
33 }
34 }
35 }
36 }
37 }
38 return disposable
39 }
40 }
41 return this._event
42 }
43
44 public fire(arg: T): void {
45 for (let i = 0; i < this._listeners.length; i++) {
46 this._listeners[i](arg)
47 }
48 }
49
50 public dispose(): void {
51 if (this._listeners) {
52 this._listeners.length = 0
53 }
54 this._disposed = true
55 }
56}

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected