UNPKG

@awesome-nodes/mvvm

Version:

Application development framework using the *model* *view* *view-model* design pattern.

66 lines (51 loc) 5.54 kB
function _classPrivateFieldLooseBase(receiver, privateKey) { if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) { throw new TypeError("attempted to use private field on non-instance"); } return receiver; } var id = 0; function _classPrivateFieldLooseKey(name) { return "__private_" + id++ + "_" + name; } import { EventArgs } from '@awesome-nodes/object/model'; import { EventDelegate } from "./EventDelegate"; import { ObjectModel } from "./ObjectModel"; var _isDisposed = _classPrivateFieldLooseKey("_isDisposed"); var _disposing = _classPrivateFieldLooseKey("_disposing"); var _disposed = _classPrivateFieldLooseKey("_disposed"); export class Disposable extends ObjectModel { constructor(...args) { super(...args); Object.defineProperty(this, _isDisposed, { writable: true, value: false }); Object.defineProperty(this, _disposing, { writable: true, value: new EventDelegate(this) }); Object.defineProperty(this, _disposed, { writable: true, value: new EventDelegate(this) }); } onDisposing(args) { _classPrivateFieldLooseBase(this, _disposing)[_disposing].invoke(args); } onDisposed(args) { _classPrivateFieldLooseBase(this, _disposed)[_disposed].invoke(args); } dispose(disposing) { if (disposing === undefined && !_classPrivateFieldLooseBase(this, _isDisposed)[_isDisposed]) { this.onDisposing(EventArgs.empty); this.dispose(true); this.onDisposed(EventArgs.empty); return; } _classPrivateFieldLooseBase(this, _isDisposed)[_isDisposed] = true; } get disposing() { return _classPrivateFieldLooseBase(this, _disposing)[_disposing]; } get disposed() { return _classPrivateFieldLooseBase(this, _disposed)[_disposed]; } get isDisposed() { return _classPrivateFieldLooseBase(this, _isDisposed)[_isDisposed]; } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdnZtL21vZGVsL0Rpc3Bvc2FibGUudHMiXSwibmFtZXMiOlsiRXZlbnRBcmdzIiwiRXZlbnREZWxlZ2F0ZSIsIk9iamVjdE1vZGVsIiwiRGlzcG9zYWJsZSIsIm9uRGlzcG9zaW5nIiwiYXJncyIsImludm9rZSIsIm9uRGlzcG9zZWQiLCJkaXNwb3NlIiwiZGlzcG9zaW5nIiwidW5kZWZpbmVkIiwiZW1wdHkiLCJkaXNwb3NlZCIsImlzRGlzcG9zZWQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLFNBQVNBLFNBQVQsUUFBMEIsNkJBQTFCO0FBQ0EsU0FBU0MsYUFBVDtBQUVBLFNBQVNDLFdBQVQ7Ozs7Ozs7O0FBTUEsT0FBTyxNQUFNQyxVQUFOLFNBQXlCRCxXQUF6QixDQUNQO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQUMyQjtBQUQzQjtBQUFBO0FBQUE7QUFBQSxhQUUyQixJQUFJRCxhQUFKLENBQStCLElBQS9CO0FBRjNCO0FBQUE7QUFBQTtBQUFBLGFBRzJCLElBQUlBLGFBQUosQ0FBK0IsSUFBL0I7QUFIM0I7QUFBQTs7QUFNY0csRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQ3JCO0FBQ0ksOERBQWlCQyxNQUFqQixDQUF3QkQsSUFBeEI7QUFDSDs7QUFFU0UsRUFBQUEsVUFBVSxDQUFDRixJQUFELEVBQ3BCO0FBQ0ksNERBQWdCQyxNQUFoQixDQUF1QkQsSUFBdkI7QUFDSDs7QUFNTUcsRUFBQUEsT0FBTyxDQUFDQyxTQUFELEVBQ2Q7QUFDSSxRQUFJQSxTQUFTLEtBQUtDLFNBQWQsSUFBMkIsNkJBQUMsSUFBRCwyQkFBL0IsRUFBbUQ7QUFDL0MsV0FBS04sV0FBTCxDQUFpQkosU0FBUyxDQUFDVyxLQUEzQjtBQUNBLFdBQUtILE9BQUwsQ0FBYSxJQUFiO0FBQ0EsV0FBS0QsVUFBTCxDQUFnQlAsU0FBUyxDQUFDVyxLQUExQjtBQUVBO0FBQ0g7O0FBQ0Qsa0VBQW9CLElBQXBCO0FBQ0g7O0FBR21CLE1BQVRGLFNBQVMsR0FDcEI7QUFDSSx1Q0FBTyxJQUFQO0FBQ0g7O0FBR2tCLE1BQVJHLFFBQVEsR0FDbkI7QUFDSSx1Q0FBTyxJQUFQO0FBQ0g7O0FBR29CLE1BQVZDLFVBQVUsR0FDckI7QUFDSSx1Q0FBTyxJQUFQO0FBQ0g7O0FBaERMIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRXZlbnRBcmdzIH0gZnJvbSAnQGF3ZXNvbWUtbm9kZXMvb2JqZWN0L21vZGVsJztcbmltcG9ydCB7IEV2ZW50RGVsZWdhdGUgfSBmcm9tICdtdnZtL21vZGVsL0V2ZW50RGVsZWdhdGUnO1xuaW1wb3J0IHsgSURpc3Bvc2FibGUgfSBmcm9tICdtdnZtL21vZGVsL0lEaXNwb3NhYmxlJztcbmltcG9ydCB7IE9iamVjdE1vZGVsIH0gZnJvbSAnbXZ2bS9tb2RlbC9PYmplY3RNb2RlbCc7XG5cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZGlzcG9zYWJsZSBvYmplY3QgZm9yIHNpbmdsZSB0aHJlYWRlZCBlbnZpcm9ubWVudHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXNwb3NhYmxlIGV4dGVuZHMgT2JqZWN0TW9kZWwgaW1wbGVtZW50cyBJRGlzcG9zYWJsZVxue1xuICAgICNfaXNEaXNwb3NlZCAgICAgICAgID0gZmFsc2U7XG4gICAgcmVhZG9ubHkgI19kaXNwb3NpbmcgPSBuZXcgRXZlbnREZWxlZ2F0ZTxJRGlzcG9zYWJsZT4odGhpcyk7XG4gICAgcmVhZG9ubHkgI19kaXNwb3NlZCAgPSBuZXcgRXZlbnREZWxlZ2F0ZTxJRGlzcG9zYWJsZT4odGhpcyk7XG5cbiAgICAvL3RzbGludDpkaXNhYmxlLW5leHQtbGluZTpuZXdzcGFwZXItb3JkZXJcbiAgICBwcm90ZWN0ZWQgb25EaXNwb3NpbmcoYXJnczogRXZlbnRBcmdzKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy4jX2Rpc3Bvc2luZy5pbnZva2UoYXJncyk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRGlzcG9zZWQoYXJnczogRXZlbnRBcmdzKTogdm9pZFxuICAgIHtcbiAgICAgICAgdGhpcy4jX2Rpc3Bvc2VkLmludm9rZShhcmdzKTtcbiAgICB9XG5cbiAgICAvLzxlZGl0b3ItZm9sZCBkZXNjPVwiSURpc3Bvc2FibGUgTWVtYmVyc1wiPlxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tZmxhZy1hcmdzXG4gICAgcHVibGljIGRpc3Bvc2UoZGlzcG9zaW5nPzogYm9vbGVhbik6IHZvaWRcbiAgICB7XG4gICAgICAgIGlmIChkaXNwb3NpbmcgPT09IHVuZGVmaW5lZCAmJiAhdGhpcy4jX2lzRGlzcG9zZWQpIHtcbiAgICAgICAgICAgIHRoaXMub25EaXNwb3NpbmcoRXZlbnRBcmdzLmVtcHR5KTtcbiAgICAgICAgICAgIHRoaXMuZGlzcG9zZSh0cnVlKTtcbiAgICAgICAgICAgIHRoaXMub25EaXNwb3NlZChFdmVudEFyZ3MuZW1wdHkpO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy4jX2lzRGlzcG9zZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcG9zaW5nKCk6IEV2ZW50RGVsZWdhdGU8SURpc3Bvc2FibGU+XG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy4jX2Rpc3Bvc2luZztcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc3Bvc2VkKCk6IEV2ZW50RGVsZWdhdGU8SURpc3Bvc2FibGU+XG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy4jX2Rpc3Bvc2VkO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBnZXQgaXNEaXNwb3NlZCgpOiBib29sZWFuXG4gICAge1xuICAgICAgICByZXR1cm4gdGhpcy4jX2lzRGlzcG9zZWQ7XG4gICAgfVxuXG4gICAgLy88L2VkaXRvci1mb2xkPlxufVxuIl19