@awesome-nodes/mvvm
Version:
Application development framework using the *model* *view* *view-model* design pattern.
66 lines (51 loc) • 5.54 kB
JavaScript
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