@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
41 lines (40 loc) • 3.16 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 react_1 = require("react");
const ui_1 = require("@jbrowse/core/ui");
const material_1 = require("@mui/material");
const mobx_react_1 = require("mobx-react");
const mui_1 = require("tss-react/mui");
const SequencePanel_1 = __importDefault(require("../SequencePanel"));
const hooks_1 = require("../hooks");
const SequenceFeatureMenu_1 = __importDefault(require("./SequenceFeatureMenu"));
const SequenceTypeSelector_1 = __importDefault(require("./SequenceTypeSelector"));
const useStyles = (0, mui_1.makeStyles)()({
dialogContent: {
width: '80em',
},
formControl: {
margin: 0,
marginLeft: 4,
},
});
const SequenceDialog = (0, mobx_react_1.observer)(function ({ handleClose, model, feature, }) {
const { sequenceFeatureDetails } = model;
const { upDownBp } = sequenceFeatureDetails;
const { classes } = useStyles();
const seqPanelRef = (0, react_1.useRef)(null);
const [force, setForce] = (0, react_1.useState)(false);
const { sequence, error } = (0, hooks_1.useFeatureSequence)(model, feature, upDownBp, force);
return ((0, jsx_runtime_1.jsxs)(ui_1.Dialog, { maxWidth: "xl", open: true, onClose: () => {
handleClose();
}, title: "Sequence view", children: [(0, jsx_runtime_1.jsxs)(material_1.DialogContent, { className: classes.dialogContent, children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)(SequenceTypeSelector_1.default, { model: sequenceFeatureDetails }), (0, jsx_runtime_1.jsx)(SequenceFeatureMenu_1.default, { ref: seqPanelRef, model: sequenceFeatureDetails })] }), (0, jsx_runtime_1.jsxs)("div", { children: [feature.type === 'gene' ? ((0, jsx_runtime_1.jsx)(material_1.Typography, { children: "Note: inspect subfeature sequences for protein/CDS computations" })) : null, error ? ((0, jsx_runtime_1.jsx)(ui_1.ErrorMessage, { error: error })) : !sequence ? ((0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {})) : 'error' in sequence ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { color: "error", children: sequence.error }), (0, jsx_runtime_1.jsx)(material_1.Button, { variant: "contained", color: "inherit", onClick: () => {
setForce(true);
}, children: "Force load" })] })) : ((0, jsx_runtime_1.jsx)(react_1.Suspense, { fallback: (0, jsx_runtime_1.jsx)(ui_1.LoadingEllipses, {}), children: (0, jsx_runtime_1.jsx)(SequencePanel_1.default, { ref: seqPanelRef, feature: feature, sequence: sequence, model: sequenceFeatureDetails }) }))] })] }), (0, jsx_runtime_1.jsx)(material_1.DialogActions, { children: (0, jsx_runtime_1.jsx)(material_1.Button, { onClick: () => {
handleClose();
}, variant: "contained", children: "Close" }) })] }));
});
exports.default = SequenceDialog;