UNPKG

drugflow-molstar

Version:
43 lines (42 loc) 2.23 kB
"use strict"; 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' } });