UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

50 lines (49 loc) 2.24 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.fetchResults = fetchResults; exports.splitLast = splitLast; exports.getRelativeX = getRelativeX; exports.getCytobands = getCytobands; const BaseResults_1 = __importDefault(require("@jbrowse/core/TextSearch/BaseResults")); const util_1 = require("@jbrowse/core/util"); async function fetchResults({ queryString, searchType, searchScope, rankSearchResults, textSearchManager, assembly, }) { var _a; if (!textSearchManager) { console.warn('No text search manager'); } const textSearchResults = (await (textSearchManager === null || textSearchManager === void 0 ? void 0 : textSearchManager.search({ queryString, searchType, }, searchScope, rankSearchResults))) || []; const refNameResults = ((_a = assembly === null || assembly === void 0 ? void 0 : assembly.allRefNames) === null || _a === void 0 ? void 0 : _a.filter(ref => ref.toLowerCase().startsWith(queryString.toLowerCase())).slice(0, 10).map(r => new BaseResults_1.default({ label: r, }))) || []; return (0, util_1.dedupe)([...refNameResults, ...textSearchResults], elt => elt.getId()); } function splitLast(str, split) { const lastIndex = str.lastIndexOf(split); if (lastIndex === -1) { return [str, '']; } else { const before = str.slice(0, lastIndex); const after = str.slice(lastIndex + 1); return [before, after]; } } function getRelativeX(event, element) { return event.clientX - ((element === null || element === void 0 ? void 0 : element.getBoundingClientRect().left) || 0); } function getCytobands(assembly, refName) { var _a; return (((_a = assembly === null || assembly === void 0 ? void 0 : assembly.cytobands) === null || _a === void 0 ? void 0 : _a.map(f => ({ refName: assembly.getCanonicalRefName(f.get('refName')) || f.get('refName'), start: f.get('start'), end: f.get('end'), type: f.get('gieStain'), name: f.get('name'), })).filter(f => f.refName === refName)) || []); }