UNPKG

molstar

Version:

A comprehensive macromolecular library.

66 lines 2.55 kB
"use strict"; /** * Copyright (c) 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.FormatPropertyProvider = void 0; var FormatRegistry = /** @class */ (function () { function FormatRegistry() { this.map = new Map(); this.applicable = new Map(); } FormatRegistry.prototype.add = function (kind, obtain, applicable) { this.map.set(kind, obtain); if (applicable) this.applicable.set(kind, applicable); }; FormatRegistry.prototype.remove = function (kind) { this.map.delete(kind); this.applicable.delete(kind); }; FormatRegistry.prototype.get = function (kind) { return this.map.get(kind); }; FormatRegistry.prototype.isApplicable = function (model) { var isApplicable = this.applicable.get(model.sourceData.kind); return isApplicable ? isApplicable(model) : true; }; return FormatRegistry; }()); var FormatPropertyProvider; (function (FormatPropertyProvider) { function create(descriptor) { var name = descriptor.name; var formatRegistry = new FormatRegistry(); return { descriptor: descriptor, formatRegistry: formatRegistry, isApplicable: function (model) { return formatRegistry.isApplicable(model); }, get: function (model) { if (model._staticPropertyData[name]) return model._staticPropertyData[name]; if (model.customProperties.has(descriptor)) return; var obtain = formatRegistry.get(model.sourceData.kind); if (!obtain) return; model._staticPropertyData[name] = obtain(model); model.customProperties.add(descriptor); return model._staticPropertyData[name]; }, set: function (model, value) { model._staticPropertyData[name] = value; }, delete: function (model) { delete model._staticPropertyData[name]; } }; } FormatPropertyProvider.create = create; })(FormatPropertyProvider || (FormatPropertyProvider = {})); exports.FormatPropertyProvider = FormatPropertyProvider; //# sourceMappingURL=property.js.map