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