@jbrowse/core
Version:
JBrowse 2 core libraries used by plugins
47 lines (46 loc) • 2.33 kB
JavaScript
;
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;