@jbrowse/plugin-data-management 2.13.1 → 2.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/AddConnectionWidget/components/AddConnectionWidget.js +3 -1
  2. package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +3 -1
  3. package/dist/AddTrackWidget/components/AddTrackWidget.js +3 -1
  4. package/dist/AddTrackWidget/components/ConfirmTrack.js +10 -6
  5. package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js +2 -3
  6. package/dist/AddTrackWidget/components/PasteConfigWorkflow.js +6 -2
  7. package/dist/AddTrackWidget/components/TextIndexingConfig.js +16 -8
  8. package/dist/AddTrackWidget/components/TrackAdapterSelector.js +3 -1
  9. package/dist/AddTrackWidget/components/TrackTypeSelector.js +3 -1
  10. package/dist/AddTrackWidget/model.js +1 -1
  11. package/dist/AssemblyManager/AssemblyAddForm.d.ts +3 -2
  12. package/dist/AssemblyManager/AssemblyAddForm.js +38 -18
  13. package/dist/AssemblyManager/AssemblyManager.js +15 -5
  14. package/dist/AssemblyManager/AssemblyTable.js +3 -1
  15. package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +6 -2
  16. package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +13 -2
  17. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js +7 -7
  18. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js +4 -4
  19. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js +6 -2
  20. package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js +4 -2
  21. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.js +12 -4
  22. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +24 -8
  23. package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +8 -4
  24. package/dist/HierarchicalTrackSelectorWidget/components/tree/FavoriteTracks.js +6 -2
  25. package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +36 -12
  26. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +9 -3
  27. package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +5 -1
  28. package/dist/HierarchicalTrackSelectorWidget/components/tree/RecentlyUsedTracks.js +6 -2
  29. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js +3 -1
  30. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +4 -2
  31. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabelMenu.js +12 -4
  32. package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js +3 -1
  33. package/dist/HierarchicalTrackSelectorWidget/components/util.d.ts +1 -1
  34. package/dist/HierarchicalTrackSelectorWidget/components/util.js +1 -1
  35. package/dist/HierarchicalTrackSelectorWidget/facetedModel.d.ts +1 -1
  36. package/dist/HierarchicalTrackSelectorWidget/facetedModel.js +1 -0
  37. package/dist/HierarchicalTrackSelectorWidget/model.d.ts +1 -1
  38. package/dist/HierarchicalTrackSelectorWidget/model.js +1 -1
  39. package/dist/PluginStoreWidget/components/AddCustomPluginDialog.js +15 -5
  40. package/dist/PluginStoreWidget/components/DeletePluginDialog.js +6 -2
  41. package/dist/PluginStoreWidget/components/InstalledPlugin.js +4 -3
  42. package/dist/PluginStoreWidget/components/PluginCard.js +1 -1
  43. package/dist/PluginStoreWidget/components/PluginStoreWidget.js +12 -4
  44. package/dist/ucsc-trackhub/doConnect.d.ts +5 -1
  45. package/dist/ucsc-trackhub/doConnect.js +0 -1
  46. package/dist/ucsc-trackhub/model.d.ts +23 -3
  47. package/dist/ucsc-trackhub/ucscTrackHub.d.ts +7 -7
  48. package/dist/ucsc-trackhub/ucscTrackHub.js +8 -10
  49. package/esm/AddConnectionWidget/components/AddConnectionWidget.js +3 -1
  50. package/esm/AddConnectionWidget/components/ConnectionTypeSelect.js +3 -1
  51. package/esm/AddTrackWidget/components/AddTrackWidget.js +3 -1
  52. package/esm/AddTrackWidget/components/ConfirmTrack.js +10 -6
  53. package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js +2 -3
  54. package/esm/AddTrackWidget/components/PasteConfigWorkflow.js +6 -2
  55. package/esm/AddTrackWidget/components/TextIndexingConfig.js +16 -8
  56. package/esm/AddTrackWidget/components/TrackAdapterSelector.js +3 -1
  57. package/esm/AddTrackWidget/components/TrackTypeSelector.js +3 -1
  58. package/esm/AddTrackWidget/model.js +1 -1
  59. package/esm/AssemblyManager/AssemblyAddForm.d.ts +3 -2
  60. package/esm/AssemblyManager/AssemblyAddForm.js +38 -18
  61. package/esm/AssemblyManager/AssemblyManager.js +15 -5
  62. package/esm/AssemblyManager/AssemblyTable.js +3 -1
  63. package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +6 -2
  64. package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +13 -2
  65. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js +7 -7
  66. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js +4 -4
  67. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js +6 -2
  68. package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js +4 -2
  69. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.js +12 -4
  70. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +24 -8
  71. package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +8 -4
  72. package/esm/HierarchicalTrackSelectorWidget/components/tree/FavoriteTracks.js +6 -2
  73. package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +36 -12
  74. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +9 -3
  75. package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +5 -1
  76. package/esm/HierarchicalTrackSelectorWidget/components/tree/RecentlyUsedTracks.js +6 -2
  77. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackCategory.js +3 -1
  78. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +4 -2
  79. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabelMenu.js +12 -4
  80. package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackListNode.js +3 -1
  81. package/esm/HierarchicalTrackSelectorWidget/components/util.d.ts +1 -1
  82. package/esm/HierarchicalTrackSelectorWidget/components/util.js +1 -1
  83. package/esm/HierarchicalTrackSelectorWidget/facetedModel.d.ts +1 -1
  84. package/esm/HierarchicalTrackSelectorWidget/facetedModel.js +1 -0
  85. package/esm/HierarchicalTrackSelectorWidget/model.d.ts +1 -1
  86. package/esm/HierarchicalTrackSelectorWidget/model.js +1 -1
  87. package/esm/PluginStoreWidget/components/AddCustomPluginDialog.js +15 -5
  88. package/esm/PluginStoreWidget/components/DeletePluginDialog.js +6 -2
  89. package/esm/PluginStoreWidget/components/InstalledPlugin.js +4 -3
  90. package/esm/PluginStoreWidget/components/PluginCard.js +1 -1
  91. package/esm/PluginStoreWidget/components/PluginStoreWidget.js +12 -4
  92. package/esm/ucsc-trackhub/doConnect.d.ts +5 -1
  93. package/esm/ucsc-trackhub/doConnect.js +0 -1
  94. package/esm/ucsc-trackhub/model.d.ts +23 -3
  95. package/esm/ucsc-trackhub/ucscTrackHub.d.ts +7 -7
  96. package/esm/ucsc-trackhub/ucscTrackHub.js +8 -10
  97. package/package.json +3 -3
