UNPKG

molstar

Version:

A comprehensive macromolecular library.

70 lines 3.25 kB
"use strict"; /** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ Object.defineProperty(exports, "__esModule", { value: true }); exports.CustomProperty = void 0; var tslib_1 = require("tslib"); var param_definition_1 = require("../../mol-util/param-definition"); var immutable_1 = require("immutable"); var CustomProperty; (function (CustomProperty) { var Registry = /** @class */ (function () { function Registry() { this.providers = (0, immutable_1.OrderedMap)().asMutable(); this.defaultAutoAttachValues = new Map(); } /** Get params for all applicable property providers */ Registry.prototype.getParams = function (data) { var propertiesParams = {}; var autoAttachOptions = []; var autoAttachDefault = []; if (data) { var values = this.providers.values(); while (true) { var v = values.next(); if (v.done) break; var provider = v.value; if (!provider.isApplicable(data)) continue; if (!provider.isHidden) { autoAttachOptions.push([provider.descriptor.name, provider.label]); if (this.defaultAutoAttachValues.get(provider.descriptor.name)) { autoAttachDefault.push(provider.descriptor.name); } } propertiesParams[provider.descriptor.name] = param_definition_1.ParamDefinition.Group((0, tslib_1.__assign)({}, provider.getParams(data)), { label: provider.label, isHidden: provider.isHidden }); } } return { autoAttach: param_definition_1.ParamDefinition.MultiSelect(autoAttachDefault, autoAttachOptions), properties: param_definition_1.ParamDefinition.Group(propertiesParams, { isFlat: true }) }; }; Registry.prototype.setDefaultAutoAttach = function (name, value) { this.defaultAutoAttachValues.set(name, value); }; Registry.prototype.get = function (name) { var prop = this.providers.get(name); if (!prop) { throw new Error("Custom property '" + name + "' is not registered."); } return this.providers.get(name); }; Registry.prototype.register = function (provider, defaultAutoAttach) { this.providers.set(provider.descriptor.name, provider); this.defaultAutoAttachValues.set(provider.descriptor.name, defaultAutoAttach); }; Registry.prototype.unregister = function (name) { this.providers.delete(name); this.defaultAutoAttachValues.delete(name); }; return Registry; }()); CustomProperty.Registry = Registry; })(CustomProperty || (CustomProperty = {})); exports.CustomProperty = CustomProperty; //# sourceMappingURL=custom-property.js.map