@jbrowse/core 2.4.0 → 2.4.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 (101) hide show
  1. package/BaseFeatureWidget/BaseFeatureDetail.d.ts +1 -3
  2. package/BaseFeatureWidget/BaseFeatureDetail.js +13 -9
  3. package/BaseFeatureWidget/SequenceFeatureDetails.js +3 -10
  4. package/BaseFeatureWidget/SequencePanel.js +1 -1
  5. package/BaseFeatureWidget/index.d.ts +1 -1
  6. package/BaseFeatureWidget/index.js +8 -11
  7. package/PluginLoader.js +8 -8
  8. package/PluginManager.d.ts +2 -4
  9. package/PluginManager.js +2 -3
  10. package/ReExports/Attributes.d.ts +1 -2
  11. package/ReExports/Attributes.js +4 -3
  12. package/ReExports/BaseCard.d.ts +1 -2
  13. package/ReExports/BaseCard.js +4 -3
  14. package/ReExports/DataGrid.d.ts +1 -2
  15. package/ReExports/DataGrid.js +2 -2
  16. package/ReExports/FeatureDetails.d.ts +1 -2
  17. package/ReExports/FeatureDetails.js +4 -3
  18. package/ReExports/index.d.ts +1 -2
  19. package/ReExports/index.js +3 -2
  20. package/ReExports/modules.d.ts +2 -4
  21. package/ReExports/modules.js +2 -2
  22. package/assemblyManager/assembly.js +5 -5
  23. package/assemblyManager/assemblyConfigSchema.js +2 -2
  24. package/configuration/configurationSchema.d.ts +3 -1
  25. package/configuration/configurationSchema.js +1 -1
  26. package/configuration/configurationSlot.d.ts +1 -0
  27. package/configuration/util.js +1 -1
  28. package/data_adapters/BaseAdapter.js +1 -1
  29. package/data_adapters/CytobandAdapter/CytobandAdapter.js +1 -1
  30. package/data_adapters/dataAdapterCache.d.ts +3 -2
  31. package/data_adapters/dataAdapterCache.js +2 -3
  32. package/package.json +2 -3
  33. package/pluggableElementTypes/RpcMethodType.js +1 -1
  34. package/pluggableElementTypes/index.d.ts +11 -1
  35. package/pluggableElementTypes/index.js +23 -23
  36. package/pluggableElementTypes/models/BaseConnectionModelFactory.js +2 -2
  37. package/pluggableElementTypes/models/BaseTrackModel.js +8 -13
  38. package/pluggableElementTypes/models/baseTrackConfig.js +1 -1
  39. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +2 -2
  40. package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +1 -3
  41. package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +1 -1
  42. package/pluggableElementTypes/renderers/index.d.ts +7 -9
  43. package/pluggableElementTypes/renderers/index.js +15 -15
  44. package/pluggableElementTypes/renderers/util/serializableFilterChain.js +1 -1
  45. package/rpc/BaseRpcDriver.js +7 -8
  46. package/rpc/WebWorkerRpcDriver.js +18 -12
  47. package/rpc/coreRpcMethods.d.ts +9 -11
  48. package/rpc/coreRpcMethods.js +17 -17
  49. package/rpc/methods/CoreGetFeatureDetails.js +1 -1
  50. package/rpc/methods/util.d.ts +2 -2
  51. package/rpc/methods/util.js +2 -2
  52. package/rpc/remoteAbortSignals.js +0 -1
  53. package/tsconfig.build.tsbuildinfo +1 -1
  54. package/ui/App.js +1 -1
  55. package/ui/AppLogo.js +1 -6
  56. package/ui/ColorPicker.js +1 -1
  57. package/ui/Dialog.js +1 -1
  58. package/ui/DrawerWidget.js +4 -4
  59. package/ui/EditableTypography.js +1 -1
  60. package/ui/FileSelector/FileSelector.d.ts +2 -2
  61. package/ui/FileSelector/FileSelector.js +24 -35
  62. package/ui/FileSelector/index.d.ts +1 -2
  63. package/ui/FileSelector/index.js +3 -2
  64. package/ui/LoadingEllipses.js +4 -4
  65. package/ui/Menu.js +45 -32
  66. package/ui/ResizeBar.js +6 -1
  67. package/ui/ResizeHandle.js +3 -6
  68. package/ui/ViewContainer.d.ts +2 -3
  69. package/ui/ViewContainer.js +7 -41
  70. package/ui/ViewContainerTitle.d.ts +6 -0
  71. package/ui/ViewContainerTitle.js +42 -0
  72. package/ui/theme.js +7 -7
  73. package/util/Base1DUtils.js +16 -14
  74. package/util/Base1DViewModel.d.ts +1 -1
  75. package/util/Base1DViewModel.js +9 -8
  76. package/util/aborting.js +1 -1
  77. package/util/analytics.js +1 -1
  78. package/util/blockTypes.js +10 -10
  79. package/util/color/index.d.ts +1 -2
  80. package/util/color/index.js +4 -3
  81. package/util/idMaker.js +5 -8
  82. package/util/index.d.ts +11 -9
  83. package/util/index.js +42 -50
  84. package/util/io/RemoteFileWithRangeCache.js +2 -2
  85. package/util/io/index.d.ts +4 -3
  86. package/util/io/index.js +14 -9
  87. package/util/jexl.js +3 -1
  88. package/util/layouts/GranularRectLayout.js +10 -4
  89. package/util/layouts/MultiLayout.js +1 -1
  90. package/util/layouts/SceneGraph.js +3 -7
  91. package/util/mst-reflection.d.ts +12 -17
  92. package/util/mst-reflection.js +13 -12
  93. package/util/offscreenCanvasPonyfill.js +4 -3
  94. package/util/offscreenCanvasUtils.js +1 -0
  95. package/util/tracks.d.ts +1 -1
  96. package/util/tracks.js +0 -1
  97. package/util/types/index.d.ts +2 -1
  98. package/util/types/index.js +3 -3
  99. package/util/types/mst.js +3 -3
  100. package/util/useMeasure.d.ts +5 -0
  101. package/util/useMeasure.js +34 -0