@@ -10,7 +10,6 @@ exports.makeLoc = makeLoc;
10
10
  exports.makeLocAlt = makeLocAlt;
11
11
  exports.makeLoc2 = makeLoc2;
12
12
  exports.generateTracks = generateTracks;
13
- /* eslint-disable @typescript-eslint/no-explicit-any */
14
13
  const util_1 = require("@jbrowse/core/util");
15
14
  const io_1 = require("@jbrowse/core/util/io");
16
15
  const tracks_1 = require("@jbrowse/core/util/tracks");
@@ -62,8 +61,7 @@ function generateTracks({ trackDb, trackDbLoc, assemblyName, sequenceAdapter, })
62
61
  do {
63
62
  currentTrackName = ((_a = trackDb.data[currentTrackName]) === null || _a === void 0 ? void 0 : _a.data.parent) || '';
64
63
  if (currentTrackName) {
65
- ;
66
- [currentTrackName] = currentTrackName.split(' ');
64
+ currentTrackName = currentTrackName.split(' ')[0];
67
65
  parentTracks.push(trackDb.data[currentTrackName]);
68
66
  }
69
67
  } while (currentTrackName);
@@ -93,7 +91,7 @@ function makeTrackConfig({ track, categories, trackDbLoc, trackDb, sequenceAdapt
93
91
  const bigDataUrl = track.data.bigDataUrl || '';
94
92
  const bigDataIdx = track.data.bigDataIndex || '';
95
93
  const isUri = (0, util_1.isUriLocation)(trackDbLoc);
96
- let baseTrackType = (trackType === null || trackType === void 0 ? void 0 : trackType.split(' ')[0]) || '';
94
+ let baseTrackType = trackType.split(' ')[0] || '';
97
95
  if (baseTrackType === 'bam' && bigDataUrl.toLowerCase().endsWith('cram')) {
98
96
  baseTrackType = 'cram';
99
97
  }
@@ -112,8 +110,8 @@ function makeTrackConfig({ track, categories, trackDbLoc, trackDb, sequenceAdapt
112
110
  bamLocation: bigDataLocation,
113
111
  index: {
114
112
  location: isUri
115
- ? makeLocAlt(bigDataIdx, bigDataUrl + '.bai', trackDbLoc)
116
- : makeLoc2(bigDataIdx, bigDataUrl + '.bai'),
113
+ ? makeLocAlt(bigDataIdx, `${bigDataUrl}.bai`, trackDbLoc)
114
+ : makeLoc2(bigDataIdx, `${bigDataUrl}.bai`),
117
115
  },
118
116
  },
119
117
  };
@@ -127,8 +125,8 @@ function makeTrackConfig({ track, categories, trackDbLoc, trackDb, sequenceAdapt
127
125
  type: 'CramAdapter',
128
126
  cramLocation: bigDataLocation,
129
127
  craiLocation: isUri
130
- ? makeLocAlt(bigDataIdx, bigDataUrl + '.crai', trackDbLoc)
131
- : makeLoc2(bigDataIdx, bigDataUrl + '.crai'),
128
+ ? makeLocAlt(bigDataIdx, `${bigDataUrl}.crai`, trackDbLoc)
129
+ : makeLoc2(bigDataIdx, `${bigDataUrl}.crai`),
132
130
  sequenceAdapter,
133
131
  },
134
132
  };
@@ -172,8 +170,8 @@ function makeTrackConfig({ track, categories, trackDbLoc, trackDb, sequenceAdapt
172
170
  vcfGzLocation: bigDataLocation,
173
171
  index: {
174
172
  location: isUri
175
- ? makeLocAlt(bigDataIdx, bigDataUrl + '.tbi', trackDbLoc)
176
- : makeLoc2(bigDataIdx, bigDataUrl + '.tbi'),
173
+ ? makeLocAlt(bigDataIdx, `${bigDataUrl}.tbi`, trackDbLoc)
174
+ : makeLoc2(bigDataIdx, `${bigDataUrl}.tbi`),
177
175
  },
178
176
  },
179
177
  };
@@ -44,7 +44,9 @@ const AddConnectionWidget = observer(function ({ model }) {
44
44
  setConnectionId(`${c.name}-${Date.now()}`);
45
45
  } })) : connectionType && configModel ? (React.createElement(ConfigureConnection, { connectionType: connectionType, model: configModel, session: session })) : null,
