@jbrowse/plugin-data-management 2.6.3 → 2.7.1
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.
- package/dist/AddConnectionWidget/components/AddConnectionWidget.d.ts +2 -2
- package/dist/AddConnectionWidget/components/AddConnectionWidget.js +17 -8
- package/dist/AddConnectionWidget/components/ConfigureConnection.d.ts +2 -2
- package/dist/AddConnectionWidget/components/ConfigureConnection.js +2 -1
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.d.ts +2 -2
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +5 -3
- package/dist/AddTrackWidget/components/AddTrackWidget.d.ts +3 -4
- package/dist/AddTrackWidget/components/AddTrackWidget.js +3 -3
- package/dist/AddTrackWidget/components/ConfirmTrack.d.ts +2 -2
- package/dist/AddTrackWidget/components/ConfirmTrack.js +3 -2
- package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.d.ts +3 -4
- package/dist/AddTrackWidget/components/DefaultAddTrackWorkflow.js +32 -27
- package/dist/AddTrackWidget/components/PasteConfigWorkflow.d.ts +3 -4
- package/dist/AddTrackWidget/components/PasteConfigWorkflow.js +10 -7
- package/dist/AddTrackWidget/components/TrackAdapterSelector.js +1 -1
- package/dist/AddTrackWidget/components/TrackSourceSelect.d.ts +3 -4
- package/dist/AddTrackWidget/components/TrackSourceSelect.js +3 -3
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +2 -1
- package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +2 -1
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.d.ts +3 -5
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js +2 -1
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.d.ts +3 -4
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js +5 -8
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.d.ts +3 -4
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js +3 -3
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.d.ts +2 -3
- package/dist/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js +2 -3
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.d.ts +13 -0
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.js +79 -0
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js +31 -77
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.d.ts +3 -4
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js +3 -3
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.d.ts +5 -3
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +10 -4
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +50 -29
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +4 -2
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.d.ts +3 -4
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +3 -3
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +5 -6
- package/dist/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +24 -49
- package/dist/HierarchicalTrackSelectorWidget/components/util.js +1 -2
- package/dist/HierarchicalTrackSelectorWidget/generateHierarchy.d.ts +16 -13
- package/dist/HierarchicalTrackSelectorWidget/generateHierarchy.js +2 -2
- package/dist/HierarchicalTrackSelectorWidget/model.js +17 -12
- package/dist/PluginStoreWidget/components/AddCustomPluginDialog.d.ts +2 -2
- package/dist/PluginStoreWidget/components/AddCustomPluginDialog.js +2 -1
- package/dist/PluginStoreWidget/components/InstalledPlugin.d.ts +2 -2
- package/dist/PluginStoreWidget/components/InstalledPlugin.js +8 -4
- package/dist/PluginStoreWidget/components/InstalledPluginsList.d.ts +2 -2
- package/dist/PluginStoreWidget/components/InstalledPluginsList.js +2 -1
- package/dist/PluginStoreWidget/components/PluginCard.d.ts +2 -2
- package/dist/PluginStoreWidget/components/PluginCard.js +2 -1
- package/dist/PluginStoreWidget/components/PluginStoreWidget.d.ts +3 -4
- package/dist/PluginStoreWidget/components/PluginStoreWidget.js +3 -3
- package/dist/index.d.ts +1 -9
- package/dist/index.js +1 -4
- package/dist/ucsc-trackhub/model.js +2 -2
- package/esm/AddConnectionWidget/components/AddConnectionWidget.d.ts +2 -2
- package/esm/AddConnectionWidget/components/AddConnectionWidget.js +19 -10
- package/esm/AddConnectionWidget/components/ConfigureConnection.d.ts +2 -2
- package/esm/AddConnectionWidget/components/ConfigureConnection.js +2 -1
- package/esm/AddConnectionWidget/components/ConnectionTypeSelect.d.ts +2 -2
- package/esm/AddConnectionWidget/components/ConnectionTypeSelect.js +5 -3
- package/esm/AddTrackWidget/components/AddTrackWidget.d.ts +3 -4
- package/esm/AddTrackWidget/components/AddTrackWidget.js +3 -3
- package/esm/AddTrackWidget/components/ConfirmTrack.d.ts +2 -2
- package/esm/AddTrackWidget/components/ConfirmTrack.js +4 -3
- package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.d.ts +3 -4
- package/esm/AddTrackWidget/components/DefaultAddTrackWorkflow.js +33 -28
- package/esm/AddTrackWidget/components/PasteConfigWorkflow.d.ts +3 -4
- package/esm/AddTrackWidget/components/PasteConfigWorkflow.js +11 -8
- package/esm/AddTrackWidget/components/TrackAdapterSelector.js +1 -1
- package/esm/AddTrackWidget/components/TrackSourceSelect.d.ts +3 -4
- package/esm/AddTrackWidget/components/TrackSourceSelect.js +3 -3
- package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.d.ts +2 -2
- package/esm/HierarchicalTrackSelectorWidget/components/HierarchicalFab.js +2 -1
- package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.d.ts +2 -2
- package/esm/HierarchicalTrackSelectorWidget/components/ShoppingCart.js +2 -1
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.d.ts +3 -5
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/CloseConnectionDialog.js +2 -1
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.d.ts +3 -4
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/DeleteConnectionDialog.js +6 -9
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.d.ts +3 -4
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ManageConnectionsDialog.js +3 -3
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.d.ts +2 -3
- package/esm/HierarchicalTrackSelectorWidget/components/dialogs/ToggleConnectionsDialog.js +3 -2
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.d.ts +13 -0
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilter.js +50 -0
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetFilters.js +31 -54
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.d.ts +3 -4
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedDialog.js +3 -3
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.d.ts +5 -3
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedHeader.js +10 -4
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.d.ts +2 -2
- package/esm/HierarchicalTrackSelectorWidget/components/faceted/FacetedSelector.js +50 -29
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.d.ts +2 -2
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HamburgerMenu.js +4 -2
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.d.ts +3 -4
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalHeader.js +3 -3
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.d.ts +2 -2
- package/esm/HierarchicalTrackSelectorWidget/components/tree/HierarchicalTree.js +5 -6
- package/esm/HierarchicalTrackSelectorWidget/components/tree/TrackLabel.js +24 -26
- package/esm/HierarchicalTrackSelectorWidget/components/util.js +1 -2
- package/esm/HierarchicalTrackSelectorWidget/generateHierarchy.d.ts +16 -13
- package/esm/HierarchicalTrackSelectorWidget/generateHierarchy.js +2 -2
- package/esm/HierarchicalTrackSelectorWidget/model.js +17 -12
- package/esm/PluginStoreWidget/components/AddCustomPluginDialog.d.ts +2 -2
- package/esm/PluginStoreWidget/components/AddCustomPluginDialog.js +2 -1
- package/esm/PluginStoreWidget/components/InstalledPlugin.d.ts +2 -2
- package/esm/PluginStoreWidget/components/InstalledPlugin.js +8 -4
- package/esm/PluginStoreWidget/components/InstalledPluginsList.d.ts +2 -2
- package/esm/PluginStoreWidget/components/InstalledPluginsList.js +2 -1
- package/esm/PluginStoreWidget/components/PluginCard.d.ts +2 -2
- package/esm/PluginStoreWidget/components/PluginCard.js +2 -1
- package/esm/PluginStoreWidget/components/PluginStoreWidget.d.ts +3 -4
- package/esm/PluginStoreWidget/components/PluginStoreWidget.js +3 -3
- package/esm/index.d.ts +1 -9
- package/esm/index.js +1 -3
- package/esm/ucsc-trackhub/model.js +2 -2
- package/package.json +5 -4
- package/dist/SetDefaultSession/SetDefaultSession.d.ts +0 -6
- package/dist/SetDefaultSession/SetDefaultSession.js +0 -38
- package/dist/SetDefaultSession/index.d.ts +0 -1
- package/dist/SetDefaultSession/index.js +0 -8
- package/esm/SetDefaultSession/SetDefaultSession.d.ts +0 -6
- package/esm/SetDefaultSession/SetDefaultSession.js +0 -33
- package/esm/SetDefaultSession/index.d.ts +0 -1
- package/esm/SetDefaultSession/index.js +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useEffect, useState } from 'react';
|
|
2
2
|
import { Checkbox, FormControl, FormControlLabel, Link, TextField, Typography, } from '@mui/material';
|
|
3
3
|
import { makeStyles } from 'tss-react/mui';
|
|
4
|
-
import {
|
|
4
|
+
import { isSupportedIndexingAdapter, getSession, isElectron, } from '@jbrowse/core/util';
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
6
|
import { UNKNOWN } from '@jbrowse/core/util/tracks';
|
|
7
7
|
import { AssemblySelector } from '@jbrowse/core/ui';
|
|
@@ -46,7 +46,7 @@ function UnknownAdapterPrompt({ model }) {
|
|
|
46
46
|
"and add a feature request for this data type."),
|
|
47
47
|
React.createElement(TrackAdapterSelector, { model: model })));
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
const ConfirmTrack = observer(function ConfirmTrack({ model, }) {
|
|
50
50
|
const { classes } = useStyles();
|
|
51
51
|
const [check, setCheck] = useState(true);
|
|
52
52
|
const session = getSession(model);
|
|
@@ -74,7 +74,7 @@ export default 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 =
|
|
77
|
+
const supportedForIndexing = isSupportedIndexingAdapter(trackAdapter === null || trackAdapter === void 0 ? void 0 : trackAdapter.type);
|
|
78
78
|
return (React.createElement("div", null,
|
|
79
79
|
trackAdapter ? (React.createElement(StatusMessage, { trackAdapter: trackAdapter, trackType: trackType })) : null,
|
|
80
80
|
warningMessage ? (React.createElement(Typography, { style: { color: 'orange' } }, warningMessage)) : null,
|
|
@@ -95,3 +95,4 @@ export default observer(function ConfirmTrack({ model, }) {
|
|
|
95
95
|
} }) }))),
|
|
96
96
|
isElectron && check && supportedForIndexing ? (React.createElement(TextIndexingConfig, { model: model })) : null));
|
|
97
97
|
});
|
|
98
|
+
export default ConfirmTrack;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AddTrackModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const DefaultAddTrackWorkflow: ({ model, }: {
|
|
4
4
|
model: AddTrackModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default DefaultAddTrackWorkflow;
|
|
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { Alert, Button, Step, StepContent, StepLabel, Stepper, Typography, } from '@mui/material';
|
|
3
3
|
import { makeStyles } from 'tss-react/mui';
|
|
4
4
|
import { getRoot } from 'mobx-state-tree';
|
|
5
|
-
import { getSession, isElectron,
|
|
5
|
+
import { getSession, isElectron, isSessionModelWithWidgets, isSessionWithAddTracks, isSupportedIndexingAdapter, } from '@jbrowse/core/util';
|
|
6
6
|
import { getConf } from '@jbrowse/core/configuration';
|
|
7
7
|
import { observer } from 'mobx-react';
|
|
8
8
|
// locals
|
|
@@ -27,7 +27,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
27
27
|
},
|
|
28
28
|
}));
|
|
29
29
|
const steps = ['Enter track data', 'Confirm track type'];
|
|
30
|
-
function
|
|
30
|
+
const DefaultAddTrackWorkflow = observer(function ({ model, }) {
|
|
31
31
|
const [activeStep, setActiveStep] = useState(0);
|
|
32
32
|
const { classes } = useStyles();
|
|
33
33
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -46,6 +46,7 @@ function AddTrackWorkflow({ model }) {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
async function handleNext() {
|
|
49
|
+
var _a, _b;
|
|
49
50
|
if (activeStep !== steps.length - 1) {
|
|
50
51
|
setActiveStep(activeStep + 1);
|
|
51
52
|
return;
|
|
@@ -55,6 +56,10 @@ function AddTrackWorkflow({ model }) {
|
|
|
55
56
|
`${session.adminMode ? '' : '-sessionTrack'}`,
|
|
56
57
|
].join('');
|
|
57
58
|
const assemblyInstance = session.assemblyManager.get(assembly);
|
|
59
|
+
if (!isSessionWithAddTracks(session)) {
|
|
60
|
+
setTrackErrorMessage('Unable to add tracks to this model');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
58
63
|
if (assemblyInstance && trackAdapter && trackAdapter.type !== 'UNKNOWN') {
|
|
59
64
|
session.addTrackConf({
|
|
60
65
|
trackId,
|
|
@@ -66,36 +71,36 @@ function AddTrackWorkflow({ model }) {
|
|
|
66
71
|
sequenceAdapter: getConf(assemblyInstance, ['sequence', 'adapter']),
|
|
67
72
|
},
|
|
68
73
|
});
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
indexType: 'perTrack',
|
|
85
|
-
name: indexName,
|
|
86
|
-
timestamp: new Date().toISOString(),
|
|
87
|
-
},
|
|
74
|
+
(_b = (_a = model.view).showTrack) === null || _b === void 0 ? void 0 : _b.call(_a, trackId);
|
|
75
|
+
if (isElectron &&
|
|
76
|
+
textIndexTrack &&
|
|
77
|
+
isSupportedIndexingAdapter(trackAdapter.type)) {
|
|
78
|
+
const attr = textIndexingConf || {
|
|
79
|
+
attributes: ['Name', 'ID'],
|
|
80
|
+
exclude: ['CDS', 'exon'],
|
|
81
|
+
};
|
|
82
|
+
const indexName = trackName + '-index';
|
|
83
|
+
const newEntry = {
|
|
84
|
+
indexingParams: {
|
|
85
|
+
...attr,
|
|
86
|
+
assemblies: [assembly],
|
|
87
|
+
tracks: [trackId],
|
|
88
|
+
indexType: 'perTrack',
|
|
88
89
|
name: indexName,
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
|
|
90
|
+
timestamp: new Date().toISOString(),
|
|
91
|
+
},
|
|
92
|
+
name: indexName,
|
|
93
|
+
cancelCallback: () => jobsManager.abortJob(),
|
|
94
|
+
};
|
|
95
|
+
jobsManager.queueJob(newEntry);
|
|
93
96
|
}
|
|
94
97
|
else {
|
|
95
98
|
session.notify('Open a new view, or use the track selector in an existing view, to view this track', 'info');
|
|
96
99
|
}
|
|
97
100
|
model.clearData();
|
|
98
|
-
session
|
|
101
|
+
if (isSessionModelWithWidgets(session)) {
|
|
102
|
+
session.hideWidget(model);
|
|
103
|
+
}
|
|
99
104
|
}
|
|
100
105
|
else {
|
|
101
106
|
setTrackErrorMessage('Failed to add track.\nThe configuration of this file is not currently supported.');
|
|
@@ -125,5 +130,5 @@ function AddTrackWorkflow({ model }) {
|
|
|
125
130
|
React.createElement(Button, { disabled: isNextDisabled(), variant: "contained", color: "primary", onClick: handleNext, className: classes.button, "data-testid": "addTrackNextButton" }, activeStep === steps.length - 1 ? 'Add' : 'Next')),
|
|
126
131
|
trackErrorMessage ? (React.createElement("div", { className: classes.alertContainer },
|
|
127
132
|
React.createElement(Alert, { severity: "error" }, trackErrorMessage))) : null)))))));
|
|
128
|
-
}
|
|
129
|
-
export default
|
|
133
|
+
});
|
|
134
|
+
export default DefaultAddTrackWorkflow;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AddTrackModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const PasteConfigAddTrackWorkflow: ({ model, }: {
|
|
4
4
|
model: AddTrackModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default PasteConfigAddTrackWorkflow;
|
|
@@ -2,7 +2,7 @@ import React, { useState } from 'react';
|
|
|
2
2
|
import { Button, TextField } from '@mui/material';
|
|
3
3
|
import { ErrorMessage } from '@jbrowse/core/ui';
|
|
4
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
|
-
import { getSession } from '@jbrowse/core/util';
|
|
5
|
+
import { getSession, isSessionModelWithWidgets, isSessionWithAddTracks, } from '@jbrowse/core/util';
|
|
6
6
|
import { observer } from 'mobx-react';
|
|
7
7
|
const useStyles = makeStyles()({
|
|
8
8
|
textbox: {
|
|
@@ -14,7 +14,7 @@ const useStyles = makeStyles()({
|
|
|
14
14
|
display: 'block',
|
|
15
15
|
},
|
|
16
16
|
});
|
|
17
|
-
function
|
|
17
|
+
const PasteConfigAddTrackWorkflow = observer(function ({ model, }) {
|
|
18
18
|
const { classes } = useStyles();
|
|
19
19
|
const [val, setVal] = useState('');
|
|
20
20
|
const [error, setError] = useState();
|
|
@@ -27,15 +27,18 @@ function AddTrackWorkflow({ model }) {
|
|
|
27
27
|
const session = getSession(model);
|
|
28
28
|
const conf = JSON.parse(val);
|
|
29
29
|
const confs = Array.isArray(conf) ? conf : [conf];
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
if (isSessionWithAddTracks(session) &&
|
|
31
|
+
isSessionModelWithWidgets(session)) {
|
|
32
|
+
confs.forEach(c => session.addTrackConf(c));
|
|
33
|
+
confs.forEach(c => model.view.showTrack(c.trackId));
|
|
34
|
+
model.clearData();
|
|
35
|
+
session.hideWidget(model);
|
|
36
|
+
}
|
|
34
37
|
}
|
|
35
38
|
catch (e) {
|
|
36
39
|
console.error(e);
|
|
37
40
|
setError(e);
|
|
38
41
|
}
|
|
39
42
|
} }, "Submit")));
|
|
40
|
-
}
|
|
41
|
-
export default
|
|
43
|
+
});
|
|
44
|
+
export default PasteConfigAddTrackWorkflow;
|
|
@@ -36,7 +36,7 @@ const TrackAdapterSelector = observer(({ model }) => {
|
|
|
36
36
|
// returning array avoids needing to use a react fragment which
|
|
37
37
|
// Select/TextField sub-elements disagree with
|
|
38
38
|
return [
|
|
39
|
-
React.createElement(ListSubheader,
|
|
39
|
+
React.createElement(ListSubheader, { key: key }, key),
|
|
40
40
|
val.map(elt => (React.createElement(MenuItem, { key: elt.name, value: elt.name }, elt.displayName))),
|
|
41
41
|
];
|
|
42
42
|
})));
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AddTrackModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const TrackSourceSelect: ({ model, }: {
|
|
4
4
|
model: AddTrackModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default TrackSourceSelect;
|
|
@@ -12,12 +12,12 @@ const useStyles = makeStyles()(theme => ({
|
|
|
12
12
|
height: theme.spacing(8),
|
|
13
13
|
},
|
|
14
14
|
}));
|
|
15
|
-
|
|
15
|
+
const TrackSourceSelect = observer(function ({ model, }) {
|
|
16
16
|
const { classes } = useStyles();
|
|
17
17
|
const rootModel = getRoot(model);
|
|
18
18
|
return (React.createElement(Paper, { className: classes.paper },
|
|
19
19
|
React.createElement(FileSelector, { name: "Main file", description: "", location: model.trackData, setLocation: model.setTrackData, setName: model.setTrackName, rootModel: rootModel }),
|
|
20
20
|
React.createElement("div", { className: classes.spacer }),
|
|
21
21
|
React.createElement(FileSelector, { name: "Index file", description: "(Optional) The URL of the index file is automatically inferred from the URL of the main file if it is not supplied.", location: model.indexTrackData, setLocation: model.setIndexTrackData, setName: model.setTrackName, rootModel: rootModel })));
|
|
22
|
-
}
|
|
23
|
-
export default
|
|
22
|
+
});
|
|
23
|
+
export default TrackSourceSelect;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { HierarchicalTrackSelectorModel } from '../model';
|
|
3
|
-
declare const
|
|
3
|
+
declare const HierarchicalFab: ({ model, }: {
|
|
4
4
|
model: HierarchicalTrackSelectorModel;
|
|
5
5
|
}) => React.JSX.Element;
|
|
6
|
-
export default
|
|
6
|
+
export default HierarchicalFab;
|
|
@@ -12,7 +12,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
12
12
|
right: theme.spacing(6),
|
|
13
13
|
},
|
|
14
14
|
}));
|
|
15
|
-
|
|
15
|
+
const HierarchicalFab = observer(function ({ model, }) {
|
|
16
16
|
const { classes } = useStyles();
|
|
17
17
|
const session = getSession(model);
|
|
18
18
|
const [anchorEl, setAnchorEl] = useState(null);
|
|
@@ -40,3 +40,4 @@ export default observer(function HierarchicalFab({ model, }) {
|
|
|
40
40
|
}
|
|
41
41
|
} }, "Add track")) : null))) : null));
|
|
42
42
|
});
|
|
43
|
+
export default HierarchicalFab;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { HierarchicalTrackSelectorModel } from '../model';
|
|
3
|
-
declare const
|
|
3
|
+
declare const ShoppingCart: ({ model, }: {
|
|
4
4
|
model: HierarchicalTrackSelectorModel;
|
|
5
5
|
}) => React.JSX.Element;
|
|
6
|
-
export default
|
|
6
|
+
export default ShoppingCart;
|
|
@@ -15,7 +15,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
15
15
|
marginBottom: 0,
|
|
16
16
|
},
|
|
17
17
|
}));
|
|
18
|
-
|
|
18
|
+
const ShoppingCart = observer(function ({ model, }) {
|
|
19
19
|
const { classes } = useStyles();
|
|
20
20
|
const { selection } = model;
|
|
21
21
|
const { pluginManager } = getEnv(model);
|
|
@@ -39,3 +39,4 @@ export default observer(function ShoppingCart({ model, }) {
|
|
|
39
39
|
})),
|
|
40
40
|
] })));
|
|
41
41
|
});
|
|
42
|
+
export default ShoppingCart;
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
declare const
|
|
2
|
+
declare const CloseConnectionDialog: ({ modalInfo, onClose, }: {
|
|
3
3
|
modalInfo?: {
|
|
4
4
|
name?: string | undefined;
|
|
5
|
-
dereferenceTypeCount?:
|
|
6
|
-
[key: string]: number;
|
|
7
|
-
} | undefined;
|
|
5
|
+
dereferenceTypeCount?: Record<string, number> | undefined;
|
|
8
6
|
safelyBreakConnection?: (() => void) | undefined;
|
|
9
7
|
} | undefined;
|
|
10
8
|
onClose: () => void;
|
|
11
9
|
}) => React.JSX.Element;
|
|
12
|
-
export default
|
|
10
|
+
export default CloseConnectionDialog;
|
|
@@ -2,7 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { DialogContent, DialogContentText, Button, List, ListItem, DialogActions, } from '@mui/material';
|
|
3
3
|
import { Dialog } from '@jbrowse/core/ui';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
|
-
|
|
5
|
+
const CloseConnectionDialog = observer(function CloseConnectionDialog({ modalInfo = {}, onClose, }) {
|
|
6
6
|
const { name, dereferenceTypeCount, safelyBreakConnection } = modalInfo;
|
|
7
7
|
return (React.createElement(Dialog, { open: true, maxWidth: "lg", title: `Close connection "${name}"` },
|
|
8
8
|
React.createElement(DialogContent, null,
|
|
@@ -19,3 +19,4 @@ export default observer(function CloseConnectionDialog({ modalInfo = {}, onClose
|
|
|
19
19
|
}
|
|
20
20
|
: () => { }, color: "primary" }, "OK"))));
|
|
21
21
|
});
|
|
22
|
+
export default CloseConnectionDialog;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
4
|
-
declare
|
|
4
|
+
declare const DeleteConnectionDialog: ({ deleteDialogDetails, session, handleClose, }: {
|
|
5
5
|
deleteDialogDetails: {
|
|
6
6
|
name: string;
|
|
7
7
|
connectionConf: AnyConfigurationModel;
|
|
8
8
|
};
|
|
9
9
|
session: AbstractSessionModel;
|
|
10
10
|
handleClose: () => void;
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
export default _default;
|
|
11
|
+
}) => React.JSX.Element;
|
|
12
|
+
export default DeleteConnectionDialog;
|
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { DialogContent, DialogContentText, DialogActions, Button, } from '@mui/material';
|
|
3
|
+
import { Dialog } from '@jbrowse/core/ui';
|
|
3
4
|
import { observer } from 'mobx-react';
|
|
4
|
-
function DeleteConnectionDialog({ deleteDialogDetails, session, handleClose, }) {
|
|
5
|
+
const DeleteConnectionDialog = observer(function DeleteConnectionDialog({ deleteDialogDetails, session, handleClose, }) {
|
|
5
6
|
const { connectionConf, name } = deleteDialogDetails;
|
|
6
|
-
return (React.createElement(Dialog, { open: true },
|
|
7
|
-
React.createElement(DialogTitle, null,
|
|
8
|
-
"Delete connection \"",
|
|
9
|
-
name,
|
|
10
|
-
"\""),
|
|
7
|
+
return (React.createElement(Dialog, { open: true, title: `Delete connection "${name}"` },
|
|
11
8
|
React.createElement(DialogContent, null,
|
|
12
9
|
React.createElement(DialogContentText, null, "Are you sure you want to delete this connection?")),
|
|
13
10
|
React.createElement(DialogActions, null,
|
|
@@ -19,5 +16,5 @@ function DeleteConnectionDialog({ deleteDialogDetails, session, handleClose, })
|
|
|
19
16
|
}
|
|
20
17
|
handleClose();
|
|
21
18
|
} }, "OK"))));
|
|
22
|
-
}
|
|
23
|
-
export default
|
|
19
|
+
});
|
|
20
|
+
export default DeleteConnectionDialog;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
4
|
-
declare
|
|
4
|
+
declare const ManageConnectionsDialog: ({ session, handleClose, breakConnection, }: {
|
|
5
5
|
handleClose: () => void;
|
|
6
6
|
session: AbstractSessionModel;
|
|
7
7
|
breakConnection: (conf: AnyConfigurationModel, arg: boolean) => void;
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
export default _default;
|
|
8
|
+
}) => React.JSX.Element;
|
|
9
|
+
export default ManageConnectionsDialog;
|
|
@@ -12,7 +12,7 @@ const useStyles = makeStyles()(theme => ({
|
|
|
12
12
|
width: 500,
|
|
13
13
|
},
|
|
14
14
|
}));
|
|
15
|
-
function
|
|
15
|
+
const ManageConnectionsDialog = observer(function ({ session, handleClose, breakConnection, }) {
|
|
16
16
|
const { classes } = useStyles();
|
|
17
17
|
const { adminMode, connections, sessionConnections } = session;
|
|
18
18
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, maxWidth: "lg", title: "Delete connections" },
|
|
@@ -31,5 +31,5 @@ function ManageConnectionsDlg({ session, handleClose, breakConnection, }) {
|
|
|
31
31
|
!connections.length ? (React.createElement(Typography, null, "No connections found")) : null)),
|
|
32
32
|
React.createElement(DialogActions, null,
|
|
33
33
|
React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
|
|
34
|
-
}
|
|
35
|
-
export default
|
|
34
|
+
});
|
|
35
|
+
export default ManageConnectionsDialog;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
3
3
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
4
|
-
|
|
5
|
-
declare const _default: ({ session, handleClose, breakConnection, }: {
|
|
4
|
+
declare const ToggleConnectionDialog: ({ session, handleClose, breakConnection, }: {
|
|
6
5
|
handleClose: () => void;
|
|
7
6
|
session: AbstractSessionModel;
|
|
8
7
|
breakConnection: (arg: AnyConfigurationModel) => void;
|
|
9
8
|
}) => React.JSX.Element;
|
|
10
|
-
export default
|
|
9
|
+
export default ToggleConnectionDialog;
|
|
@@ -4,7 +4,7 @@ import { Dialog } from '@jbrowse/core/ui';
|
|
|
4
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
6
|
import { readConfObject, } from '@jbrowse/core/configuration';
|
|
7
|
-
|
|
7
|
+
function ellipses(slug) {
|
|
8
8
|
return slug.length > 20 ? `${slug.slice(0, 20)}...` : slug;
|
|
9
9
|
}
|
|
10
10
|
const useStyles = makeStyles()(theme => ({
|
|
@@ -38,7 +38,7 @@ const ConnectionList = observer(function ConnectionsList({ session, breakConnect
|
|
|
38
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, }) {
|
|
42
42
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, maxWidth: "lg", title: "Turn on/off connections" },
|
|
43
43
|
React.createElement(DialogContent, null,
|
|
44
44
|
React.createElement(Typography, null, "Use the checkbox to turn on/off connections"),
|
|
@@ -46,3 +46,4 @@ export default observer(function ToggleConnectionDialog({ session, handleClose,
|
|
|
46
46
|
React.createElement(DialogActions, null,
|
|
47
47
|
React.createElement(Button, { onClick: () => handleClose(), variant: "contained", color: "primary" }, "Close"))));
|
|
48
48
|
});
|
|
49
|
+
export default ToggleConnectionDialog;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export default function FacetFilter({ column, vals, width, dispatch, filters, }: {
|
|
3
|
+
column: {
|
|
4
|
+
field: string;
|
|
5
|
+
};
|
|
6
|
+
vals: [string, number][];
|
|
7
|
+
width: number;
|
|
8
|
+
dispatch: (arg: {
|
|
9
|
+
key: string;
|
|
10
|
+
val: string[];
|
|
11
|
+
}) => void;
|
|
12
|
+
filters: Record<string, string[]>;
|
|
13
|
+
}): React.JSX.Element;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { Typography, FormControl, Select, IconButton, Tooltip, } from '@mui/material';
|
|
3
|
+
import { makeStyles } from 'tss-react/mui';
|
|
4
|
+
// icon
|
|
5
|
+
import ClearIcon from '@mui/icons-material/Clear';
|
|
6
|
+
import MinimizeIcon from '@mui/icons-material/Minimize';
|
|
7
|
+
import AddIcon from '@mui/icons-material/Add';
|
|
8
|
+
import { coarseStripHTML } from '@jbrowse/core/util';
|
|
9
|
+
const useStyles = makeStyles()(theme => ({
|
|
10
|
+
facet: {
|
|
11
|
+
margin: 0,
|
|
12
|
+
marginLeft: theme.spacing(2),
|
|
13
|
+
},
|
|
14
|
+
select: {
|
|
15
|
+
marginBottom: theme.spacing(2),
|
|
16
|
+
},
|
|
17
|
+
}));
|
|
18
|
+
function ClearButton({ onClick }) {
|
|
19
|
+
return (React.createElement(Tooltip, { title: "Clear selection on this facet filter" },
|
|
20
|
+
React.createElement(IconButton, { onClick: () => onClick(), size: "small" },
|
|
21
|
+
React.createElement(ClearIcon, null))));
|
|
22
|
+
}
|
|
23
|
+
function ExpandButton({ visible, onClick, }) {
|
|
24
|
+
return (React.createElement(Tooltip, { title: "Minimize/expand this facet filter" },
|
|
25
|
+
React.createElement(IconButton, { onClick: () => onClick(), size: "small" }, visible ? React.createElement(MinimizeIcon, null) : React.createElement(AddIcon, null))));
|
|
26
|
+
}
|
|
27
|
+
export default function FacetFilter({ column, vals, width, dispatch, filters, }) {
|
|
28
|
+
const { classes } = useStyles();
|
|
29
|
+
const [visible, setVisible] = useState(true);
|
|
30
|
+
return (React.createElement(FormControl, { key: column.field, className: classes.facet, style: { width } },
|
|
31
|
+
React.createElement("div", { style: { display: 'flex' } },
|
|
32
|
+
React.createElement(Typography, null, column.field),
|
|
33
|
+
React.createElement(ClearButton, { onClick: () => dispatch({ key: column.field, val: [] }) }),
|
|
34
|
+
React.createElement(ExpandButton, { visible: visible, onClick: () => setVisible(!visible) })),
|
|
35
|
+
visible ? (React.createElement(Select, { multiple: true, native: true, className: classes.select, value: filters[column.field], onChange: event => {
|
|
36
|
+
dispatch({
|
|
37
|
+
key: column.field,
|
|
38
|
+
// @ts-expect-error
|
|
39
|
+
val: [...event.target.options]
|
|
40
|
+
.filter(opt => opt.selected)
|
|
41
|
+
.map(opt => opt.value),
|
|
42
|
+
});
|
|
43
|
+
} }, vals
|
|
44
|
+
.sort((a, b) => a[0].localeCompare(b[0]))
|
|
45
|
+
.map(([name, count]) => (React.createElement("option", { key: name, value: name },
|
|
46
|
+
coarseStripHTML(name),
|
|
47
|
+
" (",
|
|
48
|
+
count,
|
|
49
|
+
")"))))) : null));
|
|
50
|
+
}
|
|
@@ -1,58 +1,29 @@
|
|
|
1
|
-
import React
|
|
2
|
-
import
|
|
3
|
-
import { makeStyles } from 'tss-react/mui';
|
|
4
|
-
// icon
|
|
5
|
-
import ClearIcon from '@mui/icons-material/Clear';
|
|
6
|
-
import MinimizeIcon from '@mui/icons-material/Minimize';
|
|
7
|
-
import AddIcon from '@mui/icons-material/Add';
|
|
8
|
-
const useStyles = makeStyles()(theme => ({
|
|
9
|
-
facet: {
|
|
10
|
-
margin: 0,
|
|
11
|
-
marginLeft: theme.spacing(2),
|
|
12
|
-
},
|
|
13
|
-
select: {
|
|
14
|
-
marginBottom: theme.spacing(2),
|
|
15
|
-
},
|
|
16
|
-
}));
|
|
17
|
-
function FacetFilter({ column, vals, width, dispatch, filters, }) {
|
|
18
|
-
const { classes } = useStyles();
|
|
19
|
-
const [visible, setVisible] = useState(true);
|
|
20
|
-
return (React.createElement(FormControl, { key: column.field, className: classes.facet, style: { width } },
|
|
21
|
-
React.createElement("div", { style: { display: 'flex' } },
|
|
22
|
-
React.createElement(Typography, null, column.field),
|
|
23
|
-
React.createElement(Tooltip, { title: "Clear selection on this facet filter" },
|
|
24
|
-
React.createElement(IconButton, { onClick: () => {
|
|
25
|
-
dispatch({ key: column.field, val: [] });
|
|
26
|
-
}, size: "small" },
|
|
27
|
-
React.createElement(ClearIcon, null))),
|
|
28
|
-
React.createElement(Tooltip, { title: "Minimize/expand this facet filter" },
|
|
29
|
-
React.createElement(IconButton, { onClick: () => setVisible(!visible), size: "small" }, visible ? React.createElement(MinimizeIcon, null) : React.createElement(AddIcon, null)))),
|
|
30
|
-
visible ? (React.createElement(Select, { multiple: true, native: true, className: classes.select, value: filters[column.field], onChange: event => {
|
|
31
|
-
// @ts-expect-error
|
|
32
|
-
const { options } = event.target;
|
|
33
|
-
const val = [];
|
|
34
|
-
const len = options.length;
|
|
35
|
-
for (let i = 0; i < len; i++) {
|
|
36
|
-
if (options[i].selected) {
|
|
37
|
-
val.push(options[i].value);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
dispatch({ key: column.field, val });
|
|
41
|
-
} }, vals
|
|
42
|
-
.sort((a, b) => a[0].localeCompare(b[0]))
|
|
43
|
-
.map(([name, count]) => (React.createElement("option", { key: name, value: name },
|
|
44
|
-
name,
|
|
45
|
-
" (",
|
|
46
|
-
count,
|
|
47
|
-
")"))))) : null));
|
|
48
|
-
}
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import FacetFilter from './FacetFilter';
|
|
49
3
|
export default function FacetFilters({ rows, columns, dispatch, filters, width, }) {
|
|
4
|
+
var _a, _b;
|
|
50
5
|
const facets = columns.slice(1);
|
|
51
|
-
const uniqs = facets.map(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
6
|
+
const uniqs = new Map(facets.map(f => [f.field, new Map()]));
|
|
7
|
+
// this code "stages the facet filters" in order that the user has selected
|
|
8
|
+
// them, which relies on the js behavior that the order of the returned keys is
|
|
9
|
+
// related to the insertion order.
|
|
10
|
+
const filterKeys = Object.keys(filters);
|
|
11
|
+
const facetKeys = facets.map(f => f.field);
|
|
12
|
+
const ret = new Set();
|
|
13
|
+
for (const entry of filterKeys) {
|
|
14
|
+
// give non-empty filters priority
|
|
15
|
+
if ((_a = filters[entry]) === null || _a === void 0 ? void 0 : _a.length) {
|
|
16
|
+
ret.add(entry);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
for (const entry of facetKeys) {
|
|
20
|
+
ret.add(entry);
|
|
21
|
+
}
|
|
22
|
+
let currentRows = rows;
|
|
23
|
+
for (const facet of ret) {
|
|
24
|
+
const elt = uniqs.get(facet);
|
|
25
|
+
for (const row of currentRows) {
|
|
26
|
+
const key = `${row[facet] || ''}`;
|
|
56
27
|
const val = elt.get(key);
|
|
57
28
|
// we don't allow filtering on empty yet
|
|
58
29
|
if (key) {
|
|
@@ -64,6 +35,12 @@ export default function FacetFilters({ rows, columns, dispatch, filters, width,
|
|
|
64
35
|
}
|
|
65
36
|
}
|
|
66
37
|
}
|
|
38
|
+
const filter = ((_b = filters[facet]) === null || _b === void 0 ? void 0 : _b.length) ? new Set(filters[facet]) : undefined;
|
|
39
|
+
currentRows = currentRows.filter(row => {
|
|
40
|
+
return filter !== undefined ? filter.has(row[facet]) : true;
|
|
41
|
+
});
|
|
67
42
|
}
|
|
68
|
-
return (React.createElement("div", null, facets.map(
|
|
43
|
+
return (React.createElement("div", null, facets.map(column => {
|
|
44
|
+
return (React.createElement(FacetFilter, { key: column.field, vals: [...uniqs.get(column.field)], column: column, width: width, dispatch: dispatch, filters: filters }));
|
|
45
|
+
})));
|
|
69
46
|
}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { HierarchicalTrackSelectorModel } from '../../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const FacetedTrackSelectorDialog: (props: {
|
|
4
4
|
handleClose: () => void;
|
|
5
5
|
model: HierarchicalTrackSelectorModel;
|
|
6
|
-
})
|
|
7
|
-
|
|
8
|
-
export default _default;
|
|
6
|
+
}) => React.JSX.Element;
|
|
7
|
+
export default FacetedTrackSelectorDialog;
|
|
@@ -3,10 +3,10 @@ import { DialogContent } from '@mui/material';
|
|
|
3
3
|
import { Dialog } from '@jbrowse/core/ui';
|
|
4
4
|
import { observer } from 'mobx-react';
|
|
5
5
|
import FacetedSelector from './FacetedSelector';
|
|
6
|
-
function
|
|
6
|
+
const FacetedTrackSelectorDialog = observer(function (props) {
|
|
7
7
|
const { handleClose } = props;
|
|
8
8
|
return (React.createElement(Dialog, { open: true, onClose: handleClose, maxWidth: "xl", title: "Faceted track selector" },
|
|
9
9
|
React.createElement(DialogContent, null,
|
|
10
10
|
React.createElement(FacetedSelector, { ...props }))));
|
|
11
|
-
}
|
|
12
|
-
export default
|
|
11
|
+
});
|
|
12
|
+
export default FacetedTrackSelectorDialog;
|