UNPKG

molstar

Version:

A comprehensive macromolecular library.

83 lines 2.91 kB
"use strict"; /** * 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