UNPKG

@jbrowse/plugin-linear-genome-view

Version:

JBrowse 2 linear genome view

68 lines (67 loc) 4.88 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const ui_1 = require("@jbrowse/core/ui"); const util_1 = require("@jbrowse/core/util"); const material_1 = require("@mui/material"); const mobx_react_1 = require("mobx-react"); const mobx_state_tree_1 = require("mobx-state-tree"); const mui_1 = require("tss-react/mui"); const useStyles = (0, mui_1.makeStyles)()({ dialogContent: { width: '40em', }, }); const SequenceSearchDialog = (0, mobx_react_1.observer)(function ({ model, handleClose, }) { const { classes } = useStyles(); const [value, setValue] = (0, react_1.useState)(''); const [searchForward, setSearchForward] = (0, react_1.useState)(true); const [searchReverse, setSearchReverse] = (0, react_1.useState)(true); const [caseInsensitive, setCaseInsensitive] = (0, react_1.useState)(true); let error; try { new RegExp(value); } catch (e) { error = e; } return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: handleClose, title: "Sequence search", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { className: classes.dialogContent, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Supply a sequence to search for. A track will be created with the resulting matches once submitted. You can also supply regex style expressions e.g. AACT(C|T)." }), (0, jsx_runtime_1.jsx)(material_1.TextField, { value: value, onChange: e => { setValue(e.target.value); }, helperText: "Sequence search pattern" }), (0, jsx_runtime_1.jsxs)(material_1.FormGroup, { children: [(0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: searchForward, onChange: event => { setSearchForward(event.target.checked); } }), label: "Search forward strand" }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: searchReverse, onChange: event => { setSearchReverse(event.target.checked); } }), label: "Search reverse strand" }), (0, jsx_runtime_1.jsx)(material_1.FormControlLabel, { control: (0, jsx_runtime_1.jsx)(material_1.Checkbox, { checked: caseInsensitive, onChange: event => { setCaseInsensitive(event.target.checked); } }), label: "Case insensitive" })] }), error ? (0, jsx_runtime_1.jsx)(material_1.Typography, { color: "error", children: `${error}` }) : null] }), (0, jsx_runtime_1.jsxs)(material_1.DialogActions, { children: [(0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => { var _a; if (value) { const trackId = `sequence_search_${+Date.now()}`; const session = (0, util_1.getSession)(model); const { assemblyManager } = session; const assemblyName = model.assemblyNames[0]; if ((0, util_1.isSessionWithAddTracks)(session)) { session.addTrackConf({ trackId, name: `Sequence search ${value}`, assemblyNames: [assemblyName], type: 'FeatureTrack', adapter: { type: 'SequenceSearchAdapter', search: value, searchForward, searchReverse, caseInsensitive, sequenceAdapter: (0, mobx_state_tree_1.getSnapshot)((_a = assemblyManager.get(assemblyName)) === null || _a === void 0 ? void 0 : _a.configuration.sequence.adapter), }, }); model.showTrack(trackId); } } handleClose(); }, variant: "contained", color: "primary", children: "Submit" }), (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => { handleClose(); }, variant: "contained", color: "secondary", children: "Close" })] })] })); }); exports.default = SequenceSearchDialog;