loom-browser 0.0.1 → 0.0.2

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.
Files changed (185) hide show
  1. package/dist/loom.esm.min.js.map +1 -1
  2. package/dist/types/commandDispatcher.d.ts +22 -1
  3. package/dist/types/index.d.ts +1 -1
  4. package/dist/types/remoteProtocol.d.ts +2 -0
  5. package/package.json +8 -2
  6. package/dist/igv.d.ts +0 -667
  7. package/dist/igv.esm.js +0 -76708
  8. package/dist/igv.esm.min.js +0 -26
  9. package/dist/igv.esm.min.js.map +0 -1
  10. package/dist/igv.js +0 -76716
  11. package/dist/igv.min.js +0 -26
  12. package/dist/igv.min.js.map +0 -1
  13. package/dist/loom.d.ts +0 -667
  14. package/dist/types/agent/index.d.ts +0 -4
  15. package/dist/types/agent/stateProjection.d.ts +0 -115
  16. package/dist/types/agent/trackSelector.d.ts +0 -31
  17. package/dist/types/baseTrackCanvas.d.ts +0 -62
  18. package/dist/types/bigwig/binaryParser.d.ts +0 -25
  19. package/dist/types/bigwig/bpTree.d.ts +0 -40
  20. package/dist/types/bigwig/bwReader.d.ts +0 -69
  21. package/dist/types/bigwig/chromTree.d.ts +0 -28
  22. package/dist/types/bigwig/inflate.d.ts +0 -9
  23. package/dist/types/bigwig/rangeReader.d.ts +0 -48
  24. package/dist/types/bigwig/rpTree.d.ts +0 -27
  25. package/dist/types/dataSources/dynseqDataSource.d.ts +0 -20
  26. package/dist/types/dynseqRenderer.d.ts +0 -37
  27. package/dist/types/geneRenderer.d.ts +0 -17
  28. package/dist/types/geneThemes.d.ts +0 -11
  29. package/dist/types/geneTrackCanvas.d.ts +0 -46
  30. package/dist/types/renderTheme.d.ts +0 -72
  31. package/dist/types/renderThemePresets.d.ts +0 -16
  32. package/dist/types/rulerRenderer.d.ts +0 -14
  33. package/dist/types/rulerTrackCanvas.d.ts +0 -32
  34. package/dist/types/src/bigwig/index.d.ts +0 -66
  35. package/dist/types/src/canvasProvider.d.ts +0 -36
  36. package/dist/types/src/commandDispatcher.d.ts +0 -220
  37. package/dist/types/src/contextMenu.d.ts +0 -64
  38. package/dist/types/src/contextMenuProvider.d.ts +0 -25
  39. package/dist/types/src/data/cachedSequence.d.ts +0 -19
  40. package/dist/types/src/data/ucscApi.d.ts +0 -21
  41. package/dist/types/src/data/ucscSequence.d.ts +0 -19
  42. package/dist/types/src/dataLifecycle.d.ts +0 -16
  43. package/dist/types/src/dataSources/bigWigDataSource.d.ts +0 -24
  44. package/dist/types/src/dataSources/dataSourceCacheKey.d.ts +0 -9
  45. package/dist/types/src/dataSources/featureSourceFactory.d.ts +0 -46
  46. package/dist/types/src/dataSources/geneDataSource.d.ts +0 -16
  47. package/dist/types/src/dataSources/gtxDataSource.d.ts +0 -42
  48. package/dist/types/src/dataSources/sequenceDataSource.d.ts +0 -15
  49. package/dist/types/src/dataSources/textFeatureSource.d.ts +0 -63
  50. package/dist/types/src/decode/bed.d.ts +0 -64
  51. package/dist/types/src/decode/bedpe.d.ts +0 -36
  52. package/dist/types/src/decode/exonUtils.d.ts +0 -29
  53. package/dist/types/src/decode/gff.d.ts +0 -58
  54. package/dist/types/src/decode/interact.d.ts +0 -19
  55. package/dist/types/src/decode/ucsc.d.ts +0 -56
  56. package/dist/types/src/events.d.ts +0 -23
  57. package/dist/types/src/export/canvas2svg.d.ts +0 -166
  58. package/dist/types/src/export/index.d.ts +0 -2
  59. package/dist/types/src/featureCache.d.ts +0 -69
  60. package/dist/types/src/formats/featureParser.d.ts +0 -72
  61. package/dist/types/src/formats/formatDetection.d.ts +0 -46
  62. package/dist/types/src/genome/chromAlias.d.ts +0 -46
  63. package/dist/types/src/genome/chromSizes.d.ts +0 -53
  64. package/dist/types/src/genome/genome.d.ts +0 -51
  65. package/dist/types/src/genomeBrowser.d.ts +0 -189
  66. package/dist/types/src/gtx/fetchCoordinator.d.ts +0 -34
  67. package/dist/types/src/gtx/gtxReader.d.ts +0 -144
  68. package/dist/types/src/gtx/index.d.ts +0 -40
  69. package/dist/types/src/gtx/zstdWasm.d.ts +0 -22
  70. package/dist/types/src/headlessGenomeBrowser.d.ts +0 -450
  71. package/dist/types/src/index.d.ts +0 -123
  72. package/dist/types/src/intervalTree.d.ts +0 -56
  73. package/dist/types/src/io/binaryParser.d.ts +0 -25
  74. package/dist/types/src/io/index.d.ts +0 -7
  75. package/dist/types/src/io/rangeReader.d.ts +0 -48
  76. package/dist/types/src/locusUtils.d.ts +0 -37
  77. package/dist/types/src/pack.d.ts +0 -41
  78. package/dist/types/src/popupProvider.d.ts +0 -22
  79. package/dist/types/src/remoteProtocol.d.ts +0 -81
  80. package/dist/types/src/roi/index.d.ts +0 -3
  81. package/dist/types/src/roi/roiRenderer.d.ts +0 -24
  82. package/dist/types/src/roi/roiSet.d.ts +0 -41
  83. package/dist/types/src/sequence/sequenceUtils.d.ts +0 -44
  84. package/dist/types/src/session.d.ts +0 -55
  85. package/dist/types/src/stateProjection.d.ts +0 -115
  86. package/dist/types/src/tabix/index.d.ts +0 -48
  87. package/dist/types/src/themes/index.d.ts +0 -3
  88. package/dist/types/src/themes/renderTheme.d.ts +0 -86
  89. package/dist/types/src/themes/renderThemePresets.d.ts +0 -16
  90. package/dist/types/src/trackRegistry.d.ts +0 -81
  91. package/dist/types/src/trackSelector.d.ts +0 -31
  92. package/dist/types/src/tracks/annotation/annotationRenderer.d.ts +0 -17
  93. package/dist/types/src/tracks/annotation/annotationThemes.d.ts +0 -11
  94. package/dist/types/src/tracks/annotation/annotationTrackCanvas.d.ts +0 -58
  95. package/dist/types/src/tracks/annotation/index.d.ts +0 -4
  96. package/dist/types/src/tracks/axis/axisRenderer.d.ts +0 -19
  97. package/dist/types/src/tracks/axis/index.d.ts +0 -1
  98. package/dist/types/src/tracks/baseTrackCanvas.d.ts +0 -113
  99. package/dist/types/src/tracks/dynseq/dynseqRenderer.d.ts +0 -38
  100. package/dist/types/src/tracks/dynseq/index.d.ts +0 -1
  101. package/dist/types/src/tracks/index.d.ts +0 -7
  102. package/dist/types/src/tracks/interaction/index.d.ts +0 -4
  103. package/dist/types/src/tracks/interaction/interactionRenderer.d.ts +0 -52
  104. package/dist/types/src/tracks/interaction/interactionTrackCanvas.d.ts +0 -54
  105. package/dist/types/src/tracks/ruler/index.d.ts +0 -3
  106. package/dist/types/src/tracks/ruler/rulerRenderer.d.ts +0 -25
  107. package/dist/types/src/tracks/ruler/rulerTrackCanvas.d.ts +0 -43
  108. package/dist/types/src/tracks/sequence/index.d.ts +0 -5
  109. package/dist/types/src/tracks/sequence/sequenceRenderer.d.ts +0 -34
  110. package/dist/types/src/tracks/sequence/sequenceThemes.d.ts +0 -11
  111. package/dist/types/src/tracks/sequence/sequenceTrackCanvas.d.ts +0 -67
  112. package/dist/types/src/tracks/wig/index.d.ts +0 -5
  113. package/dist/types/src/tracks/wig/wigRenderer.d.ts +0 -15
  114. package/dist/types/src/tracks/wig/wigSummary.d.ts +0 -31
  115. package/dist/types/src/tracks/wig/wigThemes.d.ts +0 -15
  116. package/dist/types/src/tracks/wig/wigTrackCanvas.d.ts +0 -82
  117. package/dist/types/src/types.d.ts +0 -885
  118. package/dist/types/src/ui/components/LoomBrowserShell.d.ts +0 -52
  119. package/dist/types/src/ui/components/LoomChromosomeSelect.d.ts +0 -18
  120. package/dist/types/src/ui/components/LoomContextMenu.d.ts +0 -39
  121. package/dist/types/src/ui/components/LoomExportControls.d.ts +0 -13
  122. package/dist/types/src/ui/components/LoomInputDialog.d.ts +0 -27
  123. package/dist/types/src/ui/components/LoomLocusInput.d.ts +0 -18
  124. package/dist/types/src/ui/components/LoomNavbar.d.ts +0 -15
  125. package/dist/types/src/ui/components/LoomPopup.d.ts +0 -32
  126. package/dist/types/src/ui/components/LoomWindowSize.d.ts +0 -14
  127. package/dist/types/src/ui/components/LoomZoomControls.d.ts +0 -10
  128. package/dist/types/src/ui/index.d.ts +0 -21
  129. package/dist/types/src/ui/themes.d.ts +0 -14
  130. package/dist/types/src/worker/nodeWorkerProvider.d.ts +0 -28
  131. package/dist/types/src/worker/taskHandler.d.ts +0 -15
  132. package/dist/types/src/worker/webWorkerProvider.d.ts +0 -51
  133. package/dist/types/src/worker/workerScript.d.ts +0 -11
  134. package/dist/types/src/workerProvider.d.ts +0 -76
  135. package/dist/types/tabix/bgzBlockLoader.d.ts +0 -60
  136. package/dist/types/tabix/bgzf.d.ts +0 -43
  137. package/dist/types/tabix/tabixIndex.d.ts +0 -85
  138. package/dist/types/tabix/tabixReader.d.ts +0 -60
  139. package/dist/types/tabix/virtualOffset.d.ts +0 -41
  140. package/dist/types/test/src/mockCanvasProvider.d.ts +0 -67
  141. package/dist/types/test/src/testBedDecode.d.ts +0 -1
  142. package/dist/types/test/src/testCanvas2SVG.d.ts +0 -7
  143. package/dist/types/test/src/testChromAlias.d.ts +0 -1
  144. package/dist/types/test/src/testCommandDispatcher.d.ts +0 -1
  145. package/dist/types/test/src/testData.d.ts +0 -7
  146. package/dist/types/test/src/testDataLifecycle.d.ts +0 -1
  147. package/dist/types/test/src/testDataSourceCacheKey.d.ts +0 -1
  148. package/dist/types/test/src/testDataSources.d.ts +0 -5
  149. package/dist/types/test/src/testDecodeUcsc.d.ts +0 -1
  150. package/dist/types/test/src/testEvents.d.ts +0 -1
  151. package/dist/types/test/src/testFeatureCache.d.ts +0 -1
  152. package/dist/types/test/src/testFeatureParser.d.ts +0 -1
  153. package/dist/types/test/src/testFormatDetection.d.ts +0 -1
  154. package/dist/types/test/src/testGffDecode.d.ts +0 -1
  155. package/dist/types/test/src/testHeadlessBrowser.d.ts +0 -1
  156. package/dist/types/test/src/testInteractionDecoder.d.ts +0 -1
  157. package/dist/types/test/src/testIntervalTree.d.ts +0 -1
  158. package/dist/types/test/src/testLocusUtils.d.ts +0 -1
  159. package/dist/types/test/src/testPack.d.ts +0 -1
  160. package/dist/types/test/src/testROI.d.ts +0 -1
  161. package/dist/types/test/src/testRemoteProtocol.d.ts +0 -1
  162. package/dist/types/test/src/testRenderTheme.d.ts +0 -1
  163. package/dist/types/test/src/testSVGExport.d.ts +0 -5
  164. package/dist/types/test/src/testSequence.d.ts +0 -1
  165. package/dist/types/test/src/testSession.d.ts +0 -1
  166. package/dist/types/test/src/testTrackSelector.d.ts +0 -1
  167. package/dist/types/test/src/testTrackSerialize.d.ts +0 -1
  168. package/dist/types/test/src/testWigSummary.d.ts +0 -1
  169. package/dist/types/test/src/testWorkerDispatch.d.ts +0 -9
  170. package/dist/types/tracks/gene/geneRenderer.d.ts +0 -17
  171. package/dist/types/tracks/gene/geneThemes.d.ts +0 -11
  172. package/dist/types/tracks/gene/geneTrackCanvas.d.ts +0 -58
  173. package/dist/types/tracks/gene/index.d.ts +0 -4
  174. package/dist/types/ui/components/IgvBrowserShell.d.ts +0 -52
  175. package/dist/types/ui/components/IgvChromosomeSelect.d.ts +0 -18
  176. package/dist/types/ui/components/IgvExportControls.d.ts +0 -13
  177. package/dist/types/ui/components/IgvLocusInput.d.ts +0 -18
  178. package/dist/types/ui/components/IgvNavbar.d.ts +0 -15
  179. package/dist/types/ui/components/IgvWindowSize.d.ts +0 -14
  180. package/dist/types/ui/components/IgvZoomControls.d.ts +0 -10
  181. package/dist/types/wigRenderer.d.ts +0 -15
  182. package/dist/types/wigSummary.d.ts +0 -31
  183. package/dist/types/wigThemes.d.ts +0 -15
  184. package/dist/types/wigTrackCanvas.d.ts +0 -46
  185. package/dist/types/worker/decodeWig.d.ts +0 -20
