@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.
Files changed (159) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +4 -4
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +27 -8
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +10 -10
  4. package/BaseFeatureWidget/index.js +1 -1
  5. package/BaseFeatureWidget/types.d.ts +1 -1
  6. package/BaseFeatureWidget/util.js +3 -3
  7. package/CorePlugin.d.ts +0 -1
  8. package/CorePlugin.js +13 -1
  9. package/PluginLoader.d.ts +26 -4
  10. package/PluginLoader.js +337 -51
  11. package/PluginManager.d.ts +18 -11
  12. package/PluginManager.js +53 -31
  13. package/ReExports/list.js +1 -1
  14. package/ReExports/material-ui-colors.js +38 -38
  15. package/ReExports/modules.d.ts +19 -20
  16. package/ReExports/modules.js +10 -3
  17. package/TextSearch/BaseResults.d.ts +5 -14
  18. package/TextSearch/BaseResults.js +16 -58
  19. package/TextSearch/BaseResults.test.js +1 -11
  20. package/TextSearch/TextSearchManager.d.ts +3 -3
  21. package/TextSearch/TextSearchManager.js +1 -1
  22. package/assemblyManager/assembly.d.ts +21 -8
  23. package/assemblyManager/assembly.js +163 -120
  24. package/assemblyManager/assemblyConfigSchema.d.ts +3 -0
  25. package/assemblyManager/{assemblyConfigSchemas.js → assemblyConfigSchema.js} +35 -27
  26. package/assemblyManager/assemblyManager.d.ts +169 -60
  27. package/assemblyManager/index.d.ts +1 -1
  28. package/assemblyManager/index.js +5 -5
  29. package/configuration/configurationSchema.d.ts +3 -2
  30. package/configuration/configurationSchema.js +7 -10
  31. package/configuration/configurationSchema.test.js +4 -2
  32. package/configuration/configurationSlot.js +5 -4
  33. package/configuration/index.js +4 -4
  34. package/configuration/util.js +5 -5
  35. package/data_adapters/BaseAdapter.d.ts +5 -3
  36. package/data_adapters/BaseAdapter.js +7 -4
  37. package/data_adapters/BaseAdapter.test.js +4 -2
  38. package/data_adapters/CytobandAdapter.d.ts +8 -0
  39. package/data_adapters/CytobandAdapter.js +128 -0
  40. package/data_adapters/dataAdapterCache.js +3 -3
  41. package/package.json +7 -7
  42. package/pluggableElementTypes/AdapterType.d.ts +9 -1
  43. package/pluggableElementTypes/AdapterType.js +20 -0
  44. package/pluggableElementTypes/InternetAccountType.d.ts +12 -0
  45. package/pluggableElementTypes/InternetAccountType.js +64 -0
  46. package/pluggableElementTypes/PluggableElementBase.d.ts +1 -2
  47. package/pluggableElementTypes/PluggableElementBase.js +2 -3
  48. package/pluggableElementTypes/RpcMethodType.d.ts +3 -0
  49. package/pluggableElementTypes/RpcMethodType.js +269 -26
  50. package/pluggableElementTypes/RpcMethodType.test.d.ts +4 -0
  51. package/pluggableElementTypes/RpcMethodType.test.js +118 -0
  52. package/pluggableElementTypes/ViewType.d.ts +1 -1
  53. package/pluggableElementTypes/WidgetType.d.ts +1 -0
  54. package/pluggableElementTypes/index.d.ts +7 -3
  55. package/pluggableElementTypes/index.js +127 -1
  56. package/pluggableElementTypes/models/BaseDisplayModel.d.ts +6 -6
  57. package/pluggableElementTypes/models/BaseDisplayModel.js +1 -3
  58. package/pluggableElementTypes/models/BaseViewModel.js +13 -15
  59. package/pluggableElementTypes/models/InternetAccountModel.d.ts +24 -0
  60. package/pluggableElementTypes/models/InternetAccountModel.js +85 -0
  61. package/pluggableElementTypes/models/baseInternetAccountConfig.d.ts +4 -0
  62. package/pluggableElementTypes/models/baseInternetAccountConfig.js +25 -0
  63. package/pluggableElementTypes/models/index.d.ts +3 -0
  64. package/pluggableElementTypes/models/index.js +24 -8
  65. package/pluggableElementTypes/renderers/BoxRendererType.js +1 -1
  66. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +1 -1
  67. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +15 -6
  68. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +3 -3
  69. package/pluggableElementTypes/renderers/FeatureRendererType.js +17 -8
  70. package/pluggableElementTypes/renderers/RendererType.d.ts +1 -0
  71. package/pluggableElementTypes/renderers/RendererType.js +4 -1
  72. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +1 -1
  73. package/pluggableElementTypes/renderers/index.d.ts +9 -0
  74. package/pluggableElementTypes/renderers/index.js +63 -0
  75. package/rpc/BaseRpcDriver.js +5 -9
  76. package/rpc/BaseRpcDriver.test.js +6 -6
  77. package/rpc/RpcManager.d.ts +1 -1
  78. package/rpc/RpcManager.js +44 -16
  79. package/rpc/WebWorkerRpcDriver.js +3 -3
  80. package/rpc/coreRpcMethods.d.ts +2 -1
  81. package/rpc/coreRpcMethods.js +109 -75
  82. package/rpc/remoteAbortSignals.js +2 -2
  83. package/ui/App.d.ts +17 -4
  84. package/ui/App.js +55 -41
  85. package/ui/Drawer.d.ts +6 -14
  86. package/ui/Drawer.js +11 -12
  87. package/ui/DrawerWidget.d.ts +5 -3
  88. package/ui/DrawerWidget.js +100 -61
  89. package/ui/ErrorMessage.d.ts +5 -0
  90. package/ui/ErrorMessage.js +54 -0
  91. package/ui/FileSelector/FileSelector.d.ts +11 -0
  92. package/ui/FileSelector/FileSelector.js +198 -0
  93. package/ui/FileSelector/LocalFileChooser.d.ts +7 -0
  94. package/ui/FileSelector/LocalFileChooser.js +79 -0
  95. package/ui/FileSelector/UrlChooser.d.ts +9 -0
  96. package/ui/FileSelector/UrlChooser.js +41 -0
  97. package/ui/FileSelector/index.d.ts +2 -0
  98. package/ui/FileSelector/index.js +13 -0
  99. package/ui/Icons.d.ts +4 -0
  100. package/ui/Icons.js +34 -0
  101. package/ui/Logo.js +1 -1
  102. package/ui/PrerenderedCanvas.d.ts +1 -0
  103. package/ui/PrerenderedCanvas.js +4 -1
  104. package/ui/ResizeHandle.d.ts +2 -3
  105. package/ui/ResizeHandle.js +6 -7
  106. package/ui/SanitizedHTML.js +1 -1
  107. package/ui/Snackbar.js +4 -6
  108. package/ui/SnackbarModel.d.ts +16 -0
  109. package/ui/SnackbarModel.js +56 -0
  110. package/ui/Tooltip.d.ts +1 -1
  111. package/ui/index.js +24 -24
  112. package/ui/theme.js +5 -5
  113. package/util/QuickLRU.d.ts +1 -1
  114. package/util/QuickLRU.js +3 -3
  115. package/util/aborting.d.ts +1 -1
  116. package/util/aborting.js +10 -11
  117. package/util/analytics.d.ts +2 -2
  118. package/util/analytics.js +20 -7
  119. package/util/blockTypes.d.ts +11 -6
  120. package/util/blockTypes.js +7 -1
  121. package/util/color/cssColorsLevel4.js +1 -1
  122. package/util/color/index.js +5 -5
  123. package/util/compositeMap.js +3 -3
  124. package/util/index.d.ts +6 -16
  125. package/util/index.js +76 -100
  126. package/util/io/RemoteFileWithRangeCache.d.ts +17 -0
  127. package/util/io/RemoteFileWithRangeCache.js +266 -0
  128. package/util/io/index.d.ts +4 -2
  129. package/util/io/index.js +134 -25
  130. package/util/jexl.js +4 -1
  131. package/util/layouts/BaseLayout.d.ts +3 -0
  132. package/util/layouts/GranularRectLayout.d.ts +19 -10
  133. package/util/layouts/GranularRectLayout.js +459 -100
  134. package/util/layouts/GranularRectLayout.test.js +57 -10
  135. package/util/layouts/PrecomputedLayout.js +2 -1
  136. package/util/layouts/index.d.ts +7 -0
  137. package/util/layouts/index.js +68 -0
  138. package/util/mst-reflection.js +3 -3
  139. package/util/offscreenCanvasPonyfill.js +1 -1
  140. package/util/range.js +1 -1
  141. package/util/simpleFeature.js +1 -1
  142. package/util/stats.js +2 -2
  143. package/util/tracks.d.ts +31 -362
  144. package/util/tracks.js +74 -190
  145. package/util/types/index.d.ts +54 -10
  146. package/util/types/index.js +110 -8
  147. package/util/types/mst.d.ts +46 -2
  148. package/util/types/mst.js +56 -8
  149. package/util/types/util.d.ts +1 -1
  150. package/util/when.js +1 -1
  151. package/assemblyManager/assemblyConfigSchemas.d.ts +0 -7
  152. package/ui/FileSelector.d.ts +0 -9
  153. package/ui/FileSelector.js +0 -150
  154. package/util/io/LocalFile.d.ts +0 -18
  155. package/util/io/LocalFile.js +0 -220
  156. package/util/io/rangeFetcher.d.ts +0 -3
  157. package/util/io/rangeFetcher.js +0 -236
  158. package/value.d.ts +0 -1
  159. 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
