UNPKG

drugflow-molstar

Version:
54 lines (53 loc) 2.75 kB
"use strict"; 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' } });