loom-browser 0.0.5 → 0.0.6
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/dist/loom-react.esm.js +277 -6
- package/dist/loom-react.esm.min.js +1 -1
- package/dist/loom-react.esm.min.js.map +1 -1
- package/dist/loom.esm.js +129 -1
- package/dist/loom.esm.min.js +1 -1
- package/dist/loom.esm.min.js.map +1 -1
- package/dist/loom.js +129 -0
- package/dist/loom.min.js +1 -1
- package/dist/loom.min.js.map +1 -1
- package/dist/tsconfig.src.tsbuildinfo +1 -1
- package/dist/types/dataSources/memoryDataSource.d.ts +32 -0
- package/dist/types/headlessGenomeBrowser.d.ts +33 -1
- package/dist/types/index.d.ts +3 -2
- package/dist/types/react/GenomeBrowserContext.d.ts +3 -0
- package/dist/types/react/tracks/BedTrack.d.ts +8 -3
- package/dist/types/react/tracks/WigTrack.d.ts +6 -3
- package/dist/types/react/ui/Navbar.d.ts +4 -1
- package/dist/types/types.d.ts +4 -1
- package/package.json +1 -1
package/dist/loom.esm.js
CHANGED
|
@@ -9100,6 +9100,72 @@ class SequenceDataSource {
|
|
|
9100
9100
|
}
|
|
9101
9101
|
}
|
|
9102
9102
|
|
|
9103
|
+
/**
|
|
9104
|
+
* DataSource backed by an in-memory feature array.
|
|
9105
|
+
*
|
|
9106
|
+
* Wraps a pre-loaded feature array in a FeatureCache for spatial queries,
|
|
9107
|
+
* enabling inline features to flow through the same data lifecycle as
|
|
9108
|
+
* URL-based data sources.
|
|
9109
|
+
*
|
|
9110
|
+
* Layer 1 (Data + Layout): no DOM, no canvas.
|
|
9111
|
+
*/
|
|
9112
|
+
/**
|
|
9113
|
+
* DataSource that serves features from an in-memory array.
|
|
9114
|
+
*
|
|
9115
|
+
* Features are indexed in a FeatureCache on construction for efficient
|
|
9116
|
+
* spatial queries. Calling `setFeatures()` replaces the cache entirely.
|
|
9117
|
+
*/
|
|
9118
|
+
class MemoryDataSource {
|
|
9119
|
+
constructor(features) {
|
|
9120
|
+
this.cache = new FeatureCache(features);
|
|
9121
|
+
}
|
|
9122
|
+
/** Replace the in-memory features and rebuild the spatial index. */
|
|
9123
|
+
setFeatures(features) {
|
|
9124
|
+
this.cache = new FeatureCache(features);
|
|
9125
|
+
}
|
|
9126
|
+
/** Set a chromosome name resolver for alias resolution. */
|
|
9127
|
+
setChromNameResolver(resolver) {
|
|
9128
|
+
this._resolveChromName = resolver;
|
|
9129
|
+
}
|
|
9130
|
+
/** Set cumulative offsets for whole genome view coordinate transformation. */
|
|
9131
|
+
setCumulativeOffsets(offsets) {
|
|
9132
|
+
this._cumulativeOffsets = offsets;
|
|
9133
|
+
}
|
|
9134
|
+
async fetch(locus, _bpPerPixel, _signal) {
|
|
9135
|
+
if (isWholeGenomeView(locus) && this._cumulativeOffsets) {
|
|
9136
|
+
return this.fetchWG();
|
|
9137
|
+
}
|
|
9138
|
+
const chr = this._resolveChromName
|
|
9139
|
+
? this._resolveChromName(locus.chr)
|
|
9140
|
+
: locus.chr;
|
|
9141
|
+
return this.cache.queryFeatures(chr, locus.start, locus.end);
|
|
9142
|
+
}
|
|
9143
|
+
fetchWG() {
|
|
9144
|
+
const offsets = this._cumulativeOffsets;
|
|
9145
|
+
const chrNames = mainChromosomeNames(Object.fromEntries(offsets.chromosomeNames.map(name => { var _a; return [name, (_a = offsets.offsets[name]) !== null && _a !== void 0 ? _a : 0]; })));
|
|
9146
|
+
const wgFeatures = [];
|
|
9147
|
+
const allByChrom = this.cache.getAllFeatures();
|
|
9148
|
+
for (const chr of chrNames) {
|
|
9149
|
+
const features = allByChrom[chr];
|
|
9150
|
+
if (!features)
|
|
9151
|
+
continue;
|
|
9152
|
+
const offset = offsets.offsets[chr];
|
|
9153
|
+
if (offset === undefined)
|
|
9154
|
+
continue;
|
|
9155
|
+
for (const f of features) {
|
|
9156
|
+
wgFeatures.push({
|
|
9157
|
+
...f,
|
|
9158
|
+
chr: 'all',
|
|
9159
|
+
start: offset + f.start,
|
|
9160
|
+
end: offset + f.end,
|
|
9161
|
+
});
|
|
9162
|
+
}
|
|
9163
|
+
}
|
|
9164
|
+
wgFeatures.sort((a, b) => a.start - b.start);
|
|
9165
|
+
return wgFeatures;
|
|
9166
|
+
}
|
|
9167
|
+
}
|
|
9168
|
+
|
|
9103
9169
|
/**
|
|
9104
9170
|
* Stateless renderer for interaction (arc/BEDPE) tracks.
|
|
9105
9171
|
*
|
|
@@ -9670,6 +9736,11 @@ function createDataSource(config, workerProvider) {
|
|
|
9670
9736
|
indexed: config.indexed,
|
|
9671
9737
|
workerProvider,
|
|
9672
9738
|
});
|
|
9739
|
+
case 'memory':
|
|
9740
|
+
// Memory data sources are created directly with features by the caller.
|
|
9741
|
+
// This path is only hit during session restore, where in-memory features
|
|
9742
|
+
// are not available — return an empty MemoryDataSource as a placeholder.
|
|
9743
|
+
return new MemoryDataSource([]);
|
|
9673
9744
|
}
|
|
9674
9745
|
}
|
|
9675
9746
|
// ─── Built-in track creators ─────────────────────────────────────────────────
|
|
@@ -10121,6 +10192,9 @@ function dataSourceCacheKey(config) {
|
|
|
10121
10192
|
return `ucsc:${(_b = config.genome) !== null && _b !== void 0 ? _b : ''}:${(_c = config.track) !== null && _c !== void 0 ? _c : ''}`;
|
|
10122
10193
|
case 'text':
|
|
10123
10194
|
return `text:${config.url}:${(_d = config.format) !== null && _d !== void 0 ? _d : ''}:${(_e = config.indexURL) !== null && _e !== void 0 ? _e : ''}`;
|
|
10195
|
+
case 'memory':
|
|
10196
|
+
// Each memory data source is unique — no deduplication.
|
|
10197
|
+
return `memory:${Math.random()}`;
|
|
10124
10198
|
}
|
|
10125
10199
|
}
|
|
10126
10200
|
|
|
@@ -11231,6 +11305,60 @@ class HeadlessGenomeBrowser {
|
|
|
11231
11305
|
this.managedTracks[this.managedTracks.length - 1].metadata = options.metadata;
|
|
11232
11306
|
return track;
|
|
11233
11307
|
}
|
|
11308
|
+
/** Add a BigWig-style signal track backed by in-memory features (no URL required). */
|
|
11309
|
+
addWigTrackWithFeatures(features, options) {
|
|
11310
|
+
const { canvas } = this.canvasProvider.createCanvas(0, 0);
|
|
11311
|
+
const track = new WigTrackCanvas(canvas, {
|
|
11312
|
+
locus: this._locus,
|
|
11313
|
+
features: [],
|
|
11314
|
+
config: options === null || options === void 0 ? void 0 : options.config,
|
|
11315
|
+
height: options === null || options === void 0 ? void 0 : options.height,
|
|
11316
|
+
background: options === null || options === void 0 ? void 0 : options.background,
|
|
11317
|
+
theme: this.theme,
|
|
11318
|
+
canvasProvider: this.canvasProvider,
|
|
11319
|
+
name: options === null || options === void 0 ? void 0 : options.name,
|
|
11320
|
+
sequenceProvider: this.sequenceProvider,
|
|
11321
|
+
});
|
|
11322
|
+
const dataSource = new MemoryDataSource(features);
|
|
11323
|
+
if (this.cumulativeOffsets) {
|
|
11324
|
+
dataSource.setCumulativeOffsets(this.cumulativeOffsets);
|
|
11325
|
+
}
|
|
11326
|
+
if (this.genome) {
|
|
11327
|
+
dataSource.setChromNameResolver(alias => this.genome.getChromosomeName(alias));
|
|
11328
|
+
}
|
|
11329
|
+
const dataSourceConfig = { type: 'memory' };
|
|
11330
|
+
this.addTrack(track, dataSource, dataSourceConfig, options === null || options === void 0 ? void 0 : options.maxTrackHeight);
|
|
11331
|
+
if (options === null || options === void 0 ? void 0 : options.metadata)
|
|
11332
|
+
this.managedTracks[this.managedTracks.length - 1].metadata = options.metadata;
|
|
11333
|
+
return track;
|
|
11334
|
+
}
|
|
11335
|
+
/** Add a BED/annotation track backed by in-memory features (no URL required). Features must include `chr`. */
|
|
11336
|
+
addBedTrackWithFeatures(features, options) {
|
|
11337
|
+
const { canvas } = this.canvasProvider.createCanvas(0, 0);
|
|
11338
|
+
const track = new AnnotationTrackCanvas(canvas, {
|
|
11339
|
+
locus: this._locus,
|
|
11340
|
+
features: [],
|
|
11341
|
+
config: options === null || options === void 0 ? void 0 : options.config,
|
|
11342
|
+
height: options === null || options === void 0 ? void 0 : options.height,
|
|
11343
|
+
background: options === null || options === void 0 ? void 0 : options.background,
|
|
11344
|
+
theme: this.theme,
|
|
11345
|
+
canvasProvider: this.canvasProvider,
|
|
11346
|
+
workerProvider: this.workerProvider,
|
|
11347
|
+
name: options === null || options === void 0 ? void 0 : options.name,
|
|
11348
|
+
});
|
|
11349
|
+
const dataSource = new MemoryDataSource(features);
|
|
11350
|
+
if (this.cumulativeOffsets) {
|
|
11351
|
+
dataSource.setCumulativeOffsets(this.cumulativeOffsets);
|
|
11352
|
+
}
|
|
11353
|
+
if (this.genome) {
|
|
11354
|
+
dataSource.setChromNameResolver(alias => this.genome.getChromosomeName(alias));
|
|
11355
|
+
}
|
|
11356
|
+
const dataSourceConfig = { type: 'memory' };
|
|
11357
|
+
this.addTrack(track, dataSource, dataSourceConfig, options === null || options === void 0 ? void 0 : options.maxTrackHeight);
|
|
11358
|
+
if (options === null || options === void 0 ? void 0 : options.metadata)
|
|
11359
|
+
this.managedTracks[this.managedTracks.length - 1].metadata = options.metadata;
|
|
11360
|
+
return track;
|
|
11361
|
+
}
|
|
11234
11362
|
/** Add a DNA/RNA sequence track. Data fetching is handled automatically via the genome's sequence provider. */
|
|
11235
11363
|
addSequenceTrack(options) {
|
|
11236
11364
|
const trackConfig = { type: 'sequence', config: options === null || options === void 0 ? void 0 : options.config };
|
|
@@ -14957,4 +15085,4 @@ function createFeatureSource(config, workerProvider) {
|
|
|
14957
15085
|
return { dataSource, trackType, format };
|
|
14958
15086
|
}
|
|
14959
15087
|
|
|
14960
|
-
export { AnnotationTrackCanvas, BaseTrackCanvas, BigWigDataSource, BigWigReader, BinaryParser, BrowserEvent, BufferedRangeReader, C2S, ChromAliasDefaults, CommandDispatcher, CommandError, DOMCanvasProvider, DefaultContextMenuProvider, DefaultPopupProvider, EventEmitter, FeatureCache, GeneDataSource, GenomeBrowser, GtxDataSource, GtxReader, HeadlessGenomeBrowser, InteractionTrackCanvas, IntervalTree, LoomBrowserShell, LoomChromosomeSelect, LoomContextMenu, LoomExportControls, LoomInputDialog, LoomLocusInput, LoomNavbar, LoomPopup, LoomWindowSize, LoomZoomControls, MainThreadProvider, NodeWorkerProvider, READY_STATE_OPEN, ROISet, ROI_DEFAULT_COLOR, ROI_USER_DEFINED_COLOR, RemoteConnection, RulerTrackCanvas, SESSION_VERSION, SequenceDataSource, SequenceTrackCanvas, StateProjection, TabixReader, TextFeatureSource, WebWorkerProvider, WigTrackCanvas, addCaseAliases, assembleGFFTranscripts, bufferLocus, cacheCoversViewport, clampLocus, classicThemeCSS, clearBigWigCache, clearGtxCache, commonContextMenuItems, complementBase, complementSequence, computeCumulativeOffsets, computeWigDataRange, createCachedSequence, createDataSource, createFeatureSource, createGenome, createGenomeSync, createShell, createTrackFromConfig, createTrackFromSession, darkRenderTheme, darkSequenceTheme, darkWigTheme, dataSourceCacheKey, decodeBed, decodeBedGraph, decodeBedpe, decodeBroadPeak, decodeGFF3, decodeGFFAttribute, decodeGTF, decodeGappedPeak, decodeGenePred, decodeGenePredExt, decodeInteract, decodeNarrowPeak, decodeRefGeneJson, decodeRefflat, defaultAnnotationRenderConfig, defaultCanvasProvider, defaultInteractionRenderConfig, defaultNucleotideColors, defaultRenderTheme, defaultRulerRenderConfig, defaultSequenceRenderConfig, defaultWigRenderConfig, drawLetterGlyph, fetchBigWigFeatures, fetchBigWigWGFeatures, fetchGeneFeatures, fetchGtxFeatures, fetchGtxMultiFeatures, fetchGtxWGFeatures, fetchRange, fetchSequence, findUTRs, fixBedPE, formatBpLength, formatLocus, fromIgvSession, generateROIId, genomeToChromCoord, getChromLength, getDecoder, getThemeCSS, getTrackCreator, hg38ChromSizes, hg38Genome, inferFormatFromPath, inferIndexURL, inferTrackType, isBinaryFormat, isCoding, isExon, isHiccups, isIntron, isLikelyIndexed, isMainChromosome, isTranscript, isTranscriptPart, isUTR, isWholeGenomeView, knownFileExtensions, knownTrackTypes, lineWigTheme, mainChromosomeNames, mainThreadProvider, matchesSelector, modernRenderTheme, modernSequenceTheme, modernThemeCSS, modernWigTheme, numericDataMenuItems, packFeatures, parseChromSizes, parseColorString, parseFeatures, parseGFFAttributes, parseHeader, parseLocus, parseStrand, positionString, prettyPrintNumber, registerTrackCreator, registerTypeAlias, renderAnnotationTrack, renderDynSeqFeature, renderInteractionTrack, renderLabelAxis, renderQuantitativeAxis, renderROIOverlays, renderRulerTrack, renderSequenceTrack, renderWholeGenomeRuler, renderWigTrack, resolveAnnotationConfig, resolveInteractionConfig, resolveRulerConfig, resolveSequenceConfig, resolveTheme, resolveWigConfig, reverseComplementSequence, roiContextMenuItems, selectTracks, summarizeWigData, toIgvSession, toTrackSelector, translateSequence, translationDict, warmWigTheme };
|
|
15088
|
+
export { AnnotationTrackCanvas, BaseTrackCanvas, BigWigDataSource, BigWigReader, BinaryParser, BrowserEvent, BufferedRangeReader, C2S, ChromAliasDefaults, CommandDispatcher, CommandError, DOMCanvasProvider, DefaultContextMenuProvider, DefaultPopupProvider, EventEmitter, FeatureCache, GeneDataSource, GenomeBrowser, GtxDataSource, GtxReader, HeadlessGenomeBrowser, InteractionTrackCanvas, IntervalTree, LoomBrowserShell, LoomChromosomeSelect, LoomContextMenu, LoomExportControls, LoomInputDialog, LoomLocusInput, LoomNavbar, LoomPopup, LoomWindowSize, LoomZoomControls, MainThreadProvider, MemoryDataSource, NodeWorkerProvider, READY_STATE_OPEN, ROISet, ROI_DEFAULT_COLOR, ROI_USER_DEFINED_COLOR, RemoteConnection, RulerTrackCanvas, SESSION_VERSION, SequenceDataSource, SequenceTrackCanvas, StateProjection, TabixReader, TextFeatureSource, WebWorkerProvider, WigTrackCanvas, addCaseAliases, assembleGFFTranscripts, bufferLocus, cacheCoversViewport, clampLocus, classicThemeCSS, clearBigWigCache, clearGtxCache, commonContextMenuItems, complementBase, complementSequence, computeCumulativeOffsets, computeWigDataRange, createCachedSequence, createDataSource, createFeatureSource, createGenome, createGenomeSync, createShell, createTrackFromConfig, createTrackFromSession, darkRenderTheme, darkSequenceTheme, darkWigTheme, dataSourceCacheKey, decodeBed, decodeBedGraph, decodeBedpe, decodeBroadPeak, decodeGFF3, decodeGFFAttribute, decodeGTF, decodeGappedPeak, decodeGenePred, decodeGenePredExt, decodeInteract, decodeNarrowPeak, decodeRefGeneJson, decodeRefflat, defaultAnnotationRenderConfig, defaultCanvasProvider, defaultInteractionRenderConfig, defaultNucleotideColors, defaultRenderTheme, defaultRulerRenderConfig, defaultSequenceRenderConfig, defaultWigRenderConfig, drawLetterGlyph, fetchBigWigFeatures, fetchBigWigWGFeatures, fetchGeneFeatures, fetchGtxFeatures, fetchGtxMultiFeatures, fetchGtxWGFeatures, fetchRange, fetchSequence, findUTRs, fixBedPE, formatBpLength, formatLocus, fromIgvSession, generateROIId, genomeToChromCoord, getChromLength, getDecoder, getThemeCSS, getTrackCreator, hg38ChromSizes, hg38Genome, inferFormatFromPath, inferIndexURL, inferTrackType, isBinaryFormat, isCoding, isExon, isHiccups, isIntron, isLikelyIndexed, isMainChromosome, isTranscript, isTranscriptPart, isUTR, isWholeGenomeView, knownFileExtensions, knownTrackTypes, lineWigTheme, mainChromosomeNames, mainThreadProvider, matchesSelector, modernRenderTheme, modernSequenceTheme, modernThemeCSS, modernWigTheme, numericDataMenuItems, packFeatures, parseChromSizes, parseColorString, parseFeatures, parseGFFAttributes, parseHeader, parseLocus, parseStrand, positionString, prettyPrintNumber, registerTrackCreator, registerTypeAlias, renderAnnotationTrack, renderDynSeqFeature, renderInteractionTrack, renderLabelAxis, renderQuantitativeAxis, renderROIOverlays, renderRulerTrack, renderSequenceTrack, renderWholeGenomeRuler, renderWigTrack, resolveAnnotationConfig, resolveInteractionConfig, resolveRulerConfig, resolveSequenceConfig, resolveTheme, resolveWigConfig, reverseComplementSequence, roiContextMenuItems, selectTracks, summarizeWigData, toIgvSession, toTrackSelector, translateSequence, translationDict, warmWigTheme };
|