UNPKG

molstar

Version:

A comprehensive macromolecular library.

67 lines 3 kB
/** * Copyright (c) 2019-2020 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ import { __assign } from "tslib"; import { ParamDefinition as PD } from '../../mol-util/param-definition'; import { OrderedMap } from 'immutable'; export { CustomProperty }; var CustomProperty; (function (CustomProperty) { var Registry = /** @class */ (function () { function Registry() { this.providers = 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] = PD.Group(__assign({}, provider.getParams(data)), { label: provider.label, isHidden: provider.isHidden }); } } return { autoAttach: PD.MultiSelect(autoAttachDefault, autoAttachOptions), properties: PD.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 = {})); //# sourceMappingURL=custom-property.js.map