@xterm/xterm 5.6.0-beta.18 → 5.6.0-beta.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@xterm/xterm",
3
3
  "description": "Full xterm terminal, in your browser",
4
- "version": "5.6.0-beta.18",
4
+ "version": "5.6.0-beta.19",
5
5
  "main": "lib/xterm.js",
6
6
  "style": "css/xterm.css",
7
7
  "types": "typings/xterm.d.ts",
@@ -20,23 +20,18 @@ export interface IEventEmitter<T, U = void> {
20
20
  }
21
21
 
22
22
  export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
23
- private _listeners: IListener<T, U>[] = [];
23
+ private _listeners: Set<IListener<T, U>> = new Set();
24
24
  private _event?: IEvent<T, U>;
25
25
  private _disposed: boolean = false;
26
26
 
27
27
  public get event(): IEvent<T, U> {
28
28
  if (!this._event) {
29
29
  this._event = (listener: (arg1: T, arg2: U) => any) => {
30
- this._listeners.push(listener);
30
+ this._listeners.add(listener);
31
31
  const disposable = {
32
32
  dispose: () => {
33
33
  if (!this._disposed) {
34
- for (let i = 0; i < this._listeners.length; i++) {
35
- if (this._listeners[i] === listener) {
36
- this._listeners.splice(i, 1);
37
- return;
38
- }
39
- }
34
+ this._listeners.delete(listener);
40
35
  }
41
36
  }
42
37
  };
@@ -48,8 +43,8 @@ export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
48
43
 
49
44
  public fire(arg1: T, arg2: U): void {
50
45
  const queue: IListener<T, U>[] = [];
51
- for (let i = 0; i < this._listeners.length; i++) {
52
- queue.push(this._listeners[i]);
46
+ for (const l of this._listeners.values()) {
47
+ queue.push(l);
53
48
  }
54
49
  for (let i = 0; i < queue.length; i++) {
55
50
  queue[i].call(undefined, arg1, arg2);
@@ -63,7 +58,7 @@ export class EventEmitter<T, U = void> implements IEventEmitter<T, U> {
63
58
 
64
59
  public clearListeners(): void {
65
60
  if (this._listeners) {
66
- this._listeners.length = 0;
61
+ this._listeners.clear();
67
62
  }
68
63
  }
69
64
  }
@@ -611,8 +611,8 @@ export class Buffer implements IBuffer {
611
611
  this._isClearing = true;
612
612
  for (let i = 0; i < this.markers.length; i++) {
613
613
  this.markers[i].dispose();
614
- this.markers.splice(i--, 1);
615
614
  }
615
+ this.markers.length = 0;
616
616
  this._isClearing = false;
617
617
  }
618
618