@awesome-nodes/mvvm
Version:
Application development framework using the *model* *view* *view-model* design pattern.
77 lines (57 loc) • 5.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Disposable = void 0;
var _model = require("@awesome-nodes/object/model");
var _EventDelegate = require("./EventDelegate");
var _ObjectModel = require("./ObjectModel");
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; }
var _isDisposed = _classPrivateFieldLooseKey("_isDisposed");
var _disposing = _classPrivateFieldLooseKey("_disposing");
var _disposed = _classPrivateFieldLooseKey("_disposed");
class Disposable extends _ObjectModel.ObjectModel {
constructor(...args) {
super(...args);
Object.defineProperty(this, _isDisposed, {
writable: true,
value: false
});
Object.defineProperty(this, _disposing, {
writable: true,
value: new _EventDelegate.EventDelegate(this)
});
Object.defineProperty(this, _disposed, {
writable: true,
value: new _EventDelegate.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(_model.EventArgs.empty);
this.dispose(true);
this.onDisposed(_model.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];
}
}
exports.Disposable = Disposable;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tdnZtL21vZGVsL0Rpc3Bvc2FibGUudHMiXSwibmFtZXMiOlsiRGlzcG9zYWJsZSIsIk9iamVjdE1vZGVsIiwiRXZlbnREZWxlZ2F0ZSIsIm9uRGlzcG9zaW5nIiwiYXJncyIsImludm9rZSIsIm9uRGlzcG9zZWQiLCJkaXNwb3NlIiwiZGlzcG9zaW5nIiwidW5kZWZpbmVkIiwiRXZlbnRBcmdzIiwiZW1wdHkiLCJkaXNwb3NlZCIsImlzRGlzcG9zZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7Ozs7Ozs7Ozs7Ozs7QUFNTyxNQUFNQSxVQUFOLFNBQXlCQyx3QkFBekIsQ0FDUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFDMkI7QUFEM0I7QUFBQTtBQUFBO0FBQUEsYUFFMkIsSUFBSUMsNEJBQUosQ0FBK0IsSUFBL0I7QUFGM0I7QUFBQTtBQUFBO0FBQUEsYUFHMkIsSUFBSUEsNEJBQUosQ0FBK0IsSUFBL0I7QUFIM0I7QUFBQTs7QUFNY0MsRUFBQUEsV0FBVyxDQUFDQyxJQUFELEVBQ3JCO0FBQ0ksOERBQWlCQyxNQUFqQixDQUF3QkQsSUFBeEI7QUFDSDs7QUFFU0UsRUFBQUEsVUFBVSxDQUFDRixJQUFELEVBQ3BCO0FBQ0ksNERBQWdCQyxNQUFoQixDQUF1QkQsSUFBdkI7QUFDSDs7QUFNTUcsRUFBQUEsT0FBTyxDQUFDQyxTQUFELEVBQ2Q7QUFDSSxRQUFJQSxTQUFTLEtBQUtDLFNBQWQsSUFBMkIsNkJBQUMsSUFBRCwyQkFBL0IsRUFBbUQ7QUFDL0MsV0FBS04sV0FBTCxDQUFpQk8saUJBQVVDLEtBQTNCO0FBQ0EsV0FBS0osT0FBTCxDQUFhLElBQWI7QUFDQSxXQUFLRCxVQUFMLENBQWdCSSxpQkFBVUMsS0FBMUI7QUFFQTtBQUNIOztBQUNELGtFQUFvQixJQUFwQjtBQUNIOztBQUdtQixNQUFUSCxTQUFTLEdBQ3BCO0FBQ0ksdUNBQU8sSUFBUDtBQUNIOztBQUdrQixNQUFSSSxRQUFRLEdBQ25CO0FBQ0ksdUNBQU8sSUFBUDtBQUNIOztBQUdvQixNQUFWQyxVQUFVLEdBQ3JCO0FBQ0ksdUNBQU8sSUFBUDtBQUNIOztBQWhETCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50QXJncyB9IGZyb20gJ0Bhd2Vzb21lLW5vZGVzL29iamVjdC9tb2RlbCc7XG5pbXBvcnQgeyBFdmVudERlbGVnYXRlIH0gZnJvbSAnbXZ2bS9tb2RlbC9FdmVudERlbGVnYXRlJztcbmltcG9ydCB7IElEaXNwb3NhYmxlIH0gZnJvbSAnbXZ2bS9tb2RlbC9JRGlzcG9zYWJsZSc7XG5pbXBvcnQgeyBPYmplY3RNb2RlbCB9IGZyb20gJ212dm0vbW9kZWwvT2JqZWN0TW9kZWwnO1xuXG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGRpc3Bvc2FibGUgb2JqZWN0IGZvciBzaW5nbGUgdGhyZWFkZWQgZW52aXJvbm1lbnRzLlxuICovXG5leHBvcnQgY2xhc3MgRGlzcG9zYWJsZSBleHRlbmRzIE9iamVjdE1vZGVsIGltcGxlbWVudHMgSURpc3Bvc2FibGVcbntcbiAgICAjX2lzRGlzcG9zZWQgICAgICAgICA9IGZhbHNlO1xuICAgIHJlYWRvbmx5ICNfZGlzcG9zaW5nID0gbmV3IEV2ZW50RGVsZWdhdGU8SURpc3Bvc2FibGU+KHRoaXMpO1xuICAgIHJlYWRvbmx5ICNfZGlzcG9zZWQgID0gbmV3IEV2ZW50RGVsZWdhdGU8SURpc3Bvc2FibGU+KHRoaXMpO1xuXG4gICAgLy90c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bmV3c3BhcGVyLW9yZGVyXG4gICAgcHJvdGVjdGVkIG9uRGlzcG9zaW5nKGFyZ3M6IEV2ZW50QXJncyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuI19kaXNwb3NpbmcuaW52b2tlKGFyZ3MpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkRpc3Bvc2VkKGFyZ3M6IEV2ZW50QXJncyk6IHZvaWRcbiAgICB7XG4gICAgICAgIHRoaXMuI19kaXNwb3NlZC5pbnZva2UoYXJncyk7XG4gICAgfVxuXG4gICAgLy88ZWRpdG9yLWZvbGQgZGVzYz1cIklEaXNwb3NhYmxlIE1lbWJlcnNcIj5cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIC8vdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWZsYWctYXJnc1xuICAgIHB1YmxpYyBkaXNwb3NlKGRpc3Bvc2luZz86IGJvb2xlYW4pOiB2b2lkXG4gICAge1xuICAgICAgICBpZiAoZGlzcG9zaW5nID09PSB1bmRlZmluZWQgJiYgIXRoaXMuI19pc0Rpc3Bvc2VkKSB7XG4gICAgICAgICAgICB0aGlzLm9uRGlzcG9zaW5nKEV2ZW50QXJncy5lbXB0eSk7XG4gICAgICAgICAgICB0aGlzLmRpc3Bvc2UodHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLm9uRGlzcG9zZWQoRXZlbnRBcmdzLmVtcHR5KTtcblxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuI19pc0Rpc3Bvc2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc3Bvc2luZygpOiBFdmVudERlbGVnYXRlPElEaXNwb3NhYmxlPlxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI19kaXNwb3Npbmc7XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIGdldCBkaXNwb3NlZCgpOiBFdmVudERlbGVnYXRlPElEaXNwb3NhYmxlPlxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI19kaXNwb3NlZDtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgZ2V0IGlzRGlzcG9zZWQoKTogYm9vbGVhblxuICAgIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuI19pc0Rpc3Bvc2VkO1xuICAgIH1cblxuICAgIC8vPC9lZGl0b3ItZm9sZD5cbn1cbiJdfQ==