molstar
Version:
A comprehensive macromolecular library.
70 lines • 3.25 kB
JavaScript
/**
* 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
;