@jbrowse/core 1.5.9 → 1.6.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 (155) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.js +91 -78
  2. package/BaseFeatureWidget/SequenceFeatureDetails.js +64 -56
  3. package/BaseFeatureWidget/SequenceFeatureDetails.test.js +9 -9
  4. package/BaseFeatureWidget/index.js +1 -1
  5. package/BaseFeatureWidget/index.test.js +4 -4
  6. package/BaseFeatureWidget/util.js +13 -9
  7. package/CorePlugin.js +32 -20
  8. package/Plugin.js +13 -11
  9. package/PluginLoader.js +37 -32
  10. package/PluginManager.d.ts +8 -5
  11. package/PluginManager.js +142 -53
  12. package/ReExports/index.js +4 -4
  13. package/ReExports/list.js +2 -2
  14. package/ReExports/material-ui-colors.js +20 -20
  15. package/ReExports/modules.d.ts +7 -5
  16. package/ReExports/modules.js +51 -47
  17. package/TextSearch/BaseResults.js +34 -24
  18. package/TextSearch/BaseResults.test.js +7 -3
  19. package/TextSearch/TextSearchManager.js +16 -14
  20. package/assemblyManager/assembly.js +38 -33
  21. package/assemblyManager/assemblyConfigSchema.js +2 -2
  22. package/assemblyManager/assemblyManager.js +19 -15
  23. package/assemblyManager/index.js +3 -3
  24. package/babel.config.d.ts +15 -0
  25. package/babel.config.js +19 -0
  26. package/configuration/configurationSchema.js +19 -17
  27. package/configuration/configurationSlot.js +11 -11
  28. package/configuration/configurationSlot.test.js +5 -5
  29. package/configuration/index.d.ts +1 -0
  30. package/configuration/util.js +5 -5
  31. package/data_adapters/BaseAdapter.d.ts +15 -3
  32. package/data_adapters/BaseAdapter.js +215 -61
  33. package/data_adapters/BaseAdapter.test.js +29 -23
  34. package/data_adapters/CytobandAdapter.d.ts +1 -1
  35. package/data_adapters/CytobandAdapter.js +24 -18
  36. package/data_adapters/dataAdapterCache.js +8 -8
  37. package/package.json +3 -3
  38. package/pluggableElementTypes/AdapterType.js +30 -21
  39. package/pluggableElementTypes/ConnectionType.js +28 -18
  40. package/pluggableElementTypes/DisplayType.js +27 -17
  41. package/pluggableElementTypes/InternetAccountType.js +24 -14
  42. package/pluggableElementTypes/PluggableElementBase.js +10 -8
  43. package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
  44. package/pluggableElementTypes/RpcMethodType.js +140 -117
  45. package/pluggableElementTypes/RpcMethodType.test.js +22 -16
  46. package/pluggableElementTypes/TextSearchAdapterType.js +25 -15
  47. package/pluggableElementTypes/TrackType.js +25 -15
  48. package/pluggableElementTypes/ViewType.js +25 -15
  49. package/pluggableElementTypes/WidgetType.js +27 -17
  50. package/pluggableElementTypes/index.js +11 -11
  51. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +5 -5
  52. package/pluggableElementTypes/models/BaseDisplayModel.js +8 -5
  53. package/pluggableElementTypes/models/BaseTrackModel.js +11 -8
  54. package/pluggableElementTypes/models/BaseViewModel.js +3 -3
  55. package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
  56. package/pluggableElementTypes/models/InternetAccountModel.js +4 -4
  57. package/pluggableElementTypes/models/baseConnectionConfig.js +2 -2
  58. package/pluggableElementTypes/models/baseTrackConfig.js +7 -4
  59. package/pluggableElementTypes/models/index.js +4 -4
  60. package/pluggableElementTypes/renderers/BoxRendererType.js +48 -38
  61. package/pluggableElementTypes/renderers/CircularChordRendererType.js +18 -12
  62. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +34 -26
  63. package/pluggableElementTypes/renderers/FeatureRendererType.js +45 -35
  64. package/pluggableElementTypes/renderers/RendererType.js +30 -20
  65. package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +12 -8
  66. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
  67. package/pluggableElementTypes/renderers/ServerSideRendererType.js +44 -32
  68. package/pluggableElementTypes/renderers/index.js +8 -8
  69. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +10 -8
  70. package/pluggableElementTypes/renderers/util/serializableFilterChain.test.js +2 -2
  71. package/rpc/BaseRpcDriver.js +42 -37
  72. package/rpc/BaseRpcDriver.test.js +62 -48
  73. package/rpc/MainThreadRpcDriver.js +31 -21
  74. package/rpc/RpcManager.js +18 -16
  75. package/rpc/WebWorkerRpcDriver.js +37 -27
  76. package/rpc/configSchema.js +2 -2
  77. package/rpc/coreRpcMethods.d.ts +16 -0
  78. package/rpc/coreRpcMethods.js +247 -120
  79. package/rpc/remoteAbortSignals.js +3 -3
  80. package/ui/AboutDialog.js +20 -16
  81. package/ui/App.js +42 -38
  82. package/ui/AssemblySelector.d.ts +1 -1
  83. package/ui/AssemblySelector.js +6 -6
  84. package/ui/Drawer.js +7 -7
  85. package/ui/DrawerWidget.d.ts +1 -1
  86. package/ui/DrawerWidget.js +37 -33
  87. package/ui/DropDownMenu.js +21 -9
  88. package/ui/EditableTypography.js +30 -19
  89. package/ui/ErrorMessage.js +5 -5
  90. package/ui/FactoryResetDialog.js +8 -8
  91. package/ui/FatalErrorDialog.js +29 -12
  92. package/ui/FatalErrorDialog.test.js +10 -10
  93. package/ui/FileSelector/FileSelector.js +42 -32
  94. package/ui/FileSelector/LocalFileChooser.js +9 -9
  95. package/ui/FileSelector/UrlChooser.js +4 -4
  96. package/ui/FileSelector/index.js +4 -4
  97. package/ui/Icons.js +9 -9
  98. package/ui/Logo.js +19 -19
  99. package/ui/Menu.js +46 -35
  100. package/ui/NewSessionCards.js +29 -19
  101. package/ui/PrerenderedCanvas.js +27 -10
  102. package/ui/ResizeHandle.js +17 -10
  103. package/ui/SanitizedHTML.js +5 -5
  104. package/ui/SanitizedHTML.test.js +4 -4
  105. package/ui/Snackbar.js +16 -12
  106. package/ui/SnackbarModel.js +1 -1
  107. package/ui/Tooltip.js +11 -7
  108. package/ui/ViewContainer.d.ts +2 -5
  109. package/ui/ViewContainer.js +44 -49
  110. package/ui/index.d.ts +1 -0
  111. package/ui/index.js +26 -13
  112. package/ui/theme.js +15 -11
  113. package/util/Base1DViewModel.d.ts +14 -12
  114. package/util/Base1DViewModel.js +51 -55
  115. package/util/Base1DViewModel.test.js +5 -5
  116. package/util/QuickLRU.js +30 -26
  117. package/util/aborting.js +25 -15
  118. package/util/analytics.d.ts +1 -0
  119. package/util/analytics.js +14 -6
  120. package/util/blockTypes.js +48 -36
  121. package/util/calculateDynamicBlocks.js +4 -4
  122. package/util/calculateDynamicBlocks.test.js +14 -10
  123. package/util/calculateStaticBlocks.js +1 -1
  124. package/util/calculateStaticBlocks.test.js +15 -15
  125. package/util/compositeMap.js +30 -26
  126. package/util/idMaker.js +4 -4
  127. package/util/index.d.ts +23 -1
  128. package/util/index.js +135 -41
  129. package/util/index.test.js +11 -7
  130. package/util/io/RemoteFileWithRangeCache.js +40 -28
  131. package/util/io/index.js +5 -5
  132. package/util/jexl.js +5 -5
  133. package/util/jexlStrings.js +2 -2
  134. package/util/jexlStrings.test.js +2 -2
  135. package/util/layouts/GranularRectLayout.js +33 -27
  136. package/util/layouts/GranularRectLayout.test.js +10 -10
  137. package/util/layouts/MultiLayout.js +19 -13
  138. package/util/layouts/PrecomputedLayout.js +16 -14
  139. package/util/layouts/PrecomputedMultiLayout.js +23 -17
  140. package/util/layouts/SceneGraph.js +18 -12
  141. package/util/layouts/index.js +6 -6
  142. package/util/offscreenCanvasPonyfill.js +30 -28
  143. package/util/offscreenCanvasUtils.js +5 -5
  144. package/util/range.test.js +20 -20
  145. package/util/rxjs.js +2 -2
  146. package/util/simpleFeature.js +23 -18
  147. package/util/simpleFeature.test.js +3 -3
  148. package/util/stats.d.ts +1 -1
  149. package/util/stats.js +10 -6
  150. package/util/stats.test.js +15 -15
  151. package/util/tracks.js +1 -3
  152. package/util/types/index.d.ts +1 -1
  153. package/util/types/index.js +36 -31
  154. package/util/types/mst.js +19 -15
  155. package/util/when.js +5 -5
