molstar
Version:
A comprehensive macromolecular library.
83 lines • 2.91 kB
JavaScript
/**
* Copyright (c) 2018-2020 mol* contributors, licensed under MIT, See LICENSE file for more info.
*
* @author David Sehnal <david.sehnal@gmail.com>
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.StatefulPluginComponent = exports.PluginComponent = void 0;
var tslib_1 = require("tslib");
var object_1 = require("../mol-util/object");
var rx_event_helper_1 = require("../mol-util/rx-event-helper");
var array_1 = require("../mol-util/array");
var PluginComponent = /** @class */ (function () {
function PluginComponent() {
this.subs = void 0;
}
PluginComponent.prototype.subscribe = function (obs, action) {
var _this = this;
if (typeof this.subs === 'undefined')
this.subs = [];
var sub = obs.subscribe(action);
this.subs.push(sub);
return {
unsubscribe: function () {
if (sub && _this.subs && (0, array_1.arraySetRemove)(_this.subs, sub)) {
sub.unsubscribe();
sub = void 0;
}
}
};
};
Object.defineProperty(PluginComponent.prototype, "ev", {
get: function () {
return this._ev || (this._ev = rx_event_helper_1.RxEventHelper.create());
},
enumerable: false,
configurable: true
});
PluginComponent.prototype.dispose = function () {
if (this._ev)
this._ev.dispose();
if (this.subs) {
for (var _i = 0, _a = this.subs; _i < _a.length; _i++) {
var s = _a[_i];
s.unsubscribe();
}
this.subs = void 0;
}
};
return PluginComponent;
}());
exports.PluginComponent = PluginComponent;
var StatefulPluginComponent = /** @class */ (function (_super) {
(0, tslib_1.__extends)(StatefulPluginComponent, _super);
function StatefulPluginComponent(initialState) {
var _this = _super.call(this) || this;
_this._state = initialState;
return _this;
}
StatefulPluginComponent.prototype.updateState = function () {
var states = [];
for (var _i = 0; _i < arguments.length; _i++) {
states[_i] = arguments[_i];
}
var latest = this.state;
var s = (0, object_1.shallowMergeArray)(latest, states);
if (s !== latest) {
this._state = s;
return true;
}
return false;
};
Object.defineProperty(StatefulPluginComponent.prototype, "state", {
get: function () {
return this._state;
},
enumerable: false,
configurable: true
});
return StatefulPluginComponent;
}(PluginComponent));
exports.StatefulPluginComponent = StatefulPluginComponent;
//# sourceMappingURL=component.js.map
;