drugflow-molstar
Version:
Molstar implementation for DrugFlow
43 lines (42 loc) • 2.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PDBeLociLabelProvider = void 0;
var behavior_1 = require("Molstar/mol-plugin/behavior");
var structure_1 = require("Molstar/mol-model/structure");
var label_1 = require("Molstar/mol-theme/label");
exports.PDBeLociLabelProvider = behavior_1.PluginBehavior.create({
name: 'pdbe-loci-label-provider',
category: 'interaction',
ctor: /** @class */ (function () {
function class_1(ctx) {
var _this = this;
this.ctx = ctx;
this.f = {
label: function (loci) {
var customState = (_this.ctx.customState);
var superpositionView = (customState && customState.initParams.superposition) ? true : false;
var label = [];
if (!superpositionView && structure_1.StructureElement.Loci.is(loci) && loci.elements.length === 1) {
var entityNames = new Set();
for (var _i = 0, _a = loci.elements; _i < _a.length; _i++) {
var u = _a[_i].unit;
var l = structure_1.StructureElement.Location.create(loci.structure, u, u.elements[0]);
var name_1 = structure_1.StructureProperties.entity.pdbx_description(l).join(', ');
entityNames.add(name_1);
}
if (entityNames.size === 1)
entityNames.forEach(function (name) { return label.push(name); });
}
label.push((0, label_1.lociLabel)(loci));
return label.filter(function (l) { return !!l; }).join('</br>');
},
group: function (label) { return label.toString().replace(/Model [0-9]+/g, 'Models'); },
priority: 100
};
}
class_1.prototype.register = function () { this.ctx.managers.lociLabels.addProvider(this.f); };
class_1.prototype.unregister = function () { this.ctx.managers.lociLabels.removeProvider(this.f); };
return class_1;
}()),
display: { name: 'Provide PDBe Loci Label' }
});