@@ -1,22 +0,0 @@
1
- /**
2
- * First-party zstd WASM decompression module.
3
- *
4
- * Directly instantiates the zstd WASM binary (from @bokuweb/zstd-wasm, MIT license)
5
- * without the Emscripten glue code that breaks webpack bundling.
6
- *
7
- * Only exposes decompression with dictionary — the minimum needed for GTX.
8
- */
9
- /**
10
- * Initialize the zstd WASM module. Idempotent — safe to call multiple times.
11
- * Loads the WASM binary from the same directory as this module.
12
- */
13
- export declare function initZstd(): Promise<void>;
14
- /** Create a decompression context. Returns an opaque handle. */
15
- export declare function createDCtx(): number;
16
- /** Free a decompression context. */
17
- export declare function freeDCtx(dctx: number): void;
18
- /**
19
- * Decompress a zstd-compressed buffer using a dictionary.
20
- * Returns a newly allocated Uint8Array with the decompressed data.
21
- */
22
- export declare function decompressUsingDict(dctx: number, compressed: Uint8Array, dictionary: Uint8Array): Uint8Array;
@@ -1,450 +0,0 @@
1
- /**
2
- * Headless GenomeBrowser — pure data/navigation/caching core with zero DOM dependencies.
3
- *
4
- * Manages locus state, track coordination, data lifecycle (buffered fetch, caching,
5
- * abort), events, and theming. Can run in Node.js, workers, or any environment.
6
- *
7
- * The DOM-attached `GenomeBrowser` extends this class to add pointer events,
8
- * ResizeObserver, canvas stacking, and sweep-to-zoom.
9
- *
10
- * Usage (headless):
11
- * const browser = new HeadlessGenomeBrowser({
12
- * locus: { chr: 'chr17', start: 7668000, end: 7688000 },
13
- * viewportWidth: 800,
14
- * })
15
- * browser.addTrack(track, dataSource)
16
- * browser.setLocus({ chr: 'chr17', start: 7670000, end: 7680000 })
17
- * browser.dispose()
18
- */
19
- import type { Locus, Track, DataSource, FeatureCacheEntry, SessionConfig, TrackSessionConfig, DataSourceConfig, TrackInteractionEvent, TrackContextMenuEvent, WindowFunction, WigRenderConfig, AnnotationRenderConfig, RulerRenderConfig, SequenceRenderConfig, InteractionRenderConfig, TextFileFormat, SequenceProvider, Genome, ROI, ROISetConfig, ROIInteractionEvent } from './types';
20
- import { ROISet } from './roi/roiSet';
21
- import type { CanvasProvider } from './canvasProvider';
22
- import type { WorkerProvider } from './workerProvider';
23
- import type { PopupProvider } from './popupProvider';
24
- import type { ContextMenuProvider } from './contextMenuProvider';
25
- import type { RenderTheme } from './themes/renderTheme';
26
- import { EventEmitter } from './events';
27
- import type { ChromSizes, CumulativeOffsets } from './genome/chromSizes';
28
- import { type CreateTrackFromSessionOptions } from './session';
29
- import { RulerTrackCanvas } from './tracks/ruler/rulerTrackCanvas';
30
- import { WigTrackCanvas } from './tracks/wig/wigTrackCanvas';
31
- import { AnnotationTrackCanvas } from './tracks/annotation/annotationTrackCanvas';
32
- import { SequenceTrackCanvas } from './tracks/sequence/sequenceTrackCanvas';
33
- import { InteractionTrackCanvas } from './tracks/interaction/interactionTrackCanvas';
34
- import { StateProjection } from './stateProjection';
35
- import type { TrackSelector } from './trackSelector';
36
- export declare const BrowserEvent: {
37
- readonly LocusChange: "locuschange";
38
- readonly TrackAdded: "trackadded";
39
- readonly TrackRemoved: "trackremoved";
40
- readonly TrackOrderChanged: "trackorderchanged";
41
- readonly DataLoaded: "dataloaded";
42
- readonly DataError: "dataerror";
43
- readonly RenderError: "rendererror";
44
- readonly TrackClick: "trackclick";
45
- readonly TrackHover: "trackhover";
46
- readonly TrackContextMenu: "trackcontextmenu";
47
- readonly ROIAdded: "roiadded";
48
- readonly ROIRemoved: "roiremoved";
49
- readonly ROIChanged: "roichanged";
50
- readonly ROIClick: "roiclick";
51
- readonly ROIContextMenu: "roicontextmenu";
52
- };
53
- export interface BrowserEvents {
54
- [BrowserEvent.LocusChange]: {
55
- locus: Locus;
56
- };
57
- [BrowserEvent.TrackAdded]: {
58
- track: Track;
59
- };
60
- [BrowserEvent.TrackRemoved]: {
61
- track: Track;
62
- };
63
- [BrowserEvent.TrackOrderChanged]: {
64
- tracks: Track[];
65
- };
66
- [BrowserEvent.DataLoaded]: {
67
- track: Track;
68
- };
69
- [BrowserEvent.DataError]: {
70
- track: Track;
71
- error: Error;
72
- };
73
- [BrowserEvent.RenderError]: {
74
- track: Track;
75
- error: Error;
76
- };
77
- [BrowserEvent.TrackClick]: TrackInteractionEvent;
78
- [BrowserEvent.TrackHover]: TrackInteractionEvent;
79
- [BrowserEvent.TrackContextMenu]: TrackContextMenuEvent;
80
- [BrowserEvent.ROIAdded]: {
81
- roi: ROI;
82
- set: ROISet;
83
- };
84
- [BrowserEvent.ROIRemoved]: {
85
- roi: ROI;
86
- set: ROISet;
87
- };
88
- [BrowserEvent.ROIChanged]: {
89
- roi: ROI;
90
- changes: Partial<ROI>;
91
- set: ROISet;
92
- };
93
- [BrowserEvent.ROIClick]: ROIInteractionEvent;
94
- [BrowserEvent.ROIContextMenu]: ROIInteractionEvent;
95
- }
96
- /** Internal bookkeeping for a track + optional data source. */
97
- export interface ManagedTrack {
98
- /** Stable string identifier. Auto-generated on addTrack if not provided. */
99
- id: string;
100
- track: Track;
101
- dataSource: DataSource | null;
102
- /** Serializable data source config — stored for session save/restore. */
103
- dataSourceConfig: DataSourceConfig | null;
104
- /** Track name for session serialization. */
105
- name?: string;
106
- /** Track ordering for session serialization. */
107
- order?: number;
108
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
109
- metadata?: Record<string, string>;
110
- cache: FeatureCacheEntry | null;
111
- abortController: AbortController | null;
112
- /** Max visible height in pixels — enables scrollable container in DOM browser. */
113
- maxTrackHeight?: number;
114
- }
115
- export interface HeadlessGenomeBrowserOptions {
116
- locus: Locus;
117
- /** Viewport width in CSS pixels. Required for headless; DOM browser reads from container. */
118
- viewportWidth?: number;
119
- /** Canvas provider for environment abstraction. Default: DOMCanvasProvider. */
120
- canvasProvider?: CanvasProvider;
121
- /** Worker provider for offloading CPU-intensive tasks. Default: main-thread execution. */
122
- workerProvider?: WorkerProvider;
123
- /** Popup provider for rendering feature popups on click/hover. Default in GenomeBrowser: DefaultPopupProvider. Pass null to disable. */
124
- popupProvider?: PopupProvider | null;
125
- /** Context menu provider for right-click menus. Default: DefaultContextMenuProvider. Pass null to disable. */
126
- contextMenuProvider?: ContextMenuProvider | null;
127
- /** Unified render theme. Palette drives default colors/fonts for all tracks. */
128
- theme?: Partial<RenderTheme>;
129
- /**
130
- * Genome assembly. Provides chromosome sizes, cumulative offsets, and sequence.
131
- * Default: hg38Genome. Pass null to disable clamping/sequence.
132
- */
133
- genome?: Genome | null;
134
- /** Custom StateProjection subclass instance. Default: lazily created StateProjection. */
135
- stateProjection?: StateProjection;
136
- }
137
- export interface AddRulerOptions {
138
- config?: Partial<RulerRenderConfig>;
139
- /** Max visible height — enables scrollable container in DOM browser. */
140
- maxTrackHeight?: number;
141
- }
142
- export interface AddWigTrackOptions {
143
- config?: Partial<WigRenderConfig>;
144
- /** Fixed pixel height (overrides config.height). */
145
- height?: number;
146
- /** Background color. */
147
- background?: string;
148
- /** Window function for BigWig summarization. Default: 'mean'. */
149
- windowFunction?: WindowFunction;
150
- /** Max visible height — enables scrollable container in DOM browser. */
151
- maxTrackHeight?: number;
152
- /** Track name for axis label. */
153
- name?: string;
154
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
155
- metadata?: Record<string, string>;
156
- }
157
- export interface AddGtxTrackOptions {
158
- /** Experiment ID within the GTX file. */
159
- experimentId: string;
160
- config?: Partial<WigRenderConfig>;
161
- /** Fixed pixel height (overrides config.height). */
162
- height?: number;
163
- /** Background color. */
164
- background?: string;
165
- /** Window function for summarization. Default: 'mean'. */
166
- windowFunction?: WindowFunction;
167
- /** Max visible height — enables scrollable container in DOM browser. */
168
- maxTrackHeight?: number;
169
- /** Track name for axis label. */
170
- name?: string;
171
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
172
- metadata?: Record<string, string>;
173
- }
174
- export interface AddSequenceTrackOptions {
175
- config?: Partial<SequenceRenderConfig>;
176
- /** Max visible height — enables scrollable container in DOM browser. */
177
- maxTrackHeight?: number;
178
- }
179
- export interface AddBedTrackOptions {
180
- config?: Partial<AnnotationRenderConfig>;
181
- /** Fixed pixel height. */
182
- height?: number;
183
- /** Background color. */
184
- background?: string;
185
- /** Explicit format override. When absent, inferred from URL. */
186
- format?: TextFileFormat;
187
- /** Index URL override for tabix-indexed files. */
188
- indexURL?: string;
189
- /** Whether the file is tabix-indexed. Auto-detected if absent. */
190
- indexed?: boolean;
191
- /** Max visible height — enables scrollable container in DOM browser. */
192
- maxTrackHeight?: number;
193
- /** Track name for axis label. */
194
- name?: string;
195
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
196
- metadata?: Record<string, string>;
197
- }
198
- export interface AddInteractionTrackOptions {
199
- config?: Partial<InteractionRenderConfig>;
200
- /** Background color. */
201
- background?: string;
202
- /** Explicit format override (e.g., 'bedpe', 'interact'). Inferred from URL if absent. */
203
- format?: TextFileFormat;
204
- /** Index URL override for tabix-indexed files. */
205
- indexURL?: string;
206
- /** Whether the file is tabix-indexed. Auto-detected if absent. */
207
- indexed?: boolean;
208
- /** Track name for axis label. */
209
- name?: string;
210
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
211
- metadata?: Record<string, string>;
212
- }
213
- export interface AddAnnotationTrackOptions {
214
- config?: Partial<AnnotationRenderConfig>;
215
- /** Fixed pixel height. */
216
- height?: number;
217
- /** Background color. */
218
- background?: string;
219
- /** Genome assembly for UCSC API. Default: 'hg38'. */
220
- genome?: string;
221
- /** UCSC track name. Default: 'ncbiRefSeq'. */
222
- track?: string;
223
- /** Max visible height — enables scrollable container in DOM browser. */
224
- maxTrackHeight?: number;
225
- /** Track name for axis label. Default: 'Genes'. */
226
- name?: string;
227
- /** Arbitrary key-value metadata (e.g., assay, biosample, tissue). */
228
- metadata?: Record<string, string>;
229
- }
230
- export declare class HeadlessGenomeBrowser {
231
- protected _locus: Locus;
232
- protected _viewportWidth: number;
233
- protected managedTracks: ManagedTrack[];
234
- protected roiSets: ROISet[];
235
- /** Inflight fetch promises keyed by (cacheKey + fetchRegion + bpPerPixel) for deduplication. */
236
- private inflightFetches;
237
- /** Canvas provider for environment abstraction. Available for convenience API / future use. */
238
- readonly canvasProvider: CanvasProvider;
239
- /** Worker provider for offloading CPU-intensive tasks. */
240
- readonly workerProvider?: WorkerProvider;
241
- /** Popup provider for rendering feature popups on click/hover. */
242
- readonly popupProvider?: PopupProvider;
243
- /** Context menu provider for right-click menus. */
244
- readonly contextMenuProvider?: ContextMenuProvider;
245
- /** Resolved render theme. Available for track creation in convenience API. */
246
- readonly theme: RenderTheme;
247
- /**
248
- * Genome assembly. Provides chromosome sizes, cumulative offsets, and optional sequence.
249
- * Undefined when genome/clamping is disabled (null was passed).
250
- */
251
- readonly genome?: Genome;
252
- /** Chromosome sizes for locus clamping. Derived from genome. Undefined when clamping is disabled. */
253
- readonly chromSizes?: ChromSizes;
254
- /** Precomputed cumulative offsets for whole genome view. Derived from genome. Undefined when chromSizes is not set. */
255
- readonly cumulativeOffsets?: CumulativeOffsets;
256
- /** Sequence provider for dynseq rendering on wig tracks. Derived from genome.sequence unless overridden. */
257
- readonly sequenceProvider?: SequenceProvider;
258
- readonly events: EventEmitter<BrowserEvents>;
259
- private _state?;
260
- get locus(): Locus;
261
- get viewportWidth(): number;
262
- /** Agent-friendly state projection manager. Lazily created on first access. */
263
- get state(): StateProjection;
264
- constructor(options: HeadlessGenomeBrowserOptions);
265
- /** Clamp a locus to valid chromosome bounds. No-op if chromSizes is not set. */
266
- protected clamp(locus: Locus): Locus;
267
- /** Subscribe to a browser event. Returns an unsubscribe function. */
268
- on<K extends keyof BrowserEvents>(event: K, handler: (data: BrowserEvents[K]) => void): () => void;
269
- /** Unsubscribe from a browser event. */
270
- off<K extends keyof BrowserEvents>(event: K, handler?: (data: BrowserEvents[K]) => void): void;
271
- /**
272
- * Update the viewport width and re-render.
273
- * In headless mode, call this when the logical viewport size changes.
274
- * The DOM browser calls this automatically from ResizeObserver.
275
- */
276
- setViewportWidth(width: number): void;
277
- /** Add a track with an optional data source for automatic data management. */
278
- addTrack<F>(track: Track, dataSource?: DataSource<F>, dataSourceConfig?: DataSourceConfig, maxTrackHeight?: number): string;
279
- /** Remove a track by reference or by stable string ID. */
280
- removeTrack(trackOrId: Track | string): void;
281
- /**
282
- * Move a track to a new position in the track list.
283
- * Emits BrowserEvent.TrackOrderChanged with the new track order.
284
- */
285
- moveTrack(track: Track, toIndex: number): void;
286
- /** Get the current track order. */
287
- getTrackOrder(): Track[];
288
- /** Find a managed track by its stable string ID. Returns undefined if not found. */
289
- getManagedTrack(id: string): ManagedTrack | undefined;
290
- /** Find a Track by its stable string ID. Returns undefined if not found. */
291
- getTrack(id: string): Track | undefined;
292
- /** Get all managed tracks (read-only snapshot). */
293
- getManagedTracks(): readonly ManagedTrack[];
294
- /**
295
- * Find all managed tracks matching a selector.
296
- *
297
- * ```ts
298
- * browser.findTracks({ type: 'wig', where: { biosample: 'K562' } })
299
- * browser.findTracks({ name: 'H3K27ac' })
300
- * ```
301
- */
302
- findTracks(selector: TrackSelector): ManagedTrack[];
303
- /**
304
- * Remove all tracks matching a selector. Returns the number of tracks removed.
305
- *
306
- * ```ts
307
- * browser.removeTracks({ where: { assay: 'ATAC-seq' } }) // remove all ATAC-seq tracks
308
- * browser.removeTracks({ type: 'wig' }) // remove all wig tracks
309
- * ```
310
- */
311
- removeTracks(selector: TrackSelector): number;
312
- /**
313
- * Merge metadata into all tracks matching a selector. Returns the number of tracks updated.
314
- * New keys are added; existing keys are overwritten.
315
- *
316
- * ```ts
317
- * browser.updateTrackMetadata({ type: 'wig' }, { project: 'ENCODE' })
318
- * ```
319
- */
320
- updateTrackMetadata(selector: TrackSelector, metadata: Record<string, string>): number;
321
- /** Update the locus and re-render all tracks. Clamped to chromosome bounds. */
322
- setLocus(locus: Locus): void;
323
- /**
324
- * Parse a locus string and navigate to it.
325
- * e.g., "chr17:7,668,000-7,688,000"
326
- * Returns true if navigation succeeded.
327
- */
328
- search(query: string): boolean;
329
- /** Zoom in by a factor (default 2x) around the center. */
330
- zoomIn(factor?: number): void;
331
- /** Zoom out by a factor (default 2x) around the center. */
332
- zoomOut(factor?: number): void;
333
- private zoomByFactor;
334
- /**
335
- * Zoom by a scale factor around an optional genomic coordinate.
336
- *
337
- * If `centerBP` is omitted, zooms around the viewport center (default).
338
- * When provided, the zoom keeps `centerBP` at the same relative position
339
- * in the viewport — e.g. for pointer-anchored pinch/wheel zoom.
340
- *
341
- * @param factor - Scale factor. <1 = zoom in, >1 = zoom out.
342
- * @param centerBP - Optional genomic coordinate to anchor the zoom on.
343
- */
344
- zoomAroundCenter(factor: number, centerBP?: number): void;
345
- /** Force a data reload for all managed tracks (e.g., after config change). */
346
- reloadData(): void;
347
- /** Get the cached features for a track, if available. */
348
- getCachedFeatures<F>(track: Track): F[] | undefined;
349
- /** Re-render all tracks at current locus. */
350
- render(): void;
351
- /**
352
- * Add a single ROI to a named set. Creates a user-defined set if it doesn't exist.
353
- * Returns the ROI (with generated ID if none provided).
354
- */
355
- addROI(roi: ROI, setName?: string): ROI;
356
- /** Add a full ROI set from config. Returns the created ROISet. */
357
- addROISet(config: ROISetConfig): ROISet;
358
- /** Remove an ROI by ID (searches all sets). Returns true if found and removed. */
359
- removeROI(roiId: string): boolean;
360
- /** Update an ROI by ID. Returns the updated ROI, or undefined if not found. */
361
- updateROI(roiId: string, changes: Partial<Omit<ROI, 'id'>>): ROI | undefined;
362
- /** Remove all ROI sets. */
363
- clearROIs(): void;
364
- /** Get all ROIs across all sets (flattened). */
365
- getROIs(): ROI[];
366
- /** Get all ROI sets. */
367
- getROISets(): readonly ROISet[];
368
- /** Find ROIs overlapping a genomic region (searches all sets). */
369
- findROIsAtLocus(chr: string, start: number, end: number): ROI[];
370
- /** Get ROIs visible in the current viewport. */
371
- getVisibleROIs(): ROI[];
372
- /**
373
- * Export the current view as an SVG string.
374
- *
375
- * Creates a Canvas2SVG context, renders each track with clipped groups and
376
- * vertical offsets, and returns the serialized SVG. Named entities are
377
- * replaced with numeric equivalents for standalone SVG compatibility.
378
- *
379
- * Mirrors igv.js Browser.toSVG() (js/browser.ts lines 352-388).
380
- *
381
- * @param options.width — Override viewport width (defaults to current viewportWidth).
382
- * @param options.backdropColor — Background color (defaults to 'white').
383
- */
384
- toSVG(options?: {
385
- width?: number;
386
- backdropColor?: string;
387
- }): string;
388
- /**
389
- * Serialize browser state to a SessionConfig.
390
- * Track configs are serialized via per-type serializers that drop
391
- * non-serializable values (functions, Promises) and only include
392
- * fields that differ from theme defaults.
393
- */
394
- toJSON(): SessionConfig;
395
- /**
396
- * Load a session, replacing all current tracks.
397
- * Disposes existing state, sets locus, and recreates tracks + data sources.
398
- *
399
- * Tracks are created headlessly (not attached to the DOM). Subclasses like
400
- * GenomeBrowser can override this to also attach track canvases to the DOM.
401
- */
402
- loadSession(session: SessionConfig, options?: CreateTrackFromSessionOptions): void;
403
- /**
404
- * Create a new HeadlessGenomeBrowser from a session config.
405
- * Creates the browser and loads all tracks from the session.
406
- */
407
- static fromSession(session: SessionConfig, options?: HeadlessGenomeBrowserOptions & CreateTrackFromSessionOptions): HeadlessGenomeBrowser;
408
- /**
409
- * Add a track from a session config using the track registry.
410
- *
411
- * Mirrors igv.js `Browser.createTrack(config)` (js/browser.ts lines 1074-1151)
412
- * which resolves type aliases via `getTrack()` and instantiates through the
413
- * track factory. Our version delegates to `createTrackFromConfig()` in the
414
- * registry, then registers the created track with this browser's data lifecycle.
415
- *
416
- * This is the generic entry point — the convenience methods below
417
- * (addRuler, addWigTrack, addGeneTrack) are sugar for common cases.
418
- */
419
- addTrackFromConfig(trackConfig: TrackSessionConfig): Track;
420
- /** Add a ruler track. */
421
- addRuler(options?: AddRulerOptions): RulerTrackCanvas;
422
- /** Add a BigWig signal track. */
423
- addWigTrack(url: string, options?: AddWigTrackOptions): WigTrackCanvas;
424
- /** Add a GTX signal track (single experiment from a multi-experiment GTX file). */
425
- addGtxTrack(url: string, options: AddGtxTrackOptions): WigTrackCanvas;
426
- /** Add a UCSC gene annotation track. */
427
- addGeneTrack(options?: AddAnnotationTrackOptions): AnnotationTrackCanvas;
428
- /** Add a BED/peak annotation track from a URL. Supports plain text and tabix-indexed files. */
429
- addBedTrack(url: string, options?: AddBedTrackOptions): AnnotationTrackCanvas;
430
- /** Add an interaction (arc/BEDPE) track from a URL. */
431
- addInteractionTrack(url: string, options?: AddInteractionTrackOptions): InteractionTrackCanvas;
432
- /** Add a DNA/RNA sequence track. Data fetching is handled automatically via the genome's sequence provider. */
433
- addSequenceTrack(options?: AddSequenceTrackOptions): SequenceTrackCanvas;
434
- /** Clean up event listeners, abort in-flight requests, clear tracks and ROIs. */
435
- dispose(): void;
436
- /**
437
- * Resolve pixel coordinates on a track canvas to interaction data.
438
- * Used by GenomeBrowser to build event payloads from pointer events.
439
- * Returns null if the track has no features at the given point.
440
- */
441
- protected resolveInteraction(track: Track, x: number, y: number): TrackInteractionEvent | null;
442
- protected loadAllTracksIfNeeded(): void;
443
- /**
444
- * Load data for a single track, deduplicating against inflight fetches
445
- * from other tracks with the same data source identity.
446
- *
447
- * Works for both initial addTrack() loads and bulk loadAllTracksIfNeeded() calls.
448
- */
449
- private loadTrackWithDedup;
450
- }
@@ -1,123 +0,0 @@
1
- export type { CanvasProvider, CanvasAndContext } from './canvasProvider';
2
- export { DOMCanvasProvider, defaultCanvasProvider } from './canvasProvider';
3
- export type { PopupProvider } from './popupProvider';
4
- export type { ContextMenuProvider } from './contextMenuProvider';
5
- export type { ContextMenuCallbacks, ROIMenuCallbacks } from './contextMenu';
6
- export { commonContextMenuItems, numericDataMenuItems, roiContextMenuItems } from './contextMenu';
7
- export type { WorkerProvider, WorkerTask, WorkerTaskResultMap } from './workerProvider';
8
- export type { PackTask, SummarizeWigTask, ComputeWigRangeTask, ParseFeaturesTask, } from './workerProvider';
9
- export { MainThreadProvider, mainThreadProvider } from './workerProvider';
10
- export { WebWorkerProvider } from './worker/webWorkerProvider';
11
- export type { WebWorkerProviderOptions } from './worker/webWorkerProvider';
12
- export { NodeWorkerProvider } from './worker/nodeWorkerProvider';
13
- export { BaseTrackCanvas } from './tracks/baseTrackCanvas';
14
- export type { AnnotationFeature, Exon, AnnotationRenderConfig, RenderContext, DisplayMode, Locus, Track, RulerRenderConfig, AxisInfo, TrackFeatureSummary, WigFeatureSummary, AnnotationFeatureSummary, InteractionFeatureSummary } from './types';
15
- export type { WigFeature, WigRenderConfig, WigColorValue, WigGraphType, WindowFunction, WigGuideLine } from './types';
16
- export type { SequenceRenderConfig, SequenceType, SequenceTrackSessionConfig, SequenceSessionOverrides } from './types';
17
- export { defaultSequenceRenderConfig } from './types';
18
- export type { InteractionFeature, InteractionRenderConfig, ArcOrientation, ArcDisplayMode, InteractionTrackSessionConfig, InteractionSessionOverrides } from './types';
19
- export { defaultInteractionRenderConfig } from './types';
20
- export type { DataSource, FeatureCacheEntry, DataDrivenTrack } from './types';
21
- export type { PopupDataItem, HitTestResult, TrackInteractionEvent, ContextMenuItem, TrackContextMenuEvent, NumericState, ROI, ROISetConfig, ROIInteractionEvent } from './types';
22
- export type { SessionConfig, TrackSessionConfig, WigTrackSessionConfig, AnnotationTrackSessionConfig, RulerTrackSessionConfig, WigSessionOverrides, AnnotationSessionOverrides, RulerSessionOverrides, DataSourceConfig, BigWigDataSourceConfig, GtxDataSourceConfig, UCSCDataSourceConfig, TextDataSourceConfig, SequenceProvider, IgvSessionObject, IgvReferenceConfig, IgvTrackConfig, Chromosome, Genome, GenomeConfig, ChromAliasRecord, Strand, TextFileFormat, BedFeature, PeakFeature, BedGraphFeature, GFFRecord, GFFFeature, TextFeature, } from './types';
23
- export { defaultAnnotationRenderConfig, defaultRulerRenderConfig, defaultWigRenderConfig } from './types';
24
- export type { Packable } from './pack';
25
- export { packFeatures } from './pack';
26
- export { renderAnnotationTrack } from './tracks/annotation/annotationRenderer';
27
- export { AnnotationTrackCanvas } from './tracks/annotation/annotationTrackCanvas';
28
- export type { AnnotationTrackCanvasOptions } from './tracks/annotation/annotationTrackCanvas';
29
- export { renderRulerTrack, renderWholeGenomeRuler } from './tracks/ruler/rulerRenderer';
30
- export type { WholeGenomeRulerContext } from './tracks/ruler/rulerRenderer';
31
- export { RulerTrackCanvas } from './tracks/ruler/rulerTrackCanvas';
32
- export type { RulerTrackCanvasOptions } from './tracks/ruler/rulerTrackCanvas';
33
- export { renderQuantitativeAxis, renderLabelAxis, prettyPrintNumber } from './tracks/axis/axisRenderer';
34
- export { renderWigTrack } from './tracks/wig/wigRenderer';
35
- export { WigTrackCanvas } from './tracks/wig/wigTrackCanvas';
36
- export type { WigTrackCanvasOptions } from './tracks/wig/wigTrackCanvas';
37
- export { summarizeWigData, computeWigDataRange } from './tracks/wig/wigSummary';
38
- export { HeadlessGenomeBrowser, BrowserEvent } from './headlessGenomeBrowser';
39
- export type { HeadlessGenomeBrowserOptions, ManagedTrack, AddRulerOptions, AddWigTrackOptions, AddGtxTrackOptions, AddBedTrackOptions, AddAnnotationTrackOptions, AddInteractionTrackOptions, AddSequenceTrackOptions } from './headlessGenomeBrowser';
40
- export { GenomeBrowser } from './genomeBrowser';
41
- export type { GenomeBrowserOptions, BrowserEvents } from './genomeBrowser';
42
- export type { ChromSizes, CumulativeOffsets } from './genome/chromSizes';
43
- export { hg38ChromSizes, getChromLength, isMainChromosome, mainChromosomeNames, computeCumulativeOffsets, genomeToChromCoord, parseChromSizes } from './genome/chromSizes';
44
- export { hg38Genome, createGenome, createGenomeSync } from './genome/genome';
45
- export { ChromAliasDefaults, addCaseAliases } from './genome/chromAlias';
46
- export { EventEmitter } from './events';
47
- export { parseLocus, formatLocus, formatBpLength, clampLocus, isWholeGenomeView } from './locusUtils';
48
- export { LoomChromosomeSelect, LoomLocusInput, LoomZoomControls, LoomWindowSize, LoomExportControls, LoomNavbar, LoomBrowserShell, createShell, classicThemeCSS, modernThemeCSS, getThemeCSS, LoomPopup, DefaultPopupProvider, LoomContextMenu, DefaultContextMenuProvider, LoomInputDialog, } from './ui';
49
- export type { ShellTheme, CreateShellOptions } from './ui';
50
- export { decodeGenePred, decodeGenePredExt, decodeRefGeneJson } from './decode/ucsc';
51
- export type { RefGeneRecord } from './decode/ucsc';
52
- export { findUTRs, parseColorString, parseStrand } from './decode/exonUtils';
53
- export { decodeBed, decodeNarrowPeak, decodeBroadPeak, decodeBedGraph, decodeGappedPeak, decodeRefflat } from './decode/bed';
54
- export type { BedHeader } from './decode/bed';
55
- export { decodeGFF3, decodeGTF, assembleGFFTranscripts, parseGFFAttributes, decodeGFFAttribute, isTranscript, isExon, isCoding, isUTR, isIntron, isTranscriptPart, } from './decode/gff';
56
- export { decodeBedpe, fixBedPE, isHiccups } from './decode/bedpe';
57
- export type { BedpeHeader } from './decode/bedpe';
58
- export { decodeInteract } from './decode/interact';
59
- export { renderInteractionTrack, positionString } from './tracks/interaction/interactionRenderer';
60
- export type { DrawnInteractionFeature, InteractionDrawState } from './tracks/interaction/interactionRenderer';
61
- export { InteractionTrackCanvas } from './tracks/interaction/interactionTrackCanvas';
62
- export type { InteractionTrackCanvasOptions } from './tracks/interaction/interactionTrackCanvas';
63
- export type { ThemePalette, RenderTheme } from './themes/renderTheme';
64
- export { defaultRenderTheme, resolveTheme, resolveAnnotationConfig, resolveWigConfig, resolveRulerConfig, resolveSequenceConfig, resolveInteractionConfig } from './themes/renderTheme';
65
- export { modernRenderTheme, darkRenderTheme } from './themes/renderThemePresets';
66
- export { modernTheme, darkTheme } from './tracks/annotation/annotationThemes';
67
- export { modernWigTheme, darkWigTheme, warmWigTheme, lineWigTheme } from './tracks/wig/wigThemes';
68
- export { modernSequenceTheme, darkSequenceTheme } from './tracks/sequence/sequenceThemes';
69
- export { renderSequenceTrack } from './tracks/sequence/sequenceRenderer';
70
- export type { SequenceFeature } from './tracks/sequence/sequenceRenderer';
71
- export { SequenceTrackCanvas } from './tracks/sequence/sequenceTrackCanvas';
72
- export type { SequenceTrackCanvasOptions } from './tracks/sequence/sequenceTrackCanvas';
73
- export { complementBase, complementSequence, reverseComplementSequence, translateSequence, translationDict, } from './sequence/sequenceUtils';
74
- export type { CodonTranslation } from './sequence/sequenceUtils';
75
- export { renderDynSeqFeature, drawLetterGlyph, defaultNucleotideColors } from './tracks/dynseq/dynseqRenderer';
76
- export { fetchGeneFeatures } from './data/ucscApi';
77
- export type { FetchGenesOptions } from './data/ucscApi';
78
- export { fetchSequence } from './data/ucscSequence';
79
- export type { FetchSequenceOptions } from './data/ucscSequence';
80
- export { createCachedSequence } from './data/cachedSequence';
81
- export { fetchBigWigFeatures, fetchBigWigWGFeatures, clearBigWigCache, BigWigReader } from './bigwig';
82
- export type { FetchBigWigOptions, BigWigHeader, BigWigTotalSummary } from './bigwig';
83
- export { fetchGtxFeatures, fetchGtxWGFeatures, fetchGtxMultiFeatures, clearGtxCache, GtxReader } from './gtx';
84
- export type { FetchGtxOptions, GtxHeader, ChromEntry, ExperimentEntry } from './gtx';
85
- export { TabixReader } from './tabix';
86
- export type { TabixReaderOptions, TabixHeader } from './tabix';
87
- export { BinaryParser } from './io/binaryParser';
88
- export { fetchRange, BufferedRangeReader } from './io/rangeReader';
89
- export type { ByteRange } from './io/rangeReader';
90
- export { BigWigDataSource } from './dataSources/bigWigDataSource';
91
- export { GtxDataSource } from './dataSources/gtxDataSource';
92
- export { GeneDataSource } from './dataSources/geneDataSource';
93
- export { TextFeatureSource } from './dataSources/textFeatureSource';
94
- export type { TextFeatureSourceConfig } from './dataSources/textFeatureSource';
95
- export { SequenceDataSource } from './dataSources/sequenceDataSource';
96
- export { createFeatureSource } from './dataSources/featureSourceFactory';
97
- export type { FeatureSourceConfig, FeatureSourceResult } from './dataSources/featureSourceFactory';
98
- export { dataSourceCacheKey } from './dataSources/dataSourceCacheKey';
99
- export { inferFormatFromPath, isBinaryFormat, isLikelyIndexed, inferIndexURL, inferTrackType, knownFileExtensions } from './formats/formatDetection';
100
- export { parseFeatures, parseHeader, getDecoder } from './formats/featureParser';
101
- export type { FeatureHeader, DecoderFunction } from './formats/featureParser';
102
- export { cacheCoversViewport, bufferLocus } from './dataLifecycle';
103
- export { IntervalTree } from './intervalTree';
104
- export type { Interval } from './intervalTree';
105
- export { FeatureCache } from './featureCache';
106
- export type { CacheableFeature, CacheRange } from './featureCache';
107
- export { C2S } from './export/canvas2svg';
108
- export type { C2SConfig, C2SContext, C2SVGExtensions } from './export/canvas2svg';
109
- export { ROISet, ROI_DEFAULT_COLOR, ROI_USER_DEFINED_COLOR, generateROIId } from './roi';
110
- export { renderROIOverlays } from './roi';
111
- export type { ROIRenderOptions } from './roi';
112
- export { registerTrackCreator, registerTypeAlias, getTrackCreator, knownTrackTypes, createTrackFromConfig, } from './trackRegistry';
113
- export type { TrackCreatorContext, TrackCreator, CreatedTrack } from './trackRegistry';
114
- export { SESSION_VERSION, createDataSource, createTrackFromSession, fromIgvSession, toIgvSession, } from './session';
115
- export type { CreateDataSourceOptions, CreateTrackFromSessionOptions } from './session';
116
- export { StateProjection } from './stateProjection';
117
- export type { ZoomLevel, TrackSummary, ProjectedState, StateDiff, TrackChangeDiff, GetStateOptions } from './stateProjection';
118
- export { matchesSelector, selectTracks } from './trackSelector';
119
- export type { TrackSelector } from './trackSelector';
120
- export { CommandDispatcher, CommandError, toTrackSelector } from './commandDispatcher';
121
- export type { CommandArgs, CommandResultMap, CommandErrorCode, CommandDispatcherOptions, WireTrackSelector, ModifyTrackAction, ROIAction, GetBrowserStateArgs, NavigateArgs, ModifyTracksArgs, QueryFeaturesArgs, AnnotateArgs, SetLayoutArgs, ExportViewArgs, ManageROIsArgs, SubscribeEventsArgs, ModifyTracksResult, ModifyTrackActionResult, QueryFeaturesResult, SetLayoutResult, ManageROIsResult, SubscribeEventsResult, } from './commandDispatcher';
122
- export { RemoteConnection, READY_STATE_OPEN } from './remoteProtocol';
123
- export type { RemoteSocket, RequestMessage, ResponseMessage, ErrorMessage, EventMessage, OutboundMessage, } from './remoteProtocol';
@@ -1,56 +0,0 @@
1
- /**
2
- * Augmented red-black interval tree for efficient overlap queries.
3
- *
4
- * Port of igv.js `js/intervalTree.ts` (CLR-based implementation).
5
- * Typed generically — values stored in intervals are `T` instead of `unknown`.
6
- *
7
- * Each node stores augmented min/max for its subtree, enabling O(log n + k)
8
- * overlap queries via subtree pruning.
9
- *
10
- * Layer 1 (Data + Layout) — pure data structure, no DOM, no canvas.
11
- */
12
- /** An interval with an associated value. */
13
- export interface Interval<T = unknown> {
14
- low: number;
15
- high: number;
16
- value: T;
17
- }
18
- interface TreeNode<T> {
19
- color: number;
20
- parent: TreeNode<T>;
21
- left: TreeNode<T>;
22
- right: TreeNode<T>;
23
- interval: Interval<T>;
24
- /** Augmented: maximum high value in this subtree. */
25
- max: number;
26
- /** Augmented: minimum low value in this subtree. */
27
- min: number;
28
- }
29
- /**
30
- * Augmented red-black interval tree.
31
- *
32
- * Public API:
33
- * - `insert(start, end, value)` — O(log n) insertion
34
- * - `findOverlapping(start, end)` — O(log n + k) query, returns sorted intervals
35
- * - `mapIntervals(fn)` — apply function to every interval (in-order)
36
- */
37
- export declare class IntervalTree<T = unknown> {
38
- #private;
39
- root: TreeNode<T>;
40
- constructor();
41
- /**
42
- * Insert an interval [start, end] with associated value.
43
- * Maintains red-black balance and augmented min/max.
44
- */
45
- insert(start: number, end: number, value: T): void;
46
- /**
47
- * Find all intervals overlapping [start, end].
48
- * Returns intervals sorted by `low` value.
49
- */
50
- findOverlapping(start: number, end: number): Interval<T>[];
51
- /**
52
- * Apply a function to every interval in the tree.
53
- */
54
- mapIntervals(fn: (interval: Interval<T>) => void): void;
55
- }
56
- export {};