@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
89 lines (88 loc) • 3.36 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const jsx_runtime_1 = require("react/jsx-runtime");
const util_1 = require("@jbrowse/core/util");
const material_1 = require("@mui/material");
const mobx_react_1 = require("mobx-react");
const mui_1 = require("tss-react/mui");
const RefNameAutocomplete_1 = __importDefault(require("./RefNameAutocomplete"));
const EndAdornment_1 = __importDefault(require("./RefNameAutocomplete/EndAdornment"));
const util_2 = require("./util");
const searchUtils_1 = require("../../searchUtils");
const consts_1 = require("../consts");
const useStyles = (0, mui_1.makeStyles)()({
headerRefName: {
minWidth: 100,
},
});
async function onSelect({ option, model, assemblyName, }) {
var _a;
const { assemblyManager } = (0, util_1.getSession)(model);
const assembly = assemblyManager.get(assemblyName);
if (option.hasLocation()) {
await (0, searchUtils_1.navToOption)({
option,
model,
assemblyName,
});
}
else if ((_a = option.results) === null || _a === void 0 ? void 0 : _a.length) {
model.setSearchResults(option.results, option.getLabel());
}
else if (assembly) {
await (0, searchUtils_1.handleSelectedRegion)({
input: option.getLabel(),
assembly,
model,
});
}
}
const SearchBox = (0, mobx_react_1.observer)(function ({ model, showHelp = true, }) {
const { classes } = useStyles();
const theme = (0, material_1.useTheme)();
const session = (0, util_1.getSession)(model);
const { textSearchManager, assemblyManager } = session;
const { assemblyNames, rankSearchResults } = model;
const assemblyName = assemblyNames[0];
const assembly = assemblyManager.get(assemblyName);
const searchScope = model.searchScope(assemblyName);
return ((0, jsx_runtime_1.jsx)(RefNameAutocomplete_1.default, { onSelect: async (option) => {
try {
await onSelect({
model,
assemblyName,
option,
});
}
catch (e) {
console.error(e);
(0, util_1.getSession)(model).notify(`${e}`, 'warning');
}
}, assemblyName: assemblyName, fetchResults: queryString => (0, util_2.fetchResults)({
queryString,
searchScope,
rankSearchResults,
textSearchManager,
assembly,
}), model: model, minWidth: 175, TextFieldProps: {
variant: 'outlined',
className: classes.headerRefName,
style: {
margin: consts_1.SPACING,
},
slotProps: {
input: {
style: {
padding: 0,
height: consts_1.WIDGET_HEIGHT,
background: (0, material_1.alpha)(theme.palette.background.paper, 0.8),
},
endAdornment: (0, jsx_runtime_1.jsx)(EndAdornment_1.default, { showHelp: showHelp }),
},
},
} }));
});
exports.default = SearchBox;