@jbrowse/plugin-data-management 1.6.8 → 1.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 +9 -9
- package/dist/AddConnectionWidget/components/AddConnectionWidget.js +178 -0
- package/dist/AddConnectionWidget/components/AddConnectionWidget.test.js +270 -0
- package/dist/AddConnectionWidget/components/ConfigureConnection.d.ts +2 -2
- package/dist/AddConnectionWidget/components/ConfigureConnection.js +35 -0
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.d.ts +8 -8
- package/dist/AddConnectionWidget/components/ConnectionTypeSelect.js +70 -0
- package/dist/AddConnectionWidget/index.d.ts +2 -2
- package/dist/AddConnectionWidget/index.js +21 -0
- package/dist/AddConnectionWidget/model.d.ts +5 -5
- package/dist/AddConnectionWidget/model.js +17 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.d.ts +7 -7
- package/dist/AddTrackWidget/components/AddTrackWidget.js +215 -0
- package/dist/AddTrackWidget/components/AddTrackWidget.test.js +218 -0
- package/dist/AddTrackWidget/components/ConfirmTrack.d.ts +7 -7
- package/dist/AddTrackWidget/components/ConfirmTrack.js +277 -0
- package/dist/AddTrackWidget/components/TrackSourceSelect.d.ts +7 -7
- package/dist/AddTrackWidget/components/TrackSourceSelect.js +60 -0
- package/dist/AddTrackWidget/index.d.ts +2 -2
- package/dist/AddTrackWidget/index.js +21 -0
- package/dist/AddTrackWidget/index.test.js +291 -0
- package/dist/AddTrackWidget/model.d.ts +42 -42
- package/dist/AddTrackWidget/model.js +167 -0
- package/dist/AssemblyManager/AssemblyAddForm.d.ts +6 -6
- package/dist/AssemblyManager/AssemblyAddForm.js +299 -0
- package/dist/AssemblyManager/AssemblyEditor.d.ts +5 -5
- package/dist/AssemblyManager/AssemblyEditor.js +25 -0
- package/dist/AssemblyManager/AssemblyManager.d.ts +6 -6
- package/dist/AssemblyManager/AssemblyManager.js +144 -0
- package/dist/AssemblyManager/AssemblyManager.test.js +113 -0
- package/dist/AssemblyManager/AssemblyTable.d.ts +13 -13
- package/dist/AssemblyManager/AssemblyTable.js +92 -0
- package/dist/AssemblyManager/index.d.ts +1 -1
- package/dist/AssemblyManager/index.js +15 -0
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.d.ts +7 -7
- package/dist/HierarchicalTrackSelectorWidget/components/CloseConnectionDialog.js +55 -0
- package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.d.ts +13 -13
- package/dist/HierarchicalTrackSelectorWidget/components/DeleteConnectionDialog.js +46 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.d.ts +6 -6
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.js +648 -0
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +191 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.d.ts +9 -9
- package/dist/HierarchicalTrackSelectorWidget/components/ManageConnectionsDialog.js +80 -0
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.d.ts +10 -10
- package/dist/HierarchicalTrackSelectorWidget/components/ToggleConnectionsDialog.js +98 -0
- package/dist/HierarchicalTrackSelectorWidget/index.d.ts +2 -2
- package/dist/HierarchicalTrackSelectorWidget/index.js +21 -0
- package/dist/HierarchicalTrackSelectorWidget/model.d.ts +37 -37
- package/dist/HierarchicalTrackSelectorWidget/model.js +306 -0
- package/dist/HierarchicalTrackSelectorWidget/model.test.js +28 -0
- package/dist/PluginStoreWidget/components/CustomPluginForm.d.ts +9 -9
- package/dist/PluginStoreWidget/components/CustomPluginForm.js +217 -0
- package/dist/PluginStoreWidget/components/InstalledPlugin.d.ts +11 -11
- package/dist/PluginStoreWidget/components/InstalledPlugin.js +138 -0
- package/dist/PluginStoreWidget/components/InstalledPluginsList.d.ts +9 -9
- package/dist/PluginStoreWidget/components/InstalledPluginsList.js +47 -0
- package/dist/PluginStoreWidget/components/PluginCard.d.ts +10 -10
- package/dist/PluginStoreWidget/components/PluginCard.js +121 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.d.ts +7 -7
- package/dist/PluginStoreWidget/components/PluginStoreWidget.js +240 -0
- package/dist/PluginStoreWidget/components/PluginStoreWidget.test.js +201 -0
- package/dist/PluginStoreWidget/index.d.ts +3 -3
- package/dist/PluginStoreWidget/index.js +29 -0
- package/dist/PluginStoreWidget/model.d.ts +13 -13
- package/dist/PluginStoreWidget/model.js +28 -0
- package/dist/PluginStoreWidget/model.test.js +17 -0
- package/dist/SetDefaultSession/SetDefaultSession.d.ts +6 -6
- package/dist/SetDefaultSession/SetDefaultSession.js +64 -0
- package/dist/SetDefaultSession/SetDefaultSession.test.js +75 -0
- package/dist/SetDefaultSession/index.d.ts +1 -1
- package/dist/SetDefaultSession/index.js +15 -0
- package/dist/index.d.ts +27 -27
- package/dist/index.js +159 -6
- package/dist/index.test.js +56 -0
- package/dist/ucsc-trackhub/configSchema.d.ts +2 -2
- package/dist/ucsc-trackhub/configSchema.js +30 -0
- package/dist/ucsc-trackhub/index.d.ts +2 -2
- package/dist/ucsc-trackhub/index.js +23 -0
- package/dist/ucsc-trackhub/model.d.ts +15 -4
- package/dist/ucsc-trackhub/model.js +130 -0
- package/dist/ucsc-trackhub/ucscAssemblies.d.ts +2 -2
- package/dist/ucsc-trackhub/ucscAssemblies.js +13 -0
- package/dist/ucsc-trackhub/ucscTrackHub.d.ts +6 -6
- package/dist/ucsc-trackhub/ucscTrackHub.js +503 -0
- package/package.json +5 -7
- package/src/AddConnectionWidget/components/AddConnectionWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.test.js +1 -0
- package/src/AddTrackWidget/components/AddTrackWidget.tsx +1 -1
- package/src/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.js +1 -0
- package/src/PluginStoreWidget/components/CustomPluginForm.tsx +1 -1
- package/src/PluginStoreWidget/components/InstalledPlugin.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginCard.tsx +4 -2
- package/src/PluginStoreWidget/components/PluginStoreWidget.test.js +1 -0
- package/src/PluginStoreWidget/model.test.js +1 -0
- package/src/SetDefaultSession/SetDefaultSession.tsx +4 -3
- package/dist/AddConnectionWidget/components/AddConnectionWidget.test.d.ts +0 -1
- package/dist/AddTrackWidget/components/AddTrackWidget.test.d.ts +0 -1
- package/dist/AddTrackWidget/index.test.d.ts +0 -1
- package/dist/HierarchicalTrackSelectorWidget/components/HierarchicalTrackSelector.test.d.ts +0 -1
- package/dist/HierarchicalTrackSelectorWidget/model.test.d.ts +0 -1
- package/dist/PluginStoreWidget/components/PluginStoreWidget.test.d.ts +0 -1
- package/dist/PluginStoreWidget/model.test.d.ts +0 -1
- package/dist/index.test.d.ts +0 -1
- package/dist/plugin-data-management.cjs.development.js +0 -4856
- package/dist/plugin-data-management.cjs.development.js.map +0 -1
- package/dist/plugin-data-management.cjs.production.min.js +0 -2
- package/dist/plugin-data-management.cjs.production.min.js.map +0 -1
- package/dist/plugin-data-management.esm.js +0 -4829
- package/dist/plugin-data-management.esm.js.map +0 -1
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _mobxReact = require("mobx-react");
|
|
17
|
+
|
|
18
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
19
|
+
|
|
20
|
+
var _core = require("@material-ui/core");
|
|
21
|
+
|
|
22
|
+
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
23
|
+
|
|
24
|
+
var _Lock = _interopRequireDefault(require("@material-ui/icons/Lock"));
|
|
25
|
+
|
|
26
|
+
var _util = require("@jbrowse/core/util");
|
|
27
|
+
|
|
28
|
+
var _types = require("@jbrowse/core/util/types");
|
|
29
|
+
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
+
|
|
34
|
+
var useStyles = (0, _core.makeStyles)(function () {
|
|
35
|
+
return {
|
|
36
|
+
closeDialog: {
|
|
37
|
+
position: 'absolute',
|
|
38
|
+
right: 0,
|
|
39
|
+
top: 0
|
|
40
|
+
},
|
|
41
|
+
dialogContainer: {
|
|
42
|
+
margin: 15
|
|
43
|
+
},
|
|
44
|
+
lockedPluginTooltip: {
|
|
45
|
+
marginRight: '0.5rem'
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
function LockedPlugin() {
|
|
51
|
+
var classes = useStyles();
|
|
52
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
|
|
53
|
+
className: classes.lockedPluginTooltip,
|
|
54
|
+
title: "This plugin was installed by an administrator, you cannot remove it."
|
|
55
|
+
}, /*#__PURE__*/_react["default"].createElement(_Lock["default"], null));
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function PluginDialog(_ref) {
|
|
59
|
+
var _onClose = _ref.onClose,
|
|
60
|
+
plugin = _ref.plugin;
|
|
61
|
+
var classes = useStyles();
|
|
62
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Dialog, {
|
|
63
|
+
open: true,
|
|
64
|
+
onClose: function onClose() {
|
|
65
|
+
return _onClose();
|
|
66
|
+
}
|
|
67
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.DialogTitle, null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
68
|
+
className: classes.closeDialog,
|
|
69
|
+
"aria-label": "close-dialog",
|
|
70
|
+
onClick: function onClick() {
|
|
71
|
+
return _onClose();
|
|
72
|
+
}
|
|
73
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null))), /*#__PURE__*/_react["default"].createElement(_core.DialogContent, null, /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Please confirm that you want to remove ", plugin, ". Note: if any resources in this session still use this plugin, it may cause your session to crash"), /*#__PURE__*/_react["default"].createElement(_core.DialogActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
74
|
+
variant: "contained",
|
|
75
|
+
color: "primary",
|
|
76
|
+
onClick: function onClick() {
|
|
77
|
+
// avoid showing runtime plugin warning
|
|
78
|
+
window.setTimeout(function () {
|
|
79
|
+
_onClose(plugin);
|
|
80
|
+
}, 500);
|
|
81
|
+
}
|
|
82
|
+
}, "Confirm"), /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
83
|
+
variant: "contained",
|
|
84
|
+
color: "secondary",
|
|
85
|
+
onClick: function onClick() {
|
|
86
|
+
_onClose();
|
|
87
|
+
}
|
|
88
|
+
}, "Cancel"))));
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function InstalledPlugin(_ref2) {
|
|
92
|
+
var plugin = _ref2.plugin,
|
|
93
|
+
model = _ref2.model,
|
|
94
|
+
pluginManager = _ref2.pluginManager;
|
|
95
|
+
|
|
96
|
+
var _useState = (0, _react.useState)(),
|
|
97
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
98
|
+
dialogPlugin = _useState2[0],
|
|
99
|
+
setDialogPlugin = _useState2[1];
|
|
100
|
+
|
|
101
|
+
var session = (0, _util.getSession)(model);
|
|
102
|
+
var _ref3 = session,
|
|
103
|
+
sessionPlugins = _ref3.sessionPlugins;
|
|
104
|
+
var isSessionPlugin = sessionPlugins === null || sessionPlugins === void 0 ? void 0 : sessionPlugins.some(function (p) {
|
|
105
|
+
return pluginManager.pluginMetadata[plugin.name].url === p.url;
|
|
106
|
+
});
|
|
107
|
+
var rootModel = (0, _mobxStateTree.getParent)(model, 3);
|
|
108
|
+
var jbrowse = rootModel.jbrowse,
|
|
109
|
+
adminMode = rootModel.adminMode;
|
|
110
|
+
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, dialogPlugin ? /*#__PURE__*/_react["default"].createElement(PluginDialog, {
|
|
111
|
+
plugin: dialogPlugin,
|
|
112
|
+
onClose: function onClose(name) {
|
|
113
|
+
if (name) {
|
|
114
|
+
var pluginMetadata = pluginManager.pluginMetadata[plugin.name];
|
|
115
|
+
|
|
116
|
+
if (adminMode) {
|
|
117
|
+
jbrowse.removePlugin(pluginMetadata);
|
|
118
|
+
} else if ((0, _types.isSessionWithSessionPlugins)(session)) {
|
|
119
|
+
session.removeSessionPlugin(pluginMetadata);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
setDialogPlugin(undefined);
|
|
124
|
+
}
|
|
125
|
+
}) : null, /*#__PURE__*/_react["default"].createElement(_core.ListItem, {
|
|
126
|
+
key: plugin.name
|
|
127
|
+
}, adminMode || isSessionPlugin ? /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
128
|
+
"aria-label": "removePlugin",
|
|
129
|
+
"data-testid": "removePlugin-".concat(plugin.name),
|
|
130
|
+
onClick: function onClick() {
|
|
131
|
+
return setDialogPlugin(plugin.name);
|
|
132
|
+
}
|
|
133
|
+
}, /*#__PURE__*/_react["default"].createElement(_Close["default"], null)) : /*#__PURE__*/_react["default"].createElement(LockedPlugin, null), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.name)));
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
var _default = (0, _mobxReact.observer)(InstalledPlugin);
|
|
137
|
+
|
|
138
|
+
exports["default"] = _default;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
-
import { PluginStoreModel } from '../model';
|
|
4
|
-
declare function InstalledPluginsList({ pluginManager, model, }: {
|
|
5
|
-
pluginManager: PluginManager;
|
|
6
|
-
model: PluginStoreModel;
|
|
7
|
-
}): JSX.Element;
|
|
8
|
-
declare const _default: typeof InstalledPluginsList;
|
|
9
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import PluginManager from '@jbrowse/core/PluginManager';
|
|
3
|
+
import { PluginStoreModel } from '../model';
|
|
4
|
+
declare function InstalledPluginsList({ pluginManager, model, }: {
|
|
5
|
+
pluginManager: PluginManager;
|
|
6
|
+
model: PluginStoreModel;
|
|
7
|
+
}): JSX.Element;
|
|
8
|
+
declare const _default: typeof InstalledPluginsList;
|
|
9
|
+
export default _default;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _mobxReact = require("mobx-react");
|
|
13
|
+
|
|
14
|
+
var _core = require("@material-ui/core");
|
|
15
|
+
|
|
16
|
+
var _InstalledPlugin = _interopRequireDefault(require("./InstalledPlugin"));
|
|
17
|
+
|
|
18
|
+
function InstalledPluginsList(_ref) {
|
|
19
|
+
var pluginManager = _ref.pluginManager,
|
|
20
|
+
model = _ref.model;
|
|
21
|
+
var _ref2 = pluginManager,
|
|
22
|
+
plugins = _ref2.plugins;
|
|
23
|
+
var corePlugins = plugins.filter(function (p) {
|
|
24
|
+
var _pluginManager$plugin;
|
|
25
|
+
|
|
26
|
+
return (_pluginManager$plugin = pluginManager.pluginMetadata[p.name]) === null || _pluginManager$plugin === void 0 ? void 0 : _pluginManager$plugin.isCore;
|
|
27
|
+
}).map(function (p) {
|
|
28
|
+
return p.name;
|
|
29
|
+
});
|
|
30
|
+
var externalPlugins = plugins.filter(function (plugin) {
|
|
31
|
+
return !corePlugins.includes(plugin.name);
|
|
32
|
+
});
|
|
33
|
+
return /*#__PURE__*/_react["default"].createElement(_core.List, null, externalPlugins.length ? externalPlugins.filter(function (plugin) {
|
|
34
|
+
return plugin.name.toLowerCase().includes(model.filterText.toLowerCase());
|
|
35
|
+
}).map(function (plugin) {
|
|
36
|
+
return /*#__PURE__*/_react["default"].createElement(_InstalledPlugin["default"], {
|
|
37
|
+
key: plugin.name,
|
|
38
|
+
plugin: plugin,
|
|
39
|
+
model: model,
|
|
40
|
+
pluginManager: pluginManager
|
|
41
|
+
});
|
|
42
|
+
}) : /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "No plugins currently installed"));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
var _default = (0, _mobxReact.observer)(InstalledPluginsList);
|
|
46
|
+
|
|
47
|
+
exports["default"] = _default;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { JBrowsePlugin } from '@jbrowse/core/util/types';
|
|
3
|
-
import { PluginStoreModel } from '../model';
|
|
4
|
-
declare function PluginCard({ plugin, model, adminMode, }: {
|
|
5
|
-
plugin: JBrowsePlugin;
|
|
6
|
-
model: PluginStoreModel;
|
|
7
|
-
adminMode: boolean;
|
|
8
|
-
}): JSX.Element;
|
|
9
|
-
declare const _default: typeof PluginCard;
|
|
10
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { JBrowsePlugin } from '@jbrowse/core/util/types';
|
|
3
|
+
import { PluginStoreModel } from '../model';
|
|
4
|
+
declare function PluginCard({ plugin, model, adminMode, }: {
|
|
5
|
+
plugin: JBrowsePlugin;
|
|
6
|
+
model: PluginStoreModel;
|
|
7
|
+
adminMode: boolean;
|
|
8
|
+
}): JSX.Element;
|
|
9
|
+
declare const _default: typeof PluginCard;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
|
|
16
|
+
var _mobxReact = require("mobx-react");
|
|
17
|
+
|
|
18
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
19
|
+
|
|
20
|
+
var _util = require("@jbrowse/core/util");
|
|
21
|
+
|
|
22
|
+
var _types = require("@jbrowse/core/util/types");
|
|
23
|
+
|
|
24
|
+
var _core = require("@material-ui/core");
|
|
25
|
+
|
|
26
|
+
var _Person = _interopRequireDefault(require("@material-ui/icons/Person"));
|
|
27
|
+
|
|
28
|
+
var _Add = _interopRequireDefault(require("@material-ui/icons/Add"));
|
|
29
|
+
|
|
30
|
+
var _Check = _interopRequireDefault(require("@material-ui/icons/Check"));
|
|
31
|
+
|
|
32
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
33
|
+
|
|
34
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
35
|
+
|
|
36
|
+
// icons
|
|
37
|
+
var useStyles = (0, _core.makeStyles)(function () {
|
|
38
|
+
return {
|
|
39
|
+
card: {
|
|
40
|
+
margin: '1em'
|
|
41
|
+
},
|
|
42
|
+
icon: {
|
|
43
|
+
marginLeft: '0.5em',
|
|
44
|
+
marginRight: '0.5em'
|
|
45
|
+
},
|
|
46
|
+
bold: {
|
|
47
|
+
fontWeight: 600
|
|
48
|
+
},
|
|
49
|
+
dataField: {
|
|
50
|
+
display: 'flex',
|
|
51
|
+
alignItems: 'center',
|
|
52
|
+
margin: '0.4em 0em'
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
function PluginCard(_ref) {
|
|
58
|
+
var plugin = _ref.plugin,
|
|
59
|
+
model = _ref.model,
|
|
60
|
+
adminMode = _ref.adminMode;
|
|
61
|
+
var classes = useStyles();
|
|
62
|
+
var session = (0, _util.getSession)(model);
|
|
63
|
+
|
|
64
|
+
var _ref2 = (0, _mobxStateTree.getEnv)(model),
|
|
65
|
+
pluginManager = _ref2.pluginManager;
|
|
66
|
+
|
|
67
|
+
var isInstalled = Boolean(pluginManager.runtimePluginDefinitions.find(function (pluginDefinition) {
|
|
68
|
+
return pluginDefinition.url === plugin.url;
|
|
69
|
+
}));
|
|
70
|
+
|
|
71
|
+
var _useState = (0, _react.useState)(false),
|
|
72
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
73
|
+
tempDisabled = _useState2[0],
|
|
74
|
+
setTempDisabled = _useState2[1];
|
|
75
|
+
|
|
76
|
+
var disableButton = isInstalled || tempDisabled;
|
|
77
|
+
var rootModel = (0, _mobxStateTree.getParent)(model, 3);
|
|
78
|
+
var jbrowse = rootModel.jbrowse;
|
|
79
|
+
return /*#__PURE__*/_react["default"].createElement(_core.Card, {
|
|
80
|
+
variant: "outlined",
|
|
81
|
+
key: plugin.name,
|
|
82
|
+
className: classes.card
|
|
83
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.CardContent, null, /*#__PURE__*/_react["default"].createElement("div", {
|
|
84
|
+
className: classes.dataField
|
|
85
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
86
|
+
variant: "h5"
|
|
87
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Link, {
|
|
88
|
+
href: "".concat(plugin.location, "#readme"),
|
|
89
|
+
target: "_blank",
|
|
90
|
+
rel: "noopener"
|
|
91
|
+
}, plugin.name))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
92
|
+
className: classes.dataField
|
|
93
|
+
}, /*#__PURE__*/_react["default"].createElement(_Person["default"], {
|
|
94
|
+
style: {
|
|
95
|
+
marginRight: '0.5em'
|
|
96
|
+
}
|
|
97
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.authors.join(', '))), /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
98
|
+
className: classes.bold
|
|
99
|
+
}, "Description:"), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, plugin.description)), /*#__PURE__*/_react["default"].createElement(_core.CardActions, null, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
100
|
+
variant: "contained",
|
|
101
|
+
color: "primary",
|
|
102
|
+
disabled: disableButton,
|
|
103
|
+
startIcon: isInstalled ? /*#__PURE__*/_react["default"].createElement(_Check["default"], null) : /*#__PURE__*/_react["default"].createElement(_Add["default"], null),
|
|
104
|
+
onClick: function onClick() {
|
|
105
|
+
if (adminMode) {
|
|
106
|
+
jbrowse.addPlugin({
|
|
107
|
+
name: plugin.name,
|
|
108
|
+
url: plugin.url
|
|
109
|
+
});
|
|
110
|
+
} else if ((0, _types.isSessionWithSessionPlugins)(session)) {
|
|
111
|
+
session.addSessionPlugin(plugin);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
setTempDisabled(true);
|
|
115
|
+
}
|
|
116
|
+
}, isInstalled ? 'Installed' : 'Install')));
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
var _default = (0, _mobxReact.observer)(PluginCard);
|
|
120
|
+
|
|
121
|
+
exports["default"] = _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
import { PluginStoreModel } from '../model';
|
|
3
|
-
declare function PluginStoreWidget({ model }: {
|
|
4
|
-
model: PluginStoreModel;
|
|
5
|
-
}): JSX.Element;
|
|
6
|
-
declare const _default: typeof PluginStoreWidget;
|
|
7
|
-
export default _default;
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { PluginStoreModel } from '../model';
|
|
3
|
+
declare function PluginStoreWidget({ model }: {
|
|
4
|
+
model: PluginStoreModel;
|
|
5
|
+
}): JSX.Element;
|
|
6
|
+
declare const _default: typeof PluginStoreWidget;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, "__esModule", {
|
|
8
|
+
value: true
|
|
9
|
+
});
|
|
10
|
+
exports["default"] = void 0;
|
|
11
|
+
|
|
12
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
13
|
+
|
|
14
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
15
|
+
|
|
16
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
17
|
+
|
|
18
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
19
|
+
|
|
20
|
+
var _mobxReact = require("mobx-react");
|
|
21
|
+
|
|
22
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
23
|
+
|
|
24
|
+
var _core = require("@material-ui/core");
|
|
25
|
+
|
|
26
|
+
var _util = require("@jbrowse/core/util");
|
|
27
|
+
|
|
28
|
+
var _ExpandMore = _interopRequireDefault(require("@material-ui/icons/ExpandMore"));
|
|
29
|
+
|
|
30
|
+
var _Clear = _interopRequireDefault(require("@material-ui/icons/Clear"));
|
|
31
|
+
|
|
32
|
+
var _InfoOutlined = _interopRequireDefault(require("@material-ui/icons/InfoOutlined"));
|
|
33
|
+
|
|
34
|
+
var _InstalledPluginsList = _interopRequireDefault(require("./InstalledPluginsList"));
|
|
35
|
+
|
|
36
|
+
var _PluginCard = _interopRequireDefault(require("./PluginCard"));
|
|
37
|
+
|
|
38
|
+
var _CustomPluginForm = _interopRequireDefault(require("./CustomPluginForm"));
|
|
39
|
+
|
|
40
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
41
|
+
|
|
42
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
43
|
+
|
|
44
|
+
// icons
|
|
45
|
+
// locals
|
|
46
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
47
|
+
return {
|
|
48
|
+
root: {
|
|
49
|
+
margin: theme.spacing(1)
|
|
50
|
+
},
|
|
51
|
+
expandIcon: {
|
|
52
|
+
color: '#fff'
|
|
53
|
+
},
|
|
54
|
+
adminBadge: {
|
|
55
|
+
margin: '0.5em',
|
|
56
|
+
borderRadius: 3,
|
|
57
|
+
// this is the quaternary color in JB2 palette
|
|
58
|
+
backgroundColor: '#FFB11D',
|
|
59
|
+
padding: '1em',
|
|
60
|
+
display: 'flex',
|
|
61
|
+
alignContent: 'center'
|
|
62
|
+
},
|
|
63
|
+
customPluginButton: {
|
|
64
|
+
margin: '0.5em',
|
|
65
|
+
display: 'flex',
|
|
66
|
+
justifyContent: 'center'
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
function PluginStoreWidget(_ref) {
|
|
72
|
+
var model = _ref.model;
|
|
73
|
+
var classes = useStyles();
|
|
74
|
+
|
|
75
|
+
var _useState = (0, _react.useState)(),
|
|
76
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
77
|
+
pluginArray = _useState2[0],
|
|
78
|
+
setPluginArray = _useState2[1];
|
|
79
|
+
|
|
80
|
+
var _useState3 = (0, _react.useState)(),
|
|
81
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
82
|
+
error = _useState4[0],
|
|
83
|
+
setError = _useState4[1];
|
|
84
|
+
|
|
85
|
+
var _useState5 = (0, _react.useState)(false),
|
|
86
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
87
|
+
customPluginFormOpen = _useState6[0],
|
|
88
|
+
setCustomPluginFormOpen = _useState6[1];
|
|
89
|
+
|
|
90
|
+
var _getSession = (0, _util.getSession)(model),
|
|
91
|
+
adminMode = _getSession.adminMode;
|
|
92
|
+
|
|
93
|
+
var _getEnv = (0, _mobxStateTree.getEnv)(model),
|
|
94
|
+
pluginManager = _getEnv.pluginManager;
|
|
95
|
+
|
|
96
|
+
(0, _react.useEffect)(function () {
|
|
97
|
+
var controller = new AbortController();
|
|
98
|
+
var signal = controller.signal;
|
|
99
|
+
(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
100
|
+
var response, err, array;
|
|
101
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
102
|
+
while (1) {
|
|
103
|
+
switch (_context.prev = _context.next) {
|
|
104
|
+
case 0:
|
|
105
|
+
_context.prev = 0;
|
|
106
|
+
_context.next = 3;
|
|
107
|
+
return fetch('https://jbrowse.org/plugin-store/plugins.json', {
|
|
108
|
+
signal: signal
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
case 3:
|
|
112
|
+
response = _context.sent;
|
|
113
|
+
|
|
114
|
+
if (response.ok) {
|
|
115
|
+
_context.next = 9;
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
_context.next = 7;
|
|
120
|
+
return response.text();
|
|
121
|
+
|
|
122
|
+
case 7:
|
|
123
|
+
err = _context.sent;
|
|
124
|
+
throw new Error("Failed to fetch plugin data: ".concat(response.status, " ").concat(response.statusText, " ").concat(err));
|
|
125
|
+
|
|
126
|
+
case 9:
|
|
127
|
+
_context.next = 11;
|
|
128
|
+
return response.json();
|
|
129
|
+
|
|
130
|
+
case 11:
|
|
131
|
+
array = _context.sent;
|
|
132
|
+
|
|
133
|
+
if (!signal.aborted) {
|
|
134
|
+
setPluginArray(array.plugins);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
_context.next = 19;
|
|
138
|
+
break;
|
|
139
|
+
|
|
140
|
+
case 15:
|
|
141
|
+
_context.prev = 15;
|
|
142
|
+
_context.t0 = _context["catch"](0);
|
|
143
|
+
console.error(_context.t0);
|
|
144
|
+
setError(_context.t0);
|
|
145
|
+
|
|
146
|
+
case 19:
|
|
147
|
+
case "end":
|
|
148
|
+
return _context.stop();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}, _callee, null, [[0, 15]]);
|
|
152
|
+
}))();
|
|
153
|
+
return function () {
|
|
154
|
+
controller.abort();
|
|
155
|
+
};
|
|
156
|
+
}, []);
|
|
157
|
+
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
158
|
+
className: classes.root
|
|
159
|
+
}, adminMode && /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !_util.isElectron && /*#__PURE__*/_react["default"].createElement("div", {
|
|
160
|
+
className: classes.adminBadge
|
|
161
|
+
}, /*#__PURE__*/_react["default"].createElement(_InfoOutlined["default"], {
|
|
162
|
+
style: {
|
|
163
|
+
marginRight: '0.3em'
|
|
164
|
+
}
|
|
165
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "You are using the ", /*#__PURE__*/_react["default"].createElement("code", null, "admin-server"), ". Any changes you make will be saved to your configuration file. You also have the ability to add custom plugins that are not in the store.")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
166
|
+
className: classes.customPluginButton
|
|
167
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Button, {
|
|
168
|
+
variant: "contained",
|
|
169
|
+
color: "primary",
|
|
170
|
+
onClick: function onClick() {
|
|
171
|
+
return setCustomPluginFormOpen(true);
|
|
172
|
+
}
|
|
173
|
+
}, "Add custom plugin")), /*#__PURE__*/_react["default"].createElement(_CustomPluginForm["default"], {
|
|
174
|
+
open: customPluginFormOpen,
|
|
175
|
+
onClose: function onClose() {
|
|
176
|
+
return setCustomPluginFormOpen(false);
|
|
177
|
+
},
|
|
178
|
+
model: model
|
|
179
|
+
})), /*#__PURE__*/_react["default"].createElement(_core.TextField, {
|
|
180
|
+
label: "Filter plugins",
|
|
181
|
+
value: model.filterText,
|
|
182
|
+
onChange: function onChange(event) {
|
|
183
|
+
return model.setFilterText(event.target.value);
|
|
184
|
+
},
|
|
185
|
+
fullWidth: true,
|
|
186
|
+
InputProps: {
|
|
187
|
+
endAdornment: /*#__PURE__*/_react["default"].createElement(_core.InputAdornment, {
|
|
188
|
+
position: "end"
|
|
189
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
|
|
190
|
+
color: "secondary",
|
|
191
|
+
onClick: function onClick() {
|
|
192
|
+
return model.clearFilterText();
|
|
193
|
+
}
|
|
194
|
+
}, /*#__PURE__*/_react["default"].createElement(_Clear["default"], null)))
|
|
195
|
+
}
|
|
196
|
+
}), /*#__PURE__*/_react["default"].createElement(_core.Accordion, {
|
|
197
|
+
defaultExpanded: true
|
|
198
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.AccordionSummary, {
|
|
199
|
+
expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], {
|
|
200
|
+
className: classes.expandIcon
|
|
201
|
+
})
|
|
202
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
203
|
+
variant: "h5"
|
|
204
|
+
}, "Installed plugins")), /*#__PURE__*/_react["default"].createElement("div", {
|
|
205
|
+
style: {
|
|
206
|
+
margin: '1em'
|
|
207
|
+
}
|
|
208
|
+
}, /*#__PURE__*/_react["default"].createElement(_InstalledPluginsList["default"], {
|
|
209
|
+
pluginManager: pluginManager,
|
|
210
|
+
model: model
|
|
211
|
+
}))), /*#__PURE__*/_react["default"].createElement(_core.Accordion, {
|
|
212
|
+
defaultExpanded: true
|
|
213
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.AccordionSummary, {
|
|
214
|
+
expandIcon: /*#__PURE__*/_react["default"].createElement(_ExpandMore["default"], {
|
|
215
|
+
className: classes.expandIcon
|
|
216
|
+
})
|
|
217
|
+
}, /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
218
|
+
variant: "h5"
|
|
219
|
+
}, "Available plugins")), error ? /*#__PURE__*/_react["default"].createElement(_core.Typography, {
|
|
220
|
+
color: "error"
|
|
221
|
+
}, "".concat(error)) : pluginArray ? pluginArray.filter(function (plugin) {
|
|
222
|
+
// If pugin only has cjsUrl, don't display outside desktop
|
|
223
|
+
if (!_util.isElectron && !(plugin.esmUrl || plugin.url || plugin.umdUrl)) {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return plugin.name.toLowerCase().includes(model.filterText.toLowerCase());
|
|
228
|
+
}).map(function (plugin) {
|
|
229
|
+
return /*#__PURE__*/_react["default"].createElement(_PluginCard["default"], {
|
|
230
|
+
key: plugin.name,
|
|
231
|
+
plugin: plugin,
|
|
232
|
+
model: model,
|
|
233
|
+
adminMode: !!adminMode
|
|
234
|
+
});
|
|
235
|
+
}) : /*#__PURE__*/_react["default"].createElement(_core.Typography, null, "Loading...")));
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
var _default = (0, _mobxReact.observer)(PluginStoreWidget);
|
|
239
|
+
|
|
240
|
+
exports["default"] = _default;
|