UNPKG

xterm

Version:

Full xterm terminal, in your browser

48 lines (41 loc) 1.2 kB
/** * Copyright (c) 2018 The xterm.js authors. All rights reserved. * @license MIT */ import { IDisposable } from 'common/Types'; /** * A base class that can be extended to provide convenience methods for managing the lifecycle of an * object and its components. */ export abstract class Disposable implements IDisposable { protected _disposables: IDisposable[] = []; protected _isDisposed: boolean = false; constructor() { } /** * Disposes the object, triggering the `dispose` method on all registered IDisposables. */ public dispose(): void { this._isDisposed = true; this._disposables.forEach(d => d.dispose()); this._disposables.length = 0; } /** * Registers a disposable object. * @param d The disposable to register. */ public register<T extends IDisposable>(d: T): void { this._disposables.push(d); } /** * Unregisters a disposable object if it has been registered, if not do * nothing. * @param d The disposable to unregister. */ public unregister<T extends IDisposable>(d: T): void { const index = this._disposables.indexOf(d); if (index !== -1) { this._disposables.splice(index, 1); } } }