UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

41 lines (40 loc) 3.16 kB
"use strict"; 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;