UNPKG

ts-lib-extended

Version:
52 lines (51 loc) 1.28 kB
import { EventHandler } from '../event/handler.js'; import { DisposableBase } from './base.js'; /** * Core for disposable instances * * @export * @class Disposable * @extends {DisposableBase} * @since 1.0.0 */ export class Disposable extends DisposableBase { constructor() { super(); this._disposers = []; this._disposingHandler = new EventHandler(); this._disposedHandler = new EventHandler(); } /** * Event that is invoked before the instance is disposed * * @readonly * @type {Event<this>} * @memberof Disposable * @since 1.0.0 */ get disposing() { return this._disposingHandler.event; } /** * Event that is invoked after the instance is disposed * * @readonly * @type {Event<this>} * @memberof Disposable * @since 1.0.0 */ get disposed() { return this._disposedHandler.event; } disposingInstance() { this._disposingHandler.invoke(this); this._disposingHandler.dispose(); for (let i = 0; i < this._disposers.length; i++) { this._disposers[i](); } } disposedInstance() { this._disposedHandler.invoke(this); this._disposedHandler.dispose(); } }