UNPKG

@jbrowse/core

Version:

JBrowse 2 core libraries used by plugins

47 lines (46 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const material_1 = require("@mui/material"); const mobx_react_1 = require("mobx-react"); const mui_1 = require("tss-react/mui"); const util_1 = require("../util"); const useStyles = (0, mui_1.makeStyles)()({ importFormEntry: { minWidth: 180, }, }); const AssemblySelector = (0, mobx_react_1.observer)(function ({ session, onChange, label = 'Assembly', selected, InputProps, TextFieldProps, localStorageKey, helperText = 'Select assembly to view', }) { const { classes } = useStyles(); const { assemblyNames, assemblyManager } = session; const config = new URLSearchParams(window.location.search).get('config'); const [lastSelected, setLastSelected] = typeof jest === 'undefined' && localStorageKey ? (0, util_1.useLocalStorage)(`lastAssembly-${[ window.location.host + window.location.pathname, config, localStorageKey, ].join('-')}`, selected) : (0, react_1.useState)(selected); const selection = assemblyNames.includes(lastSelected || '') ? lastSelected : selected; (0, react_1.useEffect)(() => { if (selection && selection !== selected) { onChange(selection); } }, [selection, onChange, selected]); const error = assemblyNames.length ? '' : 'No configured assemblies'; return ((0, jsx_runtime_1.jsx)(material_1.TextField, { select: true, "data-testid": "assembly-selector-textfield", label: label, variant: "outlined", helperText: error || helperText, value: selection || '', onChange: event => { setLastSelected(event.target.value); }, error: !!error, disabled: !!error, className: classes.importFormEntry, ...TextFieldProps, slotProps: { input: InputProps, htmlInput: { 'data-testid': 'assembly-selector', }, }, children: assemblyNames.map(name => { var _a; return ((0, jsx_runtime_1.jsx)(material_1.MenuItem, { value: name, children: ((_a = assemblyManager.get(name)) === null || _a === void 0 ? void 0 : _a.displayName) || name }, name)); }) })); }); exports.default = AssemblySelector;