loom-browser 0.0.1
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/LICENSE +21 -0
- package/README.md +287 -0
- package/dist/igv.d.ts +667 -0
- package/dist/igv.esm.js +76708 -0
- package/dist/igv.esm.min.js +26 -0
- package/dist/igv.esm.min.js.map +1 -0
- package/dist/igv.js +76716 -0
- package/dist/igv.min.js +26 -0
- package/dist/igv.min.js.map +1 -0
- package/dist/loom.d.ts +667 -0
- package/dist/loom.esm.js +14927 -0
- package/dist/loom.esm.min.js +2 -0
- package/dist/loom.esm.min.js.map +1 -0
- package/dist/loom.js +15114 -0
- package/dist/loom.min.js +2 -0
- package/dist/loom.min.js.map +1 -0
- package/dist/types/agent/index.d.ts +4 -0
- package/dist/types/agent/stateProjection.d.ts +115 -0
- package/dist/types/agent/trackSelector.d.ts +31 -0
- package/dist/types/baseTrackCanvas.d.ts +62 -0
- package/dist/types/bigwig/binaryParser.d.ts +25 -0
- package/dist/types/bigwig/bpTree.d.ts +40 -0
- package/dist/types/bigwig/bwReader.d.ts +69 -0
- package/dist/types/bigwig/chromTree.d.ts +28 -0
- package/dist/types/bigwig/index.d.ts +66 -0
- package/dist/types/bigwig/inflate.d.ts +9 -0
- package/dist/types/bigwig/rangeReader.d.ts +48 -0
- package/dist/types/bigwig/rpTree.d.ts +27 -0
- package/dist/types/canvasProvider.d.ts +36 -0
- package/dist/types/commandDispatcher.d.ts +199 -0
- package/dist/types/contextMenu.d.ts +64 -0
- package/dist/types/contextMenuProvider.d.ts +25 -0
- package/dist/types/data/cachedSequence.d.ts +19 -0
- package/dist/types/data/ucscApi.d.ts +21 -0
- package/dist/types/data/ucscSequence.d.ts +19 -0
- package/dist/types/dataLifecycle.d.ts +16 -0
- package/dist/types/dataSources/bigWigDataSource.d.ts +24 -0
- package/dist/types/dataSources/dataSourceCacheKey.d.ts +9 -0
- package/dist/types/dataSources/dynseqDataSource.d.ts +20 -0
- package/dist/types/dataSources/featureSourceFactory.d.ts +46 -0
- package/dist/types/dataSources/geneDataSource.d.ts +16 -0
- package/dist/types/dataSources/gtxDataSource.d.ts +42 -0
- package/dist/types/dataSources/sequenceDataSource.d.ts +15 -0
- package/dist/types/dataSources/textFeatureSource.d.ts +63 -0
- package/dist/types/decode/bed.d.ts +64 -0
- package/dist/types/decode/bedpe.d.ts +36 -0
- package/dist/types/decode/exonUtils.d.ts +29 -0
- package/dist/types/decode/gff.d.ts +58 -0
- package/dist/types/decode/interact.d.ts +19 -0
- package/dist/types/decode/ucsc.d.ts +56 -0
- package/dist/types/dynseqRenderer.d.ts +37 -0
- package/dist/types/events.d.ts +23 -0
- package/dist/types/export/canvas2svg.d.ts +166 -0
- package/dist/types/export/index.d.ts +2 -0
- package/dist/types/featureCache.d.ts +69 -0
- package/dist/types/formats/featureParser.d.ts +72 -0
- package/dist/types/formats/formatDetection.d.ts +46 -0
- package/dist/types/geneRenderer.d.ts +17 -0
- package/dist/types/geneThemes.d.ts +11 -0
- package/dist/types/geneTrackCanvas.d.ts +46 -0
- package/dist/types/genome/chromAlias.d.ts +46 -0
- package/dist/types/genome/chromSizes.d.ts +53 -0
- package/dist/types/genome/genome.d.ts +51 -0
- package/dist/types/genomeBrowser.d.ts +189 -0
- package/dist/types/gtx/fetchCoordinator.d.ts +34 -0
- package/dist/types/gtx/gtxReader.d.ts +144 -0
- package/dist/types/gtx/index.d.ts +40 -0
- package/dist/types/gtx/zstdWasm.d.ts +22 -0
- package/dist/types/headlessGenomeBrowser.d.ts +450 -0
- package/dist/types/index.d.ts +123 -0
- package/dist/types/intervalTree.d.ts +56 -0
- package/dist/types/io/binaryParser.d.ts +25 -0
- package/dist/types/io/index.d.ts +7 -0
- package/dist/types/io/rangeReader.d.ts +48 -0
- package/dist/types/locusUtils.d.ts +37 -0
- package/dist/types/pack.d.ts +41 -0
- package/dist/types/popupProvider.d.ts +22 -0
- package/dist/types/remoteProtocol.d.ts +79 -0
- package/dist/types/renderTheme.d.ts +72 -0
- package/dist/types/renderThemePresets.d.ts +16 -0
- package/dist/types/roi/index.d.ts +3 -0
- package/dist/types/roi/roiRenderer.d.ts +24 -0
- package/dist/types/roi/roiSet.d.ts +41 -0
- package/dist/types/rulerRenderer.d.ts +14 -0
- package/dist/types/rulerTrackCanvas.d.ts +32 -0
- package/dist/types/sequence/sequenceUtils.d.ts +44 -0
- package/dist/types/session.d.ts +55 -0
- package/dist/types/src/bigwig/index.d.ts +66 -0
- package/dist/types/src/canvasProvider.d.ts +36 -0
- package/dist/types/src/commandDispatcher.d.ts +220 -0
- package/dist/types/src/contextMenu.d.ts +64 -0
- package/dist/types/src/contextMenuProvider.d.ts +25 -0
- package/dist/types/src/data/cachedSequence.d.ts +19 -0
- package/dist/types/src/data/ucscApi.d.ts +21 -0
- package/dist/types/src/data/ucscSequence.d.ts +19 -0
- package/dist/types/src/dataLifecycle.d.ts +16 -0
- package/dist/types/src/dataSources/bigWigDataSource.d.ts +24 -0
- package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +9 -0
- package/dist/types/src/dataSources/featureSourceFactory.d.ts +46 -0
- package/dist/types/src/dataSources/geneDataSource.d.ts +16 -0
- package/dist/types/src/dataSources/gtxDataSource.d.ts +42 -0
- package/dist/types/src/dataSources/sequenceDataSource.d.ts +15 -0
- package/dist/types/src/dataSources/textFeatureSource.d.ts +63 -0
- package/dist/types/src/decode/bed.d.ts +64 -0
- package/dist/types/src/decode/bedpe.d.ts +36 -0
- package/dist/types/src/decode/exonUtils.d.ts +29 -0
- package/dist/types/src/decode/gff.d.ts +58 -0
- package/dist/types/src/decode/interact.d.ts +19 -0
- package/dist/types/src/decode/ucsc.d.ts +56 -0
- package/dist/types/src/events.d.ts +23 -0
- package/dist/types/src/export/canvas2svg.d.ts +166 -0
- package/dist/types/src/export/index.d.ts +2 -0
- package/dist/types/src/featureCache.d.ts +69 -0
- package/dist/types/src/formats/featureParser.d.ts +72 -0
- package/dist/types/src/formats/formatDetection.d.ts +46 -0
- package/dist/types/src/genome/chromAlias.d.ts +46 -0
- package/dist/types/src/genome/chromSizes.d.ts +53 -0
- package/dist/types/src/genome/genome.d.ts +51 -0
- package/dist/types/src/genomeBrowser.d.ts +189 -0
- package/dist/types/src/gtx/fetchCoordinator.d.ts +34 -0
- package/dist/types/src/gtx/gtxReader.d.ts +144 -0
- package/dist/types/src/gtx/index.d.ts +40 -0
- package/dist/types/src/gtx/zstdWasm.d.ts +22 -0
- package/dist/types/src/headlessGenomeBrowser.d.ts +450 -0
- package/dist/types/src/index.d.ts +123 -0
- package/dist/types/src/intervalTree.d.ts +56 -0
- package/dist/types/src/io/binaryParser.d.ts +25 -0
- package/dist/types/src/io/index.d.ts +7 -0
- package/dist/types/src/io/rangeReader.d.ts +48 -0
- package/dist/types/src/locusUtils.d.ts +37 -0
- package/dist/types/src/pack.d.ts +41 -0
- package/dist/types/src/popupProvider.d.ts +22 -0
- package/dist/types/src/remoteProtocol.d.ts +81 -0
- package/dist/types/src/roi/index.d.ts +3 -0
- package/dist/types/src/roi/roiRenderer.d.ts +24 -0
- package/dist/types/src/roi/roiSet.d.ts +41 -0
- package/dist/types/src/sequence/sequenceUtils.d.ts +44 -0
- package/dist/types/src/session.d.ts +55 -0
- package/dist/types/src/stateProjection.d.ts +115 -0
- package/dist/types/src/tabix/index.d.ts +48 -0
- package/dist/types/src/themes/index.d.ts +3 -0
- package/dist/types/src/themes/renderTheme.d.ts +86 -0
- package/dist/types/src/themes/renderThemePresets.d.ts +16 -0
- package/dist/types/src/trackRegistry.d.ts +81 -0
- package/dist/types/src/trackSelector.d.ts +31 -0
- package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +17 -0
- package/dist/types/src/tracks/annotation/annotationThemes.d.ts +11 -0
- package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +58 -0
- package/dist/types/src/tracks/annotation/index.d.ts +4 -0
- package/dist/types/src/tracks/axis/axisRenderer.d.ts +19 -0
- package/dist/types/src/tracks/axis/index.d.ts +1 -0
- package/dist/types/src/tracks/baseTrackCanvas.d.ts +113 -0
- package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +38 -0
- package/dist/types/src/tracks/dynseq/index.d.ts +1 -0
- package/dist/types/src/tracks/index.d.ts +7 -0
- package/dist/types/src/tracks/interaction/index.d.ts +4 -0
- package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +52 -0
- package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +54 -0
- package/dist/types/src/tracks/ruler/index.d.ts +3 -0
- package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +25 -0
- package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +43 -0
- package/dist/types/src/tracks/sequence/index.d.ts +5 -0
- package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +34 -0
- package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +11 -0
- package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +67 -0
- package/dist/types/src/tracks/wig/index.d.ts +5 -0
- package/dist/types/src/tracks/wig/wigRenderer.d.ts +15 -0
- package/dist/types/src/tracks/wig/wigSummary.d.ts +31 -0
- package/dist/types/src/tracks/wig/wigThemes.d.ts +15 -0
- package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +82 -0
- package/dist/types/src/types.d.ts +885 -0
- package/dist/types/src/ui/components/LoomBrowserShell.d.ts +52 -0
- package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +18 -0
- package/dist/types/src/ui/components/LoomContextMenu.d.ts +39 -0
- package/dist/types/src/ui/components/LoomExportControls.d.ts +13 -0
- package/dist/types/src/ui/components/LoomInputDialog.d.ts +27 -0
- package/dist/types/src/ui/components/LoomLocusInput.d.ts +18 -0
- package/dist/types/src/ui/components/LoomNavbar.d.ts +15 -0
- package/dist/types/src/ui/components/LoomPopup.d.ts +32 -0
- package/dist/types/src/ui/components/LoomWindowSize.d.ts +14 -0
- package/dist/types/src/ui/components/LoomZoomControls.d.ts +10 -0
- package/dist/types/src/ui/index.d.ts +21 -0
- package/dist/types/src/ui/themes.d.ts +14 -0
- package/dist/types/src/worker/nodeWorkerProvider.d.ts +28 -0
- package/dist/types/src/worker/taskHandler.d.ts +15 -0
- package/dist/types/src/worker/webWorkerProvider.d.ts +51 -0
- package/dist/types/src/worker/workerScript.d.ts +11 -0
- package/dist/types/src/workerProvider.d.ts +76 -0
- package/dist/types/stateProjection.d.ts +115 -0
- package/dist/types/tabix/bgzBlockLoader.d.ts +60 -0
- package/dist/types/tabix/bgzf.d.ts +43 -0
- package/dist/types/tabix/index.d.ts +48 -0
- package/dist/types/tabix/tabixIndex.d.ts +85 -0
- package/dist/types/tabix/tabixReader.d.ts +60 -0
- package/dist/types/tabix/virtualOffset.d.ts +41 -0
- package/dist/types/test/src/mockCanvasProvider.d.ts +67 -0
- package/dist/types/test/src/testBedDecode.d.ts +1 -0
- package/dist/types/test/src/testCanvas2SVG.d.ts +7 -0
- package/dist/types/test/src/testChromAlias.d.ts +1 -0
- package/dist/types/test/src/testCommandDispatcher.d.ts +1 -0
- package/dist/types/test/src/testData.d.ts +7 -0
- package/dist/types/test/src/testDataLifecycle.d.ts +1 -0
- package/dist/types/test/src/testDataSourceCacheKey.d.ts +1 -0
- package/dist/types/test/src/testDataSources.d.ts +5 -0
- package/dist/types/test/src/testDecodeUcsc.d.ts +1 -0
- package/dist/types/test/src/testEvents.d.ts +1 -0
- package/dist/types/test/src/testFeatureCache.d.ts +1 -0
- package/dist/types/test/src/testFeatureParser.d.ts +1 -0
- package/dist/types/test/src/testFormatDetection.d.ts +1 -0
- package/dist/types/test/src/testGffDecode.d.ts +1 -0
- package/dist/types/test/src/testHeadlessBrowser.d.ts +1 -0
- package/dist/types/test/src/testInteractionDecoder.d.ts +1 -0
- package/dist/types/test/src/testIntervalTree.d.ts +1 -0
- package/dist/types/test/src/testLocusUtils.d.ts +1 -0
- package/dist/types/test/src/testPack.d.ts +1 -0
- package/dist/types/test/src/testROI.d.ts +1 -0
- package/dist/types/test/src/testRemoteProtocol.d.ts +1 -0
- package/dist/types/test/src/testRenderTheme.d.ts +1 -0
- package/dist/types/test/src/testSVGExport.d.ts +5 -0
- package/dist/types/test/src/testSequence.d.ts +1 -0
- package/dist/types/test/src/testSession.d.ts +1 -0
- package/dist/types/test/src/testTrackSelector.d.ts +1 -0
- package/dist/types/test/src/testTrackSerialize.d.ts +1 -0
- package/dist/types/test/src/testWigSummary.d.ts +1 -0
- package/dist/types/test/src/testWorkerDispatch.d.ts +9 -0
- package/dist/types/themes/index.d.ts +3 -0
- package/dist/types/themes/renderTheme.d.ts +86 -0
- package/dist/types/themes/renderThemePresets.d.ts +16 -0
- package/dist/types/trackRegistry.d.ts +81 -0
- package/dist/types/trackSelector.d.ts +31 -0
- package/dist/types/tracks/annotation/annotationRenderer.d.ts +17 -0
- package/dist/types/tracks/annotation/annotationThemes.d.ts +11 -0
- package/dist/types/tracks/annotation/annotationTrackCanvas.d.ts +58 -0
- package/dist/types/tracks/annotation/index.d.ts +4 -0
- package/dist/types/tracks/axis/axisRenderer.d.ts +19 -0
- package/dist/types/tracks/axis/index.d.ts +1 -0
- package/dist/types/tracks/baseTrackCanvas.d.ts +113 -0
- package/dist/types/tracks/dynseq/dynseqRenderer.d.ts +38 -0
- package/dist/types/tracks/dynseq/index.d.ts +1 -0
- package/dist/types/tracks/gene/geneRenderer.d.ts +17 -0
- package/dist/types/tracks/gene/geneThemes.d.ts +11 -0
- package/dist/types/tracks/gene/geneTrackCanvas.d.ts +58 -0
- package/dist/types/tracks/gene/index.d.ts +4 -0
- package/dist/types/tracks/index.d.ts +7 -0
- package/dist/types/tracks/interaction/index.d.ts +4 -0
- package/dist/types/tracks/interaction/interactionRenderer.d.ts +52 -0
- package/dist/types/tracks/interaction/interactionTrackCanvas.d.ts +54 -0
- package/dist/types/tracks/ruler/index.d.ts +3 -0
- package/dist/types/tracks/ruler/rulerRenderer.d.ts +25 -0
- package/dist/types/tracks/ruler/rulerTrackCanvas.d.ts +43 -0
- package/dist/types/tracks/sequence/index.d.ts +5 -0
- package/dist/types/tracks/sequence/sequenceRenderer.d.ts +34 -0
- package/dist/types/tracks/sequence/sequenceThemes.d.ts +11 -0
- package/dist/types/tracks/sequence/sequenceTrackCanvas.d.ts +67 -0
- package/dist/types/tracks/wig/index.d.ts +5 -0
- package/dist/types/tracks/wig/wigRenderer.d.ts +15 -0
- package/dist/types/tracks/wig/wigSummary.d.ts +31 -0
- package/dist/types/tracks/wig/wigThemes.d.ts +15 -0
- package/dist/types/tracks/wig/wigTrackCanvas.d.ts +82 -0
- package/dist/types/types.d.ts +885 -0
- package/dist/types/ui/components/IgvBrowserShell.d.ts +52 -0
- package/dist/types/ui/components/IgvChromosomeSelect.d.ts +18 -0
- package/dist/types/ui/components/IgvExportControls.d.ts +13 -0
- package/dist/types/ui/components/IgvLocusInput.d.ts +18 -0
- package/dist/types/ui/components/IgvNavbar.d.ts +15 -0
- package/dist/types/ui/components/IgvWindowSize.d.ts +14 -0
- package/dist/types/ui/components/IgvZoomControls.d.ts +10 -0
- package/dist/types/ui/components/LoomBrowserShell.d.ts +52 -0
- package/dist/types/ui/components/LoomChromosomeSelect.d.ts +18 -0
- package/dist/types/ui/components/LoomContextMenu.d.ts +39 -0
- package/dist/types/ui/components/LoomExportControls.d.ts +13 -0
- package/dist/types/ui/components/LoomInputDialog.d.ts +27 -0
- package/dist/types/ui/components/LoomLocusInput.d.ts +18 -0
- package/dist/types/ui/components/LoomNavbar.d.ts +15 -0
- package/dist/types/ui/components/LoomPopup.d.ts +32 -0
- package/dist/types/ui/components/LoomWindowSize.d.ts +14 -0
- package/dist/types/ui/components/LoomZoomControls.d.ts +10 -0
- package/dist/types/ui/index.d.ts +21 -0
- package/dist/types/ui/themes.d.ts +14 -0
- package/dist/types/wigRenderer.d.ts +15 -0
- package/dist/types/wigSummary.d.ts +31 -0
- package/dist/types/wigThemes.d.ts +15 -0
- package/dist/types/wigTrackCanvas.d.ts +46 -0
- package/dist/types/worker/decodeWig.d.ts +20 -0
- package/dist/types/worker/nodeWorkerProvider.d.ts +28 -0
- package/dist/types/worker/taskHandler.d.ts +15 -0
- package/dist/types/worker/webWorkerProvider.d.ts +51 -0
- package/dist/types/worker/workerScript.d.ts +11 -0
- package/dist/types/workerProvider.d.ts +76 -0
- package/package.json +102 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-browser> — Top-level shell combining navbar + GenomeBrowser.
|
|
3
|
+
*
|
|
4
|
+
* Usage:
|
|
5
|
+
* const shell = document.createElement('igv-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 IgvBrowserShell 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 <igv-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): IgvBrowserShell;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-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 IgvChromosomeSelect 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
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-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 IgvExportControls extends HTMLElement {
|
|
9
|
+
private _browser;
|
|
10
|
+
constructor();
|
|
11
|
+
set browser(b: GenomeBrowser | null);
|
|
12
|
+
get browser(): GenomeBrowser | null;
|
|
13
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-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 IgvLocusInput 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
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-navbar> — Horizontal navigation bar composing locus input, window size, and zoom controls.
|
|
3
|
+
*/
|
|
4
|
+
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
+
export declare class IgvNavbar 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
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-window-size> — Read-only display of current viewport bp range.
|
|
3
|
+
*/
|
|
4
|
+
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
+
export declare class IgvWindowSize 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
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* <igv-zoom-controls> — Zoom in/out buttons.
|
|
3
|
+
*/
|
|
4
|
+
import type { GenomeBrowser } from '../../genomeBrowser';
|
|
5
|
+
export declare class IgvZoomControls extends HTMLElement {
|
|
6
|
+
private _browser;
|
|
7
|
+
constructor();
|
|
8
|
+
set browser(b: GenomeBrowser | null);
|
|
9
|
+
get browser(): GenomeBrowser | null;
|
|
10
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
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;
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
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';
|
|
@@ -0,0 +1,14 @@
|
|
|
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;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone wig track renderer.
|
|
3
|
+
*
|
|
4
|
+
* Adapted from js/feature/wigTrack.ts draw() method with no `this` context —
|
|
5
|
+
* all configuration is passed as explicit parameters.
|
|
6
|
+
*
|
|
7
|
+
* Supports four graph types: bar, line, points, and dynseq.
|
|
8
|
+
*/
|
|
9
|
+
import type { WigFeature, WigRenderConfig, RenderContext } from './types';
|
|
10
|
+
/**
|
|
11
|
+
* Render wig features onto a canvas context.
|
|
12
|
+
*
|
|
13
|
+
* The canvas should be sized and cleared before calling this.
|
|
14
|
+
*/
|
|
15
|
+
export declare function renderWigTrack(ctx: CanvasRenderingContext2D, features: WigFeature[], config: WigRenderConfig, rc: RenderContext): void;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolution-aware data summarization for wig tracks.
|
|
3
|
+
*
|
|
4
|
+
* When zoomed out, many data points map to the same pixel. This module bins
|
|
5
|
+
* features and applies a window function (mean, min, max) to produce one
|
|
6
|
+
* summary value per pixel-width bin.
|
|
7
|
+
*
|
|
8
|
+
* Ported from js/feature/wigSummary.ts with strict types, no `any`.
|
|
9
|
+
*/
|
|
10
|
+
import type { WigFeature, WindowFunction } from './types';
|
|
11
|
+
/**
|
|
12
|
+
* Summarize wig features by binning into pixel-width windows and applying
|
|
13
|
+
* a window function.
|
|
14
|
+
*
|
|
15
|
+
* Features must be sorted by position. Wig features cannot overlap.
|
|
16
|
+
*
|
|
17
|
+
* @param features - sorted array of wig features
|
|
18
|
+
* @param startBP - start position in base pairs (left edge of viewport)
|
|
19
|
+
* @param bpPerPixel - base pairs per pixel (bin size)
|
|
20
|
+
* @param windowFunction - aggregation function: mean, min, max, or none
|
|
21
|
+
* @returns summarized features (one per pixel-bin)
|
|
22
|
+
*/
|
|
23
|
+
export declare function summarizeWigData(features: WigFeature[], startBP: number, bpPerPixel: number, windowFunction?: WindowFunction): WigFeature[];
|
|
24
|
+
/**
|
|
25
|
+
* Compute the min/max data range from a set of wig features.
|
|
26
|
+
* Useful for autoscaling.
|
|
27
|
+
*/
|
|
28
|
+
export declare function computeWigDataRange(features: WigFeature[]): {
|
|
29
|
+
min: number;
|
|
30
|
+
max: number;
|
|
31
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Preset render themes for wig tracks.
|
|
3
|
+
*
|
|
4
|
+
* Each theme is a Partial<WigRenderConfig> that can be spread over defaults.
|
|
5
|
+
* Usage: { ...defaultWigRenderConfig(), ...modernWigTheme }
|
|
6
|
+
*/
|
|
7
|
+
import type { WigRenderConfig } from './types';
|
|
8
|
+
/** Modern theme — blue bars with subtle styling. */
|
|
9
|
+
export declare const modernWigTheme: Partial<WigRenderConfig>;
|
|
10
|
+
/** Dark theme — bright teal on dark background. */
|
|
11
|
+
export declare const darkWigTheme: Partial<WigRenderConfig>;
|
|
12
|
+
/** Warm red theme — for coverage or signal intensity. */
|
|
13
|
+
export declare const warmWigTheme: Partial<WigRenderConfig>;
|
|
14
|
+
/** Line graph variant — modern blue line. */
|
|
15
|
+
export declare const lineWigTheme: Partial<WigRenderConfig>;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canvas manager for rendering wig (wiggle) tracks.
|
|
3
|
+
*
|
|
4
|
+
* Extends BaseTrackCanvas — canvas lifecycle is handled by the base class.
|
|
5
|
+
* This class implements wig-specific logic: data summarization, autoscale,
|
|
6
|
+
* and dynseq-aware rendering.
|
|
7
|
+
*
|
|
8
|
+
* For dynseq mode, features should arrive with `.sequence` already attached
|
|
9
|
+
* (e.g. via DynseqDataSource). This matches the igv.js pattern where sequence
|
|
10
|
+
* is fetched during getFeatures(), not during rendering.
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* const canvas = document.createElement('canvas')
|
|
14
|
+
* const track = new WigTrackCanvas(canvas, { locus, features })
|
|
15
|
+
* track.attachTo(containerDiv)
|
|
16
|
+
*/
|
|
17
|
+
import type { WigFeature, WigRenderConfig, Locus, RenderContext, WigTrackSessionConfig } from './types';
|
|
18
|
+
import type { CanvasProvider } from './canvasProvider';
|
|
19
|
+
import type { RenderTheme } from './renderTheme';
|
|
20
|
+
import { BaseTrackCanvas } from './baseTrackCanvas';
|
|
21
|
+
export interface WigTrackCanvasOptions {
|
|
22
|
+
locus: Locus;
|
|
23
|
+
features: WigFeature[];
|
|
24
|
+
/** Per-track config overrides. Applied after theme-derived defaults. */
|
|
25
|
+
config?: Partial<WigRenderConfig>;
|
|
26
|
+
/** Unified render theme. Palette drives default colors/fonts. */
|
|
27
|
+
theme?: Partial<RenderTheme>;
|
|
28
|
+
/** Fixed pixel height. If not set, uses config.height (default 50). */
|
|
29
|
+
height?: number;
|
|
30
|
+
/** Background color. Overrides palette.background if set. */
|
|
31
|
+
background?: string;
|
|
32
|
+
/** Canvas provider for environment abstraction. Default: DOMCanvasProvider. */
|
|
33
|
+
canvasProvider?: CanvasProvider;
|
|
34
|
+
}
|
|
35
|
+
export declare class WigTrackCanvas extends BaseTrackCanvas<WigRenderConfig> {
|
|
36
|
+
private features;
|
|
37
|
+
private fixedHeight;
|
|
38
|
+
readonly type = "wig";
|
|
39
|
+
constructor(canvas: HTMLCanvasElement, options: WigTrackCanvasOptions);
|
|
40
|
+
/** Update features and re-render. Recomputes autoscale if enabled. */
|
|
41
|
+
setFeatures(features: WigFeature[]): void;
|
|
42
|
+
protected computeHeight(_width: number): number;
|
|
43
|
+
protected getBackground(): string;
|
|
44
|
+
protected doRender(ctx: CanvasRenderingContext2D, _width: number, height: number, rc: RenderContext): void;
|
|
45
|
+
serializeConfig(theme: RenderTheme): WigTrackSessionConfig;
|
|
46
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Standalone WIG data decode functions.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from BigWigReader's private methods so they can be used both
|
|
5
|
+
* on the main thread (by BigWigReader) and in worker threads (by taskHandler).
|
|
6
|
+
*
|
|
7
|
+
* Key difference from the instance methods: chromosome ID → name resolution
|
|
8
|
+
* uses a pre-built Map instead of the async ChromTree.getNameForId() lookup.
|
|
9
|
+
*/
|
|
10
|
+
import type { WigFeature, WindowFunction } from '../types';
|
|
11
|
+
/**
|
|
12
|
+
* Decode WIG data from a binary block (full resolution).
|
|
13
|
+
* Three WIG formats: BedGraph (type 1), Variable step (type 2), Fixed step (type 3).
|
|
14
|
+
*/
|
|
15
|
+
export declare function decodeWigData(data: Uint8Array, littleEndian: boolean, chrIdx1: number, bpStart: number, chrIdx2: number, bpEnd: number, chromNames: Map<number, string>): WigFeature[];
|
|
16
|
+
/**
|
|
17
|
+
* Decode zoom-level summary data.
|
|
18
|
+
* Each record: chromId, chromStart, chromEnd, validCount, minVal, maxVal, sumData, sumSquares.
|
|
19
|
+
*/
|
|
20
|
+
export declare function decodeZoomData(data: Uint8Array, littleEndian: boolean, chrIdx1: number, bpStart: number, chrIdx2: number, bpEnd: number, windowFunction: WindowFunction, chromNames: Map<number, string>): WigFeature[];
|
|
@@ -0,0 +1,28 @@
|
|
|
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
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
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']]>;
|