46
46
  React.createElement("div", { className: classes.actionsContainer },
47
- React.createElement(Button, { disabled: activeStep === 0, onClick: () => setActiveStep(activeStep - 1), className: classes.button }, "Back"),
47
+ React.createElement(Button, { disabled: activeStep === 0, onClick: () => {
48
+ setActiveStep(activeStep - 1);
49
+ }, className: classes.button }, "Back"),
48
50
  React.createElement(Button, { disabled: !((activeStep === 0 && connectionType) ||
49
51
  (activeStep === 1 && configModel)), variant: "contained", color: "primary", onClick: () => {
50
52
  if (activeStep === steps.length - 1) {
@@ -13,6 +13,8 @@ const ConnectionTypeSelect = observer(function ConnectionTypeSelect({ connection
13
13
  return (React.createElement("form", { autoComplete: "off" }, connectionType ? (React.createElement(TextField, { value: connectionType.name, label: "connectionType", helperText: connectionType.description ? (React.createElement(React.Fragment, null,
14
14
  connectionType.description,
15
15
  connectionType.url ? (React.createElement(IconButton, { href: connectionType.url, rel: "noopener noreferrer", target: "_blank" },
16
- React.createElement(OpenInNewIcon, null))) : null)) : null, select: true, fullWidth: true, onChange: event => setConnectionType(connectionTypeChoices.find(c => c.name === event.target.value)), variant: "outlined" }, connectionTypeChoices.map(c => (React.createElement(MenuItem, { key: c.name, value: c.name }, c.displayName || c.name))))) : null));
16
+ React.createElement(OpenInNewIcon, null))) : null)) : null, select: true, fullWidth: true, onChange: event => {
17
+ setConnectionType(connectionTypeChoices.find(c => c.name === event.target.value));
18
+ }, variant: "outlined" }, connectionTypeChoices.map(c => (React.createElement(MenuItem, { key: c.name, value: c.name }, c.displayName || c.name))))) : null));
17
19
  });
18
20
  export default ConnectionTypeSelect;
