@jbrowse/core 1.4.4 → 1.5.3
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/BaseFeatureWidget/BaseFeatureDetail.d.ts +4 -4
- package/BaseFeatureWidget/BaseFeatureDetail.js +27 -8
- package/BaseFeatureWidget/SequenceFeatureDetails.js +10 -10
- package/BaseFeatureWidget/index.js +1 -1
- package/BaseFeatureWidget/types.d.ts +1 -1
- package/BaseFeatureWidget/util.js +3 -3
- package/CorePlugin.d.ts +0 -1
- package/CorePlugin.js +13 -1
- package/PluginLoader.d.ts +26 -4
- package/PluginLoader.js +337 -51
- package/PluginManager.d.ts +18 -11
- package/PluginManager.js +53 -31
- package/ReExports/list.js +1 -1
- package/ReExports/material-ui-colors.js +38 -38
- package/ReExports/modules.d.ts +19 -20
- package/ReExports/modules.js +10 -3
- package/TextSearch/BaseResults.d.ts +5 -14
- package/TextSearch/BaseResults.js +16 -58
- package/TextSearch/BaseResults.test.js +1 -11
- package/TextSearch/TextSearchManager.d.ts +3 -3
- package/TextSearch/TextSearchManager.js +1 -1
- package/assemblyManager/assembly.d.ts +21 -8
- package/assemblyManager/assembly.js +163 -120
- package/assemblyManager/assemblyConfigSchema.d.ts +3 -0
- package/assemblyManager/{assemblyConfigSchemas.js → assemblyConfigSchema.js} +35 -27
- package/assemblyManager/assemblyManager.d.ts +169 -60
- package/assemblyManager/index.d.ts +1 -1
- package/assemblyManager/index.js +5 -5
- package/configuration/configurationSchema.d.ts +3 -2
- package/configuration/configurationSchema.js +7 -10
- package/configuration/configurationSchema.test.js +4 -2
- package/configuration/configurationSlot.js +5 -4
- package/configuration/index.js +4 -4
- package/configuration/util.js +5 -5
- package/data_adapters/BaseAdapter.d.ts +5 -3
- package/data_adapters/BaseAdapter.js +7 -4
- package/data_adapters/BaseAdapter.test.js +4 -2
- package/data_adapters/CytobandAdapter.d.ts +8 -0
- package/data_adapters/CytobandAdapter.js +128 -0
- package/data_adapters/dataAdapterCache.js +3 -3
- package/package.json +7 -7
- package/pluggableElementTypes/AdapterType.d.ts +9 -1
- package/pluggableElementTypes/AdapterType.js +20 -0
- package/pluggableElementTypes/InternetAccountType.d.ts +12 -0
- package/pluggableElementTypes/InternetAccountType.js +64 -0
- package/pluggableElementTypes/PluggableElementBase.d.ts +1 -2
- package/pluggableElementTypes/PluggableElementBase.js +2 -3
- package/pluggableElementTypes/RpcMethodType.d.ts +3 -0
- package/pluggableElementTypes/RpcMethodType.js +269 -26
- package/pluggableElementTypes/RpcMethodType.test.d.ts +4 -0
- package/pluggableElementTypes/RpcMethodType.test.js +118 -0
- package/pluggableElementTypes/ViewType.d.ts +1 -1
- package/pluggableElementTypes/WidgetType.d.ts +1 -0
- package/pluggableElementTypes/index.d.ts +7 -3
- package/pluggableElementTypes/index.js +127 -1
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +6 -6
- package/pluggableElementTypes/models/BaseDisplayModel.js +1 -3
- package/pluggableElementTypes/models/BaseViewModel.js +13 -15
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +24 -0
- package/pluggableElementTypes/models/InternetAccountModel.js +85 -0
- package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +4 -0
- package/pluggableElementTypes/models/baseInternetAccountConfig.js +25 -0
- package/pluggableElementTypes/models/index.d.ts +3 -0
- package/pluggableElementTypes/models/index.js +24 -8
- package/pluggableElementTypes/renderers/BoxRendererType.js +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +15 -6
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +3 -3
- package/pluggableElementTypes/renderers/FeatureRendererType.js +17 -8
- package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
- package/pluggableElementTypes/renderers/RendererType.js +4 -1
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +1 -1
- package/pluggableElementTypes/renderers/index.d.ts +9 -0
- package/pluggableElementTypes/renderers/index.js +63 -0
- package/rpc/BaseRpcDriver.js +5 -9
- package/rpc/BaseRpcDriver.test.js +6 -6
- package/rpc/RpcManager.d.ts +1 -1
- package/rpc/RpcManager.js +44 -16
- package/rpc/WebWorkerRpcDriver.js +3 -3
- package/rpc/coreRpcMethods.d.ts +2 -1
- package/rpc/coreRpcMethods.js +109 -75
- package/rpc/remoteAbortSignals.js +2 -2
- package/ui/App.d.ts +17 -4
- package/ui/App.js +55 -41
- package/ui/Drawer.d.ts +6 -14
- package/ui/Drawer.js +11 -12
- package/ui/DrawerWidget.d.ts +5 -3
- package/ui/DrawerWidget.js +100 -61
- package/ui/ErrorMessage.d.ts +5 -0
- package/ui/ErrorMessage.js +54 -0
- package/ui/FileSelector/FileSelector.d.ts +11 -0
- package/ui/FileSelector/FileSelector.js +198 -0
- package/ui/FileSelector/LocalFileChooser.d.ts +7 -0
- package/ui/FileSelector/LocalFileChooser.js +79 -0
- package/ui/FileSelector/UrlChooser.d.ts +9 -0
- package/ui/FileSelector/UrlChooser.js +41 -0
- package/ui/FileSelector/index.d.ts +2 -0
- package/ui/FileSelector/index.js +13 -0
- package/ui/Icons.d.ts +4 -0
- package/ui/Icons.js +34 -0
- package/ui/Logo.js +1 -1
- package/ui/PrerenderedCanvas.d.ts +1 -0
- package/ui/PrerenderedCanvas.js +4 -1
- package/ui/ResizeHandle.d.ts +2 -3
- package/ui/ResizeHandle.js +6 -7
- package/ui/SanitizedHTML.js +1 -1
- package/ui/Snackbar.js +4 -6
- package/ui/SnackbarModel.d.ts +16 -0
- package/ui/SnackbarModel.js +56 -0
- package/ui/Tooltip.d.ts +1 -1
- package/ui/index.js +24 -24
- package/ui/theme.js +5 -5
- package/util/QuickLRU.d.ts +1 -1
- package/util/QuickLRU.js +3 -3
- package/util/aborting.d.ts +1 -1
- package/util/aborting.js +10 -11
- package/util/analytics.d.ts +2 -2
- package/util/analytics.js +20 -7
- package/util/blockTypes.d.ts +11 -6
- package/util/blockTypes.js +7 -1
- package/util/color/cssColorsLevel4.js +1 -1
- package/util/color/index.js +5 -5
- package/util/compositeMap.js +3 -3
- package/util/index.d.ts +6 -16
- package/util/index.js +76 -100
- package/util/io/RemoteFileWithRangeCache.d.ts +17 -0
- package/util/io/RemoteFileWithRangeCache.js +266 -0
- package/util/io/index.d.ts +4 -2
- package/util/io/index.js +134 -25
- package/util/jexl.js +4 -1
- package/util/layouts/BaseLayout.d.ts +3 -0
- package/util/layouts/GranularRectLayout.d.ts +19 -10
- package/util/layouts/GranularRectLayout.js +459 -100
- package/util/layouts/GranularRectLayout.test.js +57 -10
- package/util/layouts/PrecomputedLayout.js +2 -1
- package/util/layouts/index.d.ts +7 -0
- package/util/layouts/index.js +68 -0
- package/util/mst-reflection.js +3 -3
- package/util/offscreenCanvasPonyfill.js +1 -1
- package/util/range.js +1 -1
- package/util/simpleFeature.js +1 -1
- package/util/stats.js +2 -2
- package/util/tracks.d.ts +31 -362
- package/util/tracks.js +74 -190
- package/util/types/index.d.ts +54 -10
- package/util/types/index.js +110 -8
- package/util/types/mst.d.ts +46 -2
- package/util/types/mst.js +56 -8
- package/util/types/util.d.ts +1 -1
- package/util/when.js +1 -1
- package/assemblyManager/assemblyConfigSchemas.d.ts +0 -7
- package/ui/FileSelector.d.ts +0 -9
- package/ui/FileSelector.js +0 -150
- package/util/io/LocalFile.d.ts +0 -18
- package/util/io/LocalFile.js +0 -220
- package/util/io/rangeFetcher.d.ts +0 -3
- package/util/io/rangeFetcher.js +0 -236
- package/value.d.ts +0 -1
- package/value.js +0 -10
package/ui/App.js
CHANGED
|
@@ -9,8 +9,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
9
9
|
});
|
|
10
10
|
exports.default = void 0;
|
|
11
11
|
|
|
12
|
-
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
13
|
-
|
|
14
12
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
15
13
|
|
|
16
14
|
var _react = _interopRequireWildcard(require("react"));
|
|
@@ -23,6 +21,8 @@ var _mobxReact = require("mobx-react");
|
|
|
23
21
|
|
|
24
22
|
var _mobxStateTree = require("mobx-state-tree");
|
|
25
23
|
|
|
24
|
+
var _configuration = require("../configuration");
|
|
25
|
+
|
|
26
26
|
var _DrawerWidget = _interopRequireDefault(require("./DrawerWidget"));
|
|
27
27
|
|
|
28
28
|
var _DropDownMenu = _interopRequireDefault(require("./DropDownMenu"));
|
|
@@ -35,12 +35,11 @@ var _Snackbar = _interopRequireDefault(require("./Snackbar"));
|
|
|
35
35
|
|
|
36
36
|
var _ViewContainer = _interopRequireDefault(require("./ViewContainer"));
|
|
37
37
|
|
|
38
|
-
var _configuration = require("../configuration");
|
|
39
|
-
|
|
40
38
|
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
39
|
|
|
42
40
|
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
41
|
|
|
42
|
+
// locals
|
|
44
43
|
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
45
44
|
return {
|
|
46
45
|
'@global': {
|
|
@@ -72,10 +71,15 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
|
72
71
|
height: '100vh',
|
|
73
72
|
width: '100%'
|
|
74
73
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
position: '
|
|
78
|
-
|
|
74
|
+
fabLeft: {
|
|
75
|
+
zIndex: 10000,
|
|
76
|
+
position: 'fixed',
|
|
77
|
+
bottom: theme.spacing(2),
|
|
78
|
+
left: theme.spacing(2)
|
|
79
|
+
},
|
|
80
|
+
fabRight: {
|
|
81
|
+
zIndex: 10000,
|
|
82
|
+
position: 'fixed',
|
|
79
83
|
bottom: theme.spacing(2),
|
|
80
84
|
right: theme.spacing(2)
|
|
81
85
|
},
|
|
@@ -132,11 +136,11 @@ var Logo = (0, _mobxReact.observer)(function (_ref) {
|
|
|
132
136
|
}
|
|
133
137
|
});
|
|
134
138
|
var App = (0, _mobxReact.observer)(function (_ref2) {
|
|
135
|
-
var _viewTypes
|
|
139
|
+
var _viewTypes$, _grid;
|
|
136
140
|
|
|
137
141
|
var session = _ref2.session,
|
|
138
142
|
_ref2$HeaderButtons = _ref2.HeaderButtons,
|
|
139
|
-
HeaderButtons = _ref2$HeaderButtons === void 0 ? null : _ref2$HeaderButtons;
|
|
143
|
+
HeaderButtons = _ref2$HeaderButtons === void 0 ? /*#__PURE__*/_react.default.createElement("div", null) : _ref2$HeaderButtons;
|
|
140
144
|
var classes = useStyles();
|
|
141
145
|
|
|
142
146
|
var _getEnv = (0, _mobxStateTree.getEnv)(session),
|
|
@@ -156,28 +160,38 @@ var App = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
156
160
|
savedSessionNames = session.savedSessionNames,
|
|
157
161
|
name = session.name,
|
|
158
162
|
menus = session.menus,
|
|
159
|
-
views = session.views
|
|
163
|
+
views = session.views,
|
|
164
|
+
drawerPosition = session.drawerPosition;
|
|
160
165
|
|
|
161
166
|
function handleNameChange(newName) {
|
|
162
|
-
if (savedSessionNames && savedSessionNames.includes(newName)) {
|
|
167
|
+
if (savedSessionNames !== null && savedSessionNames !== void 0 && savedSessionNames.includes(newName)) {
|
|
163
168
|
session.notify("Cannot rename session to \"".concat(newName, "\", a saved session with that name already exists"), 'warning');
|
|
164
169
|
} else {
|
|
165
170
|
session.renameCurrentSession(newName);
|
|
166
171
|
}
|
|
167
172
|
}
|
|
168
173
|
|
|
174
|
+
var drawerVisible = visibleWidget && !minimized;
|
|
175
|
+
var grid;
|
|
176
|
+
|
|
177
|
+
if (drawerPosition === 'right') {
|
|
178
|
+
grid = ["[main] 1fr", drawerVisible ? "[drawer] ".concat(drawerWidth, "px") : undefined];
|
|
179
|
+
} else if (drawerPosition === 'left') {
|
|
180
|
+
grid = [drawerVisible ? "[drawer] ".concat(drawerWidth, "px") : undefined, "[main] 1fr"];
|
|
181
|
+
}
|
|
182
|
+
|
|
169
183
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
170
184
|
className: classes.root,
|
|
171
185
|
style: {
|
|
172
|
-
gridTemplateColumns:
|
|
186
|
+
gridTemplateColumns: (_grid = grid) === null || _grid === void 0 ? void 0 : _grid.filter(function (f) {
|
|
187
|
+
return !!f;
|
|
188
|
+
}).join(' ')
|
|
173
189
|
}
|
|
174
|
-
},
|
|
190
|
+
}, drawerVisible && drawerPosition === 'left' ? /*#__PURE__*/_react.default.createElement(_DrawerWidget.default, {
|
|
191
|
+
session: session
|
|
192
|
+
}) : null, session.DialogComponent ? /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
175
193
|
fallback: /*#__PURE__*/_react.default.createElement("div", null)
|
|
176
|
-
}, /*#__PURE__*/_react.default.createElement(session.DialogComponent,
|
|
177
|
-
handleClose: function handleClose() {
|
|
178
|
-
return session.setDialogComponent(undefined, undefined);
|
|
179
|
-
}
|
|
180
|
-
}, session.DialogProps))) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
194
|
+
}, /*#__PURE__*/_react.default.createElement(session.DialogComponent, session.DialogProps)) : null, /*#__PURE__*/_react.default.createElement("div", {
|
|
181
195
|
className: classes.menuBarAndComponents
|
|
182
196
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
183
197
|
className: classes.menuBar
|
|
@@ -224,19 +238,23 @@ var App = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
224
238
|
}
|
|
225
239
|
|
|
226
240
|
var ReactComponent = viewType.ReactComponent;
|
|
227
|
-
return
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
241
|
+
return (
|
|
242
|
+
/*#__PURE__*/
|
|
243
|
+
// @ts-ignore
|
|
244
|
+
_react.default.createElement(_ViewContainer.default, {
|
|
245
|
+
key: "view-".concat(view.id),
|
|
246
|
+
view: view,
|
|
247
|
+
onClose: function onClose() {
|
|
248
|
+
return session.removeView(view);
|
|
249
|
+
}
|
|
250
|
+
}, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
251
|
+
fallback: /*#__PURE__*/_react.default.createElement("div", null, "Loading...")
|
|
252
|
+
}, /*#__PURE__*/_react.default.createElement(ReactComponent, {
|
|
253
|
+
model: view,
|
|
254
|
+
session: session,
|
|
255
|
+
getTrackType: pluginManager.getTrackType
|
|
256
|
+
})))
|
|
257
|
+
);
|
|
240
258
|
}) : /*#__PURE__*/_react.default.createElement(_core.Paper, {
|
|
241
259
|
className: classes.selectPaper
|
|
242
260
|
}, /*#__PURE__*/_react.default.createElement(_core.Typography, null, "Select a view to launch"), /*#__PURE__*/_react.default.createElement(_core.Select, {
|
|
@@ -260,20 +278,16 @@ var App = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
260
278
|
style: {
|
|
261
279
|
height: 300
|
|
262
280
|
}
|
|
263
|
-
}))), activeWidgets.size > 0 && minimized ? /*#__PURE__*/_react.default.createElement(
|
|
264
|
-
|
|
281
|
+
}))), activeWidgets.size > 0 && minimized ? /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
282
|
+
title: "Open drawer widget"
|
|
265
283
|
}, /*#__PURE__*/_react.default.createElement(_core.Fab, {
|
|
284
|
+
className: drawerPosition === 'right' ? classes.fabRight : classes.fabLeft,
|
|
266
285
|
color: "primary",
|
|
267
|
-
size: "small",
|
|
268
|
-
"aria-label": "show",
|
|
269
286
|
"data-testid": "drawer-maximize",
|
|
270
|
-
style: {
|
|
271
|
-
float: 'right'
|
|
272
|
-
},
|
|
273
287
|
onClick: function onClick() {
|
|
274
|
-
session.showWidgetDrawer();
|
|
288
|
+
return session.showWidgetDrawer();
|
|
275
289
|
}
|
|
276
|
-
}, /*#__PURE__*/_react.default.createElement(_Launch.default, null))) : null,
|
|
290
|
+
}, /*#__PURE__*/_react.default.createElement(_Launch.default, null))) : null, drawerVisible && drawerPosition === 'right' ? /*#__PURE__*/_react.default.createElement(_DrawerWidget.default, {
|
|
277
291
|
session: session
|
|
278
292
|
}) : null, /*#__PURE__*/_react.default.createElement(_Snackbar.default, {
|
|
279
293
|
session: session
|
package/ui/Drawer.d.ts
CHANGED
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { SessionWithDrawerWidgets } from '../util/types';
|
|
3
|
+
declare function Drawer({ children, session, }: {
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
session: SessionWithDrawerWidgets;
|
|
4
6
|
}): JSX.Element;
|
|
5
|
-
declare
|
|
6
|
-
export namespace propTypes {
|
|
7
|
-
export const children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
|
|
8
|
-
export const session: PropTypes.Validator<any>;
|
|
9
|
-
}
|
|
10
|
-
export namespace defaultProps {
|
|
11
|
-
const children_1: null;
|
|
12
|
-
export { children_1 as children };
|
|
13
|
-
}
|
|
14
|
-
}
|
|
7
|
+
declare const _default: typeof Drawer;
|
|
15
8
|
export default _default;
|
|
16
|
-
import PropTypes from "prop-types";
|
package/ui/Drawer.js
CHANGED
|
@@ -15,8 +15,6 @@ var _styles = require("@material-ui/core/styles");
|
|
|
15
15
|
|
|
16
16
|
var _mobxReact = require("mobx-react");
|
|
17
17
|
|
|
18
|
-
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
19
|
-
|
|
20
18
|
var _ResizeHandle = _interopRequireDefault(require("./ResizeHandle"));
|
|
21
19
|
|
|
22
20
|
var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
@@ -40,26 +38,27 @@ var useStyles = (0, _styles.makeStyles)(function (theme) {
|
|
|
40
38
|
function Drawer(_ref) {
|
|
41
39
|
var children = _ref.children,
|
|
42
40
|
session = _ref.session;
|
|
41
|
+
var drawerPosition = session.drawerPosition,
|
|
42
|
+
drawerWidth = session.drawerWidth;
|
|
43
43
|
var classes = useStyles();
|
|
44
44
|
return /*#__PURE__*/_react.default.createElement(_Paper.default, {
|
|
45
45
|
className: classes.paper,
|
|
46
46
|
elevation: 16,
|
|
47
47
|
square: true
|
|
48
|
-
}, /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
|
|
48
|
+
}, drawerPosition === 'right' ? /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
|
|
49
|
+
onDrag: session.resizeDrawer,
|
|
50
|
+
className: classes.resizeHandle,
|
|
51
|
+
vertical: true
|
|
52
|
+
}) : null, children, drawerPosition === 'left' ? /*#__PURE__*/_react.default.createElement(_ResizeHandle.default, {
|
|
49
53
|
onDrag: session.resizeDrawer,
|
|
50
54
|
className: classes.resizeHandle,
|
|
55
|
+
style: {
|
|
56
|
+
left: drawerWidth
|
|
57
|
+
},
|
|
51
58
|
vertical: true
|
|
52
|
-
})
|
|
59
|
+
}) : null);
|
|
53
60
|
}
|
|
54
61
|
|
|
55
|
-
Drawer.propTypes = {
|
|
56
|
-
children: _propTypes.default.node,
|
|
57
|
-
session: _mobxReact.PropTypes.observableObject.isRequired
|
|
58
|
-
};
|
|
59
|
-
Drawer.defaultProps = {
|
|
60
|
-
children: null
|
|
61
|
-
};
|
|
62
|
-
|
|
63
62
|
var _default = (0, _mobxReact.observer)(Drawer);
|
|
64
63
|
|
|
65
64
|
exports.default = _default;
|
package/ui/DrawerWidget.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { SessionWithDrawerWidgets } from '@jbrowse/core/util/types';
|
|
3
|
+
declare const DrawerWidget: ({ session }: {
|
|
4
|
+
session: SessionWithDrawerWidgets;
|
|
5
|
+
}) => JSX.Element;
|
|
1
6
|
export default DrawerWidget;
|
|
2
|
-
declare function DrawerWidget({ session }: {
|
|
3
|
-
session: any;
|
|
4
|
-
}): JSX.Element;
|
package/ui/DrawerWidget.js
CHANGED
|
@@ -15,17 +15,17 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
15
|
|
|
16
16
|
var _core = require("@material-ui/core");
|
|
17
17
|
|
|
18
|
+
var _mobxReact = require("mobx-react");
|
|
19
|
+
|
|
20
|
+
var _mobxStateTree = require("mobx-state-tree");
|
|
21
|
+
|
|
18
22
|
var _Delete = _interopRequireDefault(require("@material-ui/icons/Delete"));
|
|
19
23
|
|
|
20
24
|
var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
|
|
21
25
|
|
|
22
26
|
var _Minimize = _interopRequireDefault(require("@material-ui/icons/Minimize"));
|
|
23
27
|
|
|
24
|
-
var
|
|
25
|
-
|
|
26
|
-
var _mobxStateTree = require("mobx-state-tree");
|
|
27
|
-
|
|
28
|
-
var _styles = require("@material-ui/core/styles");
|
|
28
|
+
var _MoreVert = _interopRequireDefault(require("@material-ui/icons/MoreVert"));
|
|
29
29
|
|
|
30
30
|
var _Drawer = _interopRequireDefault(require("./Drawer"));
|
|
31
31
|
|
|
@@ -33,12 +33,14 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
33
33
|
|
|
34
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
35
|
|
|
36
|
+
// icons
|
|
37
|
+
// locals
|
|
36
38
|
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
37
39
|
return {
|
|
38
40
|
drawerActions: {
|
|
39
41
|
float: 'right',
|
|
40
42
|
'&:hover': {
|
|
41
|
-
backgroundColor: (0,
|
|
43
|
+
backgroundColor: (0, _core.alpha)(theme.palette.secondary.contrastText, theme.palette.action.hoverOpacity),
|
|
42
44
|
'@media (hover: none)': {
|
|
43
45
|
backgroundColor: 'transparent'
|
|
44
46
|
}
|
|
@@ -58,70 +60,88 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
|
58
60
|
},
|
|
59
61
|
dropDownIcon: {
|
|
60
62
|
color: theme.palette.secondary.contrastText
|
|
63
|
+
},
|
|
64
|
+
header: {
|
|
65
|
+
background: theme.palette.secondary.main
|
|
61
66
|
}
|
|
62
67
|
};
|
|
63
68
|
});
|
|
64
|
-
var DrawerHeader = (0, _mobxReact.observer)(function (
|
|
65
|
-
var session =
|
|
66
|
-
setToolbarHeight =
|
|
69
|
+
var DrawerHeader = (0, _mobxReact.observer)(function (_ref) {
|
|
70
|
+
var session = _ref.session,
|
|
71
|
+
setToolbarHeight = _ref.setToolbarHeight;
|
|
72
|
+
|
|
73
|
+
var _getEnv = (0, _mobxStateTree.getEnv)(session),
|
|
74
|
+
pluginManager = _getEnv.pluginManager;
|
|
75
|
+
|
|
67
76
|
var visibleWidget = session.visibleWidget,
|
|
68
|
-
activeWidgets = session.activeWidgets
|
|
77
|
+
activeWidgets = session.activeWidgets,
|
|
78
|
+
drawerPosition = session.drawerPosition;
|
|
69
79
|
var classes = useStyles();
|
|
70
80
|
|
|
71
|
-
var
|
|
72
|
-
|
|
73
|
-
|
|
81
|
+
var _React$useState = _react.default.useState(null),
|
|
82
|
+
_React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
|
|
83
|
+
anchorEl = _React$useState2[0],
|
|
84
|
+
setAnchorEl = _React$useState2[1];
|
|
74
85
|
|
|
75
|
-
var theme = (0, _styles.useTheme)();
|
|
76
86
|
return /*#__PURE__*/_react.default.createElement(_core.AppBar, {
|
|
77
87
|
position: "sticky",
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
style: {
|
|
82
|
-
background: theme.palette.secondary.main
|
|
88
|
+
className: classes.header,
|
|
89
|
+
ref: function ref(_ref2) {
|
|
90
|
+
return setToolbarHeight((_ref2 === null || _ref2 === void 0 ? void 0 : _ref2.getBoundingClientRect().height) || 0);
|
|
83
91
|
}
|
|
84
92
|
}, /*#__PURE__*/_react.default.createElement(_core.Toolbar, {
|
|
85
93
|
disableGutters: true,
|
|
86
94
|
className: classes.drawerToolbar
|
|
87
95
|
}, /*#__PURE__*/_react.default.createElement(_core.Select, {
|
|
88
|
-
value: visibleWidget ||
|
|
96
|
+
value: visibleWidget === null || visibleWidget === void 0 ? void 0 : visibleWidget.id,
|
|
89
97
|
"data-testid": "widget-drawer-selects",
|
|
90
98
|
className: classes.drawerSelect,
|
|
91
99
|
classes: {
|
|
92
100
|
icon: classes.dropDownIcon
|
|
93
101
|
},
|
|
94
|
-
renderValue: function renderValue(
|
|
95
|
-
var
|
|
96
|
-
|
|
97
|
-
|
|
102
|
+
renderValue: function renderValue(widgetId) {
|
|
103
|
+
var widget = session.activeWidgets.get(widgetId);
|
|
104
|
+
|
|
105
|
+
if (!widget) {
|
|
106
|
+
return /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
107
|
+
variant: "h6",
|
|
108
|
+
color: "inherit"
|
|
109
|
+
}, "Unknown widget");
|
|
110
|
+
}
|
|
98
111
|
|
|
99
|
-
|
|
112
|
+
var widgetType = pluginManager.getWidgetType(widget.type);
|
|
113
|
+
var HeadingComponent = widgetType.HeadingComponent,
|
|
114
|
+
heading = widgetType.heading;
|
|
115
|
+
return HeadingComponent ? /*#__PURE__*/_react.default.createElement(HeadingComponent, {
|
|
116
|
+
model: widget
|
|
117
|
+
}) : /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
100
118
|
variant: "h6",
|
|
101
119
|
color: "inherit"
|
|
102
|
-
},
|
|
103
|
-
model: selected
|
|
104
|
-
}) : headingText || undefined);
|
|
120
|
+
}, heading);
|
|
105
121
|
},
|
|
106
|
-
onChange: function onChange(e
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
}, Array.from(activeWidgets.values()).map(function (widget, index) {
|
|
110
|
-
var _getEnv$pluginManager2 = (0, _mobxStateTree.getEnv)(session).pluginManager.getWidgetType(widget.type),
|
|
111
|
-
HeadingComp = _getEnv$pluginManager2.HeadingComponent,
|
|
112
|
-
headingText = _getEnv$pluginManager2.heading;
|
|
122
|
+
onChange: function onChange(e) {
|
|
123
|
+
var w = session.activeWidgets.get(e.target.value);
|
|
113
124
|
|
|
125
|
+
if (!w) {
|
|
126
|
+
session.notify('Widget not found ' + e.target.value, 'warning');
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
session.showWidget(w);
|
|
130
|
+
}
|
|
131
|
+
}, Array.from(activeWidgets.values()).map(function (widget) {
|
|
132
|
+
var widgetType = pluginManager.getWidgetType(widget.type);
|
|
133
|
+
var HeadingComponent = widgetType.HeadingComponent,
|
|
134
|
+
heading = widgetType.heading;
|
|
114
135
|
return /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
|
|
115
136
|
"data-testid": "widget-drawer-selects-item-".concat(widget.type),
|
|
116
|
-
key:
|
|
117
|
-
value: widget
|
|
118
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
137
|
+
key: widget.id,
|
|
138
|
+
value: widget.id
|
|
139
|
+
}, HeadingComponent ? /*#__PURE__*/_react.default.createElement(HeadingComponent, {
|
|
140
|
+
model: widget
|
|
141
|
+
}) : /*#__PURE__*/_react.default.createElement(_core.Typography, {
|
|
119
142
|
variant: "h6",
|
|
120
143
|
color: "inherit"
|
|
121
|
-
},
|
|
122
|
-
model: widget
|
|
123
|
-
}) : headingText || undefined), /*#__PURE__*/_react.default.createElement(_core.ListItemSecondaryAction, null, /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
124
|
-
className: classes.drawerCloseButton,
|
|
144
|
+
}, heading), /*#__PURE__*/_react.default.createElement(_core.ListItemSecondaryAction, null, /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
125
145
|
"data-testid": "".concat(widget.type, "-drawer-delete"),
|
|
126
146
|
color: "inherit",
|
|
127
147
|
"aria-label": "Delete",
|
|
@@ -131,36 +151,56 @@ var DrawerHeader = (0, _mobxReact.observer)(function (props) {
|
|
|
131
151
|
}, /*#__PURE__*/_react.default.createElement(_Delete.default, null))));
|
|
132
152
|
})), /*#__PURE__*/_react.default.createElement("div", {
|
|
133
153
|
className: classes.spacer
|
|
134
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
|
135
|
-
|
|
154
|
+
}), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
155
|
+
"data-testid": "drawer-close",
|
|
156
|
+
color: "inherit",
|
|
157
|
+
onClick: function onClick(event) {
|
|
158
|
+
return setAnchorEl(event.currentTarget);
|
|
159
|
+
}
|
|
160
|
+
}, /*#__PURE__*/_react.default.createElement(_MoreVert.default, null)), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
161
|
+
title: "Minimize drawer"
|
|
136
162
|
}, /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
137
|
-
className: classes.drawerCloseButton,
|
|
138
163
|
"data-testid": "drawer-minimize",
|
|
139
164
|
color: "inherit",
|
|
140
165
|
onClick: function onClick() {
|
|
166
|
+
session.notify("Drawer minimized, click button on ".concat(drawerPosition, " side of screen to re-open"), 'info');
|
|
141
167
|
session.minimizeWidgetDrawer();
|
|
142
168
|
}
|
|
143
|
-
}, /*#__PURE__*/_react.default.createElement(_Minimize.default, null)), /*#__PURE__*/_react.default.createElement(_core.
|
|
169
|
+
}, /*#__PURE__*/_react.default.createElement(_Minimize.default, null))), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
|
|
170
|
+
title: "Close drawer"
|
|
171
|
+
}, /*#__PURE__*/_react.default.createElement(_core.IconButton, {
|
|
144
172
|
"data-testid": "drawer-close",
|
|
145
173
|
color: "inherit",
|
|
146
174
|
onClick: function onClick() {
|
|
147
175
|
session.hideWidget(visibleWidget);
|
|
148
176
|
}
|
|
149
|
-
}, /*#__PURE__*/_react.default.createElement(_Close.default, null)))))
|
|
177
|
+
}, /*#__PURE__*/_react.default.createElement(_Close.default, null))))), /*#__PURE__*/_react.default.createElement(_core.Menu, {
|
|
178
|
+
anchorEl: anchorEl,
|
|
179
|
+
open: Boolean(anchorEl),
|
|
180
|
+
onClose: function onClose() {
|
|
181
|
+
return setAnchorEl(null);
|
|
182
|
+
}
|
|
183
|
+
}, ['left', 'right'].map(function (option) {
|
|
184
|
+
return /*#__PURE__*/_react.default.createElement(_core.MenuItem, {
|
|
185
|
+
key: option,
|
|
186
|
+
selected: drawerPosition === 'option',
|
|
187
|
+
onClick: function onClick() {
|
|
188
|
+
session.setDrawerPosition(option);
|
|
189
|
+
setAnchorEl(null);
|
|
190
|
+
}
|
|
191
|
+
}, option);
|
|
192
|
+
})));
|
|
150
193
|
});
|
|
151
|
-
var DrawerWidget = (0, _mobxReact.observer)(function (
|
|
152
|
-
var session =
|
|
153
|
-
var visibleWidget = session.visibleWidget
|
|
154
|
-
activeWidgets = session.activeWidgets;
|
|
194
|
+
var DrawerWidget = (0, _mobxReact.observer)(function (_ref3) {
|
|
195
|
+
var session = _ref3.session;
|
|
196
|
+
var visibleWidget = session.visibleWidget;
|
|
155
197
|
|
|
156
|
-
var
|
|
157
|
-
pluginManager =
|
|
158
|
-
|
|
159
|
-
var _pluginManager$getWid = pluginManager.getWidgetType(visibleWidget.type),
|
|
160
|
-
ReactComponent = _pluginManager$getWid.ReactComponent; // we track the toolbar height because components that use virtualized height
|
|
161
|
-
// want to be able to fill the contained, minus the toolbar height (the
|
|
162
|
-
// position static/sticky is included in AutoSizer estimates)
|
|
198
|
+
var _getEnv2 = (0, _mobxStateTree.getEnv)(session),
|
|
199
|
+
pluginManager = _getEnv2.pluginManager;
|
|
163
200
|
|
|
201
|
+
var DrawerComponent = visibleWidget ? pluginManager.getWidgetType(visibleWidget.type).ReactComponent : null; // we track the toolbar height because components that use virtualized
|
|
202
|
+
// height want to be able to fill the contained, minus the toolbar height
|
|
203
|
+
// (the position static/sticky is included in AutoSizer estimates)
|
|
164
204
|
|
|
165
205
|
var _useState = (0, _react.useState)(0),
|
|
166
206
|
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
|
|
@@ -168,14 +208,13 @@ var DrawerWidget = (0, _mobxReact.observer)(function (_ref2) {
|
|
|
168
208
|
setToolbarHeight = _useState2[1];
|
|
169
209
|
|
|
170
210
|
return /*#__PURE__*/_react.default.createElement(_Drawer.default, {
|
|
171
|
-
session: session
|
|
172
|
-
open: Boolean(activeWidgets.size)
|
|
211
|
+
session: session
|
|
173
212
|
}, /*#__PURE__*/_react.default.createElement(DrawerHeader, {
|
|
174
213
|
session: session,
|
|
175
214
|
setToolbarHeight: setToolbarHeight
|
|
176
215
|
}), /*#__PURE__*/_react.default.createElement(_react.Suspense, {
|
|
177
216
|
fallback: /*#__PURE__*/_react.default.createElement("div", null, "Loading...")
|
|
178
|
-
}, /*#__PURE__*/_react.default.createElement(
|
|
217
|
+
}, /*#__PURE__*/_react.default.createElement(DrawerComponent, {
|
|
179
218
|
model: visibleWidget,
|
|
180
219
|
session: session,
|
|
181
220
|
toolbarHeight: toolbarHeight
|
|
@@ -0,0 +1,54 @@
|
|
|
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 _core = require("@material-ui/core");
|
|
13
|
+
|
|
14
|
+
var useStyles = (0, _core.makeStyles)(function (theme) {
|
|
15
|
+
return {
|
|
16
|
+
message: {
|
|
17
|
+
border: '1px solid black',
|
|
18
|
+
background: '#f88',
|
|
19
|
+
overflow: 'auto',
|
|
20
|
+
maxHeight: 200,
|
|
21
|
+
margin: theme.spacing(1),
|
|
22
|
+
padding: theme.spacing(1)
|
|
23
|
+
},
|
|
24
|
+
errorBox: {
|
|
25
|
+
background: 'lightgrey',
|
|
26
|
+
border: '1px solid black',
|
|
27
|
+
margin: 20
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
var ErrorMessage = function ErrorMessage(_ref) {
|
|
33
|
+
var error = _ref.error;
|
|
34
|
+
var classes = useStyles();
|
|
35
|
+
var str = "".concat(error);
|
|
36
|
+
var snapshotError = ''; // best effort to make a better error message than the default
|
|
37
|
+
// mobx-state-tree
|
|
38
|
+
|
|
39
|
+
var match = str.match(/.*at path "(.*)" snapshot `(.*)` is not assignable/);
|
|
40
|
+
|
|
41
|
+
if (match) {
|
|
42
|
+
str = "Failed to load element at ".concat(match[1]);
|
|
43
|
+
snapshotError = match[2];
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
47
|
+
className: classes.message
|
|
48
|
+
}, str.slice(0, 10000), snapshotError ? /*#__PURE__*/_react.default.createElement("div", null, "... Failed element had snapshot:", /*#__PURE__*/_react.default.createElement("pre", {
|
|
49
|
+
className: classes.errorBox
|
|
50
|
+
}, JSON.stringify(JSON.parse(snapshotError), null, 2))) : null);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
var _default = ErrorMessage;
|
|
54
|
+
exports.default = _default;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { FileLocation, AbstractRootModel } from '../../util/types';
|
|
3
|
+
declare const FileSelector: (props: {
|
|
4
|
+
location?: FileLocation | undefined;
|
|
5
|
+
setLocation: (param: FileLocation) => void;
|
|
6
|
+
setName?: ((str: string) => void) | undefined;
|
|
7
|
+
name?: string | undefined;
|
|
8
|
+
description?: string | undefined;
|
|
9
|
+
rootModel?: AbstractRootModel | undefined;
|
|
10
|
+
}) => JSX.Element;
|
|
11
|
+
export default FileSelector;
|