@@ -64,7 +64,7 @@ class LayoutRow {
64
64
  offset: left - rectWidth,
65
65
  min: left,
66
66
  max: right,
67
- bits: new Array(3 * rectWidth),
67
+ bits: Array.from({ length: 3 * rectWidth }),
68
68
  };
69
69
  }
70
70
  addRect(rect, data) {
@@ -85,7 +85,10 @@ class LayoutRow {
85
85
  this.rowState = this.initialize(left, right);
86
86
  }
87
87
  else if (additionalLength > 0) {
88
- this.rowState.bits = this.rowState.bits.concat(new Array(additionalLength));
88
+ this.rowState.bits = [
89
+ ...this.rowState.bits,
90
+ ...Array.from({ length: additionalLength }),
91
+ ];
89
92
  }
90
93
  }
91
94
  // expand leftward if necessary
@@ -97,7 +100,10 @@ class LayoutRow {
97
100
  this.rowState = this.initialize(left, right);
98
101
  }
99
102
  else {
100
- this.rowState.bits = new Array(additionalLength).concat(this.rowState.bits);
103
+ this.rowState.bits = [
104
+ ...Array.from({ length: additionalLength }),
105
+ ...this.rowState.bits,
106
+ ];
101
107
  this.rowState.offset -= additionalLength;
102
108
  }
103
109
  }
@@ -370,7 +376,7 @@ class GranularRectLayout {
370
376
  return this.getTotalHeight();
371
377
  }
372
378
  getRectangles() {
373
- return new Map(Array.from(this.rectangles.entries()).map(([id, rect]) => {
379
+ return new Map([...this.rectangles.entries()].map(([id, rect]) => {
374
380
  const { l, r, originalHeight, top } = rect;
375
381
  const t = (top || 0) * this.pitchY;
376
382
  const b = t + originalHeight;
@@ -13,7 +13,7 @@ class MultiLayout {
13
13
  }
14
14
  getDataByID(id) {
15
15
  for (const layout of this.subLayouts.values()) {
16
- // @ts-ignore
16
+ // @ts-expect-error
17
17
  const r = layout.getDataByID(id);
18
18
  if (r) {
19
19
  return r;
@@ -32,13 +32,9 @@ class SceneGraph {
32
32
  addChild(nameOrSceneGraph, left, top, width, height,
33
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
34
34
  data) {
35
- let child;
36
- if (nameOrSceneGraph instanceof SceneGraph) {
37
- child = nameOrSceneGraph;
38
- }
39
- else {
40
- child = new SceneGraph(nameOrSceneGraph, left, top, width, height, data);
41
- }
35
+ const child = nameOrSceneGraph instanceof SceneGraph
36
+ ? nameOrSceneGraph
37
+ : new SceneGraph(nameOrSceneGraph, left, top, width, height, data);
42
38
  if (!(child instanceof SceneGraph)) {
43
39
  throw new TypeError('argument to addChild must be an array or a SceneGraph');
44
40
  }
@@ -1,29 +1,24 @@
1
+ import { IAnyType, IModelReflectionPropertiesData, IAnyComplexType, ISimpleType, UnionStringArray } from 'mobx-state-tree';
2
+ export interface ILiteralType<T> extends ISimpleType<T> {
3
+ value: T;
4
+ }
1
5
  /**
2
6
  * get the inner type of an MST optional, array, or late type object
3
- *
4
- * @param {IModelType} type
5
- * @returns {IModelType}
6
7
  */
7
- export function getSubType(type: IModelType): IModelType;
8
+ export declare function getSubType(type: IAnyType): IAnyType;
8
9
  /**
9
- * get the array of
10
- * @param {MST Union Type obj} unionType
11
- * @returns {Array<IModelType>}
10
+ * get the array of the subtypes in a union
12
11
  */
13
- export function getUnionSubTypes(unionType: any): Array<IModelType>;
12
+ export declare function getUnionSubTypes(unionType: IAnyType): IAnyType[];
14
13
  /**
15
14
  * get the type of one of the properties of the given MST model type
16
- *
17
- * @param {IModelType} type
18
- * @param {string} propertyName
19
- * @returns {IModelType}
20
15
  */
21
- export function getPropertyType(type: IModelType, propertyName: string): IModelType;
16
+ export declare function getPropertyType(type: IModelReflectionPropertiesData, propertyName: string): IAnyType;
22
17
  /**
23
18
  * get the base type from inside an MST optional type
24
- * @param {*} type
25
19
  */
26
- export function getDefaultValue(type: any): any;
20
+ export declare function getDefaultValue(type: IAnyType): any;
21
+ export type IEnumerationType<T extends string> = ISimpleType<UnionStringArray<T[]>>;
27
22
  /** get the string values of an MST enumeration type */
28
- export function getEnumerationValues(type: any): any[];
29
- export function resolveLateType(maybeLate: any): any;
23
+ export declare function getEnumerationValues(type: IAnyComplexType): string[];
24
+ export declare function resolveLateType(maybeLate: IAnyType): any;
@@ -5,19 +5,20 @@ exports.resolveLateType = exports.getEnumerationValues = exports.getDefaultValue
5
5
  const mobx_state_tree_1 = require("mobx-state-tree");
6
6
  /**
7
7
  * get the inner type of an MST optional, array, or late type object
8
- *
9
- * @param {IModelType} type
10
- * @returns {IModelType}
11
8
  */
12
9
  function getSubType(type) {
13
10
  let t;
14
11
  if ((0, mobx_state_tree_1.isOptionalType)(type)) {
12
+ // @ts-expect-error
15
13
  t = type._subtype || type.type;
16
14
  }
17
15
  else if ((0, mobx_state_tree_1.isArrayType)(type) || (0, mobx_state_tree_1.isMapType)(type)) {
16
+ // @ts-expect-error
18
17
  t = type._subtype || type._subType || type.subType;
18
+ // @ts-expect-error
19
19
  }
20
20
  else if (typeof type.getSubType === 'function') {
21
+ // @ts-expect-error
21
22
  return type.getSubType();
22
23
  }
23
24
  else {
@@ -31,17 +32,20 @@ function getSubType(type) {
31
32
  }
32
33
  exports.getSubType = getSubType;
33
34
  /**
34
- * get the array of
35
- * @param {MST Union Type obj} unionType
36
- * @returns {Array<IModelType>}
35
+ * get the array of the subtypes in a union
37
36
  */
38
37
  function getUnionSubTypes(unionType) {
39
38
  if (!(0, mobx_state_tree_1.isUnionType)(unionType)) {
40
39
  throw new TypeError('not an MST union type');
41
40
  }
42
- const t = unionType._types ||
41
+ const t =
42
+ // @ts-expect-error
43
+ unionType._types ||
44
+ // @ts-expect-error
43
45
  unionType.types ||
46
+ // @ts-expect-error
44
47
  getSubType(unionType)._types ||
48
+ // @ts-expect-error
45
49
  getSubType(unionType).types;
46
50
  if (!t) {
47
51
  // debugger
@@ -52,10 +56,6 @@ function getUnionSubTypes(unionType) {
52
56
  exports.getUnionSubTypes = getUnionSubTypes;
53
57
  /**
54
58
  * get the type of one of the properties of the given MST model type
55
- *
56
- * @param {IModelType} type
57
- * @param {string} propertyName
58
- * @returns {IModelType}
59
59
  */
60
60
  function getPropertyType(type, propertyName) {
61
61
  const propertyType = type.properties[propertyName];
@@ -64,12 +64,12 @@ function getPropertyType(type, propertyName) {
64
64
  exports.getPropertyType = getPropertyType;
65
65
  /**
66
66
  * get the base type from inside an MST optional type
67
- * @param {*} type
68
67
  */
69
68
  function getDefaultValue(type) {
70
69
  if (!(0, mobx_state_tree_1.isOptionalType)(type)) {
71
70
  throw new TypeError('type must be an optional type');
72
71
  }
72
+ // @ts-expect-error
73
73
  return type._defaultValue || type.defaultValue;
74
74
  }
75
75
  exports.getDefaultValue = getDefaultValue;
@@ -84,6 +84,7 @@ function resolveLateType(maybeLate) {
84
84
  if (!(0, mobx_state_tree_1.isUnionType)(maybeLate) &&
85
85
  !(0, mobx_state_tree_1.isArrayType)(maybeLate) &&
86
86
  (0, mobx_state_tree_1.isLateType)(maybeLate)) {
87
+ // @ts-expect-error
87
88
  return maybeLate.getSubType();
88
89
  }
89
90
  return maybeLate;
@@ -33,19 +33,20 @@ if (weHave.realOffscreenCanvas) {
33
33
  else if (weHave.node) {
34
34
  // use node-canvas if we are running in node (i.e. automated tests)
35
35
  exports.createCanvas = (...args) => {
36
- // @ts-ignore
36
+ // @ts-expect-error
37
37
  // eslint-disable-next-line no-undef
38
38
  return nodeCreateCanvas(...args);
39
39
  };
40
40
  exports.createImageBitmap = async (canvas, ...otherargs) => {
41
- if (otherargs.length) {
41
+ if (otherargs.length > 0) {
42
42
  throw new Error('only one-argument uses of createImageBitmap are supported by the node offscreencanvas ponyfill');
43
43
  }
44
44
  const dataUri = canvas.toDataURL();
45
- // @ts-ignore
45
+ // @ts-expect-error
46
46
  // eslint-disable-next-line no-undef
47
47
  const img = new nodeImage();
48
48
  return new Promise((resolve, reject) => {
49
+ // need onload for jest
49
50
  img.onload = () => resolve(img);
50
51
  img.onerror = reject;
51
52
  img.src = dataUri;
@@ -79,6 +79,7 @@ async function renderToAbstractCanvas(width, height, opts, cb) {
79
79
  exports.renderToAbstractCanvas = renderToAbstractCanvas;
80
80
  async function getSerializedSvg(results) {
81
81
  const { width, height, canvasRecordedData } = results;
82
+ // @ts-ignore needs to be ignore not expect error, produces error in build step
82
83
  const C2S = await Promise.resolve().then(() => __importStar(require('canvas2svg')));
83
84
  const ctx = new C2S.default(width, height);
84
85
  const seq = new canvas_sequencer_1.CanvasSequence(canvasRecordedData);
package/util/tracks.d.ts CHANGED
@@ -75,4 +75,4 @@ export declare function generateUnknownTrackConf(trackName: string, trackUrl: st
75
75
  };
76
76
  export declare function getTrackName(conf: AnyConfigurationModel, session: {
77
77
  assemblies: AnyConfigurationModel[];
78
- }): any;
78
+ }): string;
package/util/tracks.js CHANGED
@@ -141,7 +141,6 @@ function guessAdapter(file, index, adapterHint, model) {
141
141
  exports.guessAdapter = guessAdapter;
142
142
  function guessTrackType(adapterType, model) {
143
143
  if (model) {
144
- // @ts-ignore
145
144
  const session = (0, index_1.getSession)(model);
146
145
  const trackTypeGuesser = (0, index_1.getEnv)(session).pluginManager.evaluateExtensionPoint('Core-guessTrackTypeForLocation', (_adapterName) => {
147
146
  return undefined;
@@ -22,7 +22,6 @@ export interface SnackAction {
22
22
  onClick: () => void;
23
23
  }
24
24
  export type AssemblyManager = Instance<ReturnType<typeof assemblyManager>>;
25
- export type { TextSearchManager };
26
25
  export interface BasePlugin {
27
26
  version?: string;
28
27
  name: string;
@@ -195,6 +194,7 @@ export interface AbstractMenuManager {
195
194
  export declare function isAbstractMenuManager(thing: unknown): thing is AbstractMenuManager;
196
195
  export interface NoAssemblyRegion extends SnapshotIn<typeof MUNoAssemblyRegion> {
197
196
  }
197
+ /** a description of a specific genomic region. assemblyName, refName, start, end, and reversed */
198
198
  export interface Region extends SnapshotIn<typeof MUIRegion> {
199
199
  }
200
200
  export interface AugmentedRegion extends Region {
@@ -230,3 +230,4 @@ export type PreBlobLocation = {
230
230
  blob: File;
231
231
  };
232
232
  export type PreFileLocation = PreUriLocation | PreLocalPathLocation | PreBlobLocation;
233
+ export { type default as TextSearchManager } from '../../TextSearch/TextSearchManager';
@@ -37,7 +37,7 @@ function isSessionModelWithConfigEditing(thing) {
37
37
  exports.isSessionModelWithConfigEditing = isSessionModelWithConfigEditing;
38
38
  function isSessionWithAddTracks(thing) {
39
39
  return (
40
- // @ts-ignore
40
+ // @ts-expect-error
41
41
  isSessionModel(thing) && 'addTrackConf' in thing && !thing.disableAddTracks);
42
42
  }
43
43
  exports.isSessionWithAddTracks = isSessionWithAddTracks;
@@ -71,7 +71,7 @@ function isTrackModel(thing) {
71
71
  return (typeof thing === 'object' &&
72
72
  thing !== null &&
73
73
  'configuration' in thing &&
74
- // @ts-ignore
74
+ // @ts-expect-error
75
75
  thing.configuration.trackId);
76
76
  }
77
77
  exports.isTrackModel = isTrackModel;
@@ -79,7 +79,7 @@ function isDisplayModel(thing) {
79
79
  return (typeof thing === 'object' &&
80
80
  thing !== null &&
81
81
  'configuration' in thing &&
82
- // @ts-ignore
82
+ // @ts-expect-error
83
83
  thing.configuration.displayId);
84
84
  }
85
85
  exports.isDisplayModel = isDisplayModel;
package/util/types/mst.js CHANGED
@@ -70,16 +70,16 @@ exports.UriLocation = mobx_state_tree_1.types.snapshotProcessor(exports.UriLocat
70
70
  },
71
71
  });
72
72
  exports.FileLocation = mobx_state_tree_1.types.snapshotProcessor(mobx_state_tree_1.types.union(exports.LocalPathLocation, exports.UriLocation, exports.BlobLocation), {
73
- // @ts-ignore
73
+ // @ts-expect-error
74
74
  preProcessor(snap) {
75
75
  if (!snap) {
76
76
  return undefined;
77
77
  }
78
- // @ts-ignore
78
+ // @ts-expect-error
79
79
  // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
80
80
  const { locationType, ...rest } = snap;
81
81
  if (!locationType) {
82
- // @ts-ignore
82
+ // @ts-expect-error
83
83
  const { uri, localPath, blob } = rest;
84
84
  let locationType = '';
85
85
  if (uri !== undefined) {
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ export default function useMeasure(): readonly [import("react").RefObject<HTMLDivElement>, {
3
+ width?: number | undefined;
4
+ height?: number | undefined;
5
+ }];
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const react_1 = require("react");
4
+ function useMeasure() {
5
+ const ref = (0, react_1.useRef)(null);
6
+ const [dims, setDims] = (0, react_1.useState)({
7
+ width: undefined,
8
+ height: undefined,
9
+ });
10
+ (0, react_1.useEffect)(() => {
11
+ if (!ref.current) {
12
+ return;
13
+ }
14
+ const RS = typeof window !== 'undefined' && 'ResizeObserver' in window
15
+ ? window.ResizeObserver
16
+ : undefined;
17
+ if (!RS) {
18
+ return;
19
+ }
20
+ const observer = new RS(entries => {
21
+ setDims({
22
+ width: entries[0].contentRect.width,
23
+ height: entries[0].contentRect.height,
24
+ });
25
+ });
26
+ observer.observe(ref.current);
27
+ // Callback fired when component is unmounted
28
+ return () => {
29
+ observer.disconnect();
30
+ };
31
+ }, []);
32
+ return [ref, dims];
33
+ }
34
+ exports.default = useMeasure;