loom-browser 0.0.1 → 0.0.3
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.esm.js +27 -21
- package/dist/loom.esm.min.js +1 -1
- package/dist/loom.esm.min.js.map +1 -1
- package/dist/loom.js +27 -21
- package/dist/loom.min.js +1 -1
- package/dist/loom.min.js.map +1 -1
- package/dist/types/commandDispatcher.d.ts +22 -1
- package/dist/types/gtx/zstdWasm.d.ts +4 -1
- package/dist/types/gtx/zstdWasmInlined.d.ts +6 -0
- package/dist/types/index.d.ts +1 -1
- package/dist/types/remoteProtocol.d.ts +2 -0
- package/package.json +8 -2
- package/dist/igv.d.ts +0 -667
- package/dist/igv.esm.js +0 -76708
- package/dist/igv.esm.min.js +0 -26
- package/dist/igv.esm.min.js.map +0 -1
- package/dist/igv.js +0 -76716
- package/dist/igv.min.js +0 -26
- package/dist/igv.min.js.map +0 -1
- package/dist/loom.d.ts +0 -667
- package/dist/types/agent/index.d.ts +0 -4
- package/dist/types/agent/stateProjection.d.ts +0 -115
- package/dist/types/agent/trackSelector.d.ts +0 -31
- package/dist/types/baseTrackCanvas.d.ts +0 -62
- package/dist/types/bigwig/binaryParser.d.ts +0 -25
- package/dist/types/bigwig/bpTree.d.ts +0 -40
- package/dist/types/bigwig/bwReader.d.ts +0 -69
- package/dist/types/bigwig/chromTree.d.ts +0 -28
- package/dist/types/bigwig/inflate.d.ts +0 -9
- package/dist/types/bigwig/rangeReader.d.ts +0 -48
- package/dist/types/bigwig/rpTree.d.ts +0 -27
- package/dist/types/dataSources/dynseqDataSource.d.ts +0 -20
- package/dist/types/dynseqRenderer.d.ts +0 -37
- package/dist/types/geneRenderer.d.ts +0 -17
- package/dist/types/geneThemes.d.ts +0 -11
- package/dist/types/geneTrackCanvas.d.ts +0 -46
- package/dist/types/renderTheme.d.ts +0 -72
- package/dist/types/renderThemePresets.d.ts +0 -16
- package/dist/types/rulerRenderer.d.ts +0 -14
- package/dist/types/rulerTrackCanvas.d.ts +0 -32
- package/dist/types/src/bigwig/index.d.ts +0 -66
- package/dist/types/src/canvasProvider.d.ts +0 -36
- package/dist/types/src/commandDispatcher.d.ts +0 -220
- package/dist/types/src/contextMenu.d.ts +0 -64
- package/dist/types/src/contextMenuProvider.d.ts +0 -25
- package/dist/types/src/data/cachedSequence.d.ts +0 -19
- package/dist/types/src/data/ucscApi.d.ts +0 -21
- package/dist/types/src/data/ucscSequence.d.ts +0 -19
- package/dist/types/src/dataLifecycle.d.ts +0 -16
- package/dist/types/src/dataSources/bigWigDataSource.d.ts +0 -24
- package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +0 -9
- package/dist/types/src/dataSources/featureSourceFactory.d.ts +0 -46
- package/dist/types/src/dataSources/geneDataSource.d.ts +0 -16
- package/dist/types/src/dataSources/gtxDataSource.d.ts +0 -42
- package/dist/types/src/dataSources/sequenceDataSource.d.ts +0 -15
- package/dist/types/src/dataSources/textFeatureSource.d.ts +0 -63
- package/dist/types/src/decode/bed.d.ts +0 -64
- package/dist/types/src/decode/bedpe.d.ts +0 -36
- package/dist/types/src/decode/exonUtils.d.ts +0 -29
- package/dist/types/src/decode/gff.d.ts +0 -58
- package/dist/types/src/decode/interact.d.ts +0 -19
- package/dist/types/src/decode/ucsc.d.ts +0 -56
- package/dist/types/src/events.d.ts +0 -23
- package/dist/types/src/export/canvas2svg.d.ts +0 -166
- package/dist/types/src/export/index.d.ts +0 -2
- package/dist/types/src/featureCache.d.ts +0 -69
- package/dist/types/src/formats/featureParser.d.ts +0 -72
- package/dist/types/src/formats/formatDetection.d.ts +0 -46
- package/dist/types/src/genome/chromAlias.d.ts +0 -46
- package/dist/types/src/genome/chromSizes.d.ts +0 -53
- package/dist/types/src/genome/genome.d.ts +0 -51
- package/dist/types/src/genomeBrowser.d.ts +0 -189
- package/dist/types/src/gtx/fetchCoordinator.d.ts +0 -34
- package/dist/types/src/gtx/gtxReader.d.ts +0 -144
- package/dist/types/src/gtx/index.d.ts +0 -40
- package/dist/types/src/gtx/zstdWasm.d.ts +0 -22
- package/dist/types/src/headlessGenomeBrowser.d.ts +0 -450
- package/dist/types/src/index.d.ts +0 -123
- package/dist/types/src/intervalTree.d.ts +0 -56
- package/dist/types/src/io/binaryParser.d.ts +0 -25
- package/dist/types/src/io/index.d.ts +0 -7
- package/dist/types/src/io/rangeReader.d.ts +0 -48
- package/dist/types/src/locusUtils.d.ts +0 -37
- package/dist/types/src/pack.d.ts +0 -41
- package/dist/types/src/popupProvider.d.ts +0 -22
- package/dist/types/src/remoteProtocol.d.ts +0 -81
- package/dist/types/src/roi/index.d.ts +0 -3
- package/dist/types/src/roi/roiRenderer.d.ts +0 -24
- package/dist/types/src/roi/roiSet.d.ts +0 -41
- package/dist/types/src/sequence/sequenceUtils.d.ts +0 -44
- package/dist/types/src/session.d.ts +0 -55
- package/dist/types/src/stateProjection.d.ts +0 -115
- package/dist/types/src/tabix/index.d.ts +0 -48
- package/dist/types/src/themes/index.d.ts +0 -3
- package/dist/types/src/themes/renderTheme.d.ts +0 -86
- package/dist/types/src/themes/renderThemePresets.d.ts +0 -16
- package/dist/types/src/trackRegistry.d.ts +0 -81
- package/dist/types/src/trackSelector.d.ts +0 -31
- package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +0 -17
- package/dist/types/src/tracks/annotation/annotationThemes.d.ts +0 -11
- package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +0 -58
- package/dist/types/src/tracks/annotation/index.d.ts +0 -4
- package/dist/types/src/tracks/axis/axisRenderer.d.ts +0 -19
- package/dist/types/src/tracks/axis/index.d.ts +0 -1
- package/dist/types/src/tracks/baseTrackCanvas.d.ts +0 -113
- package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +0 -38
- package/dist/types/src/tracks/dynseq/index.d.ts +0 -1
- package/dist/types/src/tracks/index.d.ts +0 -7
- package/dist/types/src/tracks/interaction/index.d.ts +0 -4
- package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +0 -52
- package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +0 -54
- package/dist/types/src/tracks/ruler/index.d.ts +0 -3
- package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +0 -25
- package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +0 -43
- package/dist/types/src/tracks/sequence/index.d.ts +0 -5
- package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +0 -34
- package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +0 -11
- package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +0 -67
- package/dist/types/src/tracks/wig/index.d.ts +0 -5
- package/dist/types/src/tracks/wig/wigRenderer.d.ts +0 -15
- package/dist/types/src/tracks/wig/wigSummary.d.ts +0 -31
- package/dist/types/src/tracks/wig/wigThemes.d.ts +0 -15
- package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +0 -82
- package/dist/types/src/types.d.ts +0 -885
- package/dist/types/src/ui/components/LoomBrowserShell.d.ts +0 -52
- package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +0 -18
- package/dist/types/src/ui/components/LoomContextMenu.d.ts +0 -39
- package/dist/types/src/ui/components/LoomExportControls.d.ts +0 -13
- package/dist/types/src/ui/components/LoomInputDialog.d.ts +0 -27
- package/dist/types/src/ui/components/LoomLocusInput.d.ts +0 -18
- package/dist/types/src/ui/components/LoomNavbar.d.ts +0 -15
- package/dist/types/src/ui/components/LoomPopup.d.ts +0 -32
- package/dist/types/src/ui/components/LoomWindowSize.d.ts +0 -14
- package/dist/types/src/ui/components/LoomZoomControls.d.ts +0 -10
- package/dist/types/src/ui/index.d.ts +0 -21
- package/dist/types/src/ui/themes.d.ts +0 -14
- package/dist/types/src/worker/nodeWorkerProvider.d.ts +0 -28
- package/dist/types/src/worker/taskHandler.d.ts +0 -15
- package/dist/types/src/worker/webWorkerProvider.d.ts +0 -51
- package/dist/types/src/worker/workerScript.d.ts +0 -11
- package/dist/types/src/workerProvider.d.ts +0 -76
- package/dist/types/tabix/bgzBlockLoader.d.ts +0 -60
- package/dist/types/tabix/bgzf.d.ts +0 -43
- package/dist/types/tabix/tabixIndex.d.ts +0 -85
- package/dist/types/tabix/tabixReader.d.ts +0 -60
- package/dist/types/tabix/virtualOffset.d.ts +0 -41
- package/dist/types/test/src/mockCanvasProvider.d.ts +0 -67
- package/dist/types/test/src/testBedDecode.d.ts +0 -1
- package/dist/types/test/src/testCanvas2SVG.d.ts +0 -7
- package/dist/types/test/src/testChromAlias.d.ts +0 -1
- package/dist/types/test/src/testCommandDispatcher.d.ts +0 -1
- package/dist/types/test/src/testData.d.ts +0 -7
- package/dist/types/test/src/testDataLifecycle.d.ts +0 -1
- package/dist/types/test/src/testDataSourceCacheKey.d.ts +0 -1
- package/dist/types/test/src/testDataSources.d.ts +0 -5
- package/dist/types/test/src/testDecodeUcsc.d.ts +0 -1
- package/dist/types/test/src/testEvents.d.ts +0 -1
- package/dist/types/test/src/testFeatureCache.d.ts +0 -1
- package/dist/types/test/src/testFeatureParser.d.ts +0 -1
- package/dist/types/test/src/testFormatDetection.d.ts +0 -1
- package/dist/types/test/src/testGffDecode.d.ts +0 -1
- package/dist/types/test/src/testHeadlessBrowser.d.ts +0 -1
- package/dist/types/test/src/testInteractionDecoder.d.ts +0 -1
- package/dist/types/test/src/testIntervalTree.d.ts +0 -1
- package/dist/types/test/src/testLocusUtils.d.ts +0 -1
- package/dist/types/test/src/testPack.d.ts +0 -1
- package/dist/types/test/src/testROI.d.ts +0 -1
- package/dist/types/test/src/testRemoteProtocol.d.ts +0 -1
- package/dist/types/test/src/testRenderTheme.d.ts +0 -1
- package/dist/types/test/src/testSVGExport.d.ts +0 -5
- package/dist/types/test/src/testSequence.d.ts +0 -1
- package/dist/types/test/src/testSession.d.ts +0 -1
- package/dist/types/test/src/testTrackSelector.d.ts +0 -1
- package/dist/types/test/src/testTrackSerialize.d.ts +0 -1
- package/dist/types/test/src/testWigSummary.d.ts +0 -1
- package/dist/types/test/src/testWorkerDispatch.d.ts +0 -9
- package/dist/types/tracks/gene/geneRenderer.d.ts +0 -17
- package/dist/types/tracks/gene/geneThemes.d.ts +0 -11
- package/dist/types/tracks/gene/geneTrackCanvas.d.ts +0 -58
- package/dist/types/tracks/gene/index.d.ts +0 -4
- package/dist/types/ui/components/IgvBrowserShell.d.ts +0 -52
- package/dist/types/ui/components/IgvChromosomeSelect.d.ts +0 -18
- package/dist/types/ui/components/IgvExportControls.d.ts +0 -13
- package/dist/types/ui/components/IgvLocusInput.d.ts +0 -18
- package/dist/types/ui/components/IgvNavbar.d.ts +0 -15
- package/dist/types/ui/components/IgvWindowSize.d.ts +0 -14
- package/dist/types/ui/components/IgvZoomControls.d.ts +0 -10
- package/dist/types/wigRenderer.d.ts +0 -15
- package/dist/types/wigSummary.d.ts +0 -31
- package/dist/types/wigThemes.d.ts +0 -15
- package/dist/types/wigTrackCanvas.d.ts +0 -46
- package/dist/types/worker/decodeWig.d.ts +0 -20
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-browser> — Top-level shell combining navbar + GenomeBrowser.
|
|
3
|
-
*
|
|
4
|
-
* Usage:
|
|
5
|
-
* const shell = document.createElement('loom-browser')
|
|
6
|
-
* shell.setAttribute('theme', 'modern')
|
|
7
|
-
* container.appendChild(shell)
|
|
8
|
-
* shell.initialize({ locus: { chr: 'chr17', start: 7668000, end: 7688000 } })
|
|
9
|
-
* shell.addTrack(rulerTrack)
|
|
10
|
-
* shell.addTrack(geneTrack)
|
|
11
|
-
*
|
|
12
|
-
* Or use the createShell() helper:
|
|
13
|
-
* const shell = createShell(container, { locus, theme: 'modern' })
|
|
14
|
-
*/
|
|
15
|
-
import { GenomeBrowser } from '../../genomeBrowser';
|
|
16
|
-
import type { GenomeBrowserOptions, BrowserEvents } from '../../genomeBrowser';
|
|
17
|
-
import type { Locus, Track } from '../../types';
|
|
18
|
-
import type { ShellTheme } from '../themes';
|
|
19
|
-
export declare class LoomBrowserShell extends HTMLElement {
|
|
20
|
-
private navbar;
|
|
21
|
-
private trackContainer;
|
|
22
|
-
private themeStyle;
|
|
23
|
-
private _browser;
|
|
24
|
-
static get observedAttributes(): string[];
|
|
25
|
-
constructor();
|
|
26
|
-
attributeChangedCallback(name: string, _oldValue: string | null, newValue: string | null): void;
|
|
27
|
-
private applyTheme;
|
|
28
|
-
connectedCallback(): void;
|
|
29
|
-
/** Initialize the GenomeBrowser inside this shell. */
|
|
30
|
-
initialize(options: GenomeBrowserOptions): GenomeBrowser;
|
|
31
|
-
/** Get the underlying GenomeBrowser instance. */
|
|
32
|
-
get browser(): GenomeBrowser | null;
|
|
33
|
-
/** Proxy: add a track to the browser. */
|
|
34
|
-
addTrack(track: Track): void;
|
|
35
|
-
/** Proxy: remove a track from the browser. */
|
|
36
|
-
removeTrack(track: Track): void;
|
|
37
|
-
/** Proxy: set the locus. */
|
|
38
|
-
setLocus(locus: Locus): void;
|
|
39
|
-
/** Proxy: subscribe to browser events. */
|
|
40
|
-
on<K extends keyof BrowserEvents>(event: K, handler: (data: BrowserEvents[K]) => void): (() => void) | undefined;
|
|
41
|
-
disconnectedCallback(): void;
|
|
42
|
-
}
|
|
43
|
-
/** Options for createShell(). */
|
|
44
|
-
export interface CreateShellOptions extends GenomeBrowserOptions {
|
|
45
|
-
/** UI shell theme (CSS chrome). Separate from GenomeBrowserOptions.theme (render palette). */
|
|
46
|
-
shellTheme?: ShellTheme;
|
|
47
|
-
}
|
|
48
|
-
/**
|
|
49
|
-
* Convenience function to create an <loom-browser> shell and initialize it.
|
|
50
|
-
* Returns the shell element (with .browser for the underlying GenomeBrowser).
|
|
51
|
-
*/
|
|
52
|
-
export declare function createShell(container: HTMLElement, options: CreateShellOptions): LoomBrowserShell;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-chromosome-select> — Chromosome dropdown for quick navigation.
|
|
3
|
-
*
|
|
4
|
-
* Lists main chromosomes (chr1-22, X, Y, M) plus "All" for whole genome view.
|
|
5
|
-
* Updates automatically when the browser locus changes.
|
|
6
|
-
*/
|
|
7
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
8
|
-
export declare class LoomChromosomeSelect extends HTMLElement {
|
|
9
|
-
private select;
|
|
10
|
-
private unsubscribe;
|
|
11
|
-
private _browser;
|
|
12
|
-
constructor();
|
|
13
|
-
set browser(b: GenomeBrowser | null);
|
|
14
|
-
get browser(): GenomeBrowser | null;
|
|
15
|
-
private populate;
|
|
16
|
-
private updateSelection;
|
|
17
|
-
disconnectedCallback(): void;
|
|
18
|
-
}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-context-menu> — Right-click context menu Web Component.
|
|
3
|
-
*
|
|
4
|
-
* Renders ContextMenuItem[] as a styled menu with action items, checkboxes,
|
|
5
|
-
* separators, and one level of submenu nesting.
|
|
6
|
-
*
|
|
7
|
-
* Also exports DefaultContextMenuProvider which wraps this component and
|
|
8
|
-
* implements the ContextMenuProvider interface.
|
|
9
|
-
*
|
|
10
|
-
* Customizable via CSS custom properties:
|
|
11
|
-
* --loom-menu-bg, --loom-menu-border, --loom-menu-radius, --loom-menu-shadow,
|
|
12
|
-
* --loom-menu-font, --loom-menu-color, --loom-menu-hover, --loom-menu-divider
|
|
13
|
-
*/
|
|
14
|
-
import type { ContextMenuItem } from '../../types';
|
|
15
|
-
import type { ContextMenuProvider } from '../../contextMenuProvider';
|
|
16
|
-
export declare class LoomContextMenu extends HTMLElement {
|
|
17
|
-
private menuDiv;
|
|
18
|
-
constructor();
|
|
19
|
-
connectedCallback(): void;
|
|
20
|
-
/** Populate the menu from typed ContextMenuItem data. */
|
|
21
|
-
setItems(items: ContextMenuItem[]): void;
|
|
22
|
-
private buildItems;
|
|
23
|
-
/** Position and show the menu, clamping to container bounds. */
|
|
24
|
-
showAt(x: number, y: number): void;
|
|
25
|
-
hide(): void;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Default ContextMenuProvider using the <loom-context-menu> Web Component.
|
|
29
|
-
* Lazily creates the element on first show() call (same pattern as DefaultPopupProvider).
|
|
30
|
-
*/
|
|
31
|
-
export declare class DefaultContextMenuProvider implements ContextMenuProvider {
|
|
32
|
-
private element;
|
|
33
|
-
show(items: ContextMenuItem[], position: {
|
|
34
|
-
x: number;
|
|
35
|
-
y: number;
|
|
36
|
-
}, container: HTMLElement): void;
|
|
37
|
-
hide(): void;
|
|
38
|
-
dispose(): void;
|
|
39
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-export-controls> — SVG/PNG export buttons.
|
|
3
|
-
*
|
|
4
|
-
* Adds "Save SVG" and "Save PNG" buttons to the shell navbar.
|
|
5
|
-
* Calls GenomeBrowser.saveSVGtoFile() and savePNGtoFile() respectively.
|
|
6
|
-
*/
|
|
7
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
8
|
-
export declare class LoomExportControls extends HTMLElement {
|
|
9
|
-
private _browser;
|
|
10
|
-
constructor();
|
|
11
|
-
set browser(b: GenomeBrowser | null);
|
|
12
|
-
get browser(): GenomeBrowser | null;
|
|
13
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-input-dialog> — Simple modal input dialog Web Component.
|
|
3
|
-
*
|
|
4
|
-
* Shows a label, text input, and OK/Cancel buttons. Returns the entered
|
|
5
|
-
* value via a Promise. Used by the context menu's "Set track height" action.
|
|
6
|
-
*
|
|
7
|
-
* Customizable via CSS custom properties:
|
|
8
|
-
* --loom-dialog-bg, --loom-dialog-border, --loom-dialog-shadow,
|
|
9
|
-
* --loom-dialog-font, --loom-dialog-color, --loom-dialog-radius,
|
|
10
|
-
* --loom-dialog-btn-bg, --loom-dialog-btn-color
|
|
11
|
-
*/
|
|
12
|
-
export declare class LoomInputDialog extends HTMLElement {
|
|
13
|
-
private labelEl;
|
|
14
|
-
private inputEl;
|
|
15
|
-
private okBtn;
|
|
16
|
-
private cancelBtn;
|
|
17
|
-
private resolve;
|
|
18
|
-
constructor();
|
|
19
|
-
connectedCallback(): void;
|
|
20
|
-
/**
|
|
21
|
-
* Show the dialog and return a Promise that resolves with the input value
|
|
22
|
-
* (on OK/Enter) or null (on Cancel/Escape).
|
|
23
|
-
*/
|
|
24
|
-
prompt(label: string, currentValue: string | number): Promise<string | null>;
|
|
25
|
-
private confirm;
|
|
26
|
-
private cancel;
|
|
27
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-locus-input> — Locus search/display input.
|
|
3
|
-
*
|
|
4
|
-
* Shows the current locus as a formatted string. User can type a new locus
|
|
5
|
-
* and press Enter to navigate. Updates automatically on locuschange events.
|
|
6
|
-
*/
|
|
7
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
8
|
-
export declare class LoomLocusInput extends HTMLElement {
|
|
9
|
-
private input;
|
|
10
|
-
private unsubscribe;
|
|
11
|
-
private _browser;
|
|
12
|
-
constructor();
|
|
13
|
-
set browser(b: GenomeBrowser | null);
|
|
14
|
-
get browser(): GenomeBrowser | null;
|
|
15
|
-
private updateDisplay;
|
|
16
|
-
private doSearch;
|
|
17
|
-
disconnectedCallback(): void;
|
|
18
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-navbar> — Horizontal navigation bar composing locus input, window size, and zoom controls.
|
|
3
|
-
*/
|
|
4
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
-
export declare class LoomNavbar extends HTMLElement {
|
|
6
|
-
private chromSelect;
|
|
7
|
-
private locusInput;
|
|
8
|
-
private zoomControls;
|
|
9
|
-
private windowSize;
|
|
10
|
-
private exportControls;
|
|
11
|
-
private _browser;
|
|
12
|
-
constructor();
|
|
13
|
-
set browser(b: GenomeBrowser | null);
|
|
14
|
-
get browser(): GenomeBrowser | null;
|
|
15
|
-
}
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-popup> — Feature popup / tooltip Web Component.
|
|
3
|
-
*
|
|
4
|
-
* Renders PopupDataItem[] as a name/value table. Positioned as a floating
|
|
5
|
-
* element near the pointer, clamped to stay within the viewport.
|
|
6
|
-
*
|
|
7
|
-
* Also exports DefaultPopupProvider which wraps this component and
|
|
8
|
-
* implements the PopupProvider interface.
|
|
9
|
-
*/
|
|
10
|
-
import type { PopupDataItem } from '../../types';
|
|
11
|
-
import type { PopupProvider } from '../../popupProvider';
|
|
12
|
-
export declare class LoomPopup extends HTMLElement {
|
|
13
|
-
constructor();
|
|
14
|
-
/** Populate popup with data items and show it. */
|
|
15
|
-
setData(data: PopupDataItem[]): void;
|
|
16
|
-
/** Position relative to a parent container and show. */
|
|
17
|
-
showAt(x: number, y: number): void;
|
|
18
|
-
hide(): void;
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Default PopupProvider implementation using the <loom-popup> Web Component.
|
|
22
|
-
* Creates and manages a single popup element within the browser container.
|
|
23
|
-
*/
|
|
24
|
-
export declare class DefaultPopupProvider implements PopupProvider {
|
|
25
|
-
private element;
|
|
26
|
-
show(data: PopupDataItem[], position: {
|
|
27
|
-
x: number;
|
|
28
|
-
y: number;
|
|
29
|
-
}, container: HTMLElement): void;
|
|
30
|
-
hide(): void;
|
|
31
|
-
dispose(): void;
|
|
32
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-window-size> — Read-only display of current viewport bp range.
|
|
3
|
-
*/
|
|
4
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
-
export declare class LoomWindowSize extends HTMLElement {
|
|
6
|
-
private label;
|
|
7
|
-
private unsubscribe;
|
|
8
|
-
private _browser;
|
|
9
|
-
constructor();
|
|
10
|
-
set browser(b: GenomeBrowser | null);
|
|
11
|
-
get browser(): GenomeBrowser | null;
|
|
12
|
-
private update;
|
|
13
|
-
disconnectedCallback(): void;
|
|
14
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* <loom-zoom-controls> — Zoom in/out buttons.
|
|
3
|
-
*/
|
|
4
|
-
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
-
export declare class LoomZoomControls extends HTMLElement {
|
|
6
|
-
private _browser;
|
|
7
|
-
constructor();
|
|
8
|
-
set browser(b: GenomeBrowser | null);
|
|
9
|
-
get browser(): GenomeBrowser | null;
|
|
10
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* UI Shell — Web components for interacting with the headless GenomeBrowser.
|
|
3
|
-
*
|
|
4
|
-
* Importing this module auto-registers all custom elements:
|
|
5
|
-
* <loom-browser>, <loom-navbar>, <loom-chromosome-select>, <loom-locus-input>, <loom-zoom-controls>, <loom-window-size>, <loom-export-controls>
|
|
6
|
-
*/
|
|
7
|
-
export { EventEmitter } from '../events';
|
|
8
|
-
export { parseLocus, formatLocus, formatBpLength } from '../locusUtils';
|
|
9
|
-
export { classicThemeCSS, modernThemeCSS, getThemeCSS } from './themes';
|
|
10
|
-
export type { ShellTheme } from './themes';
|
|
11
|
-
export { LoomChromosomeSelect } from './components/LoomChromosomeSelect';
|
|
12
|
-
export { LoomLocusInput } from './components/LoomLocusInput';
|
|
13
|
-
export { LoomZoomControls } from './components/LoomZoomControls';
|
|
14
|
-
export { LoomWindowSize } from './components/LoomWindowSize';
|
|
15
|
-
export { LoomExportControls } from './components/LoomExportControls';
|
|
16
|
-
export { LoomNavbar } from './components/LoomNavbar';
|
|
17
|
-
export { LoomBrowserShell, createShell } from './components/LoomBrowserShell';
|
|
18
|
-
export type { CreateShellOptions } from './components/LoomBrowserShell';
|
|
19
|
-
export { LoomPopup, DefaultPopupProvider } from './components/LoomPopup';
|
|
20
|
-
export { LoomContextMenu, DefaultContextMenuProvider } from './components/LoomContextMenu';
|
|
21
|
-
export { LoomInputDialog } from './components/LoomInputDialog';
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CSS custom property themes for UI shell web components.
|
|
3
|
-
*
|
|
4
|
-
* Themes are injected as <style> blocks into Shadow DOM roots.
|
|
5
|
-
* Components reference CSS custom properties (--loom-*) for all visual styling.
|
|
6
|
-
*/
|
|
7
|
-
export type ShellTheme = 'classic' | 'modern' | 'dark';
|
|
8
|
-
/** Classic theme — matches igv.js navbar look. */
|
|
9
|
-
export declare const classicThemeCSS = "\n:host {\n --loom-navbar-bg: #f3f3f3;\n --loom-navbar-height: 32px;\n --loom-navbar-padding: 0 8px;\n --loom-font: 12px Arial, sans-serif;\n --loom-font-small: 11px Arial, sans-serif;\n --loom-text-color: #333;\n --loom-text-muted: #737373;\n --loom-border: 1px solid #ccc;\n --loom-border-radius: 4px;\n --loom-button-bg: white;\n --loom-button-hover: #e8e8e8;\n --loom-button-border: 1px solid #b0b0b0;\n --loom-button-size: 24px;\n --loom-input-bg: white;\n --loom-input-border: 1px solid #b0b0b0;\n --loom-input-focus-border: 1px solid #4A90D9;\n --loom-input-width: 220px;\n --loom-input-height: 22px;\n --loom-accent: #4A90D9;\n --loom-icon-color: #555;\n --loom-icon-size: 14px;\n --loom-gap: 8px;\n}\n";
|
|
10
|
-
/** Modern theme — softer colors, rounded corners, taller navbar. */
|
|
11
|
-
export declare const modernThemeCSS = "\n:host {\n --loom-navbar-bg: #fafbfc;\n --loom-navbar-height: 40px;\n --loom-navbar-padding: 0 12px;\n --loom-font: 13px Inter, system-ui, -apple-system, sans-serif;\n --loom-font-small: 11px Inter, system-ui, -apple-system, sans-serif;\n --loom-text-color: #1a1a1a;\n --loom-text-muted: #6b7280;\n --loom-border: 1px solid rgba(0, 0, 0, 0.08);\n --loom-border-radius: 8px;\n --loom-button-bg: white;\n --loom-button-hover: #f0f4ff;\n --loom-button-border: 1px solid rgba(0, 0, 0, 0.1);\n --loom-button-size: 28px;\n --loom-input-bg: white;\n --loom-input-border: 1px solid rgba(0, 0, 0, 0.12);\n --loom-input-focus-border: 1px solid #4A90D9;\n --loom-input-width: 260px;\n --loom-input-height: 28px;\n --loom-accent: #4A90D9;\n --loom-icon-color: #6b7280;\n --loom-icon-size: 16px;\n --loom-gap: 10px;\n}\n";
|
|
12
|
-
/** Dark theme — dark backgrounds, light text, high contrast. */
|
|
13
|
-
export declare const darkThemeCSS = "\n:host {\n --loom-shell-bg: #16162a;\n --loom-navbar-bg: #1a1a2e;\n --loom-navbar-height: 36px;\n --loom-navbar-padding: 0 10px;\n --loom-font: 12px Arial, sans-serif;\n --loom-font-small: 11px Arial, sans-serif;\n --loom-text-color: #e0e0e0;\n --loom-text-muted: #888;\n --loom-border: 1px solid #333;\n --loom-border-radius: 4px;\n --loom-button-bg: #2a2a3e;\n --loom-button-hover: #3a3a50;\n --loom-button-border: 1px solid #444;\n --loom-button-size: 24px;\n --loom-input-bg: #2a2a3e;\n --loom-input-border: 1px solid #444;\n --loom-input-focus-border: 1px solid #6a9fd9;\n --loom-input-width: 220px;\n --loom-input-height: 22px;\n --loom-accent: #6a9fd9;\n --loom-icon-color: #b0b0b0;\n --loom-icon-size: 14px;\n --loom-gap: 8px;\n}\n";
|
|
14
|
-
export declare function getThemeCSS(theme: ShellTheme): string;
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NodeWorkerProvider — Node.js worker_threads implementation of WorkerProvider.
|
|
3
|
-
*
|
|
4
|
-
* Same RPC pattern as WebWorkerProvider but uses Node.js worker_threads API.
|
|
5
|
-
* All worker_threads references use dynamic import() to avoid requiring
|
|
6
|
-
* @types/node in browser-targeted builds.
|
|
7
|
-
*
|
|
8
|
-
* Usage:
|
|
9
|
-
* import { NodeWorkerProvider } from './worker/nodeWorkerProvider'
|
|
10
|
-
* const provider = new NodeWorkerProvider(new URL('./nodeWorkerScript.js', import.meta.url))
|
|
11
|
-
* const browser = new HeadlessGenomeBrowser({ ..., workerProvider: provider })
|
|
12
|
-
* // ...
|
|
13
|
-
* provider.dispose()
|
|
14
|
-
*/
|
|
15
|
-
import type { WorkerProvider, WorkerTask, WorkerTaskResultMap } from '../workerProvider';
|
|
16
|
-
export declare class NodeWorkerProvider implements WorkerProvider {
|
|
17
|
-
private worker;
|
|
18
|
-
private nextId;
|
|
19
|
-
private pending;
|
|
20
|
-
private initPromise;
|
|
21
|
-
/**
|
|
22
|
-
* @param workerPath - Path or URL to the Node.js worker script.
|
|
23
|
-
*/
|
|
24
|
-
constructor(workerPath: string | URL);
|
|
25
|
-
private init;
|
|
26
|
-
execute<T extends WorkerTask>(task: T, transfer?: Transferable[]): Promise<WorkerTaskResultMap[T['task']]>;
|
|
27
|
-
dispose(): void;
|
|
28
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pure task dispatcher for worker threads.
|
|
3
|
-
*
|
|
4
|
-
* Maps WorkerTask → result using existing pure functions. No DOM, no
|
|
5
|
-
* environment-specific APIs. Imported by both the Web Worker script
|
|
6
|
-
* and the Node.js worker_threads script.
|
|
7
|
-
*/
|
|
8
|
-
import type { WorkerTask, WorkerTaskResultMap } from '../workerProvider';
|
|
9
|
-
/**
|
|
10
|
-
* Handle a worker task and return the result.
|
|
11
|
-
*
|
|
12
|
-
* Each task is dispatched to the appropriate pure function. The return
|
|
13
|
-
* value must be structured-clone-safe (or Transferable for ArrayBuffers).
|
|
14
|
-
*/
|
|
15
|
-
export declare function handleTask(task: WorkerTask): Promise<WorkerTaskResultMap[WorkerTask['task']]>;
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WebWorkerProvider — browser Web Worker implementation of WorkerProvider.
|
|
3
|
-
*
|
|
4
|
-
* Creates a pool of worker threads and dispatches tasks via round-robin.
|
|
5
|
-
* Supports Transferable for zero-copy ArrayBuffer transfer.
|
|
6
|
-
*
|
|
7
|
-
* Usage:
|
|
8
|
-
* const provider = new WebWorkerProvider({ workerUrl: '/loom-worker.js', poolSize: 4 })
|
|
9
|
-
* const browser = new GenomeBrowser({ ..., workerProvider: provider })
|
|
10
|
-
* // ...
|
|
11
|
-
* provider.dispose()
|
|
12
|
-
*/
|
|
13
|
-
import type { WorkerProvider, WorkerTask, WorkerTaskResultMap } from '../workerProvider';
|
|
14
|
-
export interface WebWorkerProviderOptions {
|
|
15
|
-
/**
|
|
16
|
-
* URL to the worker script (built from workerScript.ts).
|
|
17
|
-
* Can be a blob URL, data URL, or path to a bundled worker script.
|
|
18
|
-
* Mutually exclusive with `workerFactory`.
|
|
19
|
-
*/
|
|
20
|
-
workerUrl?: string | URL;
|
|
21
|
-
/**
|
|
22
|
-
* Factory function that creates Worker instances.
|
|
23
|
-
* Use this with bundlers like webpack 5 that require `new Worker(new URL(...))` in
|
|
24
|
-
* the same expression for static analysis:
|
|
25
|
-
*
|
|
26
|
-
* workerFactory: () => new Worker(new URL('./workerScript.ts', import.meta.url))
|
|
27
|
-
*
|
|
28
|
-
* Mutually exclusive with `workerUrl`.
|
|
29
|
-
*/
|
|
30
|
-
workerFactory?: () => Worker;
|
|
31
|
-
/**
|
|
32
|
-
* Number of workers in the pool. Tasks are distributed round-robin.
|
|
33
|
-
* Default: 1.
|
|
34
|
-
*/
|
|
35
|
-
poolSize?: number;
|
|
36
|
-
}
|
|
37
|
-
export declare class WebWorkerProvider implements WorkerProvider {
|
|
38
|
-
private workers;
|
|
39
|
-
private nextId;
|
|
40
|
-
private nextWorker;
|
|
41
|
-
private pending;
|
|
42
|
-
/**
|
|
43
|
-
* @param optionsOrUrl - Options object with workerUrl and poolSize,
|
|
44
|
-
* or a URL string/URL for backward compatibility (single worker).
|
|
45
|
-
*/
|
|
46
|
-
constructor(optionsOrUrl: WebWorkerProviderOptions | string | URL);
|
|
47
|
-
/** Number of workers in the pool. */
|
|
48
|
-
get poolSize(): number;
|
|
49
|
-
execute<T extends WorkerTask>(task: T, transfer?: Transferable[]): Promise<WorkerTaskResultMap[T['task']]>;
|
|
50
|
-
dispose(): void;
|
|
51
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Web Worker entry point.
|
|
3
|
-
*
|
|
4
|
-
* This file is the script that runs inside the Web Worker. It listens
|
|
5
|
-
* for messages from the main thread, dispatches them to the task handler,
|
|
6
|
-
* and posts results back.
|
|
7
|
-
*
|
|
8
|
-
* Bundle this file as a standalone module (e.g. via Rollup/Vite worker plugin)
|
|
9
|
-
* and pass the resulting URL to WebWorkerProvider.
|
|
10
|
-
*/
|
|
11
|
-
export {};
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WorkerProvider — environment abstraction for offloading CPU-intensive tasks.
|
|
3
|
-
*
|
|
4
|
-
* Follows the same injection pattern as CanvasProvider:
|
|
5
|
-
* - Interface with minimal methods
|
|
6
|
-
* - Concrete implementations for each environment
|
|
7
|
-
* - Optional injection with a sensible default (MainThreadProvider)
|
|
8
|
-
*
|
|
9
|
-
* Implementations:
|
|
10
|
-
* - MainThreadProvider — synchronous fallback (runs tasks on main thread)
|
|
11
|
-
* - WebWorkerProvider — browser (Web Workers)
|
|
12
|
-
* - NodeWorkerProvider — Node.js (worker_threads)
|
|
13
|
-
*/
|
|
14
|
-
import type { AnnotationFeature, WigFeature, WindowFunction, TextFileFormat } from './types';
|
|
15
|
-
import type { FeatureHeader } from './formats/featureParser';
|
|
16
|
-
export interface PackTask {
|
|
17
|
-
task: 'pack';
|
|
18
|
-
features: AnnotationFeature[];
|
|
19
|
-
maxRows?: number;
|
|
20
|
-
}
|
|
21
|
-
export interface SummarizeWigTask {
|
|
22
|
-
task: 'summarize';
|
|
23
|
-
features: WigFeature[];
|
|
24
|
-
startBP: number;
|
|
25
|
-
bpPerPixel: number;
|
|
26
|
-
windowFunction: WindowFunction;
|
|
27
|
-
}
|
|
28
|
-
export interface ComputeWigRangeTask {
|
|
29
|
-
task: 'computeWigRange';
|
|
30
|
-
features: WigFeature[];
|
|
31
|
-
}
|
|
32
|
-
export interface ParseFeaturesTask {
|
|
33
|
-
task: 'parseFeatures';
|
|
34
|
-
/** Raw text lines to parse. */
|
|
35
|
-
lines: string[];
|
|
36
|
-
/** File format (bed, gff3, narrowpeak, etc.). */
|
|
37
|
-
format: TextFileFormat;
|
|
38
|
-
/** Pre-parsed header metadata. */
|
|
39
|
-
header?: FeatureHeader;
|
|
40
|
-
/** Whether to assemble GFF transcripts. Default: true. */
|
|
41
|
-
assembleGFF?: boolean;
|
|
42
|
-
}
|
|
43
|
-
export type WorkerTask = PackTask | SummarizeWigTask | ComputeWigRangeTask | ParseFeaturesTask;
|
|
44
|
-
/** Maps task name → result type. */
|
|
45
|
-
export interface WorkerTaskResultMap {
|
|
46
|
-
pack: AnnotationFeature[];
|
|
47
|
-
summarize: WigFeature[];
|
|
48
|
-
computeWigRange: {
|
|
49
|
-
min: number;
|
|
50
|
-
max: number;
|
|
51
|
-
};
|
|
52
|
-
parseFeatures: unknown[];
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Execute CPU-intensive tasks, potentially in a worker thread.
|
|
56
|
-
*
|
|
57
|
-
* The `transfer` parameter accepts `Transferable` objects (e.g. `ArrayBuffer`)
|
|
58
|
-
* for zero-copy transfer to the worker. After transfer, the original buffer
|
|
59
|
-
* becomes detached on the sending side.
|
|
60
|
-
*/
|
|
61
|
-
export interface WorkerProvider {
|
|
62
|
-
execute<T extends WorkerTask>(task: T, transfer?: Transferable[]): Promise<WorkerTaskResultMap[T['task']]>;
|
|
63
|
-
/** Terminate worker threads and release resources. */
|
|
64
|
-
dispose(): void;
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Runs all tasks on the main thread using direct function calls.
|
|
68
|
-
* This is the default when no WorkerProvider is supplied.
|
|
69
|
-
*/
|
|
70
|
-
export declare class MainThreadProvider implements WorkerProvider {
|
|
71
|
-
execute<T extends WorkerTask>(task: T): Promise<WorkerTaskResultMap[T['task']]>;
|
|
72
|
-
private dispatch;
|
|
73
|
-
dispose(): void;
|
|
74
|
-
}
|
|
75
|
-
/** Default worker provider: runs everything on the main thread. */
|
|
76
|
-
export declare const mainThreadProvider: WorkerProvider;
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BGZF block loader — fetches and decompresses BGZF blocks via HTTP range requests.
|
|
3
|
-
*
|
|
4
|
-
* Given two virtual offsets (from a tabix index), fetches the compressed bytes
|
|
5
|
-
* covering those blocks, decompresses them, and returns the data between the
|
|
6
|
-
* virtual offset boundaries.
|
|
7
|
-
*
|
|
8
|
-
* Caches the most recent compressed byte range so sequential/overlapping queries
|
|
9
|
-
* (common when iterating through tabix chunks) avoid redundant HTTP requests.
|
|
10
|
-
*
|
|
11
|
-
* Port of js/bam/bgzBlockLoader.ts BGZBlockLoader.
|
|
12
|
-
* Layer 1 (Data + Layout): pure data, no DOM.
|
|
13
|
-
*/
|
|
14
|
-
import type { VirtualOffset } from './virtualOffset';
|
|
15
|
-
import type { WorkerProvider } from '../workerProvider';
|
|
16
|
-
export interface BgzBlockLoaderOptions {
|
|
17
|
-
/**
|
|
18
|
-
* Cache compressed blocks for sequential/overlapping queries.
|
|
19
|
-
* Default: true. Disable for memory-constrained environments.
|
|
20
|
-
* Matches igv.js BGZBlockLoader.cacheBlocks config.
|
|
21
|
-
*/
|
|
22
|
-
cacheBlocks?: boolean;
|
|
23
|
-
/** Worker provider for offloading BGZF decompression. */
|
|
24
|
-
workerProvider?: WorkerProvider;
|
|
25
|
-
}
|
|
26
|
-
export declare class BgzBlockLoader {
|
|
27
|
-
private readonly url;
|
|
28
|
-
private readonly cacheEnabled;
|
|
29
|
-
private readonly workerProvider?;
|
|
30
|
-
private cache;
|
|
31
|
-
constructor(url: string, options?: BgzBlockLoaderOptions);
|
|
32
|
-
/**
|
|
33
|
-
* Fetch and decompress data between two virtual offsets.
|
|
34
|
-
*
|
|
35
|
-
* Uses a single-entry cache of compressed bytes. When the requested range
|
|
36
|
-
* overlaps or falls within the cached range, only the missing portions are
|
|
37
|
-
* fetched. This matches the igv.js pattern where sequential tabix chunks
|
|
38
|
-
* often share or overlap compressed block ranges.
|
|
39
|
-
*
|
|
40
|
-
* Port of js/bam/bgzBlockLoader.ts BGZBlockLoader.getData().
|
|
41
|
-
*/
|
|
42
|
-
getData(minv: VirtualOffset, maxv: VirtualOffset, signal?: AbortSignal): Promise<Uint8Array>;
|
|
43
|
-
/**
|
|
44
|
-
* Return inflated blocks for the given compressed block range.
|
|
45
|
-
* Manages the compressed-data cache to minimize HTTP requests.
|
|
46
|
-
*
|
|
47
|
-
* Port of js/bam/bgzBlockLoader.ts BGZBlockLoader.getInflatedBlocks().
|
|
48
|
-
*/
|
|
49
|
-
private getInflatedBlocks;
|
|
50
|
-
/**
|
|
51
|
-
* Decompress BGZF blocks, delegating to worker when available.
|
|
52
|
-
*/
|
|
53
|
-
private inflate;
|
|
54
|
-
/**
|
|
55
|
-
* Fetch compressed block data from the remote file.
|
|
56
|
-
*
|
|
57
|
-
* Port of js/bam/bgzBlockLoader.ts BGZBlockLoader.loadBLockData().
|
|
58
|
-
*/
|
|
59
|
-
private loadBlockData;
|
|
60
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* BGZF (Block GZipped Format) detection and decompression.
|
|
3
|
-
*
|
|
4
|
-
* BGZF is a variant of gzip that stores data in independently compressed
|
|
5
|
-
* blocks, enabling random access. Each block has a standard gzip header
|
|
6
|
-
* with a BGZF-specific extra field encoding the block size.
|
|
7
|
-
*
|
|
8
|
-
* Uses pako.inflateRaw() for synchronous decompression — matching igv.js
|
|
9
|
-
* which uses the same library via igv-utils. No async overhead, no stream
|
|
10
|
-
* setup per block.
|
|
11
|
-
*
|
|
12
|
-
* Port of js/bam/bgzBlockLoader.ts inflateBlocks() and
|
|
13
|
-
* igv-utils/bgzf.js unbgzf().
|
|
14
|
-
*
|
|
15
|
-
* Layer 1 (Data + Layout): pure data, no DOM.
|
|
16
|
-
*/
|
|
17
|
-
/** Check if data starts with BGZF magic (gzip header + BGZF extra field). */
|
|
18
|
-
export declare function isBgzf(data: ArrayBuffer | Uint8Array): boolean;
|
|
19
|
-
/**
|
|
20
|
-
* Read BGZF block size from header bytes 16-17.
|
|
21
|
-
* Returns total block size in bytes (bsize field + 1).
|
|
22
|
-
*/
|
|
23
|
-
export declare function bgzBlockSize(data: ArrayBuffer | Uint8Array): number;
|
|
24
|
-
/**
|
|
25
|
-
* Decompress all concatenated BGZF blocks in a buffer.
|
|
26
|
-
*
|
|
27
|
-
* Returns array of decompressed blocks (one Uint8Array per BGZF block).
|
|
28
|
-
* Optionally decompresses only blocks starting between startBlock and endBlock
|
|
29
|
-
* (byte offsets relative to beginning of data buffer).
|
|
30
|
-
*
|
|
31
|
-
* Uses synchronous pako.inflateRaw() per block — no async overhead.
|
|
32
|
-
* Matches igv.js inflateBlocks() which uses the same synchronous approach.
|
|
33
|
-
*
|
|
34
|
-
* Port of js/bam/bgzBlockLoader.ts inflateBlocks().
|
|
35
|
-
*/
|
|
36
|
-
export declare function inflateBgzfBlocks(data: ArrayBuffer, startBlock?: number, endBlock?: number): Uint8Array[];
|
|
37
|
-
/**
|
|
38
|
-
* Decompress entire BGZF buffer into a single concatenated Uint8Array.
|
|
39
|
-
* Used for decompressing .tbi index files.
|
|
40
|
-
*
|
|
41
|
-
* Port of igv-utils/bgzf.js unbgzf().
|
|
42
|
-
*/
|
|
43
|
-
export declare function unbgzf(data: ArrayBuffer): Uint8Array;
|
|
@@ -1,85 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tabix (.tbi) index parser and range query engine.
|
|
3
|
-
*
|
|
4
|
-
* Parses the binary .tbi format (a BGZF-compressed index for tab-delimited
|
|
5
|
-
* genomic files) and provides efficient range queries via hierarchical binning.
|
|
6
|
-
*
|
|
7
|
-
* Port of js/bam/bamIndex.ts (tabix path) and js/bam/indexUtils.ts.
|
|
8
|
-
* Layer 1 (Data + Layout): pure data, no DOM.
|
|
9
|
-
*/
|
|
10
|
-
import type { VirtualOffset, Chunk } from './virtualOffset';
|
|
11
|
-
/** Tabix format codes (from spec). */
|
|
12
|
-
export declare const enum TabixFormat {
|
|
13
|
-
BED = 0,// 0-based half-open
|
|
14
|
-
SAM = 1,// 1-based
|
|
15
|
-
VCF = 2
|
|
16
|
-
}
|
|
17
|
-
/** Parsed tabix header metadata. */
|
|
18
|
-
export interface TabixHeader {
|
|
19
|
-
/** Number of reference sequences. */
|
|
20
|
-
nref: number;
|
|
21
|
-
/** Format code: 0=BED, 1=SAM, 2=VCF/GFF. */
|
|
22
|
-
format: TabixFormat;
|
|
23
|
-
/** 1-based column index for sequence name. */
|
|
24
|
-
colSeq: number;
|
|
25
|
-
/** 1-based column index for start position. */
|
|
26
|
-
colBeg: number;
|
|
27
|
-
/** 1-based column index for end position (0 = compute from start). */
|
|
28
|
-
colEnd: number;
|
|
29
|
-
/** ASCII code of meta character (lines starting with this are skipped, e.g. 35='#'). */
|
|
30
|
-
meta: number;
|
|
31
|
-
/** Number of header lines to skip before data. */
|
|
32
|
-
skip: number;
|
|
33
|
-
/** Sequence names in index order. */
|
|
34
|
-
sequenceNames: string[];
|
|
35
|
-
}
|
|
36
|
-
interface BinIndex {
|
|
37
|
-
[binNumber: number]: Chunk[];
|
|
38
|
-
}
|
|
39
|
-
interface RefIndex {
|
|
40
|
-
binIndex: BinIndex;
|
|
41
|
-
linearIndex: (VirtualOffset | null)[];
|
|
42
|
-
}
|
|
43
|
-
/** Parsed tabix index with range query support. */
|
|
44
|
-
export interface TabixIndex {
|
|
45
|
-
header: TabixHeader;
|
|
46
|
-
/** Map from sequence name to reference index (0-based). */
|
|
47
|
-
sequenceIndexMap: Record<string, number>;
|
|
48
|
-
/** Per-reference bin + linear indices. */
|
|
49
|
-
indices: (RefIndex | undefined)[];
|
|
50
|
-
/** Byte offset of first data block in the BGZF file. */
|
|
51
|
-
firstBlockPosition: number;
|
|
52
|
-
/** Byte offset of last data block in the BGZF file. */
|
|
53
|
-
lastBlockPosition: number;
|
|
54
|
-
/** Get chunks overlapping a genomic range. */
|
|
55
|
-
chunksForRange(refId: number, min: number, max: number): Chunk[];
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Parse a decompressed .tbi binary buffer into a TabixIndex.
|
|
59
|
-
*
|
|
60
|
-
* The .tbi file is BGZF-compressed; caller must decompress with unbgzf() first.
|
|
61
|
-
* Binary format mirrors BAI but with an extra header for column metadata and
|
|
62
|
-
* sequence names.
|
|
63
|
-
*
|
|
64
|
-
* Port of js/bam/bamIndex.ts BamIndex.parse() with tabix=true.
|
|
65
|
-
*/
|
|
66
|
-
export declare function parseTabixIndex(data: ArrayBuffer): TabixIndex;
|
|
67
|
-
/**
|
|
68
|
-
* Calculate the list of bin ranges that overlap with region [beg, end).
|
|
69
|
-
* Uses the standard 5-level hierarchical binning scheme (same as BAI).
|
|
70
|
-
*
|
|
71
|
-
* Returns array of [startBin, endBin] inclusive ranges.
|
|
72
|
-
*
|
|
73
|
-
* Port of js/bam/bamIndex.ts reg2bins().
|
|
74
|
-
*/
|
|
75
|
-
export declare function reg2bins(beg: number, end: number): number[][];
|
|
76
|
-
/**
|
|
77
|
-
* Sort chunks by position, filter by linear index minimum, merge adjacent chunks.
|
|
78
|
-
*
|
|
79
|
-
* Merge criteria (from igv.js): gap between chunks < 65KB and total span < 5MB.
|
|
80
|
-
* This reduces the number of HTTP range requests.
|
|
81
|
-
*
|
|
82
|
-
* Port of js/bam/indexUtils.ts optimizeChunks().
|
|
83
|
-
*/
|
|
84
|
-
export declare function optimizeChunks(chunks: Chunk[], lowest?: VirtualOffset): Chunk[];
|
|
85
|
-
export {};
|