@jbrowse/core 2.13.0 → 2.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/BaseFeatureWidget/BaseFeatureDetail/ArrayValue.js +2 -2
- package/BaseFeatureWidget/BaseFeatureDetail/BasicValue.js +1 -1
- package/BaseFeatureWidget/BaseFeatureDetail/DataGridDetails.js +3 -1
- package/BaseFeatureWidget/BaseFeatureDetail/index.js +28 -25
- package/BaseFeatureWidget/BaseFeatureDetail/util.js +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.js +11 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.d.ts +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeaturePanel.js +11 -7
- package/BaseFeatureWidget/SequenceFeatureDetails/SequencePanel.js +1 -1
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/HelpDialog.js +6 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceDialog.js +11 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.js +15 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.js +4 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SettingsDialog.js +15 -5
- package/BaseFeatureWidget/SequenceFeatureDetails/hooks.js +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/CDNASequence.js +2 -2
- package/BaseFeatureWidget/SequenceFeatureDetails/seqtypes/SequenceDisplay.js +5 -3
- package/BaseFeatureWidget/stateModelFactory.js +0 -2
- package/PluginLoader.d.ts +1 -2
- package/PluginLoader.js +16 -6
- package/PluginManager.d.ts +13 -13
- package/PluginManager.js +7 -2
- package/ReExports/modules.js +2 -11
- package/assemblyManager/assembly.d.ts +18 -12
- package/assemblyManager/assembly.js +75 -52
- package/assemblyManager/assemblyConfigSchema.d.ts +9 -7
- package/assemblyManager/assemblyConfigSchema.js +15 -16
- package/assemblyManager/assemblyManager.d.ts +109 -81
- package/assemblyManager/assemblyManager.js +3 -6
- package/configuration/configurationSchema.d.ts +1 -1
- package/configuration/configurationSchema.js +1 -2
- package/configuration/configurationSlot.js +7 -8
- package/configuration/util.js +0 -7
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.d.ts +6 -6
- package/data_adapters/BaseAdapter/BaseFeatureDataAdapter.js +6 -6
- package/data_adapters/BaseAdapter/BaseRefNameAliasAdapter.d.ts +1 -0
- package/data_adapters/CytobandAdapter/CytobandAdapter.d.ts +0 -1
- package/data_adapters/CytobandAdapter/CytobandAdapter.js +4 -8
- package/data_adapters/dataAdapterCache.d.ts +9 -6
- package/data_adapters/dataAdapterCache.js +16 -22
- package/package.json +3 -3
- package/pluggableElementTypes/AddTrackWorkflowType.js +0 -6
- package/pluggableElementTypes/ConnectionType.js +0 -6
- package/pluggableElementTypes/DisplayType.js +0 -20
- package/pluggableElementTypes/InternetAccountType.js +0 -11
- package/pluggableElementTypes/RpcMethodType.d.ts +1 -1
- package/pluggableElementTypes/TextSearchAdapterType.js +0 -3
- package/pluggableElementTypes/TrackType.js +0 -11
- package/pluggableElementTypes/ViewType.js +0 -6
- package/pluggableElementTypes/WidgetType.js +0 -6
- package/pluggableElementTypes/models/BaseConnectionModelFactory.d.ts +4 -3
- package/pluggableElementTypes/models/BaseConnectionModelFactory.js +1 -3
- package/pluggableElementTypes/models/BaseDisplayModel.d.ts +4 -5
- package/pluggableElementTypes/models/BaseDisplayModel.js +6 -14
- package/pluggableElementTypes/models/BaseTrackModel.js +8 -5
- package/pluggableElementTypes/models/InternetAccountModel.d.ts +1 -1
- package/pluggableElementTypes/models/InternetAccountModel.js +19 -13
- package/pluggableElementTypes/models/baseTrackConfig.js +2 -5
- package/pluggableElementTypes/renderers/BoxRendererType.d.ts +10 -4
- package/pluggableElementTypes/renderers/BoxRendererType.js +10 -26
- package/pluggableElementTypes/renderers/CircularChordRendererType.d.ts +1 -1
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.d.ts +9 -12
- package/pluggableElementTypes/renderers/ComparativeServerSideRendererType.js +12 -19
- package/pluggableElementTypes/renderers/FeatureRendererType.d.ts +5 -5
- package/pluggableElementTypes/renderers/FeatureRendererType.js +6 -13
- package/pluggableElementTypes/renderers/RendererType.js +0 -10
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.d.ts +1 -1
- package/pluggableElementTypes/renderers/RpcRenderedSvgGroup.js +8 -9
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +11 -14
- package/pluggableElementTypes/renderers/ServerSideRendererType.d.ts +4 -4
- package/pluggableElementTypes/renderers/ServerSideRendererType.js +7 -5
- package/pluggableElementTypes/renderers/util/serializableFilterChain.js +0 -1
- package/rpc/BaseRpcDriver.d.ts +1 -1
- package/rpc/BaseRpcDriver.js +12 -11
- package/rpc/MainThreadRpcDriver.d.ts +2 -2
- package/rpc/MainThreadRpcDriver.js +3 -0
- package/rpc/RpcManager.d.ts +1 -1
- package/rpc/RpcManager.js +11 -8
- package/rpc/configSchema.js +0 -1
- package/rpc/methods/CoreFreeResources.d.ts +2 -2
- package/rpc/methods/CoreGetFeatureDensityStats.d.ts +2 -2
- package/rpc/methods/CoreGetFeatureDetails.d.ts +1 -1
- package/rpc/methods/CoreGetFeatureDetails.js +3 -3
- package/rpc/methods/CoreGetFeatures.d.ts +1 -1
- package/rpc/methods/CoreGetFileInfo.d.ts +1 -1
- package/rpc/methods/CoreGetMetadata.d.ts +1 -1
- package/rpc/methods/CoreGetRefNames.d.ts +1 -1
- package/rpc/methods/util.d.ts +2 -2
- package/rpc/methods/util.js +0 -3
- package/tsconfig.build.tsbuildinfo +1 -1
- package/ui/AssemblySelector.js +3 -1
- package/ui/CascadingMenu.js +2 -1
- package/ui/CascadingMenuButton.js +3 -1
- package/ui/ColorPicker.js +14 -4
- package/ui/DropDownMenu.js +3 -1
- package/ui/EditableTypography.js +6 -2
- package/ui/ErrorMessage.d.ts +2 -2
- package/ui/ErrorMessage.js +37 -20
- package/ui/ErrorMessageStackTraceDialog.js +11 -9
- package/ui/FactoryResetDialog.d.ts +1 -1
- package/ui/FactoryResetDialog.js +9 -3
- package/ui/FatalErrorDialog.js +9 -3
- package/ui/FileSelector/FileSelector.js +8 -4
- package/ui/FileSelector/LocalFileChooser.js +7 -6
- package/ui/LoadingEllipses.js +1 -1
- package/ui/Menu.d.ts +4 -4
- package/ui/Menu.js +6 -9
- package/ui/MenuButton.js +6 -2
- package/ui/PrerenderedCanvas.js +8 -5
- package/ui/RedErrorMessageBox.js +13 -8
- package/ui/ResizeHandle.d.ts +1 -1
- package/ui/ReturnToImportFormDialog.js +3 -1
- package/ui/SanitizedHTML.js +1 -3
- package/ui/SnackbarModel.d.ts +12 -1
- package/ui/SnackbarModel.js +19 -3
- package/ui/theme.js +5 -5
- package/util/Base1DViewModel.js +3 -1
- package/util/QuickLRU.js +8 -8
- package/util/TimeTraveller.js +12 -4
- package/util/analytics.js +0 -1
- package/util/blockTypes.js +5 -9
- package/util/calculateStaticBlocks.d.ts +1 -1
- package/util/compositeMap.js +2 -2
- package/util/idMaker.js +0 -1
- package/util/index.d.ts +9 -8
- package/util/index.js +91 -51
- package/util/io/RemoteFileWithRangeCache.js +1 -3
- package/util/io/index.js +3 -5
- package/util/jexlStrings.js +5 -8
- package/util/layouts/GranularRectLayout.js +1 -4
- package/util/layouts/SceneGraph.d.ts +1 -1
- package/util/layouts/SceneGraph.js +2 -6
- package/util/map-obj.js +15 -7
- package/util/mst-reflection.js +1 -2
- package/util/nanoid.js +9 -8
- package/util/offscreenCanvasPonyfill.d.ts +1 -1
- package/util/offscreenCanvasPonyfill.js +7 -10
- package/util/offscreenCanvasUtils.d.ts +1 -1
- package/util/offscreenCanvasUtils.js +1 -3
- package/util/rxjs.js +4 -2
- package/util/simpleFeature.d.ts +2 -3
- package/util/simpleFeature.js +9 -12
- package/util/stats.js +3 -1
- package/util/tracks.d.ts +4 -2
- package/util/tracks.js +10 -11
- package/util/types/index.d.ts +5 -5
- package/util/types/index.js +8 -1
- package/util/types/mst.js +1 -0
- package/util/when.js +7 -2
package/ui/SnackbarModel.js
CHANGED
|
@@ -42,7 +42,18 @@ function SnackbarModel() {
|
|
|
42
42
|
return mobx_state_tree_1.types
|
|
43
43
|
.model({})
|
|
44
44
|
.volatile(() => ({
|
|
45
|
+
/**
|
|
46
|
+
* #volatile
|
|
47
|
+
*/
|
|
45
48
|
snackbarMessages: mobx_1.observable.array(),
|
|
49
|
+
}))
|
|
50
|
+
.views(self => ({
|
|
51
|
+
/**
|
|
52
|
+
* #getter
|
|
53
|
+
*/
|
|
54
|
+
get snackbarMessageSet() {
|
|
55
|
+
return new Map(self.snackbarMessages.map(s => [s.message, s]));
|
|
56
|
+
},
|
|
46
57
|
}))
|
|
47
58
|
.actions(self => ({
|
|
48
59
|
/**
|
|
@@ -56,6 +67,9 @@ function SnackbarModel() {
|
|
|
56
67
|
}, 5000);
|
|
57
68
|
}
|
|
58
69
|
},
|
|
70
|
+
/**
|
|
71
|
+
* #action
|
|
72
|
+
*/
|
|
59
73
|
notifyError(errorMessage, error, extra) {
|
|
60
74
|
this.notify(errorMessage, 'error', {
|
|
61
75
|
name: react_1.default.createElement(Report_1.default, null),
|
|
@@ -76,7 +90,9 @@ function SnackbarModel() {
|
|
|
76
90
|
* #action
|
|
77
91
|
*/
|
|
78
92
|
pushSnackbarMessage(message, level, action) {
|
|
79
|
-
|
|
93
|
+
if (action || !self.snackbarMessageSet.has(message)) {
|
|
94
|
+
self.snackbarMessages.push({ message, level, action });
|
|
95
|
+
}
|
|
80
96
|
},
|
|
81
97
|
/**
|
|
82
98
|
* #action
|
|
@@ -88,8 +104,8 @@ function SnackbarModel() {
|
|
|
88
104
|
* #action
|
|
89
105
|
*/
|
|
90
106
|
removeSnackbarMessage(message) {
|
|
91
|
-
const element = self.
|
|
92
|
-
if (element) {
|
|
107
|
+
const element = self.snackbarMessageSet.get(message);
|
|
108
|
+
if (element !== undefined) {
|
|
93
109
|
self.snackbarMessages.remove(element);
|
|
94
110
|
}
|
|
95
111
|
},
|
package/ui/theme.js
CHANGED
|
@@ -372,11 +372,11 @@ function createJBrowseTheme(configTheme = {}, themes = exports.defaultThemes, th
|
|
|
372
372
|
? (0, deepmerge_1.default)(themes.default, augmentTheme(configTheme), {
|
|
373
373
|
arrayMerge: overwriteArrayMerge,
|
|
374
374
|
})
|
|
375
|
-
: augmentThemePlus(themes[themeName])
|
|
375
|
+
: augmentThemePlus(themes[themeName])));
|
|
376
376
|
}
|
|
377
377
|
function augmentTheme(theme = {}) {
|
|
378
378
|
var _a, _b;
|
|
379
|
-
if ((_a = theme
|
|
379
|
+
if ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.tertiary) {
|
|
380
380
|
theme = (0, deepmerge_1.default)(theme, {
|
|
381
381
|
palette: {
|
|
382
382
|
tertiary: refTheme.palette.augmentColor('color' in theme.palette.tertiary
|
|
@@ -385,7 +385,7 @@ function augmentTheme(theme = {}) {
|
|
|
385
385
|
},
|
|
386
386
|
});
|
|
387
387
|
}
|
|
388
|
-
if ((_b = theme
|
|
388
|
+
if ((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.quaternary) {
|
|
389
389
|
theme = (0, deepmerge_1.default)(theme, {
|
|
390
390
|
palette: {
|
|
391
391
|
quaternary: refTheme.palette.augmentColor('color' in theme.palette.quaternary
|
|
@@ -400,7 +400,7 @@ function augmentTheme(theme = {}) {
|
|
|
400
400
|
function augmentThemePlus(theme = {}) {
|
|
401
401
|
var _a, _b;
|
|
402
402
|
theme = augmentTheme(theme);
|
|
403
|
-
if (!((_a = theme
|
|
403
|
+
if (!((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary)) {
|
|
404
404
|
theme = (0, deepmerge_1.default)(theme, {
|
|
405
405
|
palette: {
|
|
406
406
|
quaternary: refTheme.palette.augmentColor({
|
|
@@ -411,7 +411,7 @@ function augmentThemePlus(theme = {}) {
|
|
|
411
411
|
},
|
|
412
412
|
});
|
|
413
413
|
}
|
|
414
|
-
if (!((_b = theme
|
|
414
|
+
if (!((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary)) {
|
|
415
415
|
theme = (0, deepmerge_1.default)(theme, {
|
|
416
416
|
palette: {
|
|
417
417
|
tertiary: refTheme.palette.augmentColor({
|
package/util/Base1DViewModel.js
CHANGED
|
@@ -175,7 +175,9 @@ const Base1DView = mobx_state_tree_1.types
|
|
|
175
175
|
* #action
|
|
176
176
|
*/
|
|
177
177
|
zoomTo(bpPerPx, offset = self.width / 2) {
|
|
178
|
-
const newBpPerPx = (0, index_1.clamp)(bpPerPx, 'minBpPerPx' in self ? self.minBpPerPx : 0, 'maxBpPerPx' in self
|
|
178
|
+
const newBpPerPx = (0, index_1.clamp)(bpPerPx, 'minBpPerPx' in self ? self.minBpPerPx : 0, 'maxBpPerPx' in self
|
|
179
|
+
? self.maxBpPerPx
|
|
180
|
+
: Number.POSITIVE_INFINITY);
|
|
179
181
|
const oldBpPerPx = self.bpPerPx;
|
|
180
182
|
if (Math.abs(oldBpPerPx - newBpPerPx) < 0.000001) {
|
|
181
183
|
return oldBpPerPx;
|
package/util/QuickLRU.js
CHANGED
|
@@ -44,7 +44,7 @@ class QuickLRU extends Map {
|
|
|
44
44
|
}
|
|
45
45
|
_getOrDeleteIfExpired(key, item) {
|
|
46
46
|
const deleted = this._deleteIfExpired(key, item);
|
|
47
|
-
if (deleted
|
|
47
|
+
if (!deleted) {
|
|
48
48
|
return item.value;
|
|
49
49
|
}
|
|
50
50
|
}
|
|
@@ -74,7 +74,7 @@ class QuickLRU extends Map {
|
|
|
74
74
|
const [key, value] = item;
|
|
75
75
|
if (!this.cache.has(key)) {
|
|
76
76
|
const deleted = this._deleteIfExpired(key, value);
|
|
77
|
-
if (deleted
|
|
77
|
+
if (!deleted) {
|
|
78
78
|
yield item;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
@@ -82,7 +82,7 @@ class QuickLRU extends Map {
|
|
|
82
82
|
for (const item of this.cache) {
|
|
83
83
|
const [key, value] = item;
|
|
84
84
|
const deleted = this._deleteIfExpired(key, value);
|
|
85
|
-
if (deleted
|
|
85
|
+
if (!deleted) {
|
|
86
86
|
yield item;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -94,7 +94,7 @@ class QuickLRU extends Map {
|
|
|
94
94
|
}
|
|
95
95
|
if (this.oldCache.has(key)) {
|
|
96
96
|
const item = this.oldCache.get(key);
|
|
97
|
-
if (this._deleteIfExpired(key, item)
|
|
97
|
+
if (!this._deleteIfExpired(key, item)) {
|
|
98
98
|
this._moveToRecent(key, item);
|
|
99
99
|
return item.value;
|
|
100
100
|
}
|
|
@@ -178,7 +178,7 @@ class QuickLRU extends Map {
|
|
|
178
178
|
for (const item of this.cache) {
|
|
179
179
|
const [key, value] = item;
|
|
180
180
|
const deleted = this._deleteIfExpired(key, value);
|
|
181
|
-
if (deleted
|
|
181
|
+
if (!deleted) {
|
|
182
182
|
yield [key, value.value];
|
|
183
183
|
}
|
|
184
184
|
}
|
|
@@ -186,7 +186,7 @@ class QuickLRU extends Map {
|
|
|
186
186
|
const [key, value] = item;
|
|
187
187
|
if (!this.cache.has(key)) {
|
|
188
188
|
const deleted = this._deleteIfExpired(key, value);
|
|
189
|
-
if (deleted
|
|
189
|
+
if (!deleted) {
|
|
190
190
|
yield [key, value.value];
|
|
191
191
|
}
|
|
192
192
|
}
|
|
@@ -198,7 +198,7 @@ class QuickLRU extends Map {
|
|
|
198
198
|
const item = items[i];
|
|
199
199
|
const [key, value] = item;
|
|
200
200
|
const deleted = this._deleteIfExpired(key, value);
|
|
201
|
-
if (deleted
|
|
201
|
+
if (!deleted) {
|
|
202
202
|
yield [key, value.value];
|
|
203
203
|
}
|
|
204
204
|
}
|
|
@@ -208,7 +208,7 @@ class QuickLRU extends Map {
|
|
|
208
208
|
const [key, value] = item;
|
|
209
209
|
if (!this.cache.has(key)) {
|
|
210
210
|
const deleted = this._deleteIfExpired(key, value);
|
|
211
|
-
if (deleted
|
|
211
|
+
if (!deleted) {
|
|
212
212
|
yield [key, value.value];
|
|
213
213
|
}
|
|
214
214
|
}
|
package/util/TimeTraveller.js
CHANGED
|
@@ -7,7 +7,9 @@ function debounce(func, timeout = 300) {
|
|
|
7
7
|
let timer;
|
|
8
8
|
return (...args) => {
|
|
9
9
|
clearTimeout(timer);
|
|
10
|
-
timer = setTimeout(() =>
|
|
10
|
+
timer = setTimeout(() => {
|
|
11
|
+
func(...args);
|
|
12
|
+
}, timeout);
|
|
11
13
|
};
|
|
12
14
|
}
|
|
13
15
|
const TimeTraveller = mobx_state_tree_1.types
|
|
@@ -66,7 +68,9 @@ const TimeTraveller = mobx_state_tree_1.types
|
|
|
66
68
|
if (!targetStore) {
|
|
67
69
|
throw new Error('Failed to find target store for TimeTraveller. Please provide `targetPath` property, or a `targetStore` in the environment');
|
|
68
70
|
}
|
|
69
|
-
snapshotDisposer = (0, mobx_state_tree_1.onSnapshot)(targetStore, debounce((snapshot) =>
|
|
71
|
+
snapshotDisposer = (0, mobx_state_tree_1.onSnapshot)(targetStore, debounce((snapshot) => {
|
|
72
|
+
this.addUndoState(snapshot);
|
|
73
|
+
}, 300));
|
|
70
74
|
if (self.history.length === 0) {
|
|
71
75
|
this.addUndoState((0, mobx_state_tree_1.getSnapshot)(targetStore));
|
|
72
76
|
}
|
|
@@ -74,12 +78,16 @@ const TimeTraveller = mobx_state_tree_1.types
|
|
|
74
78
|
undo() {
|
|
75
79
|
self.undoIdx--;
|
|
76
80
|
skipNextUndoState = true;
|
|
77
|
-
|
|
81
|
+
if (targetStore) {
|
|
82
|
+
(0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
|
|
83
|
+
}
|
|
78
84
|
},
|
|
79
85
|
redo() {
|
|
80
86
|
self.undoIdx++;
|
|
81
87
|
skipNextUndoState = true;
|
|
82
|
-
|
|
88
|
+
if (targetStore) {
|
|
89
|
+
(0, mobx_state_tree_1.applySnapshot)(targetStore, self.history[self.undoIdx]);
|
|
90
|
+
}
|
|
83
91
|
},
|
|
84
92
|
};
|
|
85
93
|
});
|
package/util/analytics.js
CHANGED
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.writeAWSAnalytics = writeAWSAnalytics;
|
|
4
4
|
exports.writeGAAnalytics = writeGAAnalytics;
|
|
5
5
|
exports.doAnalytics = doAnalytics;
|
|
6
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
7
6
|
const configuration_1 = require("../configuration");
|
|
8
7
|
const util_1 = require("../util");
|
|
9
8
|
async function writeAWSAnalytics(rootModel, initialTimeStamp, sessionQuery) {
|
package/util/blockTypes.js
CHANGED
|
@@ -29,7 +29,7 @@ class BlockSet {
|
|
|
29
29
|
}
|
|
30
30
|
forEach(func, thisarg) {
|
|
31
31
|
// eslint-disable-next-line unicorn/no-array-method-this-argument
|
|
32
|
-
|
|
32
|
+
this.blocks.forEach(func, thisarg);
|
|
33
33
|
}
|
|
34
34
|
get length() {
|
|
35
35
|
return this.blocks.length;
|
|
@@ -61,7 +61,6 @@ class BaseBlock {
|
|
|
61
61
|
/**
|
|
62
62
|
* a block that should be shown as filled with data
|
|
63
63
|
*/
|
|
64
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
65
64
|
constructor(data) {
|
|
66
65
|
this.type = 'BaseBlock';
|
|
67
66
|
this.widthPx = 0;
|
|
@@ -96,7 +95,6 @@ exports.ContentBlock = ContentBlock;
|
|
|
96
95
|
* too small to be shown at the current zoom level
|
|
97
96
|
*/
|
|
98
97
|
class ElidedBlock extends BaseBlock {
|
|
99
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
100
98
|
constructor(data) {
|
|
101
99
|
super(data);
|
|
102
100
|
this.type = 'ElidedBlock';
|
|
@@ -105,12 +103,10 @@ class ElidedBlock extends BaseBlock {
|
|
|
105
103
|
}
|
|
106
104
|
push(otherBlock) {
|
|
107
105
|
this.elidedBlockCount += 1;
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
this.widthPx += otherBlock.widthPx;
|
|
113
|
-
}
|
|
106
|
+
this.refName = '';
|
|
107
|
+
this.start = 0;
|
|
108
|
+
this.end = 0;
|
|
109
|
+
this.widthPx += otherBlock.widthPx;
|
|
114
110
|
}
|
|
115
111
|
}
|
|
116
112
|
exports.ElidedBlock = ElidedBlock;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Instance } from 'mobx-state-tree';
|
|
2
2
|
import { BlockSet } from './blockTypes';
|
|
3
3
|
import { Region } from './types';
|
|
4
|
-
import { Region as RegionModel } from './types/mst';
|
|
4
|
+
import type { Region as RegionModel } from './types/mst';
|
|
5
5
|
export interface Base1DViewModel {
|
|
6
6
|
offsetPx: number;
|
|
7
7
|
width: number;
|
package/util/compositeMap.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// takes an array or Map or Set (anything iterable with values()) of Maps
|
|
4
|
-
//
|
|
3
|
+
// takes an array or Map or Set (anything iterable with values()) of Maps and
|
|
4
|
+
// lets you query them as one Map
|
|
5
5
|
class CompositeMap {
|
|
6
6
|
constructor(submaps) {
|
|
7
7
|
this.submaps = submaps;
|
package/util/idMaker.js
CHANGED
|
@@ -5,7 +5,6 @@ const _1 = require("./");
|
|
|
5
5
|
// generates a short "id fingerprint" from the config passed to the base
|
|
6
6
|
// feature adapter by recursively enumerating props, but if config is too big
|
|
7
7
|
// does not process entire config (FromConfigAdapter for example can be large)
|
|
8
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
9
8
|
function idMaker(args, id = '') {
|
|
10
9
|
const keys = Object.keys(args);
|
|
11
10
|
for (const key of keys) {
|
package/util/index.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { IAnyStateTreeNode, IStateTreeNode, Instance } from 'mobx-state-tree';
|
|
|
4
4
|
import { IReactionPublic, IReactionOptions } from 'mobx';
|
|
5
5
|
import { Feature } from './simpleFeature';
|
|
6
6
|
import { AssemblyManager, Region, TypeTestedByPredicate } from './types';
|
|
7
|
-
import { Region as MUIRegion } from './types/mst';
|
|
7
|
+
import type { Region as MUIRegion } from './types/mst';
|
|
8
8
|
import { BaseBlock } from './blockTypes';
|
|
9
9
|
export * from './types';
|
|
10
10
|
export * from './aborting';
|
|
@@ -206,7 +206,7 @@ export declare function findLast<T>(array: T[], predicate: (value: T, index: num
|
|
|
206
206
|
* @param errorFunction -
|
|
207
207
|
*/
|
|
208
208
|
export declare function makeAbortableReaction<T, U, V>(self: T, dataFunction: (arg: T) => U, asyncReactionFunction: (arg: U | undefined, signal: AbortSignal, model: T, handle: IReactionPublic) => Promise<V>, reactionOptions: IReactionOptions, startedFunction: (aborter: AbortController) => void, successFunction: (arg: V) => void, errorFunction: (err: unknown) => void): void;
|
|
209
|
-
export declare function renameRegionIfNeeded(refNameMap: Record<string, string
|
|
209
|
+
export declare function renameRegionIfNeeded(refNameMap: Record<string, string> | undefined, region: Region | Instance<typeof MUIRegion>): Region & {
|
|
210
210
|
originalRefName?: string;
|
|
211
211
|
};
|
|
212
212
|
export declare function renameRegionsIfNeeded<ARGTYPE extends {
|
|
@@ -221,7 +221,7 @@ export declare function renameRegionsIfNeeded<ARGTYPE extends {
|
|
|
221
221
|
originalRefName?: string;
|
|
222
222
|
})[];
|
|
223
223
|
}>;
|
|
224
|
-
export declare function minmax(a: number, b: number): number
|
|
224
|
+
export declare function minmax(a: number, b: number): readonly [number, number];
|
|
225
225
|
export declare function shorten(name: string, max?: number, short?: number): string;
|
|
226
226
|
export declare function stringify({ refName, coord, assemblyName, oob, }: {
|
|
227
227
|
assemblyName?: string;
|
|
@@ -233,7 +233,7 @@ export declare const isElectron: boolean;
|
|
|
233
233
|
export declare function revcom(seqString: string): string;
|
|
234
234
|
export declare function reverse(seqString: string): string;
|
|
235
235
|
export declare const complement: (seqString: string) => string;
|
|
236
|
-
export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback) | ((cb:
|
|
236
|
+
export declare const rIC: (((callback: IdleRequestCallback, options?: IdleRequestOptions) => number) & typeof requestIdleCallback) | ((cb: () => void) => void);
|
|
237
237
|
export declare function measureText(str: unknown, fontSize?: number): number;
|
|
238
238
|
export type Frame = 1 | 2 | 3 | -1 | -2 | -3;
|
|
239
239
|
export declare function getFrame(start: number, end: number, strand: 1 | -1, phase: 0 | 1 | 2): Frame;
|
|
@@ -341,7 +341,7 @@ export interface ViewSnap {
|
|
|
341
341
|
assemblyName: string;
|
|
342
342
|
})[];
|
|
343
343
|
}
|
|
344
|
-
export declare function isSupportedIndexingAdapter(type
|
|
344
|
+
export declare function isSupportedIndexingAdapter(type?: string): boolean;
|
|
345
345
|
export declare function getBpDisplayStr(totalBp: number): string;
|
|
346
346
|
export declare function toLocale(n: number): string;
|
|
347
347
|
export declare function getTickDisplayStr(totalBp: number, bpPerPx: number): string;
|
|
@@ -379,18 +379,18 @@ export declare function max(arr: number[], init?: number): number;
|
|
|
379
379
|
export declare function min(arr: number[], init?: number): number;
|
|
380
380
|
export declare function sum(arr: number[]): number;
|
|
381
381
|
export declare function avg(arr: number[]): number;
|
|
382
|
-
export declare function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string): Record<string, T[]
|
|
382
|
+
export declare function groupBy<T>(array: Iterable<T>, predicate: (v: T) => string): Record<string, T[]>;
|
|
383
383
|
export declare function notEmpty<T>(value: T | null | undefined): value is T;
|
|
384
384
|
export declare function mergeIntervals<T extends {
|
|
385
385
|
start: number;
|
|
386
386
|
end: number;
|
|
387
|
-
}>(intervals: T[], w?: number): T[];
|
|
387
|
+
}>(intervals: T[], w?: number): (T | undefined)[];
|
|
388
388
|
interface BasicFeature {
|
|
389
389
|
end: number;
|
|
390
390
|
start: number;
|
|
391
391
|
refName: string;
|
|
392
392
|
}
|
|
393
|
-
export declare function gatherOverlaps(regions: BasicFeature[]): BasicFeature[];
|
|
393
|
+
export declare function gatherOverlaps(regions: BasicFeature[]): (BasicFeature | undefined)[];
|
|
394
394
|
export declare function stripAlpha(str: string): string;
|
|
395
395
|
export declare function getStrokeProps(str: string): {
|
|
396
396
|
strokeOpacity: number;
|
|
@@ -403,5 +403,6 @@ export declare function getFillProps(str: string): {
|
|
|
403
403
|
export declare function renderToStaticMarkup(node: React.ReactElement, createRootFn?: (elt: Element | DocumentFragment) => {
|
|
404
404
|
render: (node: React.ReactElement) => unknown;
|
|
405
405
|
}): string;
|
|
406
|
+
export declare function isGzip(buf: Buffer): boolean;
|
|
406
407
|
export { default as SimpleFeature, type Feature, type SimpleFeatureSerialized, isFeature, } from './simpleFeature';
|
|
407
408
|
export { blobToDataURL } from './blobToDataURL';
|