xterm
[VSoRC/.git] / node_modules / xterm / src / common / buffer / Marker.ts
1 /**
2  * Copyright (c) 2018 The xterm.js authors. All rights reserved.
3  * @license MIT
4  */
5
6 import { EventEmitter, IEvent } from 'common/EventEmitter';
7 import { Disposable } from 'common/Lifecycle';
8 import { IMarker } from 'common/Types';
9
10 export class Marker extends Disposable implements IMarker {
11   private static _nextId = 1;
12
13   private _id: number = Marker._nextId++;
14   public isDisposed: boolean = false;
15
16   public get id(): number { return this._id; }
17
18   private _onDispose = new EventEmitter<void>();
19   public get onDispose(): IEvent<void> { return this._onDispose.event; }
20
21   constructor(
22     public line: number
23   ) {
24     super();
25   }
26
27   public dispose(): void {
28     if (this.isDisposed) {
29       return;
30     }
31     this.isDisposed = true;
32     this.line = -1;
33     // Emit before super.dispose such that dispose listeners get a change to react
34     this._onDispose.fire();
35   }
36 }