drugflow-molstar
Version:
Molstar implementation for DrugFlow
54 lines (53 loc) • 2.75 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PDBeLociLabelProvider = void 0;
var tslib_1 = require("tslib");
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 e_1, _a;
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();
try {
for (var _b = tslib_1.__values(loci.elements), _c = _b.next(); !_c.done; _c = _b.next()) {
var u = _c.value.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);
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
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' }
});