@@ -1,38 +1,46 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports["default"] = void 0;
10
+ exports.default = void 0;
11
11
 
12
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
12
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
13
13
 
14
- var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/slicedToArray"));
14
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
15
15
 
16
- var _core = require("@material-ui/core");
17
-
18
- var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
16
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
19
17
 
20
- var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
18
+ var _react = _interopRequireWildcard(require("react"));
21
19
 
22
- var _styles = require("@material-ui/core/styles");
20
+ var _core = require("@material-ui/core");
23
21
 
24
22
  var _mobxReact = require("mobx-react");
25
23
 
26
24
  var _mobxStateTree = require("mobx-state-tree");
27
25
 
28
- var _react = _interopRequireWildcard(require("react"));
26
+ var _reactSizeme = require("react-sizeme");
27
+
28
+ var _Close = _interopRequireDefault(require("@material-ui/icons/Close"));
29
29
 
30
- var _reactMeasure = require("react-measure");
30
+ var _Menu = _interopRequireDefault(require("@material-ui/icons/Menu"));
31
31
 
32
32
  var _EditableTypography = _interopRequireDefault(require("./EditableTypography"));
33
33
 
34
34
  var _Menu2 = _interopRequireDefault(require("./Menu"));
35
35
 
36
+ 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); }
37
+
38
+ 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; }
39
+
40
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
41
+
42
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
43
+
36
44
  var useStyles = (0, _core.makeStyles)(function (theme) {
37
45
  return {
38
46
  viewContainer: {
@@ -48,7 +56,7 @@ var useStyles = (0, _core.makeStyles)(function (theme) {
48
56
  },
49
57
  iconRoot: {
50
58
  '&:hover': {
51
- backgroundColor: (0, _styles.alpha)(theme.palette.secondary.contrastText, theme.palette.action.hoverOpacity),
59
+ backgroundColor: (0, _core.alpha)(theme.palette.secondary.contrastText, theme.palette.action.hoverOpacity),
52
60
  '@media (hover: none)': {
53
61
  backgroundColor: 'transparent'
54
62
  }
@@ -78,14 +86,14 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
78
86
  IconProps = _ref.IconProps;
79
87
 
80
88
  var _useState = (0, _react.useState)(),
81
- _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
89
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
82
90
  anchorEl = _useState2[0],
83
91
  setAnchorEl = _useState2[1];
84
92
 
85
93
  var menuItems = model.menuItems; // <=1.3.3 didn't use a function
86
94
 
87
95
  var items = typeof menuItems === 'function' ? menuItems() : menuItems;
88
- return items !== null && items !== void 0 && items.length ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement(_core.IconButton, Object.assign({}, IconButtonProps, {
96
+ return items !== null && items !== void 0 && items.length ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_core.IconButton, (0, _extends2.default)({}, IconButtonProps, {
89
97
  "aria-label": "more",
90
98
  "aria-controls": "view-menu",
91
99
  "aria-haspopup": "true",
@@ -93,7 +101,7 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
93
101
  setAnchorEl(event.currentTarget);
94
102
  },
95
103
  "data-testid": "view_menu_icon"
96
- }), /*#__PURE__*/_react["default"].createElement(_Menu["default"], IconProps)), /*#__PURE__*/_react["default"].createElement(_Menu2["default"], {
104
+ }), /*#__PURE__*/_react.default.createElement(_Menu.default, IconProps)), /*#__PURE__*/_react.default.createElement(_Menu2.default, {
97
105
  anchorEl: anchorEl,
98
106
  open: Boolean(anchorEl),
99
107
  onMenuItemClick: function onMenuItemClick(_event, callback) {
@@ -107,28 +115,18 @@ var ViewMenu = (0, _mobxReact.observer)(function (_ref) {
107
115
  })) : null;
108
116
  });
109
117
 
110
- var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.observer)(function (_ref2) {
118
+ var _default = (0, _reactSizeme.withSize)()((0, _mobxReact.observer)(function (_ref2) {
111
119
  var view = _ref2.view,
112
120
  onClose = _ref2.onClose,
113
121
  style = _ref2.style,
114
122
  children = _ref2.children,
115
- contentRect = _ref2.contentRect,
116
- measureRef = _ref2.measureRef;
123
+ width = _ref2.size.width;
117
124
  var classes = useStyles();
118
125
  var theme = (0, _core.useTheme)();
119
126
  var padWidth = theme.spacing(1);
120
- var width = 0;
121
-
122
- if (contentRect.bounds) {
123
- ;
124
- width = contentRect.bounds.width;
125
- }
126
-
127
127
  (0, _react.useEffect)(function () {
128
- if (width) {
129
- if ((0, _mobxStateTree.isAlive)(view)) {
130
- view.setWidth(width - padWidth * 2);
131
- }
128
+ if (width && (0, _mobxStateTree.isAlive)(view)) {
129
+ view.setWidth(width - padWidth * 2);
132
130
  }
133
131
  }, [padWidth, view, width]);
134
132
  var scrollRef = (0, _react.useRef)(null); // scroll the view into view when first mounted
@@ -136,27 +134,24 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
136
134
  // the empty array second param
137
135
 
138
136
  (0, _react.useEffect)(function () {
139
- var _scrollRef$current;
137
+ var _scrollRef$current, _scrollRef$current$sc;
140
138
 
141
- if (scrollRef !== null && scrollRef !== void 0 && (_scrollRef$current = scrollRef.current) !== null && _scrollRef$current !== void 0 && _scrollRef$current.scrollIntoView) {
142
- scrollRef.current.scrollIntoView({
143
- block: 'center'
144
- });
145
- }
139
+ (_scrollRef$current = scrollRef.current) === null || _scrollRef$current === void 0 ? void 0 : (_scrollRef$current$sc = _scrollRef$current.scrollIntoView) === null || _scrollRef$current$sc === void 0 ? void 0 : _scrollRef$current$sc.call(_scrollRef$current, {
140
+ block: 'center'
141
+ });
146
142
  }, []);
147
- return /*#__PURE__*/_react["default"].createElement(_core.Paper, {
143
+ return /*#__PURE__*/_react.default.createElement(_core.Paper, {
148
144
  elevation: 12,
149
- ref: measureRef,
150
145
  className: classes.viewContainer,
151
- style: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, style), {}, {
146
+ style: _objectSpread(_objectSpread({}, style), {}, {
152
147
  padding: "0px ".concat(padWidth, "px ").concat(padWidth, "px")
153
148
  })
154
- }, /*#__PURE__*/_react["default"].createElement("div", {
149
+ }, /*#__PURE__*/_react.default.createElement("div", {
155
150
  ref: scrollRef,
156
151
  style: {
157
152
  display: 'flex'
158
153
  }
159
- }, /*#__PURE__*/_react["default"].createElement(ViewMenu, {
154
+ }, /*#__PURE__*/_react.default.createElement(ViewMenu, {
160
155
  model: view,
161
156
  IconButtonProps: {
162
157
  classes: {
@@ -167,12 +162,12 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
167
162
  IconProps: {
168
163
  className: classes.icon
169
164
  }
170
- }), /*#__PURE__*/_react["default"].createElement("div", {
165
+ }), /*#__PURE__*/_react.default.createElement("div", {
171
166
  className: classes.grow
172
- }), /*#__PURE__*/_react["default"].createElement(_core.Tooltip, {
167
+ }), /*#__PURE__*/_react.default.createElement(_core.Tooltip, {
173
168
  title: "Rename view",
174
169
  arrow: true
175
- }, /*#__PURE__*/_react["default"].createElement(_EditableTypography["default"], {
170
+ }, /*#__PURE__*/_react.default.createElement(_EditableTypography.default, {
176
171
  value: view.displayName || ( // @ts-ignore
177
172
  view.assemblyNames ? // @ts-ignore
178
173
  view.assemblyNames.join(',') : 'Untitled view'),
@@ -186,18 +181,18 @@ var _default = (0, _reactMeasure.withContentRect)('bounds')((0, _mobxReact.obser
186
181
  inputRoot: classes.inputRoot,
187
182
  inputFocused: classes.inputFocused
188
183
  }
189
- })), /*#__PURE__*/_react["default"].createElement("div", {
184
+ })), /*#__PURE__*/_react.default.createElement("div", {
190
185
  className: classes.grow
191
- }), /*#__PURE__*/_react["default"].createElement(_core.IconButton, {
186
+ }), /*#__PURE__*/_react.default.createElement(_core.IconButton, {
192
187
  "data-testid": "close_view",
193
188
  classes: {
194
189
  root: classes.iconRoot
195
190
  },
196
191
  edge: "end",
197
192
  onClick: onClose
198
- }, /*#__PURE__*/_react["default"].createElement(_Close["default"], {
193
+ }, /*#__PURE__*/_react.default.createElement(_Close.default, {
199
194
  className: classes.icon
200
- }))), /*#__PURE__*/_react["default"].createElement(_core.Paper, null, children));
195
+ }))), /*#__PURE__*/_react.default.createElement(_core.Paper, null, children));
201
196
  }));
202
197
 
203
- exports["default"] = _default;
198
+ exports.default = _default;
package/ui/index.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  export * from './theme';
2
2
  export { LogoFull, Logomark } from './Logo';
3
3
  export { default as App } from './App';
4
+ export { default as ErrorMessage } from './ErrorMessage';
4
5
  export { default as FileSelector } from './FileSelector';
5
6
  export { default as PrerenderedCanvas } from './PrerenderedCanvas';
6
7
  export { default as ResizeHandle } from './ResizeHandle';
package/ui/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
6
 
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
@@ -11,6 +11,7 @@ var _exportNames = {
11
11
  LogoFull: true,
12
12
  Logomark: true,
13
13
  App: true,
14
+ ErrorMessage: true,
14
15
  FileSelector: true,
15
16
  PrerenderedCanvas: true,
16
17
  ResizeHandle: true,
@@ -24,31 +25,37 @@ var _exportNames = {
24
25
  Object.defineProperty(exports, "App", {
25
26
  enumerable: true,
26
27
  get: function get() {
27
- return _App["default"];
28
+ return _App.default;
28
29
  }
29
30
  });
30
31
  Object.defineProperty(exports, "EditableTypography", {
31
32
  enumerable: true,
32
33
  get: function get() {
33
- return _EditableTypography["default"];
34
+ return _EditableTypography.default;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "ErrorMessage", {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _ErrorMessage.default;
34
41
  }
35
42
  });
36
43
  Object.defineProperty(exports, "FactoryResetDialog", {
37
44
  enumerable: true,
38
45
  get: function get() {
39
- return _FactoryResetDialog["default"];
46
+ return _FactoryResetDialog.default;
40
47
  }
41
48
  });
42
49
  Object.defineProperty(exports, "FatalErrorDialog", {
43
50
  enumerable: true,
44
51
  get: function get() {
45
- return _FatalErrorDialog["default"];
52
+ return _FatalErrorDialog.default;
46
53
  }
47
54
  });
48
55
  Object.defineProperty(exports, "FileSelector", {
49
56
  enumerable: true,
50
57
  get: function get() {
51
- return _FileSelector["default"];
58
+ return _FileSelector.default;
52
59
  }
53
60
  });
54
61
  Object.defineProperty(exports, "LogoFull", {
@@ -66,31 +73,31 @@ Object.defineProperty(exports, "Logomark", {
66
73
  Object.defineProperty(exports, "Menu", {
67
74
  enumerable: true,
68
75
  get: function get() {
69
- return _Menu["default"];
76
+ return _Menu.default;
70
77
  }
71
78
  });
72
79
  Object.defineProperty(exports, "PrerenderedCanvas", {
73
80
  enumerable: true,
74
81
  get: function get() {
75
- return _PrerenderedCanvas["default"];
82
+ return _PrerenderedCanvas.default;
76
83
  }
77
84
  });
78
85
  Object.defineProperty(exports, "ResizeHandle", {
79
86
  enumerable: true,
80
87
  get: function get() {
81
- return _ResizeHandle["default"];
88
+ return _ResizeHandle.default;
82
89
  }
83
90
  });
84
91
  Object.defineProperty(exports, "SanitizedHTML", {
85
92
  enumerable: true,
86
93
  get: function get() {
87
- return _SanitizedHTML["default"];
94
+ return _SanitizedHTML.default;
88
95
  }
89
96
  });
90
97
  Object.defineProperty(exports, "Tooltip", {
91
98
  enumerable: true,
92
99
  get: function get() {
93
- return _Tooltip["default"];
100
+ return _Tooltip.default;
94
101
  }
95
102
  });
96
103
 
@@ -112,6 +119,8 @@ var _Logo = require("./Logo");
112
119
 
113
120
  var _App = _interopRequireDefault(require("./App"));
114
121
 
122
+ var _ErrorMessage = _interopRequireDefault(require("./ErrorMessage"));
123
+
115
124
  var _FileSelector = _interopRequireDefault(require("./FileSelector"));
116
125
 
117
126
  var _PrerenderedCanvas = _interopRequireDefault(require("./PrerenderedCanvas"));
@@ -140,4 +149,8 @@ Object.keys(_Menu).forEach(function (key) {
140
149
  });
141
150
  });
142
151
 
143
- var _SanitizedHTML = _interopRequireDefault(require("./SanitizedHTML"));
152
+ var _SanitizedHTML = _interopRequireDefault(require("./SanitizedHTML"));
153
+
154
+ 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); }
155
+
156
+ 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; }
package/ui/theme.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
@@ -10,7 +10,7 @@ exports.createJBrowseDefaultProps = createJBrowseDefaultProps;
10
10
  exports.createJBrowseTheme = createJBrowseTheme;
11
11
  exports.jbrowseDefaultPalette = exports.jbrowseBaseTheme = void 0;
12
12
 
13
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
13
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
14
 
15
15
  var _colors = require("@material-ui/core/colors");
16
16
 
@@ -20,6 +20,10 @@ var _createPalette = require("@material-ui/core/styles/createPalette");
20
20
 
21
21
  var _deepmerge = _interopRequireDefault(require("deepmerge"));
22
22
 
23
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24
+
25
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
+
23
27
  var midnight = '#0D233F';
24
28
  var grape = '#721E63';
25
29
  var forest = '#135560';
@@ -111,7 +115,7 @@ createJBrowseDefaultProps() {
111
115
 
112
116
  function createJBrowseDefaultOverrides() {
113
117
  var palette = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
114
- var generatedPalette = (0, _deepmerge["default"])(jbrowseDefaultPalette, palette);
118
+ var generatedPalette = (0, _deepmerge.default)(jbrowseDefaultPalette, palette);
115
119
  return {
116
120
  MuiIconButton: {
117
121
  colorSecondary: {
@@ -197,24 +201,24 @@ function createJBrowseTheme(theme) {
197
201
  }
198
202
 
199
203
  if ((_theme$palette = theme.palette) !== null && _theme$palette !== void 0 && _theme$palette.tertiary) {
200
- theme = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, theme), {}, {
201
- palette: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, theme.palette), {}, {
204
+ theme = _objectSpread(_objectSpread({}, theme), {}, {
205
+ palette: _objectSpread(_objectSpread({}, theme.palette), {}, {
202
206
  tertiary: refTheme.palette.augmentColor(theme.palette.tertiary)
203
207
  })
204
208
  });
205
209
  }
206
210
 
207
211
  if ((_theme$palette2 = theme.palette) !== null && _theme$palette2 !== void 0 && _theme$palette2.quaternary) {
208
- theme = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, theme), {}, {
209
- palette: (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, theme.palette), {}, {
212
+ theme = _objectSpread(_objectSpread({}, theme), {}, {
213
+ palette: _objectSpread(_objectSpread({}, theme.palette), {}, {
210
214
  quaternary: refTheme.palette.augmentColor(theme.palette.quaternary)
211
215
  })
212
216
  });
213
217
  }
214
218
 
215
- theme = (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, theme), {}, {
216
- props: (0, _deepmerge["default"])(createJBrowseDefaultProps(), theme.props || {}),
217
- overrides: (0, _deepmerge["default"])(createJBrowseDefaultOverrides(theme.palette), theme.overrides || {})
219
+ theme = _objectSpread(_objectSpread({}, theme), {}, {
220
+ props: (0, _deepmerge.default)(createJBrowseDefaultProps(), theme.props || {}),
221
+ overrides: (0, _deepmerge.default)(createJBrowseDefaultOverrides(theme.palette), theme.overrides || {})
218
222
  });
219
- return (0, _styles.createTheme)((0, _deepmerge["default"])(jbrowseBaseTheme, theme));
223
+ return (0, _styles.createTheme)((0, _deepmerge.default)(jbrowseBaseTheme, theme));
220
224
  }
@@ -36,18 +36,6 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
36
36
  readonly maxOffset: number;
37
37
  readonly minOffset: number;
38
38
  readonly totalBp: number;
39
- /**
40
- * calculates the Px at which coord is found.
41
- *
42
- * @param refName - string, refName of region
43
- * @param coord - number, bp to be translated to Px
44
- * @param regionNumber - number, index of displayedRegion in displayedRegions array
45
- */
46
- bpToPx({ refName, coord, regionNumber, }: {
47
- refName: string;
48
- coord: number;
49
- regionNumber?: number | undefined;
50
- }): number | undefined;
51
39
  pxToBp(px: number): {
52
40
  oob: boolean;
53
41
  coord: number;
@@ -72,6 +60,18 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
72
60
  readonly dynamicBlocks: import("./blockTypes").BlockSet;
73
61
  readonly staticBlocks: import("./blockTypes").BlockSet;
74
62
  readonly currBp: number;
63
+ /**
64
+ * calculates the Px at which coord is found.
65
+ *
66
+ * @param refName - string, refName of region
67
+ * @param coord - number, bp to be translated to Px
68
+ * @param regionNumber - number, index of displayedRegion in displayedRegions array
69
+ */
70
+ bpToPx({ refName, coord, regionNumber, }: {
71
+ refName: string;
72
+ coord: number;
73
+ regionNumber?: number | undefined;
74
+ }): number | undefined;
75
75
  } & {
76
76
  setFeatures(features: Feature[]): void;
77
77
  zoomToDisplayedRegions(leftPx: BpOffset | undefined, rightPx: BpOffset | undefined): void;
@@ -87,6 +87,8 @@ declare const Base1DView: import("mobx-state-tree").IModelType<{
87
87
  zoomOut(): void;
88
88
  zoomIn(): void;
89
89
  zoomTo(newBpPerPx: number, offset?: number): void;
90
+ scrollTo(offsetPx: number): number;
91
+ centerAt(bp: number, refName: string, regionIndex: number): void;
90
92
  scroll(distance: number): number;
91
93
  }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
92
94
  export declare type Base1DViewStateModel = typeof Base1DView;
@@ -1,13 +1,13 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = void 0;
8
+ exports.default = void 0;
9
9
 
10
- var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/esm/objectSpread2"));
10
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
11
 
12
12
  var _mobxStateTree = require("mobx-state-tree");
13
13
 
@@ -19,13 +19,17 @@ var _calculateDynamicBlocks = _interopRequireDefault(require("./calculateDynamic
19
19
 
20
20
  var _calculateStaticBlocks = _interopRequireDefault(require("./calculateStaticBlocks"));
21
21
 
22
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
23
+
24
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25
+
22
26
  var Base1DView = _mobxStateTree.types.model('Base1DView', {
23
27
  displayedRegions: _mobxStateTree.types.array(_mst.Region),
24
28
  bpPerPx: 0,
25
29
  offsetPx: 0,
26
30
  interRegionPaddingWidth: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0),
27
31
  minimumBlockWidth: _mobxStateTree.types.optional(_mobxStateTree.types.number, 0)
28
- })["volatile"](function () {
32
+ }).volatile(function () {
29
33
  return {
30
34
  features: undefined,
31
35
  volatileWidth: 0
@@ -72,50 +76,6 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
72
76
  }, 0);
73
77
  },
74
78
 
75
- /**
76
- * calculates the Px at which coord is found.
77
- *
78
- * @param refName - string, refName of region
79
- * @param coord - number, bp to be translated to Px
80
- * @param regionNumber - number, index of displayedRegion in displayedRegions array
81
- */
82
- bpToPx: function bpToPx(_ref) {
83
- var _this = this;
84
-
85
- var refName = _ref.refName,
86
- coord = _ref.coord,
87
- regionNumber = _ref.regionNumber;
88
- var offsetBp = 0;
89
- var interRegionPaddingBp = self.interRegionPaddingWidth * self.bpPerPx;
90
- var minimumBlockBp = self.minimumBlockWidth * self.bpPerPx;
91
- var index = self.displayedRegions.findIndex(function (region, idx) {
92
- var len = region.end - region.start;
93
-
94
- if (refName === region.refName && coord >= region.start && coord <= region.end) {
95
- if (regionNumber ? regionNumber === idx : true) {
96
- offsetBp += region.reversed ? region.end - coord : coord - region.start;
97
- return true;
98
- }
99
- } // add the interRegionPaddingWidth if the boundary is in the screen
100
- // e.g. offset>0 && offset<width
101
-
102
-
103
- if (region.end - region.start > minimumBlockBp && offsetBp / self.bpPerPx > 0 && offsetBp / self.bpPerPx < _this.width) {
104
- offsetBp += len + interRegionPaddingBp;
105
- } else {
106
- offsetBp += len;
107
- }
108
-
109
- return false;
110
- });
111
- var foundRegion = self.displayedRegions[index];
112
-
113
- if (foundRegion) {
114
- return Math.round(offsetBp / self.bpPerPx);
115
- }
116
-
117
- return undefined;
118
- },
119
79
  pxToBp: function pxToBp(px) {
120
80
  var bpSoFar = 0;
121
81
  var bp = (self.offsetPx + px) * self.bpPerPx;
@@ -124,7 +84,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
124
84
  if (bp < 0) {
125
85
  var region = self.displayedRegions[0];
126
86
  var offset = bp;
127
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _mobxStateTree.getSnapshot)(region)), {}, {
87
+ return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(region)), {}, {
128
88
  oob: true,
129
89
  coord: region.reversed ? Math.floor(region.end - offset) + 1 : Math.floor(region.start + offset) + 1,
130
90
  offset: offset,
@@ -142,7 +102,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
142
102
  var _offset = bp - bpSoFar;
143
103
 
144
104
  if (len + bpSoFar > bp && bpSoFar <= bp) {
145
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _mobxStateTree.getSnapshot)(_region)), {}, {
105
+ return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region)), {}, {
146
106
  oob: false,
147
107
  offset: _offset,
148
108
  coord: _region.reversed ? Math.floor(_region.end - _offset) + 1 : Math.floor(_region.start + _offset) + 1,
@@ -166,7 +126,7 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
166
126
 
167
127
  var _offset2 = bp - bpSoFar + _len;
168
128
 
169
- return (0, _objectSpread2["default"])((0, _objectSpread2["default"])({}, (0, _mobxStateTree.getSnapshot)(_region2)), {}, {
129
+ return _objectSpread(_objectSpread({}, (0, _mobxStateTree.getSnapshot)(_region2)), {}, {
170
130
  oob: true,
171
131
  offset: _offset2,
172
132
  coord: _region2.reversed ? Math.floor(_region2.end - _offset2) + 1 : Math.floor(_region2.start + _offset2) + 1,
@@ -189,11 +149,11 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
189
149
  }).views(function (self) {
190
150
  return {
191
151
  get dynamicBlocks() {
192
- return (0, _calculateDynamicBlocks["default"])(self);
152
+ return (0, _calculateDynamicBlocks.default)(self);
193
153
  },
194
154
 
195
155
  get staticBlocks() {
196
- return (0, _calculateStaticBlocks["default"])(self);
156
+ return (0, _calculateStaticBlocks.default)(self);
197
157
  },
198
158
 
199
159
  get currBp() {
@@ -202,8 +162,28 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
202
162
  }).reduce(function (a, b) {
203
163
  return a + b;
204
164
  }, 0);
205
- }
165
+ },
206
166
 
167
+ /**
168
+ * calculates the Px at which coord is found.
169
+ *
170
+ * @param refName - string, refName of region
171
+ * @param coord - number, bp to be translated to Px
172
+ * @param regionNumber - number, index of displayedRegion in displayedRegions array
173
+ */
174
+ bpToPx: function bpToPx(_ref) {
175
+ var _viewBpToPx;
176
+
177
+ var refName = _ref.refName,
178
+ coord = _ref.coord,
179
+ regionNumber = _ref.regionNumber;
180
+ return (_viewBpToPx = (0, _index.viewBpToPx)({
181
+ refName: refName,
182
+ coord: coord,
183
+ regionNumber: regionNumber,
184
+ self: self
185
+ })) === null || _viewBpToPx === void 0 ? void 0 : _viewBpToPx.offsetPx;
186
+ }
207
187
  };
208
188
  }).actions(function (self) {
209
189
  return {
@@ -311,6 +291,22 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
311
291
 
312
292
  self.offsetPx = (0, _index.clamp)(Math.round((self.offsetPx + offset) * oldBpPerPx / bpPerPx - offset), self.minOffset, self.maxOffset);
313
293
  },
294
+ scrollTo: function scrollTo(offsetPx) {
295
+ var newOffsetPx = (0, _index.clamp)(offsetPx, self.minOffset, self.maxOffset);
296
+ self.offsetPx = newOffsetPx;
297
+ return newOffsetPx;
298
+ },
299
+ centerAt: function centerAt(bp, refName, regionIndex) {
300
+ var centerPx = self.bpToPx({
301
+ refName: refName,
302
+ coord: bp,
303
+ regionNumber: regionIndex
304
+ });
305
+
306
+ if (centerPx) {
307
+ this.scrollTo(Math.round(centerPx - self.width / 2));
308
+ }
309
+ },
314
310
  scroll: function scroll(distance) {
315
311
  var oldOffsetPx = self.offsetPx; // the scroll is clamped to keep the linear genome on the main screen
316
312
 
@@ -322,4 +318,4 @@ var Base1DView = _mobxStateTree.types.model('Base1DView', {
322
318
  });
323
319
 
324
320
  var _default = Base1DView;
325
- exports["default"] = _default;
321
+ exports.default = _default;