@jbrowse/plugin-linear-genome-view
Version:
JBrowse 2 linear genome view
68 lines (67 loc) • 4.88 kB
JavaScript
;
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;