- fab: {
76
- float: 'right',
77
- position: 'sticky',
78
- marginTop: theme.spacing(2),
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: "[main] 1fr".concat(visibleWidget && !minimized ? " [drawer] ".concat(drawerWidth, "px") : '')
186
+ gridTemplateColumns: (_grid = grid) === null || _grid === void 0 ? void 0 : _grid.filter(function (f) {
187
+ return !!f;
188
+ }).join(' ')
173
189
  }
174
- }, session.DialogComponent ? /*#__PURE__*/_react.default.createElement(_react.Suspense, {
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, (0, _extends2.default)({
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 /*#__PURE__*/_react.default.createElement(_ViewContainer.default, {
228
- key: "view-".concat(view.id),
229
- view: view,
230
- onClose: function onClose() {
231
- return session.removeView(view);
232
- }
233
- }, /*#__PURE__*/_react.default.createElement(_react.Suspense, {
234
- fallback: /*#__PURE__*/_react.default.createElement("div", null, "Loading...")
235
- }, /*#__PURE__*/_react.default.createElement(ReactComponent, {
236
- model: view,
237
- session: session,
238
- getTrackType: pluginManager.getTrackType
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("div", {
264
- className: classes.fab
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, visibleWidget && !minimized ? /*#__PURE__*/_react.default.createElement(_DrawerWidget.default, {
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
- declare function _default({ children, session }: {
2
- children: any;
3
- session: any;
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 namespace _default {
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
- }), children);
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;
@@ -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;
@@ -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 _mobxReact = require("mobx-react");
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, _styles.alpha)(theme.palette.secondary.contrastText, theme.palette.action.hoverOpacity),
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 (props) {
65
- var session = props.session,
66
- setToolbarHeight = props.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 handleChange = function handleChange(e, option) {
72
- session.showWidget(option.props.value);
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
- ref: function ref(_ref) {
79
- return setToolbarHeight((_ref === null || _ref === void 0 ? void 0 : _ref.getBoundingClientRect().height) || 0);
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(selected) {
95
- var _getEnv$pluginManager = (0, _mobxStateTree.getEnv)(session).pluginManager.getWidgetType(selected.type),
96
- HeadingComp = _getEnv$pluginManager.HeadingComponent,
97
- headingText = _getEnv$pluginManager.heading;
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
- return /*#__PURE__*/_react.default.createElement(_core.Typography, {
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
- }, HeadingComp ? /*#__PURE__*/_react.default.createElement(HeadingComp, {
103
- model: selected
104
- }) : headingText || undefined);
120
+ }, heading);
105
121
  },
106
- onChange: function onChange(e, value) {
107
- handleChange(e, value);
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: "".concat(widget.id, "-").concat(index),
117
- value: widget
118
- }, /*#__PURE__*/_react.default.createElement(_core.Typography, {
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
- }, HeadingComp ? /*#__PURE__*/_react.default.createElement(HeadingComp, {
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
- className: classes.drawerCloseButton
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.IconButton, {
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 (_ref2) {
152
- var session = _ref2.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 _getEnv = (0, _mobxStateTree.getEnv)(session),
157
- pluginManager = _getEnv.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(ReactComponent, {
217
+ }, /*#__PURE__*/_react.default.createElement(DrawerComponent, {
179
218
  model: visibleWidget,
180
219
  session: session,
181
220
  toolbarHeight: toolbarHeight
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ declare const ErrorMessage: ({ error }: {
3
+ error: unknown;
4
+ }) => JSX.Element;
5
+ export default ErrorMessage;
@@ -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;