UNPKG

pdbe-molstar-3dbionotes

Version:
191 lines 9.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.subscribeToComponentEvents = void 0; function subscribeToComponentEvents(wrapperCtx) { document.addEventListener('PDB.interactions.click', function (e) { if (typeof e.detail !== 'undefined') { var data = e.detail.interacting_nodes ? { data: e.detail.interacting_nodes } : { data: [e.detail.selected_node] }; data.data[0]['focus'] = true; wrapperCtx.visual.select(data); } }); document.addEventListener('PDB.interactions.mouseover', function (e) { if (typeof e.detail !== 'undefined') { var data = e.detail.interacting_nodes ? { data: e.detail.interacting_nodes } : { data: [e.detail.selected_node] }; wrapperCtx.visual.highlight(data); } }); document.addEventListener('PDB.interactions.mouseout', function (e) { wrapperCtx.visual.clearHighlight(); }); document.addEventListener('PDB.topologyViewer.click', function (e) { if (typeof e.eventData !== 'undefined') { // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.structAsymId, start_residue_number: e.eventData.residueNumber, end_residue_number: e.eventData.residueNumber, sideChain: true, focus: true }; // Call highlightAnnotation wrapperCtx.visual.select({ data: [highlightQuery] }); } }); document.addEventListener('PDB.topologyViewer.mouseover', function (e) { if (typeof e.eventData !== 'undefined') { // Abort if entryid do not match or viewer type is unipdb // if(e.eventData.entryId != scope.pdbId) return; // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.structAsymId, start_residue_number: e.eventData.residueNumber, end_residue_number: e.eventData.residueNumber }; // Call highlightAnnotation wrapperCtx.visual.highlight({ data: [highlightQuery] }); } }); document.addEventListener('PDB.topologyViewer.mouseout', function (e) { wrapperCtx.visual.clearHighlight(); }); document.addEventListener('protvista-mouseover', function (e) { if (typeof e.detail !== 'undefined') { var highlightQuery = undefined; // Create query object from event data if (e.detail.start && e.detail.end) { highlightQuery = { start_residue_number: parseInt(e.detail.start), end_residue_number: parseInt(e.detail.end) }; } if (e.detail.feature && e.detail.feature.entityId) highlightQuery['entity_id'] = e.detail.feature.entityId + ''; if (e.detail.feature && e.detail.feature.bestChainId) highlightQuery['struct_asym_id'] = e.detail.feature.bestChainId; if (highlightQuery) wrapperCtx.visual.highlight({ data: [highlightQuery] }); } }); document.addEventListener('protvista-mouseout', function (e) { wrapperCtx.visual.clearHighlight(); }); document.addEventListener('protvista-click', function (e) { if (typeof e.detail !== 'undefined') { var showInteraction = false; var highlightQuery = undefined; // Create query object from event data if (e.detail.start && e.detail.end) { highlightQuery = { start_residue_number: parseInt(e.detail.start), end_residue_number: parseInt(e.detail.end) }; } if (e.detail.feature && e.detail.feature.entityId) highlightQuery['entity_id'] = e.detail.feature.entityId + ''; if (e.detail.feature && e.detail.feature.bestChainId) highlightQuery['struct_asym_id'] = e.detail.feature.bestChainId; if (e.detail.feature && e.detail.feature.accession && e.detail.feature.accession.split(' ')[0] === 'Chain' || e.detail.feature.tooltipContent === 'Ligand binding site') { showInteraction = true; } if (e.detail.start === e.detail.end) showInteraction = true; if (highlightQuery) { if (showInteraction) { highlightQuery['sideChain'] = true; } else { var selColor = undefined; if (e.detail.trackIndex > -1 && e.detail.feature.locations && e.detail.feature.locations[0].fragments[e.detail.trackIndex].color) selColor = e.detail.feature.locations[0].fragments[e.detail.trackIndex].color; if (typeof selColor == 'undefined' && e.detail.feature.color) selColor = e.detail.feature.color; if (typeof selColor == 'undefined' && e.detail.color) selColor = e.detail.color; if (typeof selColor == 'undefined') { selColor = { r: 65, g: 96, b: 91 }; } else { var isRgb = /rgb/g; if (isRgb.test(selColor)) { var rgbArr = selColor.substring(4, selColor.length - 1).split(','); selColor = { r: rgbArr[0], g: rgbArr[1], b: rgbArr[2] }; } } highlightQuery['color'] = selColor; } highlightQuery['focus'] = true; wrapperCtx.visual.select({ data: [highlightQuery] }); } } }); var elementTypeArrForRange = ['uniprot', 'pfam', 'cath', 'scop', 'strand', 'helice']; var elementTypeArrForSingle = ['chain', 'quality', 'quality_outlier', 'binding site', 'alternate conformer']; document.addEventListener('PDB.seqViewer.click', function (e) { if (typeof e.eventData !== 'undefined') { // Abort if entryid and entityid do not match or viewer type is unipdb // if(e.eventData.entryId != scope.pdbId) return; if (typeof e.eventData.elementData !== 'undefined' && elementTypeArrForSingle.indexOf(e.eventData.elementData.elementType) > -1) { // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.elementData.pathData.struct_asym_id, start_residue_number: e.eventData.residueNumber, end_residue_number: e.eventData.residueNumber, sideChain: true, focus: true }; // Call highlightAnnotation wrapperCtx.visual.select({ data: [highlightQuery] }); } else if (typeof e.eventData.elementData !== 'undefined' && elementTypeArrForRange.indexOf(e.eventData.elementData.elementType) > -1) { var seqColorArray = e.eventData.elementData.color; // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.elementData.pathData.struct_asym_id, start_residue_number: e.eventData.elementData.pathData.start.residue_number, end_residue_number: e.eventData.elementData.pathData.end.residue_number, color: { r: seqColorArray[0], g: seqColorArray[1], b: seqColorArray[2] }, focus: true }; wrapperCtx.visual.select({ data: [highlightQuery] }); } } }); document.addEventListener('PDB.seqViewer.mouseover', function (e) { if (typeof e.eventData !== 'undefined') { // Abort if entryid and entityid do not match or viewer type is unipdb // if(e.eventData.entryId != scope.pdbId) return; if (typeof e.eventData.elementData !== 'undefined' && elementTypeArrForSingle.indexOf(e.eventData.elementData.elementType) > -1) { // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.elementData.pathData.struct_asym_id, start_residue_number: e.eventData.residueNumber, end_residue_number: e.eventData.residueNumber, focus: true }; wrapperCtx.visual.select({ data: [highlightQuery] }); } else if (typeof e.eventData.elementData !== 'undefined' && elementTypeArrForRange.indexOf(e.eventData.elementData.elementType) > -1) { // Create query object from event data var highlightQuery = { entity_id: e.eventData.entityId, struct_asym_id: e.eventData.elementData.pathData.struct_asym_id, start_residue_number: e.eventData.elementData.pathData.start.residue_number, end_residue_number: e.eventData.elementData.pathData.end.residue_number }; // Call highlightAnnotation wrapperCtx.visual.highlight({ data: [highlightQuery] }); } } }); document.addEventListener('PDB.seqViewer.mouseout', function (e) { wrapperCtx.visual.clearHighlight(); }); } exports.subscribeToComponentEvents = subscribeToComponentEvents; //# sourceMappingURL=subscribe-events.js.map