@@ -18,7 +18,9 @@ const AddTrackSelector = observer(function ({ model, }) {
18
18
  const Component = ComponentMap[val2];
19
19
  return (React.createElement(React.Fragment, null,
20
20
  React.createElement(FormControl, null,
21
- React.createElement(Select, { value: val2, onChange: event => setVal(event.target.value) }, Object.keys(ComponentMap).map(e => (React.createElement(MenuItem, { key: e, value: e }, e)))),
21
+ React.createElement(Select, { value: val2, onChange: event => {
22
+ setVal(event.target.value);
23
+ } }, Object.keys(ComponentMap).map(e => (React.createElement(MenuItem, { key: e, value: e }, e)))),
22
24
  React.createElement(FormHelperText, null, "Type of add track workflow")),
23
25
  React.createElement("br", null),
24
26
  React.createElement(Component, { model: model })));
@@ -50,13 +50,13 @@ const ConfirmTrack = observer(function ConfirmTrack({ model, }) {
50
50
  const { classes } = useStyles();
51
51
  const [check, setCheck] = useState(true);
52
52
  const session = getSession(model);
53
- const { trackName, trackAdapter, trackType, warningMessage, adapterHint } = model;
53
+ const { trackName, unsupported, trackAdapter, trackType, warningMessage, adapterHint, } = model;
54
54
  useEffect(() => {
55
55
  if (adapterHint === '' && trackAdapter) {
56
56
  model.setAdapterHint(trackAdapter.type);
57
57
  }
58
58
  }, [adapterHint, trackAdapter, trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type, model]);
59
- if (model.unsupported) {
59
+ if (unsupported) {
60
60
  return (React.createElement(Typography, { className: classes.spacing },
61
61
  "This version of JBrowse cannot display data of this type. It is possible, however, that there is a newer version that can display them. You can",
62
62
  ' ',
@@ -74,14 +74,18 @@ const ConfirmTrack = observer(function ConfirmTrack({ model, }) {
74
74
  if (!(trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type)) {
75
75
  return React.createElement(Typography, null, "Could not recognize this data type.");
76
76
  }
77
- const supportedForIndexing = isSupportedIndexingAdapter(trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type);
77
+ const supportedForIndexing = isSupportedIndexingAdapter(trackAdapter.type);
78
78
  return (React.createElement("div", null,
79
- trackAdapter ? (React.createElement(StatusMessage, { trackAdapter: trackAdapter, trackType: trackType })) : null,
79
+ React.createElement(StatusMessage, { trackAdapter: trackAdapter, trackType: trackType }),
80
80
  warningMessage ? (React.createElement(Typography, { style: { color: 'orange' } }, warningMessage)) : null,
81
- React.createElement(TextField, { className: classes.spacing, label: "trackName", helperText: "A name for this track", fullWidth: true, value: trackName, onChange: event => model.setTrackName(event.target.value), inputProps: { 'data-testid': 'trackNameInput' } }),
81
+ React.createElement(TextField, { className: classes.spacing, label: "trackName", helperText: "A name for this track", fullWidth: true, value: trackName, onChange: event => {
82
+ model.setTrackName(event.target.value);
83
+ }, inputProps: { 'data-testid': 'trackNameInput' } }),
82
84
  React.createElement(TrackAdapterSelector, { model: model }),
83
85
  React.createElement(TrackTypeSelector, { model: model }),
84
- React.createElement(AssemblySelector, { session: session, helperText: "Select assembly to add track to", selected: model.assembly, onChange: asm => model.setAssembly(asm), TextFieldProps: {
86
+ React.createElement(AssemblySelector, { session: session, helperText: "Select assembly to add track to", selected: model.assembly, onChange: asm => {
87
+ model.setAssembly(asm);
88
+ }, TextFieldProps: {
85
89
  fullWidth: true,
86
90
  SelectProps: {
87
91
  // @ts-expect-error
@@ -30,7 +30,6 @@ const steps = ['Enter track data', 'Confirm track type'];
30
30
  const DefaultAddTrackWorkflow = observer(function ({ model, }) {
31
31
  const [activeStep, setActiveStep] = useState(0);
32
32
  const { classes } = useStyles();
33
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
33
  const { jobsManager } = getRoot(model);
35
34
  const session = getSession(model);
36
35
  const { assembly, trackAdapter, trackData, trackName, trackType, textIndexTrack, textIndexingConf, } = model;
@@ -53,7 +52,7 @@ const DefaultAddTrackWorkflow = observer(function ({ model, }) {
53
52
  }
54
53
  const trackId = [
55
54
  `${trackName.toLowerCase().replaceAll(' ', '_')}-${Date.now()}`,
56
- `${session.adminMode ? '' : '-sessionTrack'}`,
55
+ session.adminMode ? '' : '-sessionTrack',
57
56
  ].join('');
58
57
  const assemblyInstance = session.assemblyManager.get(assembly);
59
58
  if (!isSessionWithAddTracks(session)) {
@@ -79,7 +78,7 @@ const DefaultAddTrackWorkflow = observer(function ({ model, }) {
79
78
  attributes: ['Name', 'ID'],
80
79
  exclude: ['CDS', 'exon'],
81
80
  };
82
- const indexName = trackName + '-index';
81
+ const indexName = `${trackName}-index`;
83
82
  const newEntry = {
84
83
  indexingParams: {
85
84
  ...attr,
@@ -20,7 +20,9 @@ const PasteConfigAddTrackWorkflow = observer(function ({ model, }) {
20
20
  const [error, setError] = useState();
21
21
  return (React.createElement("div", null,
22
22
  error ? React.createElement(ErrorMessage, { error: error }) : null,
23
- React.createElement(TextField, { multiline: true, rows: 10, value: val, onChange: event => setVal(event.target.value), placeholder: 'Paste track config or array of track configs in JSON format', variant: "outlined", className: classes.textbox }),
23
+ React.createElement(TextField, { multiline: true, rows: 10, value: val, onChange: event => {
24
+ setVal(event.target.value);
25
+ }, placeholder: 'Paste track config or array of track configs in JSON format', variant: "outlined", className: classes.textbox }),
24
26
  React.createElement(Button, { variant: "contained", className: classes.submit, onClick: () => {
25
27
  try {
26
28
  setError(undefined);
@@ -29,7 +31,9 @@ const PasteConfigAddTrackWorkflow = observer(function ({ model, }) {
29
31
  const confs = Array.isArray(conf) ? conf : [conf];
30
32
  if (isSessionWithAddTracks(session) &&
31
33
  isSessionModelWithWidgets(session)) {
32
- confs.forEach(c => session.addTrackConf(c));
34
+ confs.forEach(c => {
35
+ session.addTrackConf(c);
36
+ });
33
37
  confs.forEach(c => model.view.showTrack(c.trackId));
34
38
  model.clearData();
35
39
  session.hideWidget(model);
@@ -40,22 +40,30 @@ const TextIndexingConfig = observer(function ({ model, }) {
40
40
  React.createElement(CardContent, null,
41
41
  React.createElement(InputLabel, null, section.label),
42
42
  React.createElement(List, { disablePadding: true },
43
- section.values.map((val, idx) => (React.createElement(ListItem, { key: idx, disableGutters: true },
43
+ section.values.map((val, idx) => (
44
+ /* biome-ignore lint/suspicious/noArrayIndexKey: */
45
+ React.createElement(ListItem, { key: `${val}-${idx}`, disableGutters: true },
44
46
  React.createElement(TextField, { value: val, InputProps: {
45
47
  endAdornment: (React.createElement(InputAdornment, { position: "end" },
46
48
  React.createElement(IconButton, { onClick: () => {
47
49
  const newAttr = section.values.filter((_, i) => i !== idx);
48
- index === 0
49
- ? setAttributes(newAttr)
50
- : setExclude(newAttr);
50
+ if (index === 0) {
51
+ setAttributes(newAttr);
52
+ }
53
+ else {
54
+ setExclude(newAttr);
55
+ }
51
56
  } },
52
57
  React.createElement(DeleteIcon, null)))),
53
58
  } })))),
54
59
  React.createElement(ListItem, { disableGutters: true },
55
60
  React.createElement(TextField, { value: index === 0 ? value1 : value2, placeholder: "add new", onChange: event => {
56
- index === 0
57
- ? setValue1(event.target.value)
58
- : setValue2(event.target.value);
61
+ if (index === 0) {
62
+ setValue1(event.target.value);
63
+ }
64
+ else {
65
+ setValue2(event.target.value);
66
+ }
59
67
  }, InputProps: {
60
68
  endAdornment: (React.createElement(InputAdornment, { position: "end" },
61
69
  React.createElement(IconButton, { onClick: () => {
@@ -67,7 +75,7 @@ const TextIndexingConfig = observer(function ({ model, }) {
67
75
  setExclude([...exclude, value2]);
68
76
  setValue2('');
69
77
  }
70
- }, disabled: index === 0 ? value1 === '' : value2 === '', "data-testid": `stringArrayAdd-Feat` },
78
+ }, disabled: index === 0 ? value1 === '' : value2 === '', "data-testid": "stringArrayAdd-Feat" },
71
79
  React.createElement(AddIcon, null)))),
72
80
  } })))))))));
73
81
  });
@@ -27,7 +27,9 @@ const TrackAdapterSelector = observer(({ model }) => {
27
27
  const { classes } = useStyles();
28
28
  const { trackAdapter } = model;
29
29
  const { pluginManager } = getEnv(model);
30
- return (React.createElement(TextField, { className: classes.spacing, value: (trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type) !== 'UNKNOWN' ? trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type : '', label: "Adapter type", variant: "outlined", helperText: "Select an adapter type", select: true, fullWidth: true, onChange: event => model.setAdapterHint(event.target.value), SelectProps: {
30
+ return (React.createElement(TextField, { className: classes.spacing, value: (trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type) !== 'UNKNOWN' ? trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type : '', label: "Adapter type", variant: "outlined", helperText: "Select an adapter type", select: true, fullWidth: true, onChange: event => {
31
+ model.setAdapterHint(event.target.value);
32
+ }, SelectProps: {
31
33
  // @ts-expect-error
32
34
  SelectDisplayProps: { 'data-testid': 'adapterTypeSelect' },
33
35
  } }, Object.entries(categorizeAdapters(pluginManager
@@ -13,7 +13,9 @@ const TrackTypeSelector = observer(({ model }) => {
13
13
  const { pluginManager } = getEnv(model);
14
14
  const { trackType } = model;
15
15
  const trackTypes = pluginManager.getTrackElements();
16
- return (React.createElement(TextField, { className: classes.spacing, value: trackType, variant: "outlined", label: "Track type", helperText: "Select track type", select: true, fullWidth: true, onChange: event => model.setTrackType(event.target.value), SelectProps: {
16
+ return (React.createElement(TextField, { className: classes.spacing, value: trackType, variant: "outlined", label: "Track type", helperText: "Select track type", select: true, fullWidth: true, onChange: event => {
17
+ model.setTrackType(event.target.value);
18
+ }, SelectProps: {
17
19
  // @ts-expect-error
18
20
  SelectDisplayProps: { 'data-testid': 'trackTypeSelect' },
19
21
  } }, trackTypes.map(({ name, displayName }) => (React.createElement(MenuItem, { key: name, value: name }, displayName)))));
@@ -215,7 +215,7 @@ export default function f(pluginManager) {
215
215
  */
216
216
  get warningMessage() {
217
217
  if (self.isFtp) {
218
- return `Warning: JBrowse cannot access files using the ftp protocol`;
218
+ return 'Warning: JBrowse cannot access files using the ftp protocol';
219
219
  }
220
220
  else if (self.isRelativeUrl) {
221
221
  return `Warning: one or more of your files do not provide the protocol e.g.
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
+ import { AbstractRootModel } from '@jbrowse/core/util/types';
2
3
  declare const AssemblyAddForm: ({ rootModel, setFormOpen, }: {
3
- rootModel: any;
4
- setFormOpen: Function;
4
+ rootModel: AbstractRootModel;
5
+ setFormOpen: (arg: boolean) => void;
5
6
  }) => React.JSX.Element;
6
7
  export default AssemblyAddForm;
@@ -5,35 +5,47 @@ import { FileSelector } from '@jbrowse/core/ui';
5
5
  // icons
6
6
  import AddIcon from '@mui/icons-material/Add';
7
7
  const AdapterSelector = observer(function ({ adapterSelection, setAdapterSelection, adapterTypes, }) {
8
- return (React.createElement(TextField, { value: adapterSelection, label: "Type", select: true, helperText: "Type of adapter to use", fullWidth: true, onChange: event => setAdapterSelection(event.target.value) }, adapterTypes.map(str => (React.createElement(MenuItem, { key: str, value: str }, str)))));
8
+ return (React.createElement(TextField, { value: adapterSelection, label: "Type", select: true, helperText: "Type of adapter to use", fullWidth: true, onChange: event => {
9
+ setAdapterSelection(event.target.value);
10
+ } }, adapterTypes.map(str => (React.createElement(MenuItem, { key: str, value: str }, str)))));
9
11
  });
10
- const AdapterInput = observer(({ adapterSelection, fastaLocation, setFastaLocation, faiLocation, setFaiLocation, gziLocation, setGziLocation, twoBitLocation, setTwoBitLocation, chromSizesLocation, setChromSizesLocation, }) => {
12
+ const AdapterInput = observer(function ({ adapterSelection, fastaLocation, faiLocation, gziLocation, twoBitLocation, chromSizesLocation, setFaiLocation, setGziLocation, setTwoBitLocation, setFastaLocation, setChromSizesLocation, }) {
11
13
  if (adapterSelection === 'IndexedFastaAdapter' ||
12
14
  adapterSelection === 'BgzipFastaAdapter') {
13
15
  return (React.createElement(Grid, { container: true, spacing: 2 },
14
16
  React.createElement(Grid, { item: true },
15
- React.createElement(FileSelector, { name: "fastaLocation", location: fastaLocation, setLocation: loc => setFastaLocation(loc) })),
17
+ React.createElement(FileSelector, { name: "fastaLocation", location: fastaLocation, setLocation: loc => {
18
+ setFastaLocation(loc);
19
+ } })),
16
20
  React.createElement(Grid, { item: true },
17
- React.createElement(FileSelector, { name: "faiLocation", location: faiLocation, setLocation: loc => setFaiLocation(loc) })),
21
+ React.createElement(FileSelector, { name: "faiLocation", location: faiLocation, setLocation: loc => {
22
+ setFaiLocation(loc);
23
+ } })),
18
24
  adapterSelection === 'BgzipFastaAdapter' ? (React.createElement(Grid, { item: true },
19
- React.createElement(FileSelector, { name: "gziLocation", location: gziLocation, setLocation: loc => setGziLocation(loc) }))) : null));
25
+ React.createElement(FileSelector, { name: "gziLocation", location: gziLocation, setLocation: loc => {
26
+ setGziLocation(loc);
27
+ } }))) : null));
20
28
  }
21
29
  if (adapterSelection === 'TwoBitAdapter') {
22
30
  return (React.createElement(Grid, { container: true, spacing: 2 },
23
31
  React.createElement(Grid, { item: true },
24
- React.createElement(FileSelector, { name: "twoBitLocation", location: twoBitLocation, setLocation: loc => setTwoBitLocation(loc) })),
32
+ React.createElement(FileSelector, { name: "twoBitLocation", location: twoBitLocation, setLocation: loc => {
33
+ setTwoBitLocation(loc);
34
+ } })),
25
35
  React.createElement(Grid, { item: true },
26
- React.createElement(FileSelector, { name: "chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)", location: chromSizesLocation, setLocation: loc => setChromSizesLocation(loc) }))));
36
+ React.createElement(FileSelector, { name: "chromSizesLocation (optional, can be added to speed up loading 2bit files with many contigs)", location: chromSizesLocation, setLocation: loc => {
37
+ setChromSizesLocation(loc);
38
+ } }))));
27
39
  }
28
40
  return null;
29
41
  });
30
42
  const blank = { uri: '' };
43
+ const adapterTypes = [
44
+ 'IndexedFastaAdapter',
45
+ 'BgzipFastaAdapter',
46
+ 'TwoBitAdapter',
47
+ ];
31
48
  const AssemblyAddForm = observer(function ({ rootModel, setFormOpen, }) {
32
- const adapterTypes = [
33
- 'IndexedFastaAdapter',
34
- 'BgzipFastaAdapter',
35
- 'TwoBitAdapter',
36
- ];
37
49
  const [assemblyName, setAssemblyName] = useState('');
38
50
  const [assemblyDisplayName, setAssemblyDisplayName] = useState('');
39
51
  const [adapterSelection, setAdapterSelection] = useState(adapterTypes[0]);
@@ -43,8 +55,9 @@ const AssemblyAddForm = observer(function ({ rootModel, setFormOpen, }) {
43
55
  const [twoBitLocation, setTwoBitLocation] = useState(blank);
44
56
  const [chromSizesLocation, setChromSizesLocation] = useState(blank);
45
57
  function createAssembly() {
58
+ var _a, _b;
46
59
  if (assemblyName === '') {
47
- rootModel.session.notify("Can't create an assembly without a name");
60
+ (_a = rootModel.session) === null || _a === void 0 ? void 0 : _a.notify("Can't create an assembly without a name");
48
61
  }
49
62
  else {
50
63
  setFormOpen(false);
@@ -89,16 +102,23 @@ const AssemblyAddForm = observer(function ({ rootModel, setFormOpen, }) {
89
102
  },
90
103
  };
91
104
  }
105
+ else {
106
+ throw new Error(`unknown ${adapterSelection}`);
107
+ }
92
108
  rootModel.jbrowse.addAssemblyConf(newAssembly);
93
- rootModel.session.notify(`Successfully added ${assemblyName} assembly to JBrowse 2`, 'success');
109
+ (_b = rootModel.session) === null || _b === void 0 ? void 0 : _b.notify(`Successfully added ${assemblyName} assembly to JBrowse 2`, 'success');
94
110
  }
95
111
  }
96
112
  return (React.createElement("div", null,
97
113
  React.createElement(Paper, null,
98
- React.createElement(TextField, { id: "assembly-name", inputProps: { 'data-testid': 'assembly-name' }, label: "Assembly name", helperText: "The assembly name e.g. hg38", variant: "outlined", value: assemblyName, onChange: event => setAssemblyName(event.target.value) }),
99
- React.createElement(TextField, { id: "assembly-name", inputProps: { 'data-testid': 'assembly-display-name' }, label: "Assembly display name", helperText: 'A human readable display name for the assembly e.g. "Homo sapiens (hg38)"', variant: "outlined", value: assemblyDisplayName, onChange: event => setAssemblyDisplayName(event.target.value) }),
100
- React.createElement(AdapterSelector, { adapterSelection: adapterSelection, setAdapterSelection: setAdapterSelection, adapterTypes: adapterTypes }),
101
- React.createElement(AdapterInput, { adapterSelection: adapterSelection, fastaLocation: fastaLocation, setFastaLocation: setFastaLocation, faiLocation: faiLocation, setFaiLocation: setFaiLocation, gziLocation: gziLocation, setGziLocation: setGziLocation, twoBitLocation: twoBitLocation, setTwoBitLocation: setTwoBitLocation, chromSizesLocation: chromSizesLocation, setChromSizesLocation: setChromSizesLocation })),
114
+ React.createElement(TextField, { id: "assembly-name", inputProps: { 'data-testid': 'assembly-name' }, label: "Assembly name", helperText: "The assembly name e.g. hg38", variant: "outlined", value: assemblyName, onChange: event => {
115
+ setAssemblyName(event.target.value);
116
+ } }),
117
+ React.createElement(TextField, { id: "assembly-name", inputProps: { 'data-testid': 'assembly-display-name' }, label: "Assembly display name", helperText: 'A human readable display name for the assembly e.g. "Homo sapiens (hg38)"', variant: "outlined", value: assemblyDisplayName, onChange: event => {
118
+ setAssemblyDisplayName(event.target.value);
119
+ } }),
120
+ React.createElement(AdapterSelector, { adapterSelection: adapterSelection, adapterTypes: adapterTypes, setAdapterSelection: setAdapterSelection }),
121
+ React.createElement(AdapterInput, { adapterSelection: adapterSelection, fastaLocation: fastaLocation, faiLocation: faiLocation, gziLocation: gziLocation, twoBitLocation: twoBitLocation, chromSizesLocation: chromSizesLocation, setFaiLocation: setFaiLocation, setGziLocation: setGziLocation, setTwoBitLocation: setTwoBitLocation, setFastaLocation: setFastaLocation, setChromSizesLocation: setChromSizesLocation })),
102
122
  React.createElement(Button, { variant: "contained", color: "secondary", startIcon: React.createElement(AddIcon, null), onClick: createAssembly }, "Create new assembly")));
103
123
  });
104
124
  export default AssemblyAddForm;
@@ -13,16 +13,26 @@ const AssemblyManager = observer(function ({ rootModel, onClose, }) {
13
13
  const [isAssemblyBeingEdited, setIsAssemblyBeingEdited] = useState(false);
14
14
  const [assemblyBeingEdited, setAssemblyBeingEdited] = useState();
15
15
  const showAssemblyTable = !isFormOpen && !isAssemblyBeingEdited;
16
- return (React.createElement(Dialog, { open: true, onClose: () => onClose(false), title: "Assembly manager" },
16
+ return (React.createElement(Dialog, { open: true, onClose: () => {
17
+ onClose(false);
18
+ }, title: "Assembly manager" },
17
19
  React.createElement(DialogContent, null,
18
20
  showAssemblyTable ? (React.createElement(AssemblyTable, { rootModel: rootModel, setIsAssemblyBeingEdited: setIsAssemblyBeingEdited, setAssemblyBeingEdited: setAssemblyBeingEdited })) : null,
19
21
  isAssemblyBeingEdited ? (React.createElement(AssemblyEditor, { assembly: assemblyBeingEdited })) : null,
20
22
  isFormOpen ? (React.createElement(AssemblyAddForm, { rootModel: rootModel, setFormOpen: setFormOpen })) : null),
21
23
  React.createElement(DialogActions, null,
22
- isFormOpen ? (React.createElement(Button, { variant: "contained", onClick: () => setFormOpen(false) }, "Back")) : null,
23
- isAssemblyBeingEdited ? (React.createElement(Button, { variant: "contained", onClick: () => setIsAssemblyBeingEdited(false) }, "Back")) : null,
24
+ isFormOpen ? (React.createElement(Button, { variant: "contained", onClick: () => {
25
+ setFormOpen(false);
26
+ } }, "Back")) : null,
27
+ isAssemblyBeingEdited ? (React.createElement(Button, { variant: "contained", onClick: () => {
28
+ setIsAssemblyBeingEdited(false);
29
+ } }, "Back")) : null,
24
30
  showAssemblyTable ? (React.createElement(React.Fragment, null,
25
- React.createElement(Button, { color: "secondary", variant: "contained", onClick: () => onClose(false) }, "Close"),
26
- React.createElement(Button, { variant: "contained", startIcon: React.createElement(AddIcon, null), onClick: () => setFormOpen(true) }, "Add new assembly"))) : null)));
31
+ React.createElement(Button, { color: "secondary", variant: "contained", onClick: () => {
32
+ onClose(false);
33
+ } }, "Close"),
34
+ React.createElement(Button, { variant: "contained", startIcon: React.createElement(AddIcon, null), onClick: () => {
35
+ setFormOpen(true);
36
+ } }, "Add new assembly"))) : null)));
27
37
  });
28
38
  export default AssemblyManager;
@@ -31,7 +31,9 @@ const AssemblyTable = observer(function ({ rootModel, setIsAssemblyBeingEdited,
31
31
  setAssemblyBeingEdited(assembly);
32
32
  } },
33
33
  React.createElement(CreateIcon, { color: "primary" })),
34
- React.createElement(IconButton, { "data-testid": `${name}-delete`, onClick: () => removeAssembly(name) },
34
+ React.createElement(IconButton, { "data-testid": `${name}-delete`, onClick: () => {
35
+ removeAssembly(name);
36
+ } },
35
37
  React.createElement(DeleteIcon, { color: "error" })))));
36
38
  })))));
37
39
  });
@@ -22,9 +22,13 @@ const HierarchicalFab = observer(function ({ model, }) {
22
22
  const hasConnections = isSessionModelWithConnections(session);
23
23
  const hasAddTrack = isSessionWithAddTracks(session);
24
24
  return hasAddTrack || hasConnections ? (React.createElement(React.Fragment, null,
25
- React.createElement(Fab, { color: "secondary", className: classes.fab, onClick: event => setAnchorEl(event.currentTarget) },
25
+ React.createElement(Fab, { color: "secondary", className: classes.fab, onClick: event => {
26
+ setAnchorEl(event.currentTarget);
27
+ } },
26
28
  React.createElement(AddIcon, null)),
27
- React.createElement(Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: () => setAnchorEl(null) },
29
+ React.createElement(Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: () => {
30
+ setAnchorEl(null);
31
+ } },
28
32
  hasConnections ? (React.createElement(MenuItem, { onClick: () => {
29
33
  handleFabClose();
30
34
  if (isSessionModelWithWidgets(session)) {
@@ -11,10 +11,21 @@ const ShoppingCart = observer(function ({ model, }) {
11
11
  const session = getSession(model);
12
12
  const items = pluginManager.evaluateExtensionPoint('TrackSelector-multiTrackMenuItems', [], { session });
13
13
  return selection.length ? (React.createElement(CascadingMenuButton, { menuItems: [
14
- { label: 'Clear', onClick: () => model.clearSelection() },
14
+ {
15
+ label: 'Clear',
16
+ onClick: () => {
17
+ model.clearSelection();
18
+ },
19
+ },
15
20
  ...items.map(item => ({
16
21
  ...item,
17
- ...('onClick' in item ? { onClick: () => item.onClick(model) } : {}),
22
+ ...('onClick' in item
23
+ ? {
24
+ onClick: () => {
25
+ item.onClick(model);
26
+ },
27
+ }
28
+ : {}),
18
29
  })),
19
30
  ] },
20
31
  React.createElement(Badge, { badgeContent: selection.length, color: "primary" },
@@ -11,12 +11,12 @@ const CloseConnectionDialog = observer(function CloseConnectionDialog({ modalInf
11
11
  React.createElement(List, null, Object.entries(dereferenceTypeCount).map(([key, value]) => (React.createElement(ListItem, { key: key }, `${value} ${key}`)))))) : null,
12
12
  React.createElement(DialogContentText, null, "Are you sure you want to close this connection?")),
13
13
  React.createElement(DialogActions, null,
14
- React.createElement(Button, { onClick: () => onClose(), color: "primary" }, "Cancel"),
15
- React.createElement(Button, { variant: "contained", onClick: modalInfo
16
- ? () => {
17
- safelyBreakConnection === null || safelyBreakConnection === void 0 ? void 0 : safelyBreakConnection();
18
- onClose();
19
- }
20
- : () => { }, color: "primary" }, "OK"))));
14
+ React.createElement(Button, { onClick: () => {
15
+ onClose();
16
+ }, color: "primary" }, "Cancel"),
17
+ React.createElement(Button, { variant: "contained", onClick: () => {
18
+ safelyBreakConnection === null || safelyBreakConnection === void 0 ? void 0 : safelyBreakConnection();
19
+ onClose();
20
+ }, color: "primary" }, "OK"))));
21
21
  });
22
22
  export default CloseConnectionDialog;
@@ -8,12 +8,12 @@ const DeleteConnectionDialog = observer(function DeleteConnectionDialog({ delete
8
8
  React.createElement(DialogContent, null,
9
9
  React.createElement(DialogContentText, null, "Are you sure you want to delete this connection?")),
10
10
  React.createElement(DialogActions, null,
11
- React.createElement(Button, { onClick: () => handleClose(), color: "primary" }, "Cancel"),
11
+ React.createElement(Button, { onClick: () => {
12
+ handleClose();
13
+ }, color: "primary" }, "Cancel"),
12
14
  React.createElement(Button, { variant: "contained", color: "primary", onClick: () => {
13
15
  var _a;
14
- if (connectionConf) {
15
- (_a = session.deleteConnection) === null || _a === void 0 ? void 0 : _a.call(session, connectionConf);
16
- }
16
+ (_a = session.deleteConnection) === null || _a === void 0 ? void 0 : _a.call(session, connectionConf);
17
17
  handleClose();
18
18
  } }, "OK"))));
19
19
  });
@@ -27,12 +27,16 @@ const ManageConnectionsDialog = observer(function ({ session, handleClose, break
27
27
  connections.map(conf => {
28
28
  const name = readConfObject(conf, 'name');
29
29
  return (React.createElement(Typography, { key: `conn-${name}` },
30
- adminMode || (sessionConnections === null || sessionConnections === void 0 ? void 0 : sessionConnections.includes(conf)) ? (React.createElement(IconButton, { onClick: () => breakConnection(conf, true) },
30
+ adminMode || (sessionConnections === null || sessionConnections === void 0 ? void 0 : sessionConnections.includes(conf)) ? (React.createElement(IconButton, { onClick: () => {
31
+ breakConnection(conf, true);
32
+ } },
31
33
  React.createElement(CloseIcon, { color: "error" }))) : (React.createElement(DisabledButton, null)),
32
34
  name));
33
35
  }),
34
36
  !connections.length ? (React.createElement(Typography, null, "No connections found")) : null)),
35
37
  React.createElement(DialogActions, null,
36
- React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
38
+ React.createElement(Button, { onClick: () => {
39
+ handleClose();
40
+ }, variant: "contained", color: "primary" }, "Close"))));
37
41
  });
38
42
  export default ManageConnectionsDialog;
@@ -35,7 +35,7 @@ const ConnectionRow = observer(function ConnectionRow({ conf, session, breakConn
35
35
  });
36
36
  const ConnectionList = observer(function ConnectionsList({ session, breakConnection, }) {
37
37
  const { classes } = useStyles();
38
- return (React.createElement("div", { className: classes.connectionContainer }, !session.connections.length ? (React.createElement(Typography, null, "No connections found")) : (session.connections.map((conf, idx) => (React.createElement("div", { key: conf.name + '_' + idx },
38
+ return (React.createElement("div", { className: classes.connectionContainer }, !session.connections.length ? (React.createElement(Typography, null, "No connections found")) : (session.connections.map((conf, idx) => (React.createElement("div", { key: `${conf.name}_${idx}` },
39
39
  React.createElement(ConnectionRow, { conf: conf, session: session, breakConnection: breakConnection })))))));
40
40
  });
41
41
  const ToggleConnectionDialog = observer(function ({ session, handleClose, breakConnection, }) {
@@ -44,6 +44,8 @@ const ToggleConnectionDialog = observer(function ({ session, handleClose, breakC
44
44
  React.createElement(Typography, null, "Use the checkbox to turn on/off connections"),
45
45
  React.createElement(ConnectionList, { session: session, breakConnection: breakConnection })),
46
46
  React.createElement(DialogActions, null,
47
- React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
47
+ React.createElement(Button, { onClick: () => {
48
+ handleClose();
49
+ }, variant: "contained", color: "primary" }, "Close"))));
48
50
  });
49
51
  export default ToggleConnectionDialog;
@@ -18,12 +18,16 @@ const useStyles = makeStyles()(theme => ({
18
18
  }));
19
19
  function ClearButton({ onClick }) {
20
20
  return (React.createElement(Tooltip, { title: "Clear selection on this facet filter" },
21
- React.createElement(IconButton, { onClick: () => onClick(), size: "small" },
21
+ React.createElement(IconButton, { onClick: () => {
22
+ onClick();
23
+ }, size: "small" },
22
24
  React.createElement(ClearIcon, null))));
23
25
  }
24
26
  function ExpandButton({ visible, onClick, }) {
25
27
  return (React.createElement(Tooltip, { title: "Minimize/expand this facet filter" },
26
- React.createElement(IconButton, { onClick: () => onClick(), size: "small" }, visible ? React.createElement(MinimizeIcon, null) : React.createElement(AddIcon, null))));
28
+ React.createElement(IconButton, { onClick: () => {
29
+ onClick();
30
+ }, size: "small" }, visible ? React.createElement(MinimizeIcon, null) : React.createElement(AddIcon, null))));
27
31
  }
28
32
  const FacetFilter = observer(function ({ column, vals, model, }) {
29
33
  const { classes } = useStyles();
@@ -34,8 +38,12 @@ const FacetFilter = observer(function ({ column, vals, model, }) {
34
38
  return (React.createElement(FormControl, { className: classes.facet, fullWidth: true },
35
39
  React.createElement("div", null,
36
40
  React.createElement(Typography, { component: "span" }, field),
37
- React.createElement(ClearButton, { onClick: () => faceted.setFilter(field, []) }),
38
- React.createElement(ExpandButton, { visible: visible, onClick: () => setVisible(!visible) })),
41
+ React.createElement(ClearButton, { onClick: () => {
42
+ faceted.setFilter(field, []);
43
+ } }),
44
+ React.createElement(ExpandButton, { visible: visible, onClick: () => {
45
+ setVisible(!visible);
46
+ } })),
39
47
  visible ? (React.createElement(Select, { multiple: true, native: true, className: classes.select, value: filters.get(column.field) || [], onChange: event => {
40
48
  faceted.setFilter(column.field,
41
49
  // @ts-expect-error