UNPKG

@awesome-nodes/mvvm

Version:

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

77 lines (57 loc) 5.68 kB
"use strict"; 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==