@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,42 +1,19 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
const react_1 =
|
|
6
|
+
const react_1 = __importDefault(require("react"));
|
|
30
7
|
const material_1 = require("@mui/material");
|
|
31
8
|
const mui_1 = require("tss-react/mui");
|
|
32
|
-
const Menu_1 = __importDefault(require("@jbrowse/core/ui/Menu"));
|
|
33
9
|
const util_1 = require("@jbrowse/core/util");
|
|
10
|
+
const SanitizedHTML_1 = __importDefault(require("@jbrowse/core/ui/SanitizedHTML"));
|
|
34
11
|
const configuration_1 = require("@jbrowse/core/configuration");
|
|
35
12
|
// icons
|
|
36
13
|
const MoreHoriz_1 = __importDefault(require("@mui/icons-material/MoreHoriz"));
|
|
37
14
|
// locals
|
|
38
15
|
const util_2 = require("../util");
|
|
39
|
-
const
|
|
16
|
+
const CascadingMenuButton_1 = __importDefault(require("@jbrowse/core/ui/CascadingMenuButton"));
|
|
40
17
|
const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
41
18
|
compactCheckbox: {
|
|
42
19
|
padding: 0,
|
|
@@ -49,10 +26,8 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
49
26
|
},
|
|
50
27
|
}));
|
|
51
28
|
function TrackLabel({ data }) {
|
|
52
|
-
var _a, _b;
|
|
53
29
|
const { classes } = useStyles();
|
|
54
30
|
const { checked, conf, model, drawerPosition, id, name, onChange, selected } = data;
|
|
55
|
-
const [info, setInfo] = (0, react_1.useState)();
|
|
56
31
|
const description = (conf && (0, configuration_1.readConfObject)(conf, ['description'])) || '';
|
|
57
32
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
58
33
|
react_1.default.createElement(material_1.Tooltip, { title: description + (selected ? ' (in selection)' : ''), placement: drawerPosition === 'left' ? 'right' : 'left' },
|
|
@@ -60,26 +35,26 @@ function TrackLabel({ data }) {
|
|
|
60
35
|
// @ts-expect-error
|
|
61
36
|
'data-testid': `htsTrackEntry-${id}`,
|
|
62
37
|
} }), label: react_1.default.createElement("div", { "data-testid": `htsTrackLabel-${id}`, style: { background: selected ? '#cccc' : undefined } },
|
|
63
|
-
react_1.default.createElement(
|
|
64
|
-
react_1.default.createElement(
|
|
65
|
-
react_1.default.createElement(MoreHoriz_1.default, null)),
|
|
66
|
-
info ? (react_1.default.createElement(Menu_1.default, { anchorEl: info === null || info === void 0 ? void 0 : info.target, menuItems: [
|
|
67
|
-
...(((_b = (_a = (0, util_1.getSession)(model)).getTrackActionMenuItems) === null || _b === void 0 ? void 0 : _b.call(_a, info.conf)) || []),
|
|
68
|
-
{
|
|
69
|
-
label: 'Add to selection',
|
|
70
|
-
onClick: () => model.addToSelection([info.conf]),
|
|
71
|
-
},
|
|
72
|
-
...(selected
|
|
73
|
-
? [
|
|
74
|
-
{
|
|
75
|
-
label: 'Remove from selection',
|
|
76
|
-
onClick: () => model.removeFromSelection([info.conf]),
|
|
77
|
-
},
|
|
78
|
-
]
|
|
79
|
-
: []),
|
|
80
|
-
], onMenuItemClick: (_event, callback) => {
|
|
81
|
-
callback();
|
|
82
|
-
setInfo(undefined);
|
|
83
|
-
}, open: Boolean(info), onClose: () => setInfo(undefined) })) : null));
|
|
38
|
+
react_1.default.createElement(SanitizedHTML_1.default, { html: name })) })),
|
|
39
|
+
react_1.default.createElement(TrackMenuButton, { model: model, selected: selected, id: id, conf: conf })));
|
|
84
40
|
}
|
|
85
41
|
exports.default = TrackLabel;
|
|
42
|
+
function TrackMenuButton({ id, model, selected, conf, }) {
|
|
43
|
+
var _a, _b;
|
|
44
|
+
return (react_1.default.createElement(CascadingMenuButton_1.default, { style: { padding: 0 }, "data-testid": `htsTrackEntryMenu-${id}`, menuItems: [
|
|
45
|
+
...(((_b = (_a = (0, util_1.getSession)(model)).getTrackActionMenuItems) === null || _b === void 0 ? void 0 : _b.call(_a, conf)) || []),
|
|
46
|
+
{
|
|
47
|
+
label: 'Add to selection',
|
|
48
|
+
onClick: () => model.addToSelection([conf]),
|
|
49
|
+
},
|
|
50
|
+
...(selected
|
|
51
|
+
? [
|
|
52
|
+
{
|
|
53
|
+
label: 'Remove from selection',
|
|
54
|
+
onClick: () => model.removeFromSelection([conf]),
|
|
55
|
+
},
|
|
56
|
+
]
|
|
57
|
+
: []),
|
|
58
|
+
] },
|
|
59
|
+
react_1.default.createElement(MoreHoriz_1.default, null)));
|
|
60
|
+
}
|
|
@@ -10,8 +10,7 @@ function treeToMap(tree, map = new Map()) {
|
|
|
10
10
|
if (tree.id && tree.children.length) {
|
|
11
11
|
map.set(tree.id, tree);
|
|
12
12
|
}
|
|
13
|
-
for (
|
|
14
|
-
const node = tree.children[i];
|
|
13
|
+
for (const node of tree.children) {
|
|
15
14
|
treeToMap(node, map);
|
|
16
15
|
}
|
|
17
16
|
return map;
|
|
@@ -1,21 +1,24 @@
|
|
|
1
1
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
2
|
-
export
|
|
2
|
+
export interface TreeNode {
|
|
3
3
|
name: string;
|
|
4
4
|
id: string;
|
|
5
5
|
conf?: AnyConfigurationModel;
|
|
6
6
|
checked?: boolean;
|
|
7
7
|
isOpenByDefault?: boolean;
|
|
8
8
|
children: TreeNode[];
|
|
9
|
-
}
|
|
10
|
-
export declare function generateHierarchy(model: {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
9
|
+
}
|
|
10
|
+
export declare function generateHierarchy({ model, trackConfs, extra, }: {
|
|
11
|
+
model: {
|
|
12
|
+
filterText: string;
|
|
13
|
+
activeSortTrackNames: boolean;
|
|
14
|
+
activeSortCategories: boolean;
|
|
15
|
+
collapsed: Map<string, boolean>;
|
|
16
|
+
view?: {
|
|
17
|
+
tracks: {
|
|
18
|
+
configuration: AnyConfigurationModel;
|
|
19
|
+
}[];
|
|
20
|
+
};
|
|
18
21
|
};
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
+
trackConfs: AnyConfigurationModel[];
|
|
23
|
+
extra?: string;
|
|
24
|
+
}): TreeNode[];
|
|
@@ -40,9 +40,9 @@ function sortConfs(confs, sortNames, sortCategories) {
|
|
|
40
40
|
}
|
|
41
41
|
return ret.map(a => a[0]);
|
|
42
42
|
}
|
|
43
|
-
function generateHierarchy(model, trackConfs,
|
|
43
|
+
function generateHierarchy({ model, trackConfs, extra, }) {
|
|
44
44
|
const hierarchy = { children: [] };
|
|
45
|
-
const { filterText, activeSortTrackNames, activeSortCategories, view } = model;
|
|
45
|
+
const { collapsed, filterText, activeSortTrackNames, activeSortCategories, view, } = model;
|
|
46
46
|
if (!view) {
|
|
47
47
|
return [];
|
|
48
48
|
}
|
|
@@ -188,7 +188,11 @@ function stateTreeFactory(pluginManager) {
|
|
|
188
188
|
* #method
|
|
189
189
|
*/
|
|
190
190
|
connectionHierarchy(connection) {
|
|
191
|
-
return (0, generateHierarchy_1.generateHierarchy)(
|
|
191
|
+
return (0, generateHierarchy_1.generateHierarchy)({
|
|
192
|
+
model: self,
|
|
193
|
+
trackConfs: self.connectionTrackConfigurations(connection),
|
|
194
|
+
extra: connection.name,
|
|
195
|
+
});
|
|
192
196
|
},
|
|
193
197
|
}))
|
|
194
198
|
.views(self => ({
|
|
@@ -218,7 +222,10 @@ function stateTreeFactory(pluginManager) {
|
|
|
218
222
|
.map(s => ({
|
|
219
223
|
name: s.group,
|
|
220
224
|
id: s.group,
|
|
221
|
-
children: (0, generateHierarchy_1.generateHierarchy)(
|
|
225
|
+
children: (0, generateHierarchy_1.generateHierarchy)({
|
|
226
|
+
model: self,
|
|
227
|
+
trackConfs: s.tracks,
|
|
228
|
+
}),
|
|
222
229
|
}))
|
|
223
230
|
// always keep the Tracks entry at idx 0
|
|
224
231
|
.filter((f, idx) => idx === 0 || !!f.children.length),
|
|
@@ -262,21 +269,19 @@ function stateTreeFactory(pluginManager) {
|
|
|
262
269
|
])) {
|
|
263
270
|
self.collapseTopLevelCategories();
|
|
264
271
|
}
|
|
265
|
-
|
|
272
|
+
if ((0, configuration_1.getConf)(session, [
|
|
266
273
|
'hierarchical',
|
|
267
274
|
'defaultCollapsed',
|
|
268
275
|
'subCategories',
|
|
269
276
|
])) {
|
|
270
277
|
self.collapseSubCategories();
|
|
271
278
|
}
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
self.collapsed.set(entry, true);
|
|
279
|
-
}
|
|
279
|
+
for (const entry of (0, configuration_1.getConf)(session, [
|
|
280
|
+
'hierarchical',
|
|
281
|
+
'defaultCollapsed',
|
|
282
|
+
'categoryNames',
|
|
283
|
+
])) {
|
|
284
|
+
self.collapsed.set(entry, true);
|
|
280
285
|
}
|
|
281
286
|
self.initialized = true;
|
|
282
287
|
}
|
|
@@ -284,7 +289,7 @@ function stateTreeFactory(pluginManager) {
|
|
|
284
289
|
}))
|
|
285
290
|
.views(self => ({
|
|
286
291
|
get hasAnySubcategories() {
|
|
287
|
-
return self.allTracks.some(group => group.tracks.some(
|
|
292
|
+
return self.allTracks.some(group => group.tracks.some(t => { var _a; return ((_a = (0, configuration_1.readConfObject)(t, 'category')) === null || _a === void 0 ? void 0 : _a.length) > 1; }));
|
|
288
293
|
},
|
|
289
294
|
}));
|
|
290
295
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PluginStoreModel } from '../model';
|
|
3
|
-
declare const
|
|
3
|
+
declare const AddCustomPluginDialog: ({ onClose, model, }: {
|
|
4
4
|
onClose: () => void;
|
|
5
5
|
model: PluginStoreModel;
|
|
6
6
|
}) => React.JSX.Element;
|
|
7
|
-
export default
|
|
7
|
+
export default AddCustomPluginDialog;
|
|
@@ -51,7 +51,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
51
51
|
transform: 'rotate(180deg)',
|
|
52
52
|
},
|
|
53
53
|
}));
|
|
54
|
-
|
|
54
|
+
const AddCustomPluginDialog = (0, mobx_react_1.observer)(function ({ onClose, model, }) {
|
|
55
55
|
const { classes, cx } = useStyles();
|
|
56
56
|
const [umdPluginName, setUMDPluginName] = (0, react_1.useState)('');
|
|
57
57
|
const [umdPluginUrl, setUMDPluginUrl] = (0, react_1.useState)('');
|
|
@@ -92,3 +92,4 @@ exports.default = (0, mobx_react_1.observer)(function ({ onClose, model, }) {
|
|
|
92
92
|
react_1.default.createElement(material_1.Button, { variant: "contained", onClick: onClose }, "Cancel"),
|
|
93
93
|
react_1.default.createElement(material_1.Button, { variant: "contained", color: "primary", onClick: handleSubmit, disabled: !ready }, "Submit")))));
|
|
94
94
|
});
|
|
95
|
+
exports.default = AddCustomPluginDialog;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { BasePlugin } from '@jbrowse/core/util/types';
|
|
3
3
|
import { PluginStoreModel } from '../model';
|
|
4
|
-
declare const
|
|
4
|
+
declare const InstalledPlugin: ({ plugin, model, }: {
|
|
5
5
|
plugin: BasePlugin;
|
|
6
6
|
model: PluginStoreModel;
|
|
7
7
|
}) => React.JSX.Element;
|
|
8
|
-
export default
|
|
8
|
+
export default InstalledPlugin;
|
|
@@ -46,12 +46,15 @@ function LockedPlugin() {
|
|
|
46
46
|
return (react_1.default.createElement(material_1.Tooltip, { className: classes.lockedPluginTooltip, title: "This plugin was installed by an administrator, you cannot remove it." },
|
|
47
47
|
react_1.default.createElement(Lock_1.default, null)));
|
|
48
48
|
}
|
|
49
|
-
|
|
49
|
+
const InstalledPlugin = (0, mobx_react_1.observer)(function ({ plugin, model, }) {
|
|
50
|
+
var _a;
|
|
50
51
|
const [dialogPlugin, setDialogPlugin] = (0, react_1.useState)();
|
|
51
52
|
const { pluginManager } = (0, util_1.getEnv)(model);
|
|
52
53
|
const session = (0, util_1.getSession)(model);
|
|
53
|
-
const { jbrowse, adminMode
|
|
54
|
-
const isSessionPlugin =
|
|
54
|
+
const { jbrowse, adminMode } = session;
|
|
55
|
+
const isSessionPlugin = (0, types_1.isSessionWithSessionPlugins)(session)
|
|
56
|
+
? (_a = session.sessionPlugins) === null || _a === void 0 ? void 0 : _a.some(p => pluginManager.pluginMetadata[plugin.name].url === p.url)
|
|
57
|
+
: false;
|
|
55
58
|
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
56
59
|
dialogPlugin ? (react_1.default.createElement(react_1.Suspense, { fallback: react_1.default.createElement(react_1.default.Fragment, null) },
|
|
57
60
|
react_1.default.createElement(DeletePluginDialog, { plugin: dialogPlugin, onClose: name => {
|
|
@@ -67,7 +70,8 @@ exports.default = (0, mobx_react_1.observer)(function ({ plugin, model, }) {
|
|
|
67
70
|
setDialogPlugin(undefined);
|
|
68
71
|
} }))) : null,
|
|
69
72
|
react_1.default.createElement(material_1.ListItem, { key: plugin.name },
|
|
70
|
-
adminMode || isSessionPlugin ? (react_1.default.createElement(material_1.IconButton, { "
|
|
73
|
+
adminMode || isSessionPlugin ? (react_1.default.createElement(material_1.IconButton, { "data-testid": `removePlugin-${plugin.name}`, onClick: () => setDialogPlugin(plugin.name) },
|
|
71
74
|
react_1.default.createElement(Close_1.default, null))) : (react_1.default.createElement(LockedPlugin, null)),
|
|
72
75
|
react_1.default.createElement(material_1.Typography, null, plugin.name))));
|
|
73
76
|
});
|
|
77
|
+
exports.default = InstalledPlugin;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
3
|
import { PluginStoreModel } from '../model';
|
|
4
|
-
declare const
|
|
4
|
+
declare const InstalledPluginsList: ({ pluginManager, model, }: {
|
|
5
5
|
pluginManager: PluginManager;
|
|
6
6
|
model: PluginStoreModel;
|
|
7
7
|
}) => React.JSX.Element;
|
|
8
|
-
export default
|
|
8
|
+
export default InstalledPluginsList;
|
|
@@ -7,7 +7,7 @@ const react_1 = __importDefault(require("react"));
|
|
|
7
7
|
const mobx_react_1 = require("mobx-react");
|
|
8
8
|
const material_1 = require("@mui/material");
|
|
9
9
|
const InstalledPlugin_1 = __importDefault(require("./InstalledPlugin"));
|
|
10
|
-
|
|
10
|
+
const InstalledPluginsList = (0, mobx_react_1.observer)(function InstalledPluginsList({ pluginManager, model, }) {
|
|
11
11
|
const { plugins } = pluginManager;
|
|
12
12
|
const { filterText } = model;
|
|
13
13
|
const externalPlugins = plugins.filter(p => { var _a; return !((_a = pluginManager.pluginMetadata[p.name]) === null || _a === void 0 ? void 0 : _a.isCore); });
|
|
@@ -15,3 +15,4 @@ exports.default = (0, mobx_react_1.observer)(function InstalledPluginsList({ plu
|
|
|
15
15
|
.filter(p => p.name.toLowerCase().includes(filterText.toLowerCase()))
|
|
16
16
|
.map(p => react_1.default.createElement(InstalledPlugin_1.default, { key: p.name, plugin: p, model: model }))) : (react_1.default.createElement(material_1.Typography, null, "No plugins currently installed"))));
|
|
17
17
|
});
|
|
18
|
+
exports.default = InstalledPluginsList;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { JBrowsePlugin } from '@jbrowse/core/util/types';
|
|
3
3
|
import { PluginStoreModel } from '../model';
|
|
4
|
-
declare const
|
|
4
|
+
declare const PluginCard: ({ plugin, model, adminMode, }: {
|
|
5
5
|
plugin: JBrowsePlugin;
|
|
6
6
|
model: PluginStoreModel;
|
|
7
7
|
adminMode: boolean;
|
|
8
8
|
}) => React.JSX.Element;
|
|
9
|
-
export default
|
|
9
|
+
export default PluginCard;
|
|
@@ -53,7 +53,7 @@ const useStyles = (0, mui_1.makeStyles)()({
|
|
|
53
53
|
alignItems: 'center',
|
|
54
54
|
},
|
|
55
55
|
});
|
|
56
|
-
|
|
56
|
+
const PluginCard = (0, mobx_react_1.observer)(function PluginCard({ plugin, model, adminMode, }) {
|
|
57
57
|
const { classes } = useStyles();
|
|
58
58
|
const session = (0, util_1.getSession)(model);
|
|
59
59
|
const { pluginManager } = (0, util_1.getEnv)(model);
|
|
@@ -84,3 +84,4 @@ exports.default = (0, mobx_react_1.observer)(function PluginCard({ plugin, model
|
|
|
84
84
|
setTempDisabled(true);
|
|
85
85
|
} }, isInstalled ? 'Installed' : 'Install'))));
|
|
86
86
|
});
|
|
87
|
+
exports.default = PluginCard;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { PluginStoreModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const PluginStoreWidget: ({ model, }: {
|
|
4
4
|
model: PluginStoreModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default PluginStoreWidget;
|
|
@@ -59,7 +59,7 @@ const useStyles = (0, mui_1.makeStyles)()(theme => ({
|
|
|
59
59
|
display: 'flex',
|
|
60
60
|
},
|
|
61
61
|
}));
|
|
62
|
-
|
|
62
|
+
const PluginStoreWidget = (0, mobx_react_1.observer)(function ({ model, }) {
|
|
63
63
|
const { classes } = useStyles();
|
|
64
64
|
const { plugins, error } = (0, util_2.useFetchPlugins)();
|
|
65
65
|
const [open, setOpen] = (0, react_1.useState)(false);
|
|
@@ -98,5 +98,5 @@ function PluginStoreWidget({ model }) {
|
|
|
98
98
|
.includes(model.filterText.toLowerCase()));
|
|
99
99
|
})
|
|
100
100
|
.map(plugin => (react_1.default.createElement(PluginCard_1.default, { key: plugin.name, plugin: plugin, model: model, adminMode: !!adminMode })))) : (react_1.default.createElement(ui_1.LoadingEllipses, null)))));
|
|
101
|
-
}
|
|
102
|
-
exports.default =
|
|
101
|
+
});
|
|
102
|
+
exports.default = PluginStoreWidget;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
2
|
import Plugin from '@jbrowse/core/Plugin';
|
|
3
3
|
import PluginManager from '@jbrowse/core/PluginManager';
|
|
4
|
-
declare const SetDefaultSession: import("react").LazyExoticComponent<({ rootModel, onClose }: {
|
|
5
|
-
rootModel?: unknown;
|
|
6
|
-
onClose: () => void;
|
|
7
|
-
}) => import("react").JSX.Element | null>;
|
|
8
4
|
declare const AssemblyManager: import("react").LazyExoticComponent<({ rootModel, onClose, }: {
|
|
9
5
|
rootModel: any;
|
|
10
6
|
onClose: (arg: boolean) => void;
|
|
@@ -16,14 +12,10 @@ export default class extends Plugin {
|
|
|
16
12
|
rootModel: any;
|
|
17
13
|
onClose: (arg: boolean) => void;
|
|
18
14
|
}) => import("react").JSX.Element>;
|
|
19
|
-
SetDefaultSession: import("react").LazyExoticComponent<({ rootModel, onClose }: {
|
|
20
|
-
rootModel?: unknown;
|
|
21
|
-
onClose: () => void;
|
|
22
|
-
}) => import("react").JSX.Element | null>;
|
|
23
15
|
};
|
|
24
16
|
install(pluginManager: PluginManager): void;
|
|
25
17
|
configure(_pluginManager: PluginManager): void;
|
|
26
18
|
}
|
|
27
|
-
export { AssemblyManager
|
|
19
|
+
export { AssemblyManager };
|
|
28
20
|
export { type AddTrackModel } from './AddTrackWidget/model';
|
|
29
21
|
export { type HierarchicalTrackSelectorModel } from './HierarchicalTrackSelectorWidget';
|
package/dist/index.js
CHANGED
|
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
26
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
27
|
};
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
29
|
+
exports.AssemblyManager = void 0;
|
|
30
30
|
const react_1 = require("react");
|
|
31
31
|
const Plugin_1 = __importDefault(require("@jbrowse/core/Plugin"));
|
|
32
32
|
const ucsc_trackhub_1 = __importDefault(require("./ucsc-trackhub"));
|
|
@@ -34,8 +34,6 @@ const AddTrackWidget_1 = __importDefault(require("./AddTrackWidget"));
|
|
|
34
34
|
const AddConnectionWidget_1 = __importDefault(require("./AddConnectionWidget"));
|
|
35
35
|
const PluginStoreWidget_1 = __importDefault(require("./PluginStoreWidget"));
|
|
36
36
|
const HierarchicalTrackSelectorWidget_1 = __importDefault(require("./HierarchicalTrackSelectorWidget"));
|
|
37
|
-
const SetDefaultSession = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./SetDefaultSession'))));
|
|
38
|
-
exports.SetDefaultSession = SetDefaultSession;
|
|
39
37
|
const AssemblyManager = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('./AssemblyManager'))));
|
|
40
38
|
exports.AssemblyManager = AssemblyManager;
|
|
41
39
|
class default_1 extends Plugin_1.default {
|
|
@@ -44,7 +42,6 @@ class default_1 extends Plugin_1.default {
|
|
|
44
42
|
this.name = 'DataManagementPlugin';
|
|
45
43
|
this.exports = {
|
|
46
44
|
AssemblyManager,
|
|
47
|
-
SetDefaultSession,
|
|
48
45
|
};
|
|
49
46
|
}
|
|
50
47
|
install(pluginManager) {
|
|
@@ -40,7 +40,7 @@ function UCSCTrackHubConnection(pluginManager) {
|
|
|
40
40
|
}))
|
|
41
41
|
.actions(self => ({
|
|
42
42
|
async connect() {
|
|
43
|
-
var _a;
|
|
43
|
+
var _a, _b;
|
|
44
44
|
const session = (0, util_1.getSession)(self);
|
|
45
45
|
const notLoadedAssemblies = [];
|
|
46
46
|
try {
|
|
@@ -108,7 +108,7 @@ function UCSCTrackHubConnection(pluginManager) {
|
|
|
108
108
|
catch (e) {
|
|
109
109
|
console.error(e);
|
|
110
110
|
session.notify(`There was a problem connecting to the UCSC Track Hub "${self.configuration.name}". Please make sure you have entered a valid hub.txt file. The error that was thrown is: "${e}"`, 'error');
|
|
111
|
-
session.breakConnection(self.configuration);
|
|
111
|
+
(_b = session.breakConnection) === null || _b === void 0 ? void 0 : _b.call(session, self.configuration);
|
|
112
112
|
}
|
|
113
113
|
},
|
|
114
114
|
}));
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import React, { useState } from 'react';
|
|
1
|
+
import React, { useMemo, useState } from 'react';
|
|
2
2
|
import { Button, Step, StepContent, StepLabel, Stepper } from '@mui/material';
|
|
3
|
-
import { getSession, getEnv } from '@jbrowse/core/util';
|
|
3
|
+
import { getSession, getEnv, isSessionModelWithWidgets, } from '@jbrowse/core/util';
|
|
4
4
|
import { makeStyles } from 'tss-react/mui';
|
|
5
5
|
import { observer } from 'mobx-react';
|
|
6
6
|
// locals
|
|
7
7
|
import ConfigureConnection from './ConfigureConnection';
|
|
8
8
|
import ConnectionTypeSelect from './ConnectionTypeSelect';
|
|
9
|
+
import { isSessionWithConnections } from '@jbrowse/product-core';
|
|
9
10
|
const useStyles = makeStyles()(theme => ({
|
|
10
11
|
root: {
|
|
11
12
|
marginTop: theme.spacing(1),
|
|
@@ -22,13 +23,15 @@ const useStyles = makeStyles()(theme => ({
|
|
|
22
23
|
},
|
|
23
24
|
}));
|
|
24
25
|
const steps = ['Select a Connection Type', 'Configure Connection'];
|
|
25
|
-
|
|
26
|
+
const AddConnectionWidget = observer(function ({ model }) {
|
|
26
27
|
const [connectionType, setConnectionType] = useState();
|
|
27
|
-
const [
|
|
28
|
+
const [connectionId, setConnectionId] = useState();
|
|
28
29
|
const [activeStep, setActiveStep] = useState(0);
|
|
29
30
|
const { classes } = useStyles();
|
|
30
31
|
const session = getSession(model);
|
|
31
32
|
const { pluginManager } = getEnv(session);
|
|
33
|
+
// useMemo is needed for react@18+mobx-react@9, previous code called configScema.create directly in a setConfigModel useState hook setter but this caused infinite loop
|
|
34
|
+
const configModel = useMemo(() => connectionType === null || connectionType === void 0 ? void 0 : connectionType.configSchema.create({ connectionId }, getEnv(model)), [connectionId, connectionType, model]);
|
|
32
35
|
return (React.createElement("div", { className: classes.root },
|
|
33
36
|
React.createElement(Stepper, { className: classes.stepper, activeStep: activeStep, orientation: "vertical" }, steps.map(label => (React.createElement(Step, { key: label },
|
|
34
37
|
React.createElement(StepLabel, null, label),
|
|
@@ -38,21 +41,27 @@ export default observer(function AddConnectionWidget({ model, }) {
|
|
|
38
41
|
if (!c) {
|
|
39
42
|
return;
|
|
40
43
|
}
|
|
41
|
-
|
|
42
|
-
setConfigModel(c.configSchema.create({ connectionId }, getEnv(model)));
|
|
44
|
+
setConnectionId(`${c.name}-${Date.now()}`);
|
|
43
45
|
} })) : connectionType && configModel ? (React.createElement(ConfigureConnection, { connectionType: connectionType, model: configModel, session: session })) : null,
|
|
44
46
|
React.createElement("div", { className: classes.actionsContainer },
|
|
45
47
|
React.createElement(Button, { disabled: activeStep === 0, onClick: () => setActiveStep(activeStep - 1), className: classes.button }, "Back"),
|
|
46
48
|
React.createElement(Button, { disabled: !((activeStep === 0 && connectionType) ||
|
|
47
49
|
(activeStep === 1 && configModel)), variant: "contained", color: "primary", onClick: () => {
|
|
48
|
-
var _a;
|
|
49
50
|
if (activeStep === steps.length - 1) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
if (configModel && isSessionWithConnections(session)) {
|
|
52
|
+
const conf = session.addConnectionConf(configModel);
|
|
53
|
+
session.makeConnection(conf);
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
session.notify('No config model to add');
|
|
57
|
+
}
|
|
58
|
+
if (isSessionModelWithWidgets(session)) {
|
|
59
|
+
session.hideWidget(model);
|
|
60
|
+
}
|
|
53
61
|
}
|
|
54
62
|
else {
|
|
55
63
|
setActiveStep(activeStep + 1);
|
|
56
64
|
}
|
|
57
65
|
}, className: classes.button, "data-testid": "addConnectionNext" }, activeStep === steps.length - 1 ? 'Connect' : 'Next')))))))));
|
|
58
66
|
});
|
|
67
|
+
export default AddConnectionWidget;
|
|
@@ -2,9 +2,9 @@ import React from 'react';
|
|
|
2
2
|
import { ConnectionType } from '@jbrowse/core/pluggableElementTypes';
|
|
3
3
|
import { AnyConfigurationModel } from '@jbrowse/core/configuration';
|
|
4
4
|
import { AbstractSessionModel } from '@jbrowse/core/util';
|
|
5
|
-
declare const
|
|
5
|
+
declare const ConfigureConnection: ({ connectionType, model, session, }: {
|
|
6
6
|
connectionType: ConnectionType;
|
|
7
7
|
model: AnyConfigurationModel;
|
|
8
8
|
session: AbstractSessionModel;
|
|
9
9
|
}) => React.JSX.Element;
|
|
10
|
-
export default
|
|
10
|
+
export default ConfigureConnection;
|
|
@@ -2,8 +2,9 @@ import React, { Suspense } from 'react';
|
|
|
2
2
|
import { observer } from 'mobx-react';
|
|
3
3
|
import { ConfigurationEditor } from '@jbrowse/plugin-config';
|
|
4
4
|
import { LoadingEllipses } from '@jbrowse/core/ui';
|
|
5
|
-
|
|
5
|
+
const ConfigureConnection = observer(function ({ connectionType, model, session, }) {
|
|
6
6
|
const ConfigEditorComponent = connectionType.configEditorComponent || ConfigurationEditor;
|
|
7
7
|
return (React.createElement(Suspense, { fallback: React.createElement(LoadingEllipses, null) },
|
|
8
8
|
React.createElement(ConfigEditorComponent, { model: { target: model }, session: session })));
|
|
9
9
|
});
|
|
10
|
+
export default ConfigureConnection;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { ConnectionType } from '@jbrowse/core/pluggableElementTypes';
|
|
3
|
-
declare const
|
|
3
|
+
declare const ConnectionTypeSelect: ({ connectionTypeChoices, connectionType, setConnectionType, }: {
|
|
4
4
|
connectionTypeChoices: ConnectionType[];
|
|
5
5
|
connectionType?: ConnectionType | undefined;
|
|
6
6
|
setConnectionType: (c?: ConnectionType) => void;
|
|
7
7
|
}) => React.JSX.Element;
|
|
8
|
-
export default
|
|
8
|
+
export default ConnectionTypeSelect;
|
|
@@ -3,14 +3,16 @@ import { IconButton, MenuItem, TextField } from '@mui/material';
|
|
|
3
3
|
import { observer } from 'mobx-react';
|
|
4
4
|
// icons
|
|
5
5
|
import OpenInNewIcon from '@mui/icons-material/OpenInNew';
|
|
6
|
-
|
|
6
|
+
const ConnectionTypeSelect = observer(function ConnectionTypeSelect({ connectionTypeChoices, connectionType, setConnectionType, }) {
|
|
7
|
+
const firstChoice = connectionTypeChoices[0];
|
|
7
8
|
useEffect(() => {
|
|
8
9
|
if (!connectionType) {
|
|
9
|
-
setConnectionType(
|
|
10
|
+
setConnectionType(firstChoice);
|
|
10
11
|
}
|
|
11
|
-
});
|
|
12
|
+
}, [connectionType, firstChoice, setConnectionType]);
|
|
12
13
|
return (React.createElement("form", { autoComplete: "off" }, connectionType ? (React.createElement(TextField, { value: connectionType.name, label: "connectionType", helperText: connectionType.description ? (React.createElement(React.Fragment, null,
|
|
13
14
|
connectionType.description,
|
|
14
15
|
connectionType.url ? (React.createElement(IconButton, { href: connectionType.url, rel: "noopener noreferrer", target: "_blank" },
|
|
15
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
17
|
});
|
|
18
|
+
export default ConnectionTypeSelect;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { AddTrackModel } from '../model';
|
|
3
|
-
declare
|
|
3
|
+
declare const AddTrackSelector: ({ model, }: {
|
|
4
4
|
model: AddTrackModel;
|
|
5
|
-
})
|
|
6
|
-
|
|
7
|
-
export default _default;
|
|
5
|
+
}) => React.JSX.Element;
|
|
6
|
+
export default AddTrackSelector;
|
|
@@ -4,7 +4,7 @@ import { FormControl, FormHelperText, Select, MenuItem } from '@mui/material';
|
|
|
4
4
|
import { getEnv } from '@jbrowse/core/util';
|
|
5
5
|
import DefaultAddTrackWorkflow from './DefaultAddTrackWorkflow';
|
|
6
6
|
import PasteConfigWorkflow from './PasteConfigWorkflow';
|
|
7
|
-
|
|
7
|
+
const AddTrackSelector = observer(function ({ model, }) {
|
|
8
8
|
const [val, setVal] = useState('Default add track workflow');
|
|
9
9
|
const { pluginManager } = getEnv(model);
|
|
10
10
|
const widgets = pluginManager.getAddTrackWorkflowElements();
|
|
@@ -22,5 +22,5 @@ function AddTrackSelector({ model }) {
|
|
|
22
22
|
React.createElement(FormHelperText, null, "Type of add track workflow")),
|
|
23
23
|
React.createElement("br", null),
|
|
24
24
|
React.createElement(Component, { model: model })));
|
|
25
|
-
}
|
|
26
|
-
export default
|
|
25
|
+
});
|
|
26
|
+
export default AddTrackSelector;
|