@jbrowse/core 1.5.1 → 1.5.2

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 (80) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.js +2 -1
  2. package/BaseFeatureWidget/SequenceFeatureDetails.js +1 -1
  3. package/BaseFeatureWidget/index.js +1 -1
  4. package/BaseFeatureWidget/util.js +3 -3
  5. package/PluginLoader.d.ts +25 -2
  6. package/PluginLoader.js +335 -48
  7. package/PluginManager.d.ts +1 -0
  8. package/ReExports/list.js +1 -1
  9. package/ReExports/material-ui-colors.js +38 -38
  10. package/ReExports/modules.d.ts +2 -0
  11. package/ReExports/modules.js +3 -0
  12. package/TextSearch/BaseResults.js +1 -1
  13. package/assemblyManager/assembly.js +5 -3
  14. package/assemblyManager/index.js +4 -4
  15. package/configuration/configurationSchema.js +4 -2
  16. package/configuration/configurationSlot.js +3 -1
  17. package/configuration/index.js +4 -4
  18. package/configuration/util.js +2 -2
  19. package/data_adapters/BaseAdapter.d.ts +1 -1
  20. package/data_adapters/BaseAdapter.js +5 -5
  21. package/data_adapters/CytobandAdapter.js +4 -2
  22. package/data_adapters/dataAdapterCache.js +2 -2
  23. package/package.json +5 -4
  24. package/pluggableElementTypes/RpcMethodType.js +2 -2
  25. package/pluggableElementTypes/index.d.ts +2 -1
  26. package/pluggableElementTypes/index.js +37 -14
  27. package/pluggableElementTypes/models/BaseTrackModel.js +2 -1
  28. package/pluggableElementTypes/models/BaseViewModel.js +6 -2
  29. package/pluggableElementTypes/models/InternetAccountModel.d.ts +2 -2
  30. package/pluggableElementTypes/models/index.js +14 -14
  31. package/pluggableElementTypes/renderers/BoxRendererType.js +3 -3
  32. package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +1 -1
  33. package/pluggableElementTypes/renderers/FeatureRendererType.js +1 -1
  34. package/pluggableElementTypes/renderers/RendererType.js +3 -1
  35. package/pluggableElementTypes/renderers/index.d.ts +2 -1
  36. package/rpc/BaseRpcDriver.js +1 -1
  37. package/rpc/BaseRpcDriver.test.js +3 -3
  38. package/rpc/MainThreadRpcDriver.js +2 -2
  39. package/rpc/RpcManager.d.ts +1 -1
  40. package/rpc/RpcManager.js +44 -16
  41. package/rpc/WebWorkerRpcDriver.js +5 -5
  42. package/rpc/coreRpcMethods.js +3 -3
  43. package/rpc/remoteAbortSignals.js +2 -2
  44. package/ui/App.js +2 -0
  45. package/ui/DrawerWidget.js +1 -0
  46. package/ui/Icons.js +4 -4
  47. package/ui/Logo.js +1 -1
  48. package/ui/PrerenderedCanvas.d.ts +1 -0
  49. package/ui/PrerenderedCanvas.js +4 -1
  50. package/ui/SanitizedHTML.js +1 -1
  51. package/ui/SnackbarModel.d.ts +16 -0
  52. package/ui/SnackbarModel.js +56 -0
  53. package/ui/ViewContainer.js +2 -1
  54. package/ui/index.js +24 -24
  55. package/ui/theme.js +5 -3
  56. package/util/aborting.js +4 -3
  57. package/util/blockTypes.js +1 -1
  58. package/util/color/cssColorsLevel4.js +1 -1
  59. package/util/color/index.js +5 -5
  60. package/util/index.d.ts +2 -1
  61. package/util/index.js +61 -32
  62. package/util/io/RemoteFileWithRangeCache.js +3 -3
  63. package/util/io/index.js +1 -1
  64. package/util/jexl.js +4 -1
  65. package/util/layouts/BaseLayout.d.ts +3 -0
  66. package/util/layouts/GranularRectLayout.d.ts +19 -10
  67. package/util/layouts/GranularRectLayout.js +459 -100
  68. package/util/layouts/GranularRectLayout.test.js +57 -10
  69. package/util/layouts/PrecomputedLayout.js +2 -1
  70. package/util/layouts/index.d.ts +7 -0
  71. package/util/layouts/index.js +68 -0
  72. package/util/mst-reflection.js +3 -3
  73. package/util/offscreenCanvasPonyfill.js +3 -3
  74. package/util/range.js +1 -1
  75. package/util/simpleFeature.js +1 -1
  76. package/util/stats.js +2 -2
  77. package/util/tracks.js +10 -10
  78. package/util/types/index.d.ts +7 -1
  79. package/util/types/index.js +10 -10
  80. package/util/types/mst.js +1 -1
package/util/aborting.js CHANGED
@@ -5,11 +5,11 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.checkAbortSignal = checkAbortSignal;
9
8
  exports.abortBreakPoint = abortBreakPoint;
9
+ exports.checkAbortSignal = checkAbortSignal;
10
+ exports.isAbortException = isAbortException;
10
11
  exports.makeAbortError = makeAbortError;
11
12
  exports.observeAbortSignal = observeAbortSignal;
12
- exports.isAbortException = isAbortException;
13
13
 
14
14
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
15
15
 
@@ -145,7 +145,8 @@ function observeAbortSignal(signal) {
145
145
 
146
146
 
147
147
  function isAbortException(exception) {
148
- return exception instanceof Error && (exception.name === 'AbortError' || // standard-ish non-DOM abort exception
148
+ return exception instanceof Error && ( // DOMException
149
+ exception.name === 'AbortError' || // standard-ish non-DOM abort exception
149
150
  exception.code === 'ERR_ABORTED' || // message contains aborted for bubbling through RPC
150
151
  // things we have seen that we want to catch here
151
152
  // Error: aborted
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.InterRegionPaddingBlock = exports.ElidedBlock = exports.ContentBlock = exports.BaseBlock = exports.BlockSet = void 0;
8
+ exports.InterRegionPaddingBlock = exports.ElidedBlock = exports.ContentBlock = exports.BlockSet = exports.BaseBlock = void 0;
9
9
 
10
10
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
11
11
 
@@ -3,8 +3,8 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.namedColorToHex = namedColorToHex;
7
6
  exports.isNamedColor = isNamedColor;
7
+ exports.namedColorToHex = namedColorToHex;
8
8
  // from https://www.w3.org/TR/css-color-4/#named-colors
9
9
  var colors = {
10
10
  aliceblue: '#F0F8FF',
@@ -5,17 +5,17 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.contrastingTextColor = contrastingTextColor;
7
7
  exports.emphasize = emphasize;
8
- exports.makeContrasting = makeContrasting;
9
- Object.defineProperty(exports, "namedColorToHex", {
8
+ Object.defineProperty(exports, "isNamedColor", {
10
9
  enumerable: true,
11
10
  get: function get() {
12
- return _cssColorsLevel.namedColorToHex;
11
+ return _cssColorsLevel.isNamedColor;
13
12
  }
14
13
  });
15
- Object.defineProperty(exports, "isNamedColor", {
14
+ exports.makeContrasting = makeContrasting;
15
+ Object.defineProperty(exports, "namedColorToHex", {
16
16
  enumerable: true,
17
17
  get: function get() {
18
- return _cssColorsLevel.isNamedColor;
18
+ return _cssColorsLevel.namedColorToHex;
19
19
  }
20
20
  });
21
21
 
package/util/index.d.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import { IAnyStateTreeNode } from 'mobx-state-tree';
2
2
  import { IReactionPublic, IReactionOptions } from 'mobx';
3
- import { Feature } from './simpleFeature';
3
+ import SimpleFeature, { Feature, isFeature } from './simpleFeature';
4
4
  import { TypeTestedByPredicate, Region, AssemblyManager } from './types';
5
5
  export * from './types';
6
6
  export * from './aborting';
7
7
  export * from './when';
8
8
  export * from './range';
9
+ export { SimpleFeature, isFeature };
9
10
  export * from './offscreenCanvasPonyfill';
10
11
  export * from './offscreenCanvasUtils';
11
12
  export declare const inDevelopment: boolean;
package/util/index.js CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
4
 
5
+ var _typeof3 = require("@babel/runtime/helpers/typeof");
6
+
5
7
  Object.defineProperty(exports, "__esModule", {
6
8
  value: true
7
9
  });
@@ -51,51 +53,68 @@ var _exportNames = {
51
53
  generateCodonTable: true,
52
54
  updateStatus: true,
53
55
  hashCode: true,
54
- objectHash: true
56
+ objectHash: true,
57
+ SimpleFeature: true,
58
+ isFeature: true
55
59
  };
56
- exports.useDebounce = useDebounce;
57
- exports.useDebouncedCallback = useDebouncedCallback;
58
- exports.findParentThat = findParentThat;
59
- exports.springAnimate = springAnimate;
60
- exports.findParentThatIs = findParentThatIs;
61
- exports.getSession = getSession;
62
- exports.getContainingView = getContainingView;
63
- exports.getContainingTrack = getContainingTrack;
64
- exports.getContainingDisplay = getContainingDisplay;
60
+ Object.defineProperty(exports, "SimpleFeature", {
61
+ enumerable: true,
62
+ get: function get() {
63
+ return _simpleFeature.default;
64
+ }
65
+ });
65
66
  exports.assembleLocString = assembleLocString;
66
- exports.parseLocStringOneBased = parseLocStringOneBased;
67
- exports.parseLocString = parseLocString;
68
- exports.compareLocs = compareLocs;
69
- exports.compareLocStrings = compareLocStrings;
70
- exports.clamp = clamp;
67
+ exports.blobToDataURL = blobToDataURL;
68
+ exports.bpSpanPx = bpSpanPx;
71
69
  exports.bpToPx = bpToPx;
72
- exports.radToDeg = radToDeg;
73
- exports.degToRad = degToRad;
74
- exports.polarToCartesian = polarToCartesian;
75
70
  exports.cartesianToPolar = cartesianToPolar;
71
+ exports.clamp = clamp;
72
+ exports.compareLocStrings = compareLocStrings;
73
+ exports.compareLocs = compareLocs;
74
+ exports.defaultStops = exports.defaultStarts = exports.defaultCodonTable = exports.complement = void 0;
75
+ exports.degToRad = degToRad;
76
76
  exports.featureSpanPx = featureSpanPx;
77
- exports.bpSpanPx = bpSpanPx;
78
- exports.iterMap = iterMap;
79
- exports.mergeConfigs = mergeConfigs;
80
77
  exports.findLastIndex = findLastIndex;
78
+ exports.findParentThat = findParentThat;
79
+ exports.findParentThatIs = findParentThatIs;
80
+ exports.generateCodonTable = generateCodonTable;
81
+ exports.getContainingDisplay = getContainingDisplay;
82
+ exports.getContainingTrack = getContainingTrack;
83
+ exports.getContainingView = getContainingView;
84
+ exports.getSession = getSession;
85
+ exports.hashCode = hashCode;
86
+ exports.isElectron = exports.inProduction = exports.inDevelopment = void 0;
87
+ Object.defineProperty(exports, "isFeature", {
88
+ enumerable: true,
89
+ get: function get() {
90
+ return _simpleFeature.isFeature;
91
+ }
92
+ });
93
+ exports.iterMap = iterMap;
81
94
  exports.makeAbortableReaction = makeAbortableReaction;
95
+ exports.measureText = measureText;
96
+ exports.mergeConfigs = mergeConfigs;
97
+ exports.minmax = minmax;
98
+ exports.objectFromEntries = void 0;
99
+ exports.objectHash = objectHash;
100
+ exports.parseLocString = parseLocString;
101
+ exports.parseLocStringOneBased = parseLocStringOneBased;
102
+ exports.polarToCartesian = polarToCartesian;
103
+ exports.rIC = void 0;
104
+ exports.radToDeg = radToDeg;
82
105
  exports.renameRegionIfNeeded = renameRegionIfNeeded;
83
106
  exports.renameRegionsIfNeeded = renameRegionsIfNeeded;
84
- exports.minmax = minmax;
85
- exports.stringify = stringify;
86
107
  exports.revcom = revcom;
87
- exports.blobToDataURL = blobToDataURL;
88
- exports.measureText = measureText;
89
- exports.generateCodonTable = generateCodonTable;
108
+ exports.springAnimate = springAnimate;
109
+ exports.stringify = stringify;
90
110
  exports.updateStatus = updateStatus;
91
- exports.hashCode = hashCode;
92
- exports.objectHash = objectHash;
93
- exports.defaultCodonTable = exports.defaultStops = exports.defaultStarts = exports.rIC = exports.complement = exports.isElectron = exports.objectFromEntries = exports.inProduction = exports.inDevelopment = void 0;
94
-
95
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
111
+ exports.useDebounce = useDebounce;
112
+ exports.useDebouncedCallback = useDebouncedCallback;
96
113
 
97
114
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
98
115
 
116
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
117
+
99
118
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
100
119
 
101
120
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
@@ -114,6 +133,8 @@ var _react = require("react");
114
133
 
115
134
  var _deepmerge = _interopRequireDefault(require("deepmerge"));
116
135
 
136
+ var _simpleFeature = _interopRequireWildcard(require("./simpleFeature"));
137
+
117
138
  var _types = require("./types");
118
139
 
119
140
  Object.keys(_types).forEach(function (key) {
@@ -198,6 +219,10 @@ Object.keys(_offscreenCanvasUtils).forEach(function (key) {
198
219
  });
199
220
  });
200
221
 
222
+ 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); }
223
+
224
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(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; }
225
+
201
226
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
202
227
 
203
228
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
@@ -273,7 +298,11 @@ function useDebouncedCallback(callback) {
273
298
 
274
299
 
275
300
  function findParentThat(node, predicate) {
276
- var currentNode = node;
301
+ if (!(0, _mobxStateTree.hasParent)(node)) {
302
+ throw new Error('node does not have parent');
303
+ }
304
+
305
+ var currentNode = (0, _mobxStateTree.getParent)(node);
277
306
 
278
307
  while (currentNode && (0, _mobxStateTree.isAlive)(currentNode)) {
279
308
  if (predicate(currentNode)) {
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.clearCache = clearCache;
9
8
  exports.RemoteFileWithRangeCache = void 0;
10
-
11
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
+ exports.clearCache = clearCache;
12
10
 
13
11
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
12
 
13
+ var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
14
+
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
16
16
 
17
17
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
package/util/io/index.js CHANGED
@@ -5,13 +5,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.openLocation = openLocation;
9
8
  Object.defineProperty(exports, "RemoteFileWithRangeCache", {
10
9
  enumerable: true,
11
10
  get: function get() {
12
11
  return _RemoteFileWithRangeCache.RemoteFileWithRangeCache;
13
12
  }
14
13
  });
14
+ exports.openLocation = openLocation;
15
15
 
16
16
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
17
17
 
package/util/jexl.js CHANGED
@@ -9,7 +9,9 @@ exports.default = _default;
9
9
 
10
10
  var _jexl = _interopRequireDefault(require("jexl"));
11
11
 
12
- function _default() {
12
+ function
13
+ /* config?: any*/
14
+ _default() {
13
15
  var j = new _jexl.default.Jexl(); // someday will make sure all of configs callbacks are added in, including
14
16
  // ones passed in
15
17
  // below are core functions
@@ -40,6 +42,7 @@ function _default() {
40
42
  j.addFunction('floor', Math.floor);
41
43
  j.addFunction('round', Math.round);
42
44
  j.addFunction('abs', Math.abs);
45
+ j.addFunction('log10', Math.log10);
43
46
  j.addFunction('parseInt', Number.parseInt);
44
47
  j.addFunction('parseFloat', Number.parseFloat); // string
45
48
 
@@ -10,11 +10,14 @@ export interface Rectangle<T> {
10
10
  r: number;
11
11
  top: number | null;
12
12
  h: number;
13
+ originalHeight: number;
13
14
  data?: Record<string, T>;
14
15
  }
15
16
  export interface BaseLayout<T> {
16
17
  addRect(id: string, left: number, right: number, height: number, data?: Record<string, T>): number | null;
17
18
  collides(rect: Rectangle<T>, top: number): boolean;
19
+ addRectToBitmap(rect: Rectangle<T>, data: Record<string, T>): void;
20
+ getRectangles(): Map<string, RectTuple>;
18
21
  discardRange(left: number, right: number): void;
19
22
  serializeRegion(region: {
20
23
  start: number;
@@ -1,38 +1,47 @@
1
- import { RectTuple, SerializedLayout, BaseLayout } from './BaseLayout';
1
+ import { RectTuple, SerializedLayout, Rectangle, BaseLayout } from './BaseLayout';
2
2
  export default class GranularRectLayout<T> implements BaseLayout<T> {
3
+ private pitchX;
4
+ private pitchY;
5
+ private hardRowLimit;
6
+ private bitmap;
3
7
  private rectangles;
4
8
  maxHeightReached: boolean;
5
9
  private maxHeight;
6
- private rbush;
7
- private spacing;
10
+ private displayMode;
8
11
  private pTotalHeight;
9
- private pitchX;
10
- constructor({ maxHeight, spacing, pitchX, }?: {
11
- maxHeight?: number;
12
- spacing?: number;
12
+ constructor({ pitchX, pitchY, maxHeight, hardRowLimit, displayMode, }?: {
13
13
  pitchX?: number;
14
+ pitchY?: number;
15
+ maxHeight?: number;
16
+ displayMode?: string;
17
+ hardRowLimit?: number;
14
18
  });
15
19
  /**
16
20
  * @returns top position for the rect, or Null if laying
17
21
  * out the rect would exceed maxHeight
18
22
  */
19
23
  addRect(id: string, left: number, right: number, height: number, data?: Record<string, T>): number | null;
20
- collides(): boolean;
24
+ collides(rect: Rectangle<T>, top: number): boolean;
25
+ /**
26
+ * make a subarray if it does not exist
27
+ */
28
+ private autovivifyRow;
29
+ addRectToBitmap(rect: Rectangle<T>): void;
21
30
  /**
22
31
  * Given a range of X coordinates, deletes all data dealing with
23
32
  * the features.
24
33
  */
25
- discardRange(): void;
34
+ discardRange(left: number, right: number): void;
26
35
  hasSeen(id: string): boolean;
27
36
  getByCoord(x: number, y: number): Record<string, T> | string | undefined;
28
37
  getByID(id: string): RectTuple | undefined;
29
38
  cleanup(): void;
30
39
  getTotalHeight(): number;
31
40
  get totalHeight(): number;
41
+ getRectangles(): Map<string, RectTuple>;
32
42
  serializeRegion(region: {
33
43
  start: number;
34
44
  end: number;
35
45
  }): SerializedLayout;
36
- getRectangles(): Map<string, RectTuple>;
37
46
  toJSON(): SerializedLayout;
38
47
  }