@jbrowse/core 2.13.1 → 2.15.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 +23 -51
- 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/BaseAdapter.d.ts +2 -1
- package/data_adapters/BaseAdapter/BaseAdapter.js +2 -1
- 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 +5 -5
- 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 +11 -9
- package/pluggableElementTypes/renderers/ServerSideRenderedContent.js +14 -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 -4
- 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 +10 -7
- package/util/Base1DViewModel.js +3 -1
- package/util/QuickLRU.js +8 -8
- package/util/TimeTraveller.js +12 -4
- package/util/aborting.js +1 -1
- 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 +92 -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 +5 -5
- 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
|
@@ -186,8 +186,11 @@ function createJBrowseBaseTheme(theme) {
|
|
|
186
186
|
MuiAccordion: {
|
|
187
187
|
defaultProps: {
|
|
188
188
|
disableGutters: true,
|
|
189
|
-
|
|
190
|
-
|
|
189
|
+
slotProps: {
|
|
190
|
+
transition: {
|
|
191
|
+
timeout: 150,
|
|
192
|
+
unmountOnExit: true,
|
|
193
|
+
},
|
|
191
194
|
},
|
|
192
195
|
},
|
|
193
196
|
},
|
|
@@ -372,11 +375,11 @@ function createJBrowseTheme(configTheme = {}, themes = exports.defaultThemes, th
|
|
|
372
375
|
? (0, deepmerge_1.default)(themes.default, augmentTheme(configTheme), {
|
|
373
376
|
arrayMerge: overwriteArrayMerge,
|
|
374
377
|
})
|
|
375
|
-
: augmentThemePlus(themes[themeName])
|
|
378
|
+
: augmentThemePlus(themes[themeName])));
|
|
376
379
|
}
|
|
377
380
|
function augmentTheme(theme = {}) {
|
|
378
381
|
var _a, _b;
|
|
379
|
-
if ((_a = theme
|
|
382
|
+
if ((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.tertiary) {
|
|
380
383
|
theme = (0, deepmerge_1.default)(theme, {
|
|
381
384
|
palette: {
|
|
382
385
|
tertiary: refTheme.palette.augmentColor('color' in theme.palette.tertiary
|
|
@@ -385,7 +388,7 @@ function augmentTheme(theme = {}) {
|
|
|
385
388
|
},
|
|
386
389
|
});
|
|
387
390
|
}
|
|
388
|
-
if ((_b = theme
|
|
391
|
+
if ((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.quaternary) {
|
|
389
392
|
theme = (0, deepmerge_1.default)(theme, {
|
|
390
393
|
palette: {
|
|
391
394
|
quaternary: refTheme.palette.augmentColor('color' in theme.palette.quaternary
|
|
@@ -400,7 +403,7 @@ function augmentTheme(theme = {}) {
|
|
|
400
403
|
function augmentThemePlus(theme = {}) {
|
|
401
404
|
var _a, _b;
|
|
402
405
|
theme = augmentTheme(theme);
|
|
403
|
-
if (!((_a = theme
|
|
406
|
+
if (!((_a = theme.palette) === null || _a === void 0 ? void 0 : _a.quaternary)) {
|
|
404
407
|
theme = (0, deepmerge_1.default)(theme, {
|
|
405
408
|
palette: {
|
|
406
409
|
quaternary: refTheme.palette.augmentColor({
|
|
@@ -411,7 +414,7 @@ function augmentThemePlus(theme = {}) {
|
|
|
411
414
|
},
|
|
412
415
|
});
|
|
413
416
|
}
|
|
414
|
-
if (!((_b = theme
|
|
417
|
+
if (!((_b = theme.palette) === null || _b === void 0 ? void 0 : _b.tertiary)) {
|
|
415
418
|
theme = (0, deepmerge_1.default)(theme, {
|
|
416
419
|
palette: {
|
|
417
420
|
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/aborting.js
CHANGED
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';
|