@jbrowse/plugin-linear-genome-view 5.0.0-beta.2 → 5.0.0-beta.20

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 (177) hide show
  1. package/esm/LinearGenomeView/afterAttach.d.ts +22 -5
  2. package/esm/LinearGenomeView/afterAttach.js +129 -106
  3. package/esm/LinearGenomeView/axisConfigSchema.d.ts +18 -0
  4. package/esm/LinearGenomeView/axisConfigSchema.js +22 -0
  5. package/esm/LinearGenomeView/components/CenterLine.js +10 -5
  6. package/esm/LinearGenomeView/components/ConnectedHoverHighlight.js +2 -3
  7. package/esm/LinearGenomeView/components/CrisprGuidePanel.js +3 -5
  8. package/esm/LinearGenomeView/components/ExportSvgDialog.d.ts +9 -4
  9. package/esm/LinearGenomeView/components/ExportSvgDialog.js +45 -8
  10. package/esm/LinearGenomeView/components/GetSequenceDialog.js +2 -2
  11. package/esm/LinearGenomeView/components/Header.js +11 -1
  12. package/esm/LinearGenomeView/components/HeaderClearHighlightButton.js +2 -2
  13. package/esm/LinearGenomeView/components/HeaderPanControls.d.ts +3 -3
  14. package/esm/LinearGenomeView/components/HeaderPanControls.js +6 -3
  15. package/esm/LinearGenomeView/components/HeaderSearchBoxes.js +4 -1
  16. package/esm/LinearGenomeView/components/HeaderZoomControls.js +6 -35
  17. package/esm/LinearGenomeView/components/Highlight.js +27 -11
  18. package/esm/LinearGenomeView/components/HighlightBand.d.ts +11 -2
  19. package/esm/LinearGenomeView/components/HighlightBand.js +32 -13
  20. package/esm/LinearGenomeView/components/HighlightChip.d.ts +3 -3
  21. package/esm/LinearGenomeView/components/HighlightChip.js +13 -8
  22. package/esm/LinearGenomeView/components/HighlightLabelDialog.d.ts +6 -0
  23. package/esm/LinearGenomeView/components/HighlightLabelDialog.js +18 -0
  24. package/esm/LinearGenomeView/components/HoverPositionHighlight.js +3 -3
  25. package/esm/LinearGenomeView/components/ImportForm.js +7 -9
  26. package/esm/LinearGenomeView/components/LinearGenomeView.js +5 -12
  27. package/esm/LinearGenomeView/components/LinearGenomeViewContainer.js +13 -14
  28. package/esm/LinearGenomeView/components/MiniControls.js +11 -5
  29. package/esm/LinearGenomeView/components/OverviewHighlight.js +3 -3
  30. package/esm/LinearGenomeView/components/OverviewHighlightBand.d.ts +3 -2
  31. package/esm/LinearGenomeView/components/OverviewHighlightBand.js +6 -5
  32. package/esm/LinearGenomeView/components/OverviewRubberband.js +25 -48
  33. package/esm/LinearGenomeView/components/OverviewScalebar.js +4 -5
  34. package/esm/LinearGenomeView/components/OverviewScalebarPolygon.js +5 -3
  35. package/esm/LinearGenomeView/components/PaddingBlocks.js +3 -8
  36. package/esm/LinearGenomeView/components/RangeSelectOverlay.js +5 -6
  37. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.d.ts +3 -2
  38. package/esm/LinearGenomeView/components/RegionWidthEditorDialog.js +4 -4
  39. package/esm/LinearGenomeView/components/ResizeAllTracksHandle.d.ts +5 -0
  40. package/esm/LinearGenomeView/components/ResizeAllTracksHandle.js +74 -0
  41. package/esm/LinearGenomeView/components/Rubberband.d.ts +1 -2
  42. package/esm/LinearGenomeView/components/Rubberband.js +3 -2
  43. package/esm/LinearGenomeView/components/SVGHighlightBand.d.ts +10 -1
  44. package/esm/LinearGenomeView/components/SVGHighlightBand.js +16 -5
  45. package/esm/LinearGenomeView/components/Scalebar.d.ts +2 -6
  46. package/esm/LinearGenomeView/components/Scalebar.js +8 -5
  47. package/esm/LinearGenomeView/components/ScalebarRefNameLabels.js +51 -36
  48. package/esm/LinearGenomeView/components/SearchBox.js +10 -16
  49. package/esm/LinearGenomeView/components/SearchPanelForm.d.ts +3 -2
  50. package/esm/LinearGenomeView/components/SearchPanelForm.js +4 -2
  51. package/esm/LinearGenomeView/components/SearchResultsDialog.d.ts +4 -8
  52. package/esm/LinearGenomeView/components/SearchResultsDialog.js +7 -4
  53. package/esm/LinearGenomeView/components/SearchResultsTable.d.ts +4 -7
  54. package/esm/LinearGenomeView/components/SearchResultsTable.js +25 -53
  55. package/esm/LinearGenomeView/components/SequenceFeatureHoverHighlight.js +2 -3
  56. package/esm/LinearGenomeView/components/SequenceSearchDialog.d.ts +2 -4
  57. package/esm/LinearGenomeView/components/StrandCheckboxes.d.ts +3 -2
  58. package/esm/LinearGenomeView/components/StrandCheckboxes.js +4 -2
  59. package/esm/LinearGenomeView/components/TrackContainer.d.ts +2 -3
  60. package/esm/LinearGenomeView/components/TrackContainer.js +63 -10
  61. package/esm/LinearGenomeView/components/TrackLabel.js +14 -4
  62. package/esm/LinearGenomeView/components/TrackLabelButtons.js +2 -2
  63. package/esm/LinearGenomeView/components/TrackLabelDragHandle.js +4 -5
  64. package/esm/LinearGenomeView/components/TrackLabelMenu.js +11 -14
  65. package/esm/LinearGenomeView/components/TrackLabelRefNameWarning.d.ts +3 -4
  66. package/esm/LinearGenomeView/components/TrackLabelRefNameWarning.js +23 -10
  67. package/esm/LinearGenomeView/components/TrackRenderingContainer.d.ts +6 -4
  68. package/esm/LinearGenomeView/components/TrackRenderingContainer.js +12 -24
  69. package/esm/LinearGenomeView/components/TracksContainer.js +11 -23
  70. package/esm/LinearGenomeView/components/VerticalGuide.d.ts +1 -2
  71. package/esm/LinearGenomeView/components/VerticalGuide.js +3 -16
  72. package/esm/LinearGenomeView/components/fetchSequence.d.ts +1 -2
  73. package/esm/LinearGenomeView/components/fetchSequence.js +15 -7
  74. package/esm/LinearGenomeView/components/recentLocationsMenu.js +10 -0
  75. package/esm/LinearGenomeView/components/useRangeSelect.d.ts +0 -3
  76. package/esm/LinearGenomeView/components/useRangeSelect.js +26 -61
  77. package/esm/LinearGenomeView/components/useSearchBoxPrefs.d.ts +3 -1
  78. package/esm/LinearGenomeView/components/useSearchBoxPrefs.js +4 -2
  79. package/esm/LinearGenomeView/components/useSideScroll.d.ts +17 -2
  80. package/esm/LinearGenomeView/components/useSideScroll.js +156 -102
  81. package/esm/LinearGenomeView/components/util.d.ts +4 -0
  82. package/esm/LinearGenomeView/components/util.js +4 -2
  83. package/esm/LinearGenomeView/consts.d.ts +2 -0
  84. package/esm/LinearGenomeView/consts.js +3 -1
  85. package/esm/LinearGenomeView/containingLgv.d.ts +21 -0
  86. package/esm/LinearGenomeView/containingLgv.js +23 -0
  87. package/esm/LinearGenomeView/headerFit.d.ts +4 -2
  88. package/esm/LinearGenomeView/headerFit.js +20 -7
  89. package/esm/LinearGenomeView/index.d.ts +2 -7
  90. package/esm/LinearGenomeView/index.js +5 -7
  91. package/esm/LinearGenomeView/keyboardHandler.d.ts +8 -7
  92. package/esm/LinearGenomeView/keyboardHandler.js +61 -23
  93. package/esm/LinearGenomeView/launchKeys.d.ts +1 -1
  94. package/esm/LinearGenomeView/launchKeys.js +11 -6
  95. package/esm/LinearGenomeView/lazyDialogs.d.ts +16 -3
  96. package/esm/LinearGenomeView/lazyDialogs.js +1 -0
  97. package/esm/LinearGenomeView/linkedViewSync.d.ts +3 -11
  98. package/esm/LinearGenomeView/linkedViewSync.js +27 -49
  99. package/esm/LinearGenomeView/menuItems.d.ts +16 -18
  100. package/esm/LinearGenomeView/menuItems.js +264 -164
  101. package/esm/LinearGenomeView/model.d.ts +1192 -560
  102. package/esm/LinearGenomeView/model.js +805 -590
  103. package/esm/LinearGenomeView/rExport/exportLinearView.d.ts +17 -0
  104. package/esm/LinearGenomeView/rExport/exportLinearView.js +117 -0
  105. package/esm/LinearGenomeView/rExport/rScript.d.ts +110 -0
  106. package/esm/LinearGenomeView/rExport/rScript.js +524 -0
  107. package/esm/LinearGenomeView/sharedScaleContainer.d.ts +1 -1
  108. package/esm/LinearGenomeView/sharedScaleContainer.js +2 -12
  109. package/esm/LinearGenomeView/showFiles.d.ts +2 -0
  110. package/esm/LinearGenomeView/showFiles.js +19 -0
  111. package/esm/LinearGenomeView/showRegionsWithUndo.d.ts +1 -1
  112. package/esm/LinearGenomeView/showRegionsWithUndo.js +13 -5
  113. package/esm/LinearGenomeView/stickyChrome.d.ts +5 -9
  114. package/esm/LinearGenomeView/stickyChrome.js +5 -9
  115. package/esm/LinearGenomeView/svgcomponents/SVGGridlines.js +4 -4
  116. package/esm/LinearGenomeView/svgcomponents/SVGHeader.d.ts +4 -1
  117. package/esm/LinearGenomeView/svgcomponents/SVGHeader.js +8 -21
  118. package/esm/LinearGenomeView/svgcomponents/SVGHighlights.d.ts +3 -1
  119. package/esm/LinearGenomeView/svgcomponents/SVGHighlights.js +9 -9
  120. package/esm/LinearGenomeView/svgcomponents/SVGHighlightsOverlay.d.ts +3 -1
  121. package/esm/LinearGenomeView/svgcomponents/SVGHighlightsOverlay.js +5 -5
  122. package/esm/LinearGenomeView/svgcomponents/SVGLinearGenomeView.js +13 -18
  123. package/esm/LinearGenomeView/svgcomponents/SVGRegionSeparators.js +2 -5
  124. package/esm/LinearGenomeView/svgcomponents/SVGRowHeader.js +5 -6
  125. package/esm/LinearGenomeView/svgcomponents/SVGRuler.js +9 -10
  126. package/esm/LinearGenomeView/svgcomponents/SVGScalebar.js +3 -3
  127. package/esm/LinearGenomeView/svgcomponents/SVGStackedRow.d.ts +26 -0
  128. package/esm/LinearGenomeView/svgcomponents/SVGStackedRow.js +12 -0
  129. package/esm/LinearGenomeView/svgcomponents/SVGTrackLabel.js +21 -13
  130. package/esm/LinearGenomeView/svgcomponents/SVGTracks.d.ts +4 -5
  131. package/esm/LinearGenomeView/svgcomponents/SVGTracks.js +7 -6
  132. package/esm/LinearGenomeView/svgcomponents/SVGView.d.ts +2 -3
  133. package/esm/LinearGenomeView/svgcomponents/SVGView.js +17 -3
  134. package/esm/LinearGenomeView/svgcomponents/renderViewTracks.d.ts +24 -20
  135. package/esm/LinearGenomeView/svgcomponents/renderViewTracks.js +42 -29
  136. package/esm/LinearGenomeView/svgcomponents/useViewSvgFigure.js +74 -77
  137. package/esm/LinearGenomeView/svgcomponents/util.d.ts +28 -12
  138. package/esm/LinearGenomeView/svgcomponents/util.js +41 -29
  139. package/esm/LinearGenomeView/types.d.ts +13 -10
  140. package/esm/LinearGenomeView/types.js +0 -1
  141. package/esm/LinearGenomeView/util.d.ts +103 -46
  142. package/esm/LinearGenomeView/util.js +222 -170
  143. package/esm/MultiLevelRubberband/MultiLevelRubberband.js +9 -6
  144. package/esm/MultiLevelRubberband/index.d.ts +2 -0
  145. package/esm/MultiLevelRubberband/index.js +2 -0
  146. package/esm/MultiLevelRubberband/menuItems.d.ts +34 -0
  147. package/esm/MultiLevelRubberband/menuItems.js +52 -0
  148. package/esm/MultiLevelRubberband/rowLabel.d.ts +22 -0
  149. package/esm/MultiLevelRubberband/rowLabel.js +27 -0
  150. package/esm/MultiLevelRubberband/types.d.ts +1 -0
  151. package/esm/MultiLevelRubberband/useRangeSelect.d.ts +2 -1
  152. package/esm/MultiLevelRubberband/useRangeSelect.js +45 -59
  153. package/esm/TrackModifiers/index.d.ts +83 -0
  154. package/esm/TrackModifiers/index.js +231 -0
  155. package/esm/displayKitTests/perRegionTestEnv.d.ts +244 -68
  156. package/esm/displayKitTests/perRegionTestEnv.js +30 -26
  157. package/esm/index.d.ts +21 -99
  158. package/esm/index.js +17 -38
  159. package/esm/searchUtils.d.ts +26 -10
  160. package/esm/searchUtils.js +137 -137
  161. package/esm/shared/RubberbandSpan.d.ts +3 -2
  162. package/esm/shared/RubberbandSpan.js +6 -3
  163. package/esm/shared/coordLabels.d.ts +11 -4
  164. package/esm/shared/coordLabels.js +20 -5
  165. package/esm/shared/useWindowDrag.d.ts +18 -0
  166. package/esm/shared/useWindowDrag.js +47 -0
  167. package/package.json +12 -11
  168. package/esm/FeatureTrack/configSchema.d.ts +0 -124
  169. package/esm/FeatureTrack/configSchema.js +0 -54
  170. package/esm/FeatureTrack/index.d.ts +0 -2
  171. package/esm/FeatureTrack/index.js +0 -13
  172. package/esm/LinearGenomeView/initKeys.d.ts +0 -12
  173. package/esm/LinearGenomeView/initKeys.js +0 -68
  174. package/esm/MultiLevelRubberband/VerticalGuide.d.ts +0 -6
  175. package/esm/MultiLevelRubberband/VerticalGuide.js +0 -21
  176. package/esm/lazyPluginExports.d.ts +0 -23
  177. package/esm/lazyPluginExports.js +0 -36
@@ -1,4 +1,5 @@
1
- import type { BpOffset, ExportSvgOptions, HighlightType, InitState, NavLocation, VolatileGuide } from './types.ts';
1
+ import type { BpOffset, ExportSvgOptions, HighlightInput, HighlightType, InitState, NavLocation, ViewTrackLabelMode, VolatileGuide } from './types.ts';
2
+ import type { RegionEdit } from './util.ts';
2
3
  import type PluginManager from '@jbrowse/core/PluginManager';
3
4
  import type BaseResult from '@jbrowse/core/TextSearch/BaseResults';
4
5
  import type { MenuItem } from '@jbrowse/core/ui';
@@ -8,17 +9,48 @@ import type { BlockSet, ContentBlock } from '@jbrowse/core/util/blockTypes';
8
9
  import type { Region } from '@jbrowse/core/util/types';
9
10
  import type { ViewStatus } from '@jbrowse/core/util/viewStatus';
10
11
  import type { LaunchInput } from '@jbrowse/core/util/withLaunchInput';
12
+ import type { LinearDisplayModel } from '@jbrowse/display-kit/types';
11
13
  import type { Instance } from '@jbrowse/mobx-state-tree';
12
- /** One span of the row that is not track data — see `paddingSpans`. */
13
- export interface PaddingSpan {
14
- key: string;
15
- x: number;
16
- width: number;
17
- kind: 'seam' | 'elided' | 'boundary';
14
+ /** One place a name search points at, as a picker lists it. */
15
+ export interface SearchPickerRow {
16
+ id: string;
17
+ label: string;
18
+ /** the canonical location string, or the hit's own when the assembly is not loaded */
19
+ location: string;
20
+ /** the name of the track the hit's index came from, or '' when the session has none */
21
+ trackName: string;
22
+ }
23
+ /**
24
+ * A name search's hits as a host lists them: what `view.search` returns, and
25
+ * what the picker holds.
26
+ */
27
+ export interface SearchHits {
28
+ query: string;
29
+ assemblyName: string;
30
+ /** one row per hit, hits in a track the view already shows first */
31
+ rows: SearchPickerRow[];
32
+ /** lands on the row's place and reports a failure */
33
+ pick: (id: string) => Promise<unknown>;
34
+ }
35
+ /**
36
+ * The hits of a name search that point at more than one place, waiting for the
37
+ * user to choose; its `pick` also closes the picker. A host draws them however
38
+ * it likes: the Material view shows a dialog, and `SearchPicker` in
39
+ * `@jbrowse/display-ui/embed` a plain list.
40
+ */
41
+ export type SearchPickerState = SearchHits;
42
+ export type { PaddingSpan } from './util.ts';
43
+ export interface HighlightRegion {
44
+ assemblyName?: string;
45
+ refName: string;
46
+ start: number;
47
+ end: number;
18
48
  }
19
49
  /**
20
50
  * #stateModel LinearGenomeView
21
51
  * #category view
52
+ * Stacks tracks under a horizontal axis of one or more genomic regions laid
53
+ * end to end, which the user scrolls, zooms and searches.
22
54
  *
23
55
  * #example
24
56
  * A `LinearGenomeView` is what you hand-author under `defaultSession.views`, and
@@ -30,7 +62,7 @@ export interface PaddingSpan {
30
62
  * views: [
31
63
  * {
32
64
  * type: 'LinearGenomeView',
33
- * colorByCDS: true,
65
+ * colorByFrame: true,
34
66
  * assembly: 'hg38',
35
67
  * loc: 'chr1:1,000,000-1,100,000',
36
68
  * tracks: ['genes', 'alignments'],
@@ -40,9 +72,8 @@ export interface PaddingSpan {
40
72
  * ```
41
73
  * `assembly`, `loc`, `tracks`, `tracklist`, `nav` and `highlight` need
42
74
  * on-attach resolution and are captured into the `launch` property below;
43
- * `colorByCDS`, `showAminoAcids`, `showCenterLine`, `trackLabels` and
44
- * `showHighlightChips` are plain view props MST restores natively. Both are
45
- * written the same way.
75
+ * `colorByFrame`, `showAminoAcids`, `showCenterLine` and `trackLabels` are plain
76
+ * view props MST restores natively. Both are written the same way.
46
77
  * At runtime the same model is driven imperatively — every property and action
47
78
  * below is reachable on `viewState.session.views[0]`:
48
79
  * ```js
@@ -52,31 +83,33 @@ export interface PaddingSpan {
52
83
  * view.zoomTo(view.bpPerPx * 2) // zoom out 2x
53
84
  * ```
54
85
  */
55
- export declare function stateModelFactory(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<{
86
+ export declare function stateModelFactory(pluginManager: PluginManager): import("@jbrowse/mobx-state-tree").IModelType<Omit<{
56
87
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
57
88
  displayName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
58
89
  minimized: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
59
- }, "highlight" | "showHighlightChips"> & {
60
- highlight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<HighlightType, HighlightType, HighlightType>>, [undefined]>;
61
- showHighlightChips: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
62
- }, "colorByCDS" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "labelsVisible" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showGridlines" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
90
+ }, "axis" | "colorByFrame" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
63
91
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
64
92
  type: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
65
93
  windowStartBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
66
94
  windowWidthBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
67
95
  legacyBpPerPx: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
68
96
  displayedRegions: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<Region[], Region[], Region[]>, [undefined]>;
69
- tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IAnyType>;
97
+ tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>;
70
98
  hideHeader: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
71
99
  hideHeaderOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
72
100
  hideNoTracksActive: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
73
101
  trackSelectorType: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
74
102
  showCenterLine: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
75
103
  showCytobands: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
76
- trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
77
- showGridlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
78
- labelsVisible: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
79
- colorByCDS: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
104
+ trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"" | "hidden" | "offset" | "overlapping">, [undefined]>;
105
+ axis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
106
+ readonly grid: {
107
+ type: "boolean";
108
+ } & {
109
+ defaultValue: boolean;
110
+ };
111
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>, [undefined]>;
112
+ colorByFrame: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
80
113
  showAminoAcids: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
81
114
  showTrackOutlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
82
115
  scalebarOnly: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -85,50 +118,55 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
85
118
  width: number;
86
119
  bodyMounted: boolean;
87
120
  } & {
121
+ readonly rendersDisplays: boolean;
88
122
  readonly effectiveBodyMounted: boolean;
89
123
  menuItems(): MenuItem[];
90
124
  readonly ownTracks: import("@jbrowse/core/util").AbstractTrackModel[];
91
- readonly allViews: import("@jbrowse/core/util").AbstractViewModel[];
92
- } & {
93
- readonly allTracks: import("@jbrowse/core/util").AbstractTrackModel[];
125
+ readonly ownViews: import("@jbrowse/core/util").AbstractViewModel[];
94
126
  } & {
95
127
  setDisplayName(name: string): void;
96
128
  setWidth(newWidth: number): void;
97
129
  setBodyMounted(flag: boolean): void;
98
130
  setMinimized(flag: boolean): void;
99
- } & {
100
- addToHighlights(highlight: HighlightType): void;
101
- setHighlight(highlight?: HighlightType[]): void;
102
- removeHighlight(highlight: HighlightType): void;
103
- updateHighlight(old: HighlightType, updates: Partial<HighlightType>): void;
104
- setShowHighlightChips(arg: boolean): void;
105
- } & {
106
- afterAttach(): void;
107
131
  } & {
108
132
  /**
109
133
  * #volatile
134
+ * Height of each track's in-flow label band, measured by
135
+ * TrackContainer as the rendering container's offset inside its Paper.
136
+ * Absent (0) while the label is hidden, overlapping, or not yet
137
+ * measured. Observable, so the offset and height getters re-derive
138
+ * when a band changes.
110
139
  */
111
- volatileWidth: number | undefined;
140
+ trackLabelBands: import("mobx").ObservableMap<string, number>;
112
141
  /**
113
142
  * #volatile
143
+ * How much taller the view's box is than the scroll port it sits in,
144
+ * in px, negative when it is shorter. Measured by the view component
145
+ * for a top-level view; undefined until then, and for a nested one.
114
146
  */
115
- minimumBlockWidth: number;
147
+ scrollPortExcess: number | undefined;
148
+ /**
149
+ * #volatile
150
+ */
151
+ volatileWidth: number | undefined;
116
152
  /**
117
153
  * #volatile
118
154
  */
119
155
  draggingTrackId: undefined | string;
120
156
  /**
121
157
  * #volatile
158
+ * Set by a search whose hits name more than one place, until the user
159
+ * picks one or closes it.
122
160
  */
123
- lastTrackDragY: undefined | number;
161
+ searchPicker: SearchPickerState | undefined;
124
162
  /**
125
163
  * #volatile
126
164
  */
127
- volatileError: unknown;
165
+ lastTrackDragY: undefined | number;
128
166
  /**
129
167
  * #volatile
130
168
  */
131
- trackRefs: Record<string, HTMLDivElement>;
169
+ volatileError: unknown;
132
170
  /**
133
171
  * #volatile
134
172
  */
@@ -143,26 +181,34 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
143
181
  coarseBpPerPx: number;
144
182
  /**
145
183
  * #volatile
184
+ * the scroll offset the coarse blocks were laid out at, in px at
185
+ * `coarseBpPerPx`: the settled viewport's left edge, which the first
186
+ * coarse block is not while the view is scrolled before the first region
146
187
  */
147
- leftOffset: undefined | BpOffset;
188
+ coarseOffsetPx: number;
148
189
  /**
149
190
  * #volatile
150
191
  */
151
- rightOffset: undefined | BpOffset;
192
+ leftOffset: undefined | BpOffset;
152
193
  /**
153
194
  * #volatile
154
195
  */
155
- isScalebarRefNameMenuOpen: boolean;
196
+ rightOffset: undefined | BpOffset;
156
197
  /**
157
198
  * #volatile
158
199
  */
159
- scalebarRefNameClickPending: boolean;
200
+ isScalebarRefNameMenuOpen: boolean;
160
201
  /**
161
202
  * #volatile
162
203
  * temporary vertical guides that can be set by displays (e.g., LD display hover)
163
204
  */
164
205
  volatileGuides: VolatileGuide[];
165
206
  } & {
207
+ /**
208
+ * #getter
209
+ * `axis.grid`: whether the ruler's ticks run down through the tracks.
210
+ */
211
+ readonly axisGrid: boolean;
166
212
  /**
167
213
  * #getter
168
214
  * the launch state that still has something to apply — the gate every
@@ -189,6 +235,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
189
235
  * corresponds roughly to the horizontal scroll of the LGV
190
236
  */
191
237
  readonly offsetPx: number;
238
+ /**
239
+ * #getter
240
+ * a displayed region narrower than this many pixels draws as an elided
241
+ * block
242
+ */
243
+ readonly minimumBlockWidth: number;
192
244
  /**
193
245
  * #getter
194
246
  * scroll-to-zoom is a global, personal preference resolved from the
@@ -198,17 +250,17 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
198
250
  /**
199
251
  * #getter
200
252
  */
201
- readonly pinnedTracks: any[];
253
+ readonly pinnedTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
202
254
  /**
203
255
  * #getter
204
256
  */
205
- readonly unpinnedTracks: any[];
257
+ readonly unpinnedTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
206
258
  /**
207
259
  * #getter
208
260
  * the effective track labels setting, resolving the stored `trackLabels`
209
261
  * against the LinearGenomeViewPlugin config default
210
262
  */
211
- readonly effectiveTrackLabels: any;
263
+ readonly effectiveTrackLabels: ViewTrackLabelMode;
212
264
  /**
213
265
  * #getter
214
266
  */
@@ -226,6 +278,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
226
278
  * #getter
227
279
  */
228
280
  readonly assemblyDisplayNames: string[];
281
+ /**
282
+ * #getter
283
+ * the session's highlights on this view's assemblies
284
+ */
285
+ readonly highlights: HighlightType[];
229
286
  /**
230
287
  * #getter
231
288
  * checking if lgv is a 'top-level' view is used for toggling pin track
@@ -241,8 +298,19 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
241
298
  } & {
242
299
  /**
243
300
  * #getter
244
- * Assembly-name prefix for the scalebar refName labels, or undefined for
245
- * none. A container view (e.g. LinearSyntenyView) opts its sub-views in by
301
+ * The census entry for this view: the tracks it holds itself. Declared
302
+ * rather than derived — see `BaseViewModel.ownTracks`.
303
+ */
304
+ readonly ownTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
305
+ /**
306
+ * #getter
307
+ * See `BaseViewModel.rendersDisplays`.
308
+ */
309
+ readonly rendersDisplays: boolean;
310
+ /**
311
+ * #getter
312
+ * Assembly name captioning the scalebar ahead of its refName labels, or
313
+ * undefined for none. A container view (e.g. LinearSyntenyView) opts its sub-views in by
246
314
  * exposing showAssemblyNameInSubviewScalebar; duck-typed rather than
247
315
  * matching a concrete view type so no upward plugin dependency is needed
248
316
  * and any container can opt in. A wrong nesting depth simply yields no
@@ -270,21 +338,63 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
270
338
  * and error checks resolve it directly through here.
271
339
  */
272
340
  readonly initAssembly: (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
273
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
341
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
342
+ readonly aliases: {
343
+ type: "stringArray";
344
+ } & {
345
+ defaultValue: unknown;
346
+ };
347
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
348
+ readonly refNameColors: {
349
+ type: "stringArray";
350
+ } & {
351
+ defaultValue: unknown;
352
+ };
353
+ readonly geneticCodes: {
354
+ type: "frozen";
355
+ } & {
356
+ defaultValue: unknown;
357
+ };
358
+ readonly circularRefNames: {
359
+ type: "stringArray";
360
+ } & {
361
+ defaultValue: unknown;
362
+ };
363
+ readonly geneticCodesLocation: {
364
+ type: "maybeFileLocation";
365
+ };
366
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
367
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
368
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
369
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
370
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
371
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
372
+ readonly displayName: {
373
+ type: "string";
374
+ } & {
375
+ defaultValue: string;
376
+ };
377
+ name: {
378
+ type: "string";
379
+ } & {
380
+ defaultValue: string;
381
+ };
382
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
274
383
  }> & {
275
384
  error: unknown;
276
385
  loadingP: Promise<void> | undefined;
277
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
278
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
279
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
386
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
387
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
388
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
280
389
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
281
390
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
282
391
  loadedGeneticCodes: Record<string, number> | undefined;
283
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
392
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
284
393
  statusMessage: string | undefined;
285
394
  statusProgress: number | undefined;
286
395
  statusSource: string | undefined;
287
396
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
397
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
288
398
  } & {
289
399
  getConf(arg: string): any;
290
400
  } & {
@@ -298,8 +408,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
298
408
  } & {
299
409
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
300
410
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
411
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
301
412
  } & {
302
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
413
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
303
414
  regions: import("@jbrowse/core/util").Region[];
304
415
  cytobands: import("@jbrowse/core/util").Feature[];
305
416
  geneticCodes: Record<string, number>;
@@ -313,7 +424,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
313
424
  afterAttach(): void;
314
425
  } & {
315
426
  readonly initialized: boolean;
316
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
317
427
  readonly allRefNames: string[] | undefined;
318
428
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
319
429
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -331,27 +441,72 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
331
441
  getCanonicalRefName2(refName: string): string;
332
442
  isValidRefName(refName: string): boolean;
333
443
  } & {
444
+ isCircularRefName(refName: string): boolean;
445
+ getRefNamePosition(refName: string): number | undefined;
334
446
  getAliasesForRefName(refName: string): string[];
335
447
  getRefNameMapForAdapter(adapterConf: {
336
448
  [x: string]: unknown;
337
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
449
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
338
450
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
451
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
339
452
  } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
340
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
453
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
454
+ readonly aliases: {
455
+ type: "stringArray";
456
+ } & {
457
+ defaultValue: unknown;
458
+ };
459
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
460
+ readonly refNameColors: {
461
+ type: "stringArray";
462
+ } & {
463
+ defaultValue: unknown;
464
+ };
465
+ readonly geneticCodes: {
466
+ type: "frozen";
467
+ } & {
468
+ defaultValue: unknown;
469
+ };
470
+ readonly circularRefNames: {
471
+ type: "stringArray";
472
+ } & {
473
+ defaultValue: unknown;
474
+ };
475
+ readonly geneticCodesLocation: {
476
+ type: "maybeFileLocation";
477
+ };
478
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
479
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
480
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
481
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
482
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
483
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
484
+ readonly displayName: {
485
+ type: "string";
486
+ } & {
487
+ defaultValue: string;
488
+ };
489
+ name: {
490
+ type: "string";
491
+ } & {
492
+ defaultValue: string;
493
+ };
494
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
341
495
  }, {
342
496
  error: unknown;
343
497
  loadingP: Promise<void> | undefined;
344
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
345
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
346
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
498
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
499
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
500
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
347
501
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
348
502
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
349
503
  loadedGeneticCodes: Record<string, number> | undefined;
350
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
504
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
351
505
  statusMessage: string | undefined;
352
506
  statusProgress: number | undefined;
353
507
  statusSource: string | undefined;
354
508
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
509
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
355
510
  } & {
356
511
  getConf(arg: string): any;
357
512
  } & {
@@ -365,8 +520,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
365
520
  } & {
366
521
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
367
522
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
523
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
368
524
  } & {
369
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
525
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
370
526
  regions: import("@jbrowse/core/util").Region[];
371
527
  cytobands: import("@jbrowse/core/util").Feature[];
372
528
  geneticCodes: Record<string, number>;
@@ -380,7 +536,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
380
536
  afterAttach(): void;
381
537
  } & {
382
538
  readonly initialized: boolean;
383
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
384
539
  readonly allRefNames: string[] | undefined;
385
540
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
386
541
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -398,12 +553,25 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
398
553
  getCanonicalRefName2(refName: string): string;
399
554
  isValidRefName(refName: string): boolean;
400
555
  } & {
556
+ isCircularRefName(refName: string): boolean;
557
+ getRefNamePosition(refName: string): number | undefined;
401
558
  getAliasesForRefName(refName: string): string[];
402
559
  getRefNameMapForAdapter(adapterConf: {
403
560
  [x: string]: unknown;
404
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
561
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
405
562
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
563
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
406
564
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
565
+ /**
566
+ * #getter
567
+ * The assembly a pending launch is for: the one it names, else the one
568
+ * the view already shows. A re-launch of a materialized view (a
569
+ * `jb.setSession` document writing `loc` beside the built state) need
570
+ * not restate it; without the default the readiness gate waited on
571
+ * `assemblyManager.get(undefined)` for good. Undefined on a fresh view
572
+ * whose blob names none, which `error` reports.
573
+ */
574
+ readonly launchAssemblyName: string | undefined;
407
575
  /**
408
576
  * #getter
409
577
  */
@@ -419,21 +587,63 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
419
587
  * displayed assemblies that hasn't finished loading.
420
588
  */
421
589
  readonly loadingAssembly: (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
422
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
590
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
591
+ readonly aliases: {
592
+ type: "stringArray";
593
+ } & {
594
+ defaultValue: unknown;
595
+ };
596
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
597
+ readonly refNameColors: {
598
+ type: "stringArray";
599
+ } & {
600
+ defaultValue: unknown;
601
+ };
602
+ readonly geneticCodes: {
603
+ type: "frozen";
604
+ } & {
605
+ defaultValue: unknown;
606
+ };
607
+ readonly circularRefNames: {
608
+ type: "stringArray";
609
+ } & {
610
+ defaultValue: unknown;
611
+ };
612
+ readonly geneticCodesLocation: {
613
+ type: "maybeFileLocation";
614
+ };
615
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
616
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
617
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
618
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
619
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
620
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
621
+ readonly displayName: {
622
+ type: "string";
623
+ } & {
624
+ defaultValue: string;
625
+ };
626
+ name: {
627
+ type: "string";
628
+ } & {
629
+ defaultValue: string;
630
+ };
631
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
423
632
  }> & {
424
633
  error: unknown;
425
634
  loadingP: Promise<void> | undefined;
426
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
427
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
428
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
635
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
636
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
637
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
429
638
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
430
639
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
431
640
  loadedGeneticCodes: Record<string, number> | undefined;
432
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
641
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
433
642
  statusMessage: string | undefined;
434
643
  statusProgress: number | undefined;
435
644
  statusSource: string | undefined;
436
645
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
646
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
437
647
  } & {
438
648
  getConf(arg: string): any;
439
649
  } & {
@@ -447,8 +657,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
447
657
  } & {
448
658
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
449
659
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
660
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
450
661
  } & {
451
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
662
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
452
663
  regions: import("@jbrowse/core/util").Region[];
453
664
  cytobands: import("@jbrowse/core/util").Feature[];
454
665
  geneticCodes: Record<string, number>;
@@ -462,7 +673,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
462
673
  afterAttach(): void;
463
674
  } & {
464
675
  readonly initialized: boolean;
465
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
466
676
  readonly allRefNames: string[] | undefined;
467
677
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
468
678
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -480,27 +690,72 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
480
690
  getCanonicalRefName2(refName: string): string;
481
691
  isValidRefName(refName: string): boolean;
482
692
  } & {
693
+ isCircularRefName(refName: string): boolean;
694
+ getRefNamePosition(refName: string): number | undefined;
483
695
  getAliasesForRefName(refName: string): string[];
484
696
  getRefNameMapForAdapter(adapterConf: {
485
697
  [x: string]: unknown;
486
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
698
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
487
699
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
700
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
488
701
  } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
489
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
702
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
703
+ readonly aliases: {
704
+ type: "stringArray";
705
+ } & {
706
+ defaultValue: unknown;
707
+ };
708
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
709
+ readonly refNameColors: {
710
+ type: "stringArray";
711
+ } & {
712
+ defaultValue: unknown;
713
+ };
714
+ readonly geneticCodes: {
715
+ type: "frozen";
716
+ } & {
717
+ defaultValue: unknown;
718
+ };
719
+ readonly circularRefNames: {
720
+ type: "stringArray";
721
+ } & {
722
+ defaultValue: unknown;
723
+ };
724
+ readonly geneticCodesLocation: {
725
+ type: "maybeFileLocation";
726
+ };
727
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
728
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
729
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
730
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
731
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
732
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
733
+ readonly displayName: {
734
+ type: "string";
735
+ } & {
736
+ defaultValue: string;
737
+ };
738
+ name: {
739
+ type: "string";
740
+ } & {
741
+ defaultValue: string;
742
+ };
743
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
490
744
  }, {
491
745
  error: unknown;
492
746
  loadingP: Promise<void> | undefined;
493
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
494
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
495
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
747
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
748
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
749
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
496
750
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
497
751
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
498
752
  loadedGeneticCodes: Record<string, number> | undefined;
499
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
753
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
500
754
  statusMessage: string | undefined;
501
755
  statusProgress: number | undefined;
502
756
  statusSource: string | undefined;
503
757
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
758
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
504
759
  } & {
505
760
  getConf(arg: string): any;
506
761
  } & {
@@ -514,8 +769,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
514
769
  } & {
515
770
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
516
771
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
772
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
517
773
  } & {
518
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
774
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
519
775
  regions: import("@jbrowse/core/util").Region[];
520
776
  cytobands: import("@jbrowse/core/util").Feature[];
521
777
  geneticCodes: Record<string, number>;
@@ -529,7 +785,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
529
785
  afterAttach(): void;
530
786
  } & {
531
787
  readonly initialized: boolean;
532
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
533
788
  readonly allRefNames: string[] | undefined;
534
789
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
535
790
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -547,34 +802,21 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
547
802
  getCanonicalRefName2(refName: string): string;
548
803
  isValidRefName(refName: string): boolean;
549
804
  } & {
805
+ isCircularRefName(refName: string): boolean;
806
+ getRefNamePosition(refName: string): number | undefined;
550
807
  getAliasesForRefName(refName: string): string[];
551
808
  getRefNameMapForAdapter(adapterConf: {
552
809
  [x: string]: unknown;
553
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
810
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
554
811
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
812
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
555
813
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
556
814
  /**
557
815
  * #getter
558
- * What the spinner says. The assembly reports which of its files it is
559
- * downloading, so this is "Downloading chromosome aliases" rather than a bare
560
- * "Loading" for the part of startup that actually takes time. Falls back
561
- * once the assembly is loaded and the remaining wait is the init autorun's
562
- * own navigation, which is local.
563
- */
564
- readonly loadingMessage: string | undefined;
565
- /**
566
- * #getter
567
- * Determinate fraction for the spinner's bar, when the assembly load
568
- * reports one (a whole-file download with a Content-Length)
816
+ * The loading screen's text while `showLoading`, taken from the
817
+ * assembly being waited on; undefined otherwise.
569
818
  */
570
- readonly loadingProgress: number | undefined;
571
- /**
572
- * #getter
573
- * The URL the assembly load is currently fetching, when the phase named
574
- * one. Only the stalled-load notice reads it — see
575
- * {@link ViewLoadingScreen}.
576
- */
577
- readonly loadingSource: string | undefined;
819
+ readonly loading: import("@jbrowse/core/util/viewStatus").ViewLoading | undefined;
578
820
  /**
579
821
  * #getter
580
822
  */
@@ -614,12 +856,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
614
856
  * `width`/`staticBlocks` throw by design before the view has been
615
857
  * measured and navigated.
616
858
  *
617
- * **Not `initialized`**, which is the trap this getter exists to close.
859
+ * Use this getter rather than `initialized`.
618
860
  * That one answers "have the assembly's regions loaded", which is only
619
861
  * the first of two async steps: navigating then populates
620
862
  * `displayedRegions`, and in the window between the two `initialized` is
621
863
  * already true while there is still nothing on screen. `showLoading`
622
- * folds in `awaitingInitNavigation`, the getter that exists for exactly
864
+ * folds in `awaitingInitNavigation`, the getter for exactly
623
865
  * that gap.
624
866
  *
625
867
  * `error` is the third outcome and is why this is not a bare
@@ -657,42 +899,31 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
657
899
  * #getter
658
900
  * A track's full cost beyond its display height.
659
901
  *
660
- * The track *label* is not counted, and cannot be: an offset label is an
661
- * in-flow box whose height is whatever the theme renders a Paper of icon
662
- * buttons at — 31.140625px on the stock theme, and not a number this file
663
- * can derive. So these getters are exact while labels are hidden or
664
- * overlapping, and short by one label box per labelled track otherwise.
665
- * Anything needing the offset to the pixel with labels showing measures
666
- * the DOM; `BreakpointSplitViewOverlay` does, and falls back to this
667
- * arithmetic only for a track with no mounted div.
902
+ * The track *label* is not counted here: an offset label is an in-flow
903
+ * box whose height is whatever the theme renders a Paper of icon buttons
904
+ * at, so it is measured into `trackLabelBands` per track and added by
905
+ * `trackLabelBand` rather than derived.
668
906
  */
669
907
  readonly trackChromeHeight: number;
670
908
  /**
671
909
  * #getter
672
910
  */
673
911
  readonly headerHeight: number;
674
- /**
675
- * #getter
676
- * Where the scalebar pins when the view's chrome is sticky: everything
677
- * stacked above it, which is the view's own title bar plus this view's
678
- * header. Expressed from `headerHeight` rather than re-summing its
679
- * constants — the two are the same box, and a second spelling of the sum
680
- * is free to drift from the first while both typecheck.
681
- */
682
- readonly rubberbandTop: number;
683
- /**
684
- * #getter
685
- */
686
- readonly pinnedTracksTop: number;
687
912
  /**
688
913
  * #method
689
- * rendered height of a single track, collapsing to a fixed height when
914
+ * rendered height of a single track, using a fixed height when
690
915
  * minimized. Shared by trackHeights and getTrackYOffset so the two can't
691
916
  * disagree. Reads `activeDisplay` — the display TrackContainer actually
692
917
  * mounts — rather than re-picking `displays[0]`, so the view's height math
693
918
  * can't diverge from what is on screen.
694
919
  */
695
- trackHeight(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/mobx-state-tree").IAnyType> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IAnyType>>)[number]): any;
920
+ trackHeight(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>)[number]): number;
921
+ /**
922
+ * #method
923
+ * the measured in-flow label band above a track's rendering container,
924
+ * 0 until TrackContainer has measured one or when no label is in flow
925
+ */
926
+ trackLabelBand(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>)[number]): number;
696
927
  /**
697
928
  * #getter
698
929
  */
@@ -705,6 +936,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
705
936
  * #getter
706
937
  */
707
938
  readonly height: number;
939
+ /**
940
+ * #getter
941
+ * The display height of each track a whole-stack resize moves, by track
942
+ * instance id: every shown track that is not minimized.
943
+ */
944
+ readonly resizableTrackHeights: Map<string, number>;
708
945
  /**
709
946
  * #method
710
947
  * Y offset (in pixels, from the top of the view) where a track's
@@ -712,19 +949,24 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
712
949
  * first, then unpinned), from the same constants TrackContainer lays its
713
950
  * Paper out with. Returns `undefined` if the track is not present.
714
951
  *
715
- * Exact while track labels are hidden or overlapping. With an offset
716
- * label the answer is short by one label box per labelled track above
717
- * this one — see `trackChromeHeight` for why that box is not derivable
718
- * here.
952
+ * Includes each track's measured label band, this track's own included,
953
+ * since an in-flow label sits above the rendering container inside the
954
+ * same Paper. Exact once TrackContainer has measured; before that it is
955
+ * short by the unmeasured bands.
719
956
  */
720
957
  getTrackYOffset(trackId: string): number | undefined;
958
+ /**
959
+ * #getter
960
+ * `getTrackYOffset` for every shown track, by trackId, from one walk
961
+ */
962
+ readonly trackYOffsets: Map<string, number>;
721
963
  /**
722
964
  * #method
723
965
  * the pinned or unpinned sibling list a track renders within; move
724
966
  * up/down/top/bottom reorder inside this section rather than the full
725
967
  * `tracks` array, since the two sections lay out independently
726
968
  */
727
- trackSection(id: string): any[];
969
+ trackSection(id: string): (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
728
970
  /**
729
971
  * #getter
730
972
  */
@@ -735,16 +977,16 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
735
977
  readonly fitBpPerPx: number;
736
978
  /**
737
979
  * #getter
738
- * The zoom-out limit. This view's own fit, except while a container holds
739
- * it on a shared scale coarser than that — a small genome next to a large
740
- * one, drawn short so the two compare by length.
980
+ * The zoom-out limit. Equal to the fit for this view's regions, except
981
+ * while a container holds it on a coarser shared scale, such as a small
982
+ * genome next to a large one, drawn short so the two compare by length.
741
983
  *
742
- * Raising the LIMIT is what makes such a scale survive: written past the
743
- * limit instead, it is undone by the first thing that clamps — a wheel
744
- * tick, a rubberband, a `setDisplayedRegions` — which is how the dotplot's
745
- * locked aspect ratio once turned "zoom out" into a zoom in
746
- * (`axisMaxBpPerPx`). Here every route to a zoom clamps against the same
747
- * ceiling, so full zoom-out LANDS on the shared scale.
984
+ * The shared scale raises the limit. A bpPerPx written past the limit
985
+ * would be undone by the first operation that clamps (a wheel tick, a
986
+ * rubberband, a `setDisplayedRegions`), as with the dotplot's locked
987
+ * aspect ratio turning "zoom out" into a zoom in (`axisMaxBpPerPx`).
988
+ * Every zoom clamps against the same ceiling, so full zoom-out stops at
989
+ * the shared scale.
748
990
  */
749
991
  readonly maxBpPerPx: number;
750
992
  /**
@@ -753,8 +995,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
753
995
  * or 0 for a standalone view, a mode that is off, and a stack that cannot
754
996
  * answer yet.
755
997
  *
756
- * Pulled rather than pushed down into a volatile: the number is a
757
- * function of every row's fit, all of which move on a resize, and a
998
+ * A getter rather than a volatile the container writes: the number is a
999
+ * function of every row's fit, all of which change on a resize, and a
758
1000
  * stored copy would be stale by the next layout.
759
1001
  */
760
1002
  readonly sharedFitBpPerPx: number;
@@ -791,11 +1033,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
791
1033
  /**
792
1034
  * #getter
793
1035
  */
794
- readonly trackMap: Map<string, any>;
1036
+ readonly trackMap: Map<string, import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>;
795
1037
  /**
796
1038
  * #method
797
1039
  */
798
- getTrack(id: string): any;
1040
+ getTrack(id: string): (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>) | undefined;
799
1041
  /**
800
1042
  * #method
801
1043
  * displayId of the active (shown) display for a track in this view, used
@@ -803,6 +1045,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
803
1045
  * track's other displays
804
1046
  */
805
1047
  getActiveDisplayId(trackId: string): string | undefined;
1048
+ } & {
1049
+ /**
1050
+ * #action
1051
+ * Dismiss the search picker without choosing a place.
1052
+ */
1053
+ closeSearchPicker(): void;
806
1054
  } & {
807
1055
  /**
808
1056
  * #action
@@ -815,7 +1063,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
815
1063
  /**
816
1064
  * #action
817
1065
  */
818
- setColorByCDS(flag: boolean): void;
1066
+ setColorByFrame(flag: boolean): void;
819
1067
  /**
820
1068
  * #action
821
1069
  */
@@ -827,19 +1075,34 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
827
1075
  /**
828
1076
  * #action
829
1077
  */
830
- setWidth(newWidth: number): void;
1078
+ setTrackLabelBand(trackId: string, band: number): void;
831
1079
  /**
832
1080
  * #action
833
1081
  */
834
- setError(error: unknown): void;
1082
+ setScrollPortExcess(px: number | undefined): void;
835
1083
  /**
836
1084
  * #action
1085
+ * Grow or shrink every unminimized track by `distance` px in all, each
1086
+ * by its share of the height it has above the display minimum. `from` is
1087
+ * the heights to scale, by track instance id; a drag passes the heights
1088
+ * it started with, so whole-pixel rounding does not compound frame by
1089
+ * frame. Returns how far the stack moved.
837
1090
  */
838
- setIsScalebarRefNameMenuOpen(isOpen: boolean): void;
1091
+ resizeTracks(distance: number, from?: any): number;
1092
+ /**
1093
+ * #action
1094
+ * A resize keeps the window in bp, so `bpPerPx` follows the new width
1095
+ * and the view keeps framing the same sequence (ADR-070).
1096
+ */
1097
+ setWidth(newWidth: number): void;
1098
+ /**
1099
+ * #action
1100
+ */
1101
+ setError(error: unknown): void;
839
1102
  /**
840
1103
  * #action
841
1104
  */
842
- setScalebarRefNameClickPending(pending: boolean): void;
1105
+ setIsScalebarRefNameMenuOpen(isOpen: boolean): void;
843
1106
  /**
844
1107
  * #action
845
1108
  */
@@ -859,11 +1122,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
859
1122
  /**
860
1123
  * #action
861
1124
  */
862
- setShowGridlines(b: boolean): void;
863
- /**
864
- * #action
865
- */
866
- setLabelsVisible(arg: boolean): void;
1125
+ setAxisGrid(grid: boolean): void;
867
1126
  /**
868
1127
  * #action
869
1128
  * set temporary vertical guides (e.g., for LD display hover)
@@ -898,8 +1157,20 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
898
1157
  setOffsets(left?: BpOffset, right?: BpOffset): void;
899
1158
  /**
900
1159
  * #action
1160
+ * Raise the picker over search results that name more than one place.
1161
+ * @param onPick - where a picked result lands; by default it navigates
1162
+ * there and shows the track its index came from
901
1163
  */
902
- setSearchResults(searchResults: BaseResult[], searchQuery: string, assemblyName: string): void;
1164
+ setSearchResults(searchResults: BaseResult[], searchQuery: string, assemblyName: string, onPick?: (result: BaseResult) => Promise<unknown>): void;
1165
+ /**
1166
+ * #action
1167
+ * Search the view's assembly by name, for a host listing the hits
1168
+ * itself. A row's `pick` lands as the search box does: it navigates
1169
+ * there and shows the track the hit's index came from.
1170
+ */
1171
+ search(query: string, opts?: {
1172
+ signal?: AbortSignal;
1173
+ }): Promise<SearchHits>;
903
1174
  /**
904
1175
  * #action
905
1176
  */
@@ -909,33 +1180,62 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
909
1180
  */
910
1181
  hideTrack(trackId: string): boolean;
911
1182
  } & {
1183
+ /**
1184
+ * #action
1185
+ * Resize every unminimized track so the view is exactly as tall as the
1186
+ * scroll port it sits in. Does nothing until the view has measured one.
1187
+ */
1188
+ fitTracksToWindow(): void;
912
1189
  /**
913
1190
  * #action
914
1191
  * showTrack for a track whose display state model may be lazily
915
1192
  * loaded: loads it, then shows
916
1193
  */
917
1194
  launchTrack(trackId: string, initialSnapshot?: any, displayInitialSnapshot?: any, inlineConf?: Record<string, unknown>): Promise<any>;
918
- } & {
919
1195
  /**
920
1196
  * #action
1197
+ * Replace the highlights `highlights` reads, each written as the launch
1198
+ * spec's `highlight` writes one: a locstring, or an object whose
1199
+ * `assemblyName` defaults to the view's. Throws on one that names no
1200
+ * region, writing none.
1201
+ */
1202
+ setHighlights(highlights: readonly (string | HighlightInput)[]): void;
1203
+ /**
1204
+ * #action
1205
+ * Show files from the user's disk as session tracks: one per data file,
1206
+ * beside the index among them that names it, its type guessed from its
1207
+ * name. Adds nothing when one file has no known type. Resolves the new
1208
+ * tracks' ids.
1209
+ */
1210
+ showFiles(files: readonly File[]): Promise<string[]>;
1211
+ } & {
1212
+ /**
1213
+ * #method
1214
+ * The shown track a move action means: the menu passes a track model's
1215
+ * own `id`, an agent passes the `trackId` it knows the track by, and
1216
+ * both name one shown track. Answers the model id, or the argument
1217
+ * unchanged when nothing shown matches, so the move reports it.
921
1218
  */
922
- moveTrackDown(id: string): void;
1219
+ trackModelId(idOrTrackId: string): string;
1220
+ } & {
1221
+ moveTrack: (moving: string, target: string) => void;
923
1222
  /**
924
1223
  * #action
925
1224
  */
926
- moveTrackUp(id: string): void;
1225
+ moveTrackDown(idOrTrackId: string): void;
927
1226
  /**
928
1227
  * #action
929
1228
  */
930
- moveTrackToTop(id: string): void;
1229
+ moveTrackUp(idOrTrackId: string): void;
931
1230
  /**
932
1231
  * #action
933
1232
  */
934
- moveTrackToBottom(id: string): void;
1233
+ moveTrackToTop(idOrTrackId: string): void;
935
1234
  /**
936
1235
  * #action
937
1236
  */
938
- moveTrack(movingId: string, targetId: string): void;
1237
+ moveTrackToBottom(idOrTrackId: string): void;
1238
+ } & {
939
1239
  /**
940
1240
  * #action
941
1241
  */
@@ -948,7 +1248,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
948
1248
  /**
949
1249
  * #action
950
1250
  */
951
- setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden'): void;
1251
+ setTrackLabels(setting: ViewTrackLabelMode): void;
952
1252
  /**
953
1253
  * #action
954
1254
  */
@@ -961,24 +1261,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
961
1261
  * #action
962
1262
  */
963
1263
  toggleTrackSelector(): import("@jbrowse/core/util").Widget;
964
- /**
965
- * #method
966
- * Helper method for the fetchSequence.
967
- * Retrieves the corresponding regions that were selected by the
968
- * rubberband
969
- *
970
- * @param leftOffset - `object as {start, end, index, offset}`, offset = start
971
- * of user drag
972
- * @param rightOffset - `object as {start, end, index, offset}`,
973
- * offset = end of user drag
974
- * @returns array of Region[]
975
- */
976
- getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset): {
977
- assemblyName: string;
978
- refName: string;
979
- start: number;
980
- end: number;
981
- }[];
982
1264
  /**
983
1265
  * #action
984
1266
  */
@@ -987,10 +1269,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
987
1269
  * #action
988
1270
  */
989
1271
  setDraggingTrackId(idx?: string): void;
990
- /**
991
- * #action
992
- */
993
- setLastTrackDragY(y: number): void;
994
1272
  /**
995
1273
  * #action
996
1274
  * called while dragging a track over the track at `targetId`; reorders
@@ -1002,11 +1280,25 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1002
1280
  * #action
1003
1281
  */
1004
1282
  setLaunch(launch?: LaunchInput<InitState>): void;
1283
+ } & {
1005
1284
  /**
1006
1285
  * #method
1007
- * creates an svg export and save using FileSaver
1286
+ * Helper method for the fetchSequence.
1287
+ * Returns the regions the user selected with the
1288
+ * rubberband
1289
+ *
1290
+ * @param leftOffset - `object as {start, end, index, offset}`, offset = start
1291
+ * of user drag
1292
+ * @param rightOffset - `object as {start, end, index, offset}`,
1293
+ * offset = end of user drag
1294
+ * @returns array of Region[]
1008
1295
  */
1009
- exportSvg(opts?: ExportSvgOptions): Promise<void>;
1296
+ getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset): {
1297
+ assemblyName: string;
1298
+ refName: string;
1299
+ start: number;
1300
+ end: number;
1301
+ }[];
1010
1302
  } & {
1011
1303
  slide: (viewWidths: number) => void;
1012
1304
  zoom: (targetBpPerPx: number) => void;
@@ -1020,19 +1312,18 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1020
1312
  * #getter
1021
1313
  * an ideogram only reads correctly against an entire chromosome: on a
1022
1314
  * sub-region it is a meaningless slice of bands, and the centromere shows
1023
- * up as a lone half-triangle
1315
+ * up as a lone half-triangle. The chromosome also needs bands: a cytoband
1316
+ * file often lists only the main chromosomes, not chrM or the
1317
+ * unplaced scaffolds
1024
1318
  */
1025
1319
  readonly canShowCytobands: boolean;
1026
1320
  /**
1027
1321
  * #getter
1028
1322
  * the `showCytobands` setting gated by whether cytobands can be shown at
1029
- * all (whole chromosome + data present) — i.e. actually on screen
1323
+ * all (whole chromosome with bands in the cytoband file) and by the header
1324
+ * overview they draw in being on, which the SVG export follows too
1030
1325
  */
1031
1326
  readonly effectiveShowCytobands: boolean;
1032
- /**
1033
- * #getter
1034
- */
1035
- readonly anyCytobandsExist: boolean;
1036
1327
  /**
1037
1328
  * #getter
1038
1329
  * the cytoband is displayed to the right of the chromosome name, and
@@ -1049,6 +1340,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1049
1340
  * return the view menu items
1050
1341
  */
1051
1342
  menuItems(): MenuItem[];
1343
+ /**
1344
+ * #method
1345
+ * the view menu's Highlights submenu; extend this to add a row there
1346
+ */
1347
+ highlightsSubMenuItems(): MenuItem[];
1052
1348
  /**
1053
1349
  * #method
1054
1350
  * what a plugin can start from the selected region — a synteny view, a
@@ -1077,9 +1373,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1077
1373
  /**
1078
1374
  * #getter
1079
1375
  * dynamic blocks represent the exact coordinates of the currently
1080
- * visible genome regions on the screen. they are similar to static
1081
- * blocks, but static blocks can go offscreen while dynamic blocks
1082
- * represent exactly what is on screen
1376
+ * visible genome regions on the screen. Static blocks can go
1377
+ * offscreen, while dynamic blocks represent exactly what is on screen
1083
1378
  */
1084
1379
  readonly dynamicBlocks: BlockSet;
1085
1380
  /**
@@ -1111,12 +1406,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1111
1406
  * The frame exists because those three are laid out across every
1112
1407
  * displayed region rather than across the viewport — it overhangs on
1113
1408
  * both sides — so their `x` values are stable under a scroll and only
1114
- * this number moves. `scalebarRefNameLabels` is the exception and says
1115
- * so: its `transform` is already a screen x, because a sticky label's
1409
+ * this number moves. `scalebarRefNameLabels` is the exception: its `transform` is already a screen x, because a sticky label's
1116
1410
  * position is a function of the scroll rather than of block geometry.
1117
1411
  *
1118
- * **The subtraction must happen here, in float64, and that is the
1119
- * load-bearing part.** `offsetPx` is a whole-genome pixel coordinate —
1412
+ * **The subtraction must happen here, in float64.** `offsetPx` is a whole-genome pixel coordinate —
1120
1413
  * hg38 chr1 at base resolution is already past 1e10 — and a length that
1121
1414
  * size does not survive the trip through CSS: the transform matrix is
1122
1415
  * float32 by the time it reaches the compositor, where consecutive
@@ -1128,13 +1421,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1128
1421
  * assemblies at high zoom, which is not where anyone tests. Both
1129
1422
  * operands here are large and their difference is bounded by the
1130
1423
  * overhang (a block or two), so what reaches CSS is small and exact.
1131
- * Same rule as the GPU side, one layer up —
1424
+ * This applies the GPU side's rule one layer up; see
1132
1425
  * `agent-docs/reference/BP_PRECISION.md`.
1133
1426
  *
1134
1427
  * Published because it is the one piece of coordinate arithmetic a host
1135
1428
  * drawing its own chrome would otherwise have to know, and because
1136
- * having it written out at each call site is how the two in-tree copies
1137
- * came to disagree about rounding. Round it where the content is text
1429
+ * copies written out at each call site disagree about rounding. Round it where the content is text
1138
1430
  * (a fractional offset blurs a label); leave it alone for paths and
1139
1431
  * boxes.
1140
1432
  */
@@ -1177,11 +1469,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1177
1469
  * sticky, transform, maxWidth, paddingLeft, text}` each. One per run of
1178
1470
  * same-refName regions, plus a "sticky" one pinned to the viewport's
1179
1471
  * left edge naming the refName under it, so panning into a chromosome
1180
- * does not scroll its own name off the screen.
1472
+ * does not scroll the chromosome's name off the screen.
1181
1473
  *
1182
- * Three rules live in here that a host drawing region names will
1183
- * otherwise rediscover the hard way, and two of them are invisible until
1184
- * the data is awkward:
1474
+ * This getter applies three rules that a host drawing region names would
1475
+ * otherwise have to rediscover, and two of them are invisible until the
1476
+ * data is awkward:
1185
1477
  *
1186
1478
  * - the sticky label rides the rightmost run that has scrolled off the
1187
1479
  * left, not the region's first block — that one is gone from
@@ -1193,7 +1485,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1193
1485
  * is fitted to the whole run, and `displayedRegionIndex` /
1194
1486
  * `lastDisplayedRegionIndex` bracket what it stands for.
1195
1487
  * - a name is drawn whole or not at all, measured against the space its
1196
- * run leaves. Clipped to its own width, `chr16` reads as `chr1` —
1488
+ * run leaves. Clipped to that space, `chr16` reads as `chr1` —
1197
1489
  * a different chromosome rather than a shortened name, which is why
1198
1490
  * this is a fit test rather than an ellipsis.
1199
1491
  *
@@ -1209,10 +1501,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1209
1501
  * into that through `scalebarDisplayPrefix`) and whether it is flipped.
1210
1502
  * A ` [rev]` there is a fact about the ROW; the same marker on a
1211
1503
  * chromosome name means that one region, which only happens under mixed
1212
- * orientation. `captionSpanPx` is the width it takes, which the
1213
- * coordinate numbers stay out from under. The SVG export deliberately
1504
+ * orientation. `captionSpanPx` is the width it takes: the sticky label
1505
+ * pins to its right edge rather than the viewport's, and the coordinate
1506
+ * numbers stay out from under it. The SVG export deliberately
1214
1507
  * calls `getScalebarRefNameLabels` itself with no prefix rather than
1215
- * reading this, since it draws its own assembly name above the ruler.
1508
+ * reading this, since it draws the assembly name itself above the ruler.
1216
1509
  */
1217
1510
  readonly scalebarRefNameLabels: {
1218
1511
  labels: import("./util.ts").ScalebarRefNameLabel[];
@@ -1224,36 +1517,36 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1224
1517
  * Every span along the row that is not track data, as plain geometry in
1225
1518
  * the staticBlocks frame — the same frame as gridlineTicks and
1226
1519
  * scalebarLabels, so one `translateX(staticBlocksTranslateX)` places all
1227
- * three. Three kinds, and a host drawing its own chrome needs all of
1228
- * them:
1520
+ * three. A host that draws the row's chrome itself needs all three kinds:
1229
1521
  *
1230
1522
  * - `seam`: the 3px bar at a region's right edge. Displayed regions are
1231
- * laid out **contiguously** — calculateStaticBlocks emits boundary
1232
- * padding only before the first region and after the last — so this
1523
+ * laid out **contiguously** (calculateStaticBlocks emits boundary
1524
+ * padding only before the first region and after the last), so this
1233
1525
  * bar is the only thing separating two of them. Without it a
1234
- * two-region view reads as a one-region view scrolled somewhere
1235
- * strange. `isRightEndOfDisplayedRegion` is what marks it, and the
1236
- * right edge of the blocks currently *loaded* — which is what block
1237
- * geometry hands you — is not the same filter.
1526
+ * two-region view looks like a single region.
1527
+ * `isRightEndOfDisplayedRegion` marks it; the right edge of the
1528
+ * currently *loaded* blocks, which block geometry gives you, is a
1529
+ * different set.
1238
1530
  * - `elided`: a region too narrow to draw at this zoom. Whole-genome on
1239
- * a real assembly is mostly these — hg38 has 455 sequences and all
1240
- * but the 24 chromosomes land sub-pixel — so a host that skips them
1241
- * renders that tail as nothing at all.
1531
+ * a real assembly is mostly these (hg38 has 455 sequences, and all
1532
+ * but the 24 chromosomes are under a pixel wide), so a host that
1533
+ * skips them leaves that part of the row empty.
1242
1534
  * - `boundary`: past the start of the first region or the end of the
1243
- * last. Greying it is what makes the last region's seam read as the
1244
- * edge of a filled area rather than a rule floating in the track.
1245
- *
1246
- * Elided blocks get no seam even though they carry the flag: at the
1247
- * zoom where regions elide, one bar per region is a solid grey wall.
1248
- *
1249
- * PaddingBlocks is the in-tree consumer. The SVG export is deliberately
1250
- * NOT one: `SVGRegionSeparators` walks dynamicBlocks itself and draws
1251
- * only the seam, because `elided` and `boundary` are chrome for an
1252
- * interactive row rather than information a figure carries — striped
1253
- * grey saying "regions here are too narrow to draw" is noise in a
1254
- * static image, and at whole-genome zoom it would be most of the row.
1255
- * The seam is the one that must survive: regions lay out contiguously,
1256
- * so it is all that separates two of them.
1535
+ * last. Greying it makes the last region's seam read as the edge of a
1536
+ * filled area, where it would otherwise look like a line in the
1537
+ * middle of the track.
1538
+ *
1539
+ * Elided blocks get no seam even though they have the flag: at the
1540
+ * zoom where regions elide, one bar per region would fill the row solid
1541
+ * grey.
1542
+ *
1543
+ * PaddingBlocks is the in-tree consumer. The SVG export does not use
1544
+ * it: `SVGRegionSeparators` walks dynamicBlocks itself and draws only
1545
+ * the seam, because `elided` and `boundary` mark state for an
1546
+ * interactive row. In a static figure the striped grey would cover most
1547
+ * of the row at whole-genome zoom. The export keeps the seam because
1548
+ * regions lay out contiguously and the seam is all that separates two
1549
+ * of them.
1257
1550
  */
1258
1551
  readonly paddingSpans: readonly {
1259
1552
  key: string;
@@ -1285,8 +1578,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1285
1578
  * viewport. False both when the view holds no regions at all and when
1286
1579
  * it holds some but is scrolled entirely off them; either way there is
1287
1580
  * no visible span for the scalebar, ruler and refName labels to
1288
- * describe, which is what the SVG export's header checks before drawing
1289
- * one. Distinct from `hasDisplayedRegions`, which only asks whether the
1581
+ * describe. The SVG export checks it before drawing its header.
1582
+ * Distinct from `hasDisplayedRegions`, which only asks whether the
1290
1583
  * view has been given regions, not whether any are on screen.
1291
1584
  */
1292
1585
  readonly hasVisibleContent: boolean;
@@ -1322,7 +1615,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1322
1615
  /**
1323
1616
  * #getter
1324
1617
  * Right edge (px, viewport-relative) of the on-screen content, clamped
1325
- * to the track — where a right-pinned overlay such as a wiggle's colour
1618
+ * to the track — where a right-pinned overlay such as a wiggle's color
1326
1619
  * or score legend belongs, rather than out in the empty gutter the
1327
1620
  * regions can leave at whole-genome zoom. `@jbrowse/display-kit`'s
1328
1621
  * `contentRightEdgePx` states the rule; an SVG export applies the same
@@ -1332,7 +1625,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1332
1625
  * array of fresh objects on every pan and zoom frame, so a component
1333
1626
  * that derived this number itself re-rendered on every frame of every
1334
1627
  * gesture — to produce, whenever content fills the track, the unchanged
1335
- * `trackWidthPx`. Reading the scalar lets MobX's `===` stop the chain at
1628
+ * `trackWidthPx`. A component that reads the scalar lets MobX's `===` stop the chain at
1336
1629
  * this computed instead. Measured over 20 zoom frames: the wiggle
1337
1630
  * family's three body instances fell from 66 renders to 7.
1338
1631
  */
@@ -1362,23 +1655,22 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1362
1655
  readonly visibleLocStrings: string;
1363
1656
  /**
1364
1657
  * #getter
1365
- * **What a debounced consumer clips to**: the coarse blocks once the
1366
- * view has settled at least once, the live ones before that.
1658
+ * **The blocks a debounced consumer clips to**: the coarse blocks once
1659
+ * the view has settled at least once, the live ones before that.
1367
1660
  *
1368
- * The coarse blocks exist so a per-bp scan does not recompute on every
1369
- * animation frame during a pan or zoom — wiggle's autoscale domain, the
1370
- * alignments coverage scale and MAF's coverage band are the three — and
1371
- * while they are stale
1372
- * the answer is merely a frame or two old, which is what the debounce
1373
- * means. **Empty is different in kind.** A scan over no blocks yields no
1374
- * entries, and no entries is not a stale domain, it is the fallback one:
1375
- * `[0,1]`, which draws a line plot blank and a density plot saturated.
1376
- * That window is the 500ms between a view initializing and the coarse
1377
- * autorun's first run, and data can now land inside it — the per-region
1378
- * fetch used to be trailing-edge at 600ms, so it never did.
1661
+ * The coarse blocks stop a per-bp scan from recomputing on every
1662
+ * animation frame during a pan or zoom. Wiggle's autoscale domain, the
1663
+ * alignments coverage scale and MAF's coverage band use them. While the
1664
+ * coarse blocks are stale the result is a frame or two old, as the
1665
+ * debounce intends. **Empty coarse blocks are a different case.** A scan
1666
+ * over no blocks yields no entries, and the consumer falls back to the
1667
+ * domain `[0,1]`, which draws a line plot blank and a density plot
1668
+ * saturated. The coarse blocks are empty for the 500ms between a view
1669
+ * initializing and the coarse autorun's first run, and data can load
1670
+ * within that window.
1379
1671
  *
1380
- * One recompute at that transition, against N per frame, which is the
1381
- * trade the guard was making anyway.
1672
+ * Falling back to the live blocks costs one extra recompute at that
1673
+ * transition, compared with N per frame without the debounce.
1382
1674
  */
1383
1675
  readonly settledDynamicBlocks: ContentBlock[];
1384
1676
  /**
@@ -1411,7 +1703,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1411
1703
  *
1412
1704
  * The coarse blocks are a 500ms throttle, and every consumer trades
1413
1705
  * freshness for not recomputing per animation frame — the location box,
1414
- * canvas's on-screen feature set, and the two per-bp scans behind
1706
+ * the feature display's on-screen feature set, and the two per-bp scans behind
1415
1707
  * `settledDynamicBlocks`. That trade is only sound while the answer is a
1416
1708
  * few frames old. **A jump makes it unrelated instead**, because there is
1417
1709
  * nothing to coalesce: the viewport left behind is not an approximation of
@@ -1419,21 +1711,29 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1419
1711
  * as a navigation that didn't happen, and wiggle's autoscale domain is
1420
1712
  * computed over the window the user just left — measured at `[0,200]`
1421
1713
  * against a correct `[0,300]` when a 40bp coarse window survived a jump to
1422
- * 4040bp on screen. Only the per-region fetch moving to the leading edge
1423
- * made that reachable: at 600ms the data never landed inside the hole.
1714
+ * 4040bp on screen.
1424
1715
  *
1425
- * **The continuous paths deliberately do not come through here.** The
1716
+ * **The continuous paths do not call this.** The
1426
1717
  * spring zoom writes through `zoomTo` per frame and a drag through
1427
1718
  * `scrollTo`, so this adds no per-frame work; the settle is idempotent
1428
1719
  * (`setCoarseDynamicBlocks` compares block keys), so the debounced
1429
- * autorun's own follow-up run costs nothing.
1720
+ * autorun's follow-up run costs nothing.
1430
1721
  *
1431
- * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` is what
1432
- * makes that true of the next one — it scans this file for the writes and
1722
+ * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` enforces
1723
+ * that for the next one: it scans this file for the writes and
1433
1724
  * fails on a placer that reaches neither the settle nor its named list of
1434
1725
  * continuous paths. Two passes by hand missed four.
1435
1726
  */
1436
1727
  settleCoarseBlocks(): void;
1728
+ } & {
1729
+ /**
1730
+ * #method
1731
+ * renders the view to SVG markup, which it returns; saves it through
1732
+ * FileSaver unless `save: false`. A `viewWidth` lays the view out at
1733
+ * that many pixels for the export, as a window that wide would, and
1734
+ * puts the on-screen width back after.
1735
+ */
1736
+ exportSvg(opts?: ExportSvgOptions): Promise<string>;
1437
1737
  } & {
1438
1738
  /**
1439
1739
  * #action
@@ -1446,17 +1746,17 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1446
1746
  moveTo(start?: BpOffset, end?: BpOffset): void;
1447
1747
  /**
1448
1748
  * #action
1449
- * Place the viewport by the pair of PIXEL quantities it used to be stored
1450
- * as. Prefer `setWindow`: pixels mean nothing without the width they were
1749
+ * Place the viewport by `bpPerPx` and `offsetPx`, the pixel pair the view
1750
+ * stored before it stored the window. Prefer `setWindow`: pixels mean nothing without the width they were
1451
1751
  * measured at, so a round trip through here is only exact while the width
1452
1752
  * holds still. Kept for callers that genuinely have pixels — a wheel
1453
- * gesture, a rubberband — and for reading old snapshots.
1753
+ * gesture, a rubberband.
1454
1754
  */
1455
1755
  setNewView(bpPerPx: number, offsetPx: number): void;
1456
1756
  /**
1457
1757
  * #action
1458
1758
  * Place the viewport by the pair it is actually STORED as: the window's
1459
- * width and left edge, both in bp. `setNewView`'s bp-space twin, and the
1759
+ * width and left edge, both in bp. The bp-space counterpart of `setNewView`, and the
1460
1760
  * right one for anything that captures a viewport and puts it back later
1461
1761
  * (an Undo, a saved location) — those two moments can be a window resize
1462
1762
  * apart, and this pair survives one where a pixel pair does not.
@@ -1478,8 +1778,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1478
1778
  setWindowFrame(windowWidthBp: number, windowStartBp: number): void;
1479
1779
  /**
1480
1780
  * #action
1481
- * The worst jump of them to leave unsettled: the coarse blocks are keyed
1482
- * by `displayedRegionIndex`, so a set that outlives the region list has a
1781
+ * Settles the coarse blocks, since this is the worst jump to leave
1782
+ * unsettled: they are keyed by `displayedRegionIndex`, so a set that outlives the region list has a
1483
1783
  * consumer reading one contig's data against another's blocks.
1484
1784
  */
1485
1785
  setDisplayedRegions(regions: Region[]): void;
@@ -1624,6 +1924,24 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1624
1924
  * adds 20% padding on each side)
1625
1925
  */
1626
1926
  navToLocation(parsedLocString: ParsedLocString, assemblyName?: string, grow?: number): Promise<void>;
1927
+ /**
1928
+ * #action
1929
+ * adds the region in view to the session's highlights
1930
+ */
1931
+ highlightCurrentRegion(): void;
1932
+ /**
1933
+ * #action
1934
+ * navigates to a highlight, zoomed out a little for context. Goes through
1935
+ * a locstring so it reaches a refName the view is not displaying
1936
+ */
1937
+ navToHighlight(highlight: HighlightType): Promise<boolean>;
1938
+ } & {
1939
+ /**
1940
+ * #action
1941
+ * navigates to the most recently added highlight on this view's
1942
+ * assemblies
1943
+ */
1944
+ navigateNewestHighlight(): Promise<void>;
1627
1945
  } & {
1628
1946
  /**
1629
1947
  * #method
@@ -1642,31 +1960,30 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1642
1960
  } | undefined;
1643
1961
  /**
1644
1962
  * #method
1645
- * Map a highlight or bookmark region to its pixel position+width inside
1963
+ * Map a highlight region to its pixel position+width inside
1646
1964
  * the tracks container. Falls back to the raw refName if the region's
1647
1965
  * assemblyName is missing or unknown so highlights authored without an
1648
1966
  * assembly still render in single-assembly views.
1649
1967
  */
1650
- getHighlightCoords(region: {
1651
- assemblyName?: string;
1652
- refName: string;
1653
- start: number;
1654
- end: number;
1655
- }): {
1968
+ getHighlightCoords(region: HighlightRegion): {
1656
1969
  width: number;
1657
1970
  left: number;
1658
1971
  } | undefined;
1972
+ /**
1973
+ * #method
1974
+ * y ranges, from the top of the highlight bands, of tracks whose display
1975
+ * sets `drawsGenomicCoordinates` to false; the bands skip them
1976
+ */
1977
+ nonGenomicTrackBands(): {
1978
+ top: number;
1979
+ height: number;
1980
+ }[];
1659
1981
  /**
1660
1982
  * #method
1661
1983
  * like getHighlightCoords but laid out against the overview scalebar and
1662
1984
  * shifted by the cytoband offset
1663
1985
  */
1664
- getOverviewHighlightCoords(region: {
1665
- assemblyName?: string;
1666
- refName: string;
1667
- start: number;
1668
- end: number;
1669
- }): {
1986
+ getOverviewHighlightCoords(region: HighlightRegion): {
1670
1987
  width: number;
1671
1988
  left: number;
1672
1989
  } | undefined;
@@ -1688,6 +2005,14 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1688
2005
  * #getter
1689
2006
  */
1690
2007
  readonly centerLineInfo: import("@jbrowse/core/util/Base1DUtils").PxToBpResult | undefined;
2008
+ } & {
2009
+ /**
2010
+ * #action
2011
+ * a region edit from the ruler's menu as one action, which a synteny
2012
+ * stack's follow reads as the reader's gesture on this row; see
2013
+ * `setDisplayedRegionsKeepingCenter`
2014
+ */
2015
+ editDisplayedRegions(edit: RegionEdit): void;
1691
2016
  } & {
1692
2017
  /**
1693
2018
  * #method
@@ -1695,8 +2020,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1695
2020
  rubberbandClickMenuItems(clickOffset: BpOffset): MenuItem[];
1696
2021
  /**
1697
2022
  * #method
1698
- * returns menu items for a highlight context menu. plugins can extend
1699
- * this via Core-extendPluggableElement to add their own items
2023
+ * a highlight chip's menu rows after Dismiss; extend this to add one
1700
2024
  */
1701
2025
  highlightMenuItems(_highlight: HighlightType): MenuItem[];
1702
2026
  } & {
@@ -1706,35 +2030,45 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1706
2030
  * `centerAt`'s animated twin: the same destination, reached along the
1707
2031
  * arc instead of jumped to, at the zoom the view is already on.
1708
2032
  */
1709
- flyToCenter(coord: number, refName: string): void;
2033
+ flyToCenter(coord: number, refName: string, displayedRegionIndex?: number): void;
2034
+ /**
2035
+ * #action
2036
+ * A flight to a linear bp centre at the zoom the view is on, or is
2037
+ * already flying to, widened where that is narrower than `fitWidthBp`.
2038
+ * The current width mid-flight is a point on the arc, so a second
2039
+ * flight read from it would land pulled back.
2040
+ */
2041
+ flyToFit(centerBp: number, fitWidthBp: number): void;
1710
2042
  } & {
1711
2043
  afterCreate(): void;
1712
2044
  afterAttach(): void;
1713
- }, import("@jbrowse/core/util/withLaunchInput").LaunchSnapshotIn<import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<{
2045
+ }, import("@jbrowse/core/util/withLaunchInput").LaunchSnapshotIn<import("@jbrowse/mobx-state-tree").IModelType<Omit<{
1714
2046
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1715
2047
  displayName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
1716
2048
  minimized: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1717
- }, "highlight" | "showHighlightChips"> & {
1718
- highlight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<HighlightType, HighlightType, HighlightType>>, [undefined]>;
1719
- showHighlightChips: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1720
- }, "colorByCDS" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "labelsVisible" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showGridlines" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
2049
+ }, "axis" | "colorByFrame" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
1721
2050
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1722
2051
  type: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
1723
2052
  windowStartBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
1724
2053
  windowWidthBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
1725
2054
  legacyBpPerPx: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
1726
2055
  displayedRegions: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IType<Region[], Region[], Region[]>, [undefined]>;
1727
- tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IAnyType>;
2056
+ tracks: import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>;
1728
2057
  hideHeader: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1729
2058
  hideHeaderOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1730
2059
  hideNoTracksActive: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1731
2060
  trackSelectorType: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1732
2061
  showCenterLine: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1733
2062
  showCytobands: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1734
- trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1735
- showGridlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1736
- labelsVisible: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1737
- colorByCDS: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
2063
+ trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"" | "hidden" | "offset" | "overlapping">, [undefined]>;
2064
+ axis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2065
+ readonly grid: {
2066
+ type: "boolean";
2067
+ } & {
2068
+ defaultValue: boolean;
2069
+ };
2070
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>, [undefined]>;
2071
+ colorByFrame: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1738
2072
  showAminoAcids: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1739
2073
  showTrackOutlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1740
2074
  scalebarOnly: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -1743,50 +2077,55 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1743
2077
  width: number;
1744
2078
  bodyMounted: boolean;
1745
2079
  } & {
2080
+ readonly rendersDisplays: boolean;
1746
2081
  readonly effectiveBodyMounted: boolean;
1747
2082
  menuItems(): MenuItem[];
1748
2083
  readonly ownTracks: import("@jbrowse/core/util").AbstractTrackModel[];
1749
- readonly allViews: import("@jbrowse/core/util").AbstractViewModel[];
1750
- } & {
1751
- readonly allTracks: import("@jbrowse/core/util").AbstractTrackModel[];
2084
+ readonly ownViews: import("@jbrowse/core/util").AbstractViewModel[];
1752
2085
  } & {
1753
2086
  setDisplayName(name: string): void;
1754
2087
  setWidth(newWidth: number): void;
1755
2088
  setBodyMounted(flag: boolean): void;
1756
2089
  setMinimized(flag: boolean): void;
1757
- } & {
1758
- addToHighlights(highlight: HighlightType): void;
1759
- setHighlight(highlight?: HighlightType[]): void;
1760
- removeHighlight(highlight: HighlightType): void;
1761
- updateHighlight(old: HighlightType, updates: Partial<HighlightType>): void;
1762
- setShowHighlightChips(arg: boolean): void;
1763
- } & {
1764
- afterAttach(): void;
1765
2090
  } & {
1766
2091
  /**
1767
2092
  * #volatile
2093
+ * Height of each track's in-flow label band, measured by
2094
+ * TrackContainer as the rendering container's offset inside its Paper.
2095
+ * Absent (0) while the label is hidden, overlapping, or not yet
2096
+ * measured. Observable, so the offset and height getters re-derive
2097
+ * when a band changes.
1768
2098
  */
1769
- volatileWidth: number | undefined;
2099
+ trackLabelBands: import("mobx").ObservableMap<string, number>;
2100
+ /**
2101
+ * #volatile
2102
+ * How much taller the view's box is than the scroll port it sits in,
2103
+ * in px, negative when it is shorter. Measured by the view component
2104
+ * for a top-level view; undefined until then, and for a nested one.
2105
+ */
2106
+ scrollPortExcess: number | undefined;
1770
2107
  /**
1771
2108
  * #volatile
1772
2109
  */
1773
- minimumBlockWidth: number;
2110
+ volatileWidth: number | undefined;
1774
2111
  /**
1775
2112
  * #volatile
1776
2113
  */
1777
2114
  draggingTrackId: undefined | string;
1778
2115
  /**
1779
2116
  * #volatile
2117
+ * Set by a search whose hits name more than one place, until the user
2118
+ * picks one or closes it.
1780
2119
  */
1781
- lastTrackDragY: undefined | number;
2120
+ searchPicker: SearchPickerState | undefined;
1782
2121
  /**
1783
2122
  * #volatile
1784
2123
  */
1785
- volatileError: unknown;
2124
+ lastTrackDragY: undefined | number;
1786
2125
  /**
1787
2126
  * #volatile
1788
2127
  */
1789
- trackRefs: Record<string, HTMLDivElement>;
2128
+ volatileError: unknown;
1790
2129
  /**
1791
2130
  * #volatile
1792
2131
  */
@@ -1801,26 +2140,34 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1801
2140
  coarseBpPerPx: number;
1802
2141
  /**
1803
2142
  * #volatile
2143
+ * the scroll offset the coarse blocks were laid out at, in px at
2144
+ * `coarseBpPerPx`: the settled viewport's left edge, which the first
2145
+ * coarse block is not while the view is scrolled before the first region
1804
2146
  */
1805
- leftOffset: undefined | BpOffset;
2147
+ coarseOffsetPx: number;
1806
2148
  /**
1807
2149
  * #volatile
1808
2150
  */
1809
- rightOffset: undefined | BpOffset;
2151
+ leftOffset: undefined | BpOffset;
1810
2152
  /**
1811
2153
  * #volatile
1812
2154
  */
1813
- isScalebarRefNameMenuOpen: boolean;
2155
+ rightOffset: undefined | BpOffset;
1814
2156
  /**
1815
2157
  * #volatile
1816
2158
  */
1817
- scalebarRefNameClickPending: boolean;
2159
+ isScalebarRefNameMenuOpen: boolean;
1818
2160
  /**
1819
2161
  * #volatile
1820
2162
  * temporary vertical guides that can be set by displays (e.g., LD display hover)
1821
2163
  */
1822
2164
  volatileGuides: VolatileGuide[];
1823
2165
  } & {
2166
+ /**
2167
+ * #getter
2168
+ * `axis.grid`: whether the ruler's ticks run down through the tracks.
2169
+ */
2170
+ readonly axisGrid: boolean;
1824
2171
  /**
1825
2172
  * #getter
1826
2173
  * the launch state that still has something to apply — the gate every
@@ -1847,6 +2194,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1847
2194
  * corresponds roughly to the horizontal scroll of the LGV
1848
2195
  */
1849
2196
  readonly offsetPx: number;
2197
+ /**
2198
+ * #getter
2199
+ * a displayed region narrower than this many pixels draws as an elided
2200
+ * block
2201
+ */
2202
+ readonly minimumBlockWidth: number;
1850
2203
  /**
1851
2204
  * #getter
1852
2205
  * scroll-to-zoom is a global, personal preference resolved from the
@@ -1856,17 +2209,17 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1856
2209
  /**
1857
2210
  * #getter
1858
2211
  */
1859
- readonly pinnedTracks: any[];
2212
+ readonly pinnedTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
1860
2213
  /**
1861
2214
  * #getter
1862
2215
  */
1863
- readonly unpinnedTracks: any[];
2216
+ readonly unpinnedTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
1864
2217
  /**
1865
2218
  * #getter
1866
2219
  * the effective track labels setting, resolving the stored `trackLabels`
1867
2220
  * against the LinearGenomeViewPlugin config default
1868
2221
  */
1869
- readonly effectiveTrackLabels: any;
2222
+ readonly effectiveTrackLabels: ViewTrackLabelMode;
1870
2223
  /**
1871
2224
  * #getter
1872
2225
  */
@@ -1884,6 +2237,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1884
2237
  * #getter
1885
2238
  */
1886
2239
  readonly assemblyDisplayNames: string[];
2240
+ /**
2241
+ * #getter
2242
+ * the session's highlights on this view's assemblies
2243
+ */
2244
+ readonly highlights: HighlightType[];
1887
2245
  /**
1888
2246
  * #getter
1889
2247
  * checking if lgv is a 'top-level' view is used for toggling pin track
@@ -1899,8 +2257,19 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1899
2257
  } & {
1900
2258
  /**
1901
2259
  * #getter
1902
- * Assembly-name prefix for the scalebar refName labels, or undefined for
1903
- * none. A container view (e.g. LinearSyntenyView) opts its sub-views in by
2260
+ * The census entry for this view: the tracks it holds itself. Declared
2261
+ * rather than derived — see `BaseViewModel.ownTracks`.
2262
+ */
2263
+ readonly ownTracks: (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
2264
+ /**
2265
+ * #getter
2266
+ * See `BaseViewModel.rendersDisplays`.
2267
+ */
2268
+ readonly rendersDisplays: boolean;
2269
+ /**
2270
+ * #getter
2271
+ * Assembly name captioning the scalebar ahead of its refName labels, or
2272
+ * undefined for none. A container view (e.g. LinearSyntenyView) opts its sub-views in by
1904
2273
  * exposing showAssemblyNameInSubviewScalebar; duck-typed rather than
1905
2274
  * matching a concrete view type so no upward plugin dependency is needed
1906
2275
  * and any container can opt in. A wrong nesting depth simply yields no
@@ -1928,21 +2297,63 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1928
2297
  * and error checks resolve it directly through here.
1929
2298
  */
1930
2299
  readonly initAssembly: (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
1931
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
2300
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2301
+ readonly aliases: {
2302
+ type: "stringArray";
2303
+ } & {
2304
+ defaultValue: unknown;
2305
+ };
2306
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2307
+ readonly refNameColors: {
2308
+ type: "stringArray";
2309
+ } & {
2310
+ defaultValue: unknown;
2311
+ };
2312
+ readonly geneticCodes: {
2313
+ type: "frozen";
2314
+ } & {
2315
+ defaultValue: unknown;
2316
+ };
2317
+ readonly circularRefNames: {
2318
+ type: "stringArray";
2319
+ } & {
2320
+ defaultValue: unknown;
2321
+ };
2322
+ readonly geneticCodesLocation: {
2323
+ type: "maybeFileLocation";
2324
+ };
2325
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2326
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2327
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2328
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2329
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2330
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2331
+ readonly displayName: {
2332
+ type: "string";
2333
+ } & {
2334
+ defaultValue: string;
2335
+ };
2336
+ name: {
2337
+ type: "string";
2338
+ } & {
2339
+ defaultValue: string;
2340
+ };
2341
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
1932
2342
  }> & {
1933
2343
  error: unknown;
1934
2344
  loadingP: Promise<void> | undefined;
1935
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
1936
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
1937
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2345
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
2346
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2347
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
1938
2348
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
1939
2349
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
1940
2350
  loadedGeneticCodes: Record<string, number> | undefined;
1941
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2351
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
1942
2352
  statusMessage: string | undefined;
1943
2353
  statusProgress: number | undefined;
1944
2354
  statusSource: string | undefined;
1945
2355
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
2356
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
1946
2357
  } & {
1947
2358
  getConf(arg: string): any;
1948
2359
  } & {
@@ -1956,8 +2367,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1956
2367
  } & {
1957
2368
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
1958
2369
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
2370
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
1959
2371
  } & {
1960
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
2372
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
1961
2373
  regions: import("@jbrowse/core/util").Region[];
1962
2374
  cytobands: import("@jbrowse/core/util").Feature[];
1963
2375
  geneticCodes: Record<string, number>;
@@ -1971,7 +2383,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1971
2383
  afterAttach(): void;
1972
2384
  } & {
1973
2385
  readonly initialized: boolean;
1974
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
1975
2386
  readonly allRefNames: string[] | undefined;
1976
2387
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
1977
2388
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -1989,27 +2400,72 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1989
2400
  getCanonicalRefName2(refName: string): string;
1990
2401
  isValidRefName(refName: string): boolean;
1991
2402
  } & {
2403
+ isCircularRefName(refName: string): boolean;
2404
+ getRefNamePosition(refName: string): number | undefined;
1992
2405
  getAliasesForRefName(refName: string): string[];
1993
2406
  getRefNameMapForAdapter(adapterConf: {
1994
2407
  [x: string]: unknown;
1995
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
2408
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
1996
2409
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
2410
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
1997
2411
  } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
1998
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
2412
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2413
+ readonly aliases: {
2414
+ type: "stringArray";
2415
+ } & {
2416
+ defaultValue: unknown;
2417
+ };
2418
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2419
+ readonly refNameColors: {
2420
+ type: "stringArray";
2421
+ } & {
2422
+ defaultValue: unknown;
2423
+ };
2424
+ readonly geneticCodes: {
2425
+ type: "frozen";
2426
+ } & {
2427
+ defaultValue: unknown;
2428
+ };
2429
+ readonly circularRefNames: {
2430
+ type: "stringArray";
2431
+ } & {
2432
+ defaultValue: unknown;
2433
+ };
2434
+ readonly geneticCodesLocation: {
2435
+ type: "maybeFileLocation";
2436
+ };
2437
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2438
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2439
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2440
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2441
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2442
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2443
+ readonly displayName: {
2444
+ type: "string";
2445
+ } & {
2446
+ defaultValue: string;
2447
+ };
2448
+ name: {
2449
+ type: "string";
2450
+ } & {
2451
+ defaultValue: string;
2452
+ };
2453
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
1999
2454
  }, {
2000
2455
  error: unknown;
2001
2456
  loadingP: Promise<void> | undefined;
2002
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
2003
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2004
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2457
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
2458
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2459
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2005
2460
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
2006
2461
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
2007
2462
  loadedGeneticCodes: Record<string, number> | undefined;
2008
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2463
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2009
2464
  statusMessage: string | undefined;
2010
2465
  statusProgress: number | undefined;
2011
2466
  statusSource: string | undefined;
2012
2467
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
2468
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
2013
2469
  } & {
2014
2470
  getConf(arg: string): any;
2015
2471
  } & {
@@ -2023,8 +2479,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2023
2479
  } & {
2024
2480
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
2025
2481
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
2482
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
2026
2483
  } & {
2027
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
2484
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
2028
2485
  regions: import("@jbrowse/core/util").Region[];
2029
2486
  cytobands: import("@jbrowse/core/util").Feature[];
2030
2487
  geneticCodes: Record<string, number>;
@@ -2038,7 +2495,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2038
2495
  afterAttach(): void;
2039
2496
  } & {
2040
2497
  readonly initialized: boolean;
2041
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2042
2498
  readonly allRefNames: string[] | undefined;
2043
2499
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
2044
2500
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -2056,12 +2512,25 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2056
2512
  getCanonicalRefName2(refName: string): string;
2057
2513
  isValidRefName(refName: string): boolean;
2058
2514
  } & {
2515
+ isCircularRefName(refName: string): boolean;
2516
+ getRefNamePosition(refName: string): number | undefined;
2059
2517
  getAliasesForRefName(refName: string): string[];
2060
2518
  getRefNameMapForAdapter(adapterConf: {
2061
2519
  [x: string]: unknown;
2062
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
2520
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
2063
2521
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
2522
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
2064
2523
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
2524
+ /**
2525
+ * #getter
2526
+ * The assembly a pending launch is for: the one it names, else the one
2527
+ * the view already shows. A re-launch of a materialized view (a
2528
+ * `jb.setSession` document writing `loc` beside the built state) need
2529
+ * not restate it; without the default the readiness gate waited on
2530
+ * `assemblyManager.get(undefined)` for good. Undefined on a fresh view
2531
+ * whose blob names none, which `error` reports.
2532
+ */
2533
+ readonly launchAssemblyName: string | undefined;
2065
2534
  /**
2066
2535
  * #getter
2067
2536
  */
@@ -2077,21 +2546,63 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2077
2546
  * displayed assemblies that hasn't finished loading.
2078
2547
  */
2079
2548
  readonly loadingAssembly: (import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<{
2080
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
2549
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2550
+ readonly aliases: {
2551
+ type: "stringArray";
2552
+ } & {
2553
+ defaultValue: unknown;
2554
+ };
2555
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2556
+ readonly refNameColors: {
2557
+ type: "stringArray";
2558
+ } & {
2559
+ defaultValue: unknown;
2560
+ };
2561
+ readonly geneticCodes: {
2562
+ type: "frozen";
2563
+ } & {
2564
+ defaultValue: unknown;
2565
+ };
2566
+ readonly circularRefNames: {
2567
+ type: "stringArray";
2568
+ } & {
2569
+ defaultValue: unknown;
2570
+ };
2571
+ readonly geneticCodesLocation: {
2572
+ type: "maybeFileLocation";
2573
+ };
2574
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2575
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2576
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2577
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2578
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2579
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2580
+ readonly displayName: {
2581
+ type: "string";
2582
+ } & {
2583
+ defaultValue: string;
2584
+ };
2585
+ name: {
2586
+ type: "string";
2587
+ } & {
2588
+ defaultValue: string;
2589
+ };
2590
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
2081
2591
  }> & {
2082
2592
  error: unknown;
2083
2593
  loadingP: Promise<void> | undefined;
2084
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
2085
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2086
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2594
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
2595
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2596
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2087
2597
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
2088
2598
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
2089
2599
  loadedGeneticCodes: Record<string, number> | undefined;
2090
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2600
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2091
2601
  statusMessage: string | undefined;
2092
2602
  statusProgress: number | undefined;
2093
2603
  statusSource: string | undefined;
2094
2604
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
2605
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
2095
2606
  } & {
2096
2607
  getConf(arg: string): any;
2097
2608
  } & {
@@ -2105,8 +2616,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2105
2616
  } & {
2106
2617
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
2107
2618
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
2619
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
2108
2620
  } & {
2109
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
2621
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
2110
2622
  regions: import("@jbrowse/core/util").Region[];
2111
2623
  cytobands: import("@jbrowse/core/util").Feature[];
2112
2624
  geneticCodes: Record<string, number>;
@@ -2120,7 +2632,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2120
2632
  afterAttach(): void;
2121
2633
  } & {
2122
2634
  readonly initialized: boolean;
2123
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2124
2635
  readonly allRefNames: string[] | undefined;
2125
2636
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
2126
2637
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -2138,27 +2649,72 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2138
2649
  getCanonicalRefName2(refName: string): string;
2139
2650
  isValidRefName(refName: string): boolean;
2140
2651
  } & {
2652
+ isCircularRefName(refName: string): boolean;
2653
+ getRefNamePosition(refName: string): number | undefined;
2141
2654
  getAliasesForRefName(refName: string): string[];
2142
2655
  getRefNameMapForAdapter(adapterConf: {
2143
2656
  [x: string]: unknown;
2144
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
2657
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
2145
2658
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
2659
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
2146
2660
  } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<{
2147
- configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/mobx-state-tree").IAnyType>>;
2661
+ configuration: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").IReferenceType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2662
+ readonly aliases: {
2663
+ type: "stringArray";
2664
+ } & {
2665
+ defaultValue: unknown;
2666
+ };
2667
+ readonly sequence: import("@jbrowse/core/configuration").AnyConfigurationSchemaType;
2668
+ readonly refNameColors: {
2669
+ type: "stringArray";
2670
+ } & {
2671
+ defaultValue: unknown;
2672
+ };
2673
+ readonly geneticCodes: {
2674
+ type: "frozen";
2675
+ } & {
2676
+ defaultValue: unknown;
2677
+ };
2678
+ readonly circularRefNames: {
2679
+ type: "stringArray";
2680
+ } & {
2681
+ defaultValue: unknown;
2682
+ };
2683
+ readonly geneticCodesLocation: {
2684
+ type: "maybeFileLocation";
2685
+ };
2686
+ readonly refNameAliases: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2687
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2688
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2689
+ readonly cytobands: import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
2690
+ readonly adapter: import("@jbrowse/core/PluginManager").PluggableConfigSchemaType;
2691
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>;
2692
+ readonly displayName: {
2693
+ type: "string";
2694
+ } & {
2695
+ defaultValue: string;
2696
+ };
2697
+ name: {
2698
+ type: "string";
2699
+ } & {
2700
+ defaultValue: string;
2701
+ };
2702
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, "name", undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>>>;
2148
2703
  }, {
2149
2704
  error: unknown;
2150
2705
  loadingP: Promise<void> | undefined;
2151
- adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>>;
2152
- volatileRegions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2153
- refNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2706
+ adapterLoads: import("@jbrowse/quick-lru").default<string, Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>>;
2707
+ regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2708
+ refNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2154
2709
  canonicalToSeqAdapterRefNames: Record<string, string> | undefined;
2155
2710
  cytobands: import("@jbrowse/core/util").Feature[] | undefined;
2156
2711
  loadedGeneticCodes: Record<string, number> | undefined;
2157
- lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/assembly").RefNameAliases | undefined;
2712
+ lowerCaseRefNameAliases: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases | undefined;
2158
2713
  statusMessage: string | undefined;
2159
2714
  statusProgress: number | undefined;
2160
2715
  statusSource: string | undefined;
2161
2716
  refNameMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch>;
2717
+ contigLengthMismatches: Map<string, import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch>;
2162
2718
  } & {
2163
2719
  getConf(arg: string): any;
2164
2720
  } & {
@@ -2172,8 +2728,9 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2172
2728
  } & {
2173
2729
  setStatus(status?: import("@jbrowse/core/util").RpcStatus): void;
2174
2730
  setRefNameMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch): void;
2731
+ setContigLengthMismatch(adapterCacheKey: string, mismatch: import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch): void;
2175
2732
  } & {
2176
- setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/assembly").RefNameMaps & {
2733
+ setLoaded({ regions, refNameAliases, lowerCaseRefNameAliases, canonicalToSeqAdapterRefNames, cytobands, geneticCodes, }: import("@jbrowse/core/assemblyManager/refNameMaps").RefNameMaps & {
2177
2734
  regions: import("@jbrowse/core/util").Region[];
2178
2735
  cytobands: import("@jbrowse/core/util").Feature[];
2179
2736
  geneticCodes: Record<string, number>;
@@ -2187,7 +2744,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2187
2744
  afterAttach(): void;
2188
2745
  } & {
2189
2746
  readonly initialized: boolean;
2190
- readonly regions: import("@jbrowse/core/assemblyManager/assembly").BasicRegion[] | undefined;
2191
2747
  readonly allRefNames: string[] | undefined;
2192
2748
  readonly namesByCanonicalRefName: Map<string, string[]> | undefined;
2193
2749
  readonly rpcManager: import("@jbrowse/core/rpc/RpcManager").default;
@@ -2205,34 +2761,21 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2205
2761
  getCanonicalRefName2(refName: string): string;
2206
2762
  isValidRefName(refName: string): boolean;
2207
2763
  } & {
2764
+ isCircularRefName(refName: string): boolean;
2765
+ getRefNamePosition(refName: string): number | undefined;
2208
2766
  getAliasesForRefName(refName: string): string[];
2209
2767
  getRefNameMapForAdapter(adapterConf: {
2210
2768
  [x: string]: unknown;
2211
- }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/assembly").RefNameAliases>;
2769
+ }, options: import("@jbrowse/core/data_adapters/BaseAdapter").BaseOptions): Promise<import("@jbrowse/core/assemblyManager/refNameMaps").RefNameAliases>;
2212
2770
  getRefNameMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").RefNameMismatch | undefined;
2771
+ getContigLengthMismatch(adapterCacheKey: string): import("@jbrowse/core/assemblyManager/assembly").ContigLengthMismatch | undefined;
2213
2772
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
2214
2773
  /**
2215
2774
  * #getter
2216
- * What the spinner says. The assembly reports which of its files it is
2217
- * downloading, so this is "Downloading chromosome aliases" rather than a bare
2218
- * "Loading" for the part of startup that actually takes time. Falls back
2219
- * once the assembly is loaded and the remaining wait is the init autorun's
2220
- * own navigation, which is local.
2221
- */
2222
- readonly loadingMessage: string | undefined;
2223
- /**
2224
- * #getter
2225
- * Determinate fraction for the spinner's bar, when the assembly load
2226
- * reports one (a whole-file download with a Content-Length)
2775
+ * The loading screen's text while `showLoading`, taken from the
2776
+ * assembly being waited on; undefined otherwise.
2227
2777
  */
2228
- readonly loadingProgress: number | undefined;
2229
- /**
2230
- * #getter
2231
- * The URL the assembly load is currently fetching, when the phase named
2232
- * one. Only the stalled-load notice reads it — see
2233
- * {@link ViewLoadingScreen}.
2234
- */
2235
- readonly loadingSource: string | undefined;
2778
+ readonly loading: import("@jbrowse/core/util/viewStatus").ViewLoading | undefined;
2236
2779
  /**
2237
2780
  * #getter
2238
2781
  */
@@ -2272,12 +2815,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2272
2815
  * `width`/`staticBlocks` throw by design before the view has been
2273
2816
  * measured and navigated.
2274
2817
  *
2275
- * **Not `initialized`**, which is the trap this getter exists to close.
2818
+ * Use this getter rather than `initialized`.
2276
2819
  * That one answers "have the assembly's regions loaded", which is only
2277
2820
  * the first of two async steps: navigating then populates
2278
2821
  * `displayedRegions`, and in the window between the two `initialized` is
2279
2822
  * already true while there is still nothing on screen. `showLoading`
2280
- * folds in `awaitingInitNavigation`, the getter that exists for exactly
2823
+ * folds in `awaitingInitNavigation`, the getter for exactly
2281
2824
  * that gap.
2282
2825
  *
2283
2826
  * `error` is the third outcome and is why this is not a bare
@@ -2315,42 +2858,31 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2315
2858
  * #getter
2316
2859
  * A track's full cost beyond its display height.
2317
2860
  *
2318
- * The track *label* is not counted, and cannot be: an offset label is an
2319
- * in-flow box whose height is whatever the theme renders a Paper of icon
2320
- * buttons at — 31.140625px on the stock theme, and not a number this file
2321
- * can derive. So these getters are exact while labels are hidden or
2322
- * overlapping, and short by one label box per labelled track otherwise.
2323
- * Anything needing the offset to the pixel with labels showing measures
2324
- * the DOM; `BreakpointSplitViewOverlay` does, and falls back to this
2325
- * arithmetic only for a track with no mounted div.
2861
+ * The track *label* is not counted here: an offset label is an in-flow
2862
+ * box whose height is whatever the theme renders a Paper of icon buttons
2863
+ * at, so it is measured into `trackLabelBands` per track and added by
2864
+ * `trackLabelBand` rather than derived.
2326
2865
  */
2327
2866
  readonly trackChromeHeight: number;
2328
2867
  /**
2329
2868
  * #getter
2330
2869
  */
2331
2870
  readonly headerHeight: number;
2332
- /**
2333
- * #getter
2334
- * Where the scalebar pins when the view's chrome is sticky: everything
2335
- * stacked above it, which is the view's own title bar plus this view's
2336
- * header. Expressed from `headerHeight` rather than re-summing its
2337
- * constants — the two are the same box, and a second spelling of the sum
2338
- * is free to drift from the first while both typecheck.
2339
- */
2340
- readonly rubberbandTop: number;
2341
- /**
2342
- * #getter
2343
- */
2344
- readonly pinnedTracksTop: number;
2345
2871
  /**
2346
2872
  * #method
2347
- * rendered height of a single track, collapsing to a fixed height when
2873
+ * rendered height of a single track, using a fixed height when
2348
2874
  * minimized. Shared by trackHeights and getTrackYOffset so the two can't
2349
2875
  * disagree. Reads `activeDisplay` — the display TrackContainer actually
2350
2876
  * mounts — rather than re-picking `displays[0]`, so the view's height math
2351
2877
  * can't diverge from what is on screen.
2352
2878
  */
2353
- trackHeight(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/mobx-state-tree").IAnyType> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IAnyType>>)[number]): any;
2879
+ trackHeight(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>)[number]): number;
2880
+ /**
2881
+ * #method
2882
+ * the measured in-flow label band above a track's rendering container,
2883
+ * 0 until TrackContainer has measured one or when no label is in flow
2884
+ */
2885
+ trackLabelBand(track: (import("@jbrowse/mobx-state-tree").IMSTArray<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>)[number]): number;
2354
2886
  /**
2355
2887
  * #getter
2356
2888
  */
@@ -2363,6 +2895,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2363
2895
  * #getter
2364
2896
  */
2365
2897
  readonly height: number;
2898
+ /**
2899
+ * #getter
2900
+ * The display height of each track a whole-stack resize moves, by track
2901
+ * instance id: every shown track that is not minimized.
2902
+ */
2903
+ readonly resizableTrackHeights: Map<string, number>;
2366
2904
  /**
2367
2905
  * #method
2368
2906
  * Y offset (in pixels, from the top of the view) where a track's
@@ -2370,19 +2908,24 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2370
2908
  * first, then unpinned), from the same constants TrackContainer lays its
2371
2909
  * Paper out with. Returns `undefined` if the track is not present.
2372
2910
  *
2373
- * Exact while track labels are hidden or overlapping. With an offset
2374
- * label the answer is short by one label box per labelled track above
2375
- * this one — see `trackChromeHeight` for why that box is not derivable
2376
- * here.
2911
+ * Includes each track's measured label band, this track's own included,
2912
+ * since an in-flow label sits above the rendering container inside the
2913
+ * same Paper. Exact once TrackContainer has measured; before that it is
2914
+ * short by the unmeasured bands.
2377
2915
  */
2378
2916
  getTrackYOffset(trackId: string): number | undefined;
2917
+ /**
2918
+ * #getter
2919
+ * `getTrackYOffset` for every shown track, by trackId, from one walk
2920
+ */
2921
+ readonly trackYOffsets: Map<string, number>;
2379
2922
  /**
2380
2923
  * #method
2381
2924
  * the pinned or unpinned sibling list a track renders within; move
2382
2925
  * up/down/top/bottom reorder inside this section rather than the full
2383
2926
  * `tracks` array, since the two sections lay out independently
2384
2927
  */
2385
- trackSection(id: string): any[];
2928
+ trackSection(id: string): (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>)[];
2386
2929
  /**
2387
2930
  * #getter
2388
2931
  */
@@ -2393,16 +2936,16 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2393
2936
  readonly fitBpPerPx: number;
2394
2937
  /**
2395
2938
  * #getter
2396
- * The zoom-out limit. This view's own fit, except while a container holds
2397
- * it on a shared scale coarser than that — a small genome next to a large
2398
- * one, drawn short so the two compare by length.
2939
+ * The zoom-out limit. Equal to the fit for this view's regions, except
2940
+ * while a container holds it on a coarser shared scale, such as a small
2941
+ * genome next to a large one, drawn short so the two compare by length.
2399
2942
  *
2400
- * Raising the LIMIT is what makes such a scale survive: written past the
2401
- * limit instead, it is undone by the first thing that clamps — a wheel
2402
- * tick, a rubberband, a `setDisplayedRegions` — which is how the dotplot's
2403
- * locked aspect ratio once turned "zoom out" into a zoom in
2404
- * (`axisMaxBpPerPx`). Here every route to a zoom clamps against the same
2405
- * ceiling, so full zoom-out LANDS on the shared scale.
2943
+ * The shared scale raises the limit. A bpPerPx written past the limit
2944
+ * would be undone by the first operation that clamps (a wheel tick, a
2945
+ * rubberband, a `setDisplayedRegions`), as with the dotplot's locked
2946
+ * aspect ratio turning "zoom out" into a zoom in (`axisMaxBpPerPx`).
2947
+ * Every zoom clamps against the same ceiling, so full zoom-out stops at
2948
+ * the shared scale.
2406
2949
  */
2407
2950
  readonly maxBpPerPx: number;
2408
2951
  /**
@@ -2411,8 +2954,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2411
2954
  * or 0 for a standalone view, a mode that is off, and a stack that cannot
2412
2955
  * answer yet.
2413
2956
  *
2414
- * Pulled rather than pushed down into a volatile: the number is a
2415
- * function of every row's fit, all of which move on a resize, and a
2957
+ * A getter rather than a volatile the container writes: the number is a
2958
+ * function of every row's fit, all of which change on a resize, and a
2416
2959
  * stored copy would be stale by the next layout.
2417
2960
  */
2418
2961
  readonly sharedFitBpPerPx: number;
@@ -2449,11 +2992,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2449
2992
  /**
2450
2993
  * #getter
2451
2994
  */
2452
- readonly trackMap: Map<string, any>;
2995
+ readonly trackMap: Map<string, import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>>;
2453
2996
  /**
2454
2997
  * #method
2455
2998
  */
2456
- getTrack(id: string): any;
2999
+ getTrack(id: string): (import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel> & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/core/PluginManager").PluggableStateModelUnion<import("@jbrowse/core/pluggableElementTypes/models").TrackModelOf<LinearDisplayModel>, import("@jbrowse/core/util/tracks").TrackSnapshot>>) | undefined;
2457
3000
  /**
2458
3001
  * #method
2459
3002
  * displayId of the active (shown) display for a track in this view, used
@@ -2461,6 +3004,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2461
3004
  * track's other displays
2462
3005
  */
2463
3006
  getActiveDisplayId(trackId: string): string | undefined;
3007
+ } & {
3008
+ /**
3009
+ * #action
3010
+ * Dismiss the search picker without choosing a place.
3011
+ */
3012
+ closeSearchPicker(): void;
2464
3013
  } & {
2465
3014
  /**
2466
3015
  * #action
@@ -2473,7 +3022,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2473
3022
  /**
2474
3023
  * #action
2475
3024
  */
2476
- setColorByCDS(flag: boolean): void;
3025
+ setColorByFrame(flag: boolean): void;
2477
3026
  /**
2478
3027
  * #action
2479
3028
  */
@@ -2485,19 +3034,34 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2485
3034
  /**
2486
3035
  * #action
2487
3036
  */
2488
- setWidth(newWidth: number): void;
3037
+ setTrackLabelBand(trackId: string, band: number): void;
2489
3038
  /**
2490
3039
  * #action
2491
3040
  */
2492
- setError(error: unknown): void;
3041
+ setScrollPortExcess(px: number | undefined): void;
2493
3042
  /**
2494
3043
  * #action
3044
+ * Grow or shrink every unminimized track by `distance` px in all, each
3045
+ * by its share of the height it has above the display minimum. `from` is
3046
+ * the heights to scale, by track instance id; a drag passes the heights
3047
+ * it started with, so whole-pixel rounding does not compound frame by
3048
+ * frame. Returns how far the stack moved.
2495
3049
  */
2496
- setIsScalebarRefNameMenuOpen(isOpen: boolean): void;
3050
+ resizeTracks(distance: number, from?: any): number;
2497
3051
  /**
2498
3052
  * #action
3053
+ * A resize keeps the window in bp, so `bpPerPx` follows the new width
3054
+ * and the view keeps framing the same sequence (ADR-070).
2499
3055
  */
2500
- setScalebarRefNameClickPending(pending: boolean): void;
3056
+ setWidth(newWidth: number): void;
3057
+ /**
3058
+ * #action
3059
+ */
3060
+ setError(error: unknown): void;
3061
+ /**
3062
+ * #action
3063
+ */
3064
+ setIsScalebarRefNameMenuOpen(isOpen: boolean): void;
2501
3065
  /**
2502
3066
  * #action
2503
3067
  */
@@ -2517,11 +3081,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2517
3081
  /**
2518
3082
  * #action
2519
3083
  */
2520
- setShowGridlines(b: boolean): void;
2521
- /**
2522
- * #action
2523
- */
2524
- setLabelsVisible(arg: boolean): void;
3084
+ setAxisGrid(grid: boolean): void;
2525
3085
  /**
2526
3086
  * #action
2527
3087
  * set temporary vertical guides (e.g., for LD display hover)
@@ -2556,8 +3116,20 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2556
3116
  setOffsets(left?: BpOffset, right?: BpOffset): void;
2557
3117
  /**
2558
3118
  * #action
3119
+ * Raise the picker over search results that name more than one place.
3120
+ * @param onPick - where a picked result lands; by default it navigates
3121
+ * there and shows the track its index came from
3122
+ */
3123
+ setSearchResults(searchResults: BaseResult[], searchQuery: string, assemblyName: string, onPick?: (result: BaseResult) => Promise<unknown>): void;
3124
+ /**
3125
+ * #action
3126
+ * Search the view's assembly by name, for a host listing the hits
3127
+ * itself. A row's `pick` lands as the search box does: it navigates
3128
+ * there and shows the track the hit's index came from.
2559
3129
  */
2560
- setSearchResults(searchResults: BaseResult[], searchQuery: string, assemblyName: string): void;
3130
+ search(query: string, opts?: {
3131
+ signal?: AbortSignal;
3132
+ }): Promise<SearchHits>;
2561
3133
  /**
2562
3134
  * #action
2563
3135
  */
@@ -2567,33 +3139,62 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2567
3139
  */
2568
3140
  hideTrack(trackId: string): boolean;
2569
3141
  } & {
3142
+ /**
3143
+ * #action
3144
+ * Resize every unminimized track so the view is exactly as tall as the
3145
+ * scroll port it sits in. Does nothing until the view has measured one.
3146
+ */
3147
+ fitTracksToWindow(): void;
2570
3148
  /**
2571
3149
  * #action
2572
3150
  * showTrack for a track whose display state model may be lazily
2573
3151
  * loaded: loads it, then shows
2574
3152
  */
2575
3153
  launchTrack(trackId: string, initialSnapshot?: any, displayInitialSnapshot?: any, inlineConf?: Record<string, unknown>): Promise<any>;
2576
- } & {
2577
3154
  /**
2578
3155
  * #action
3156
+ * Replace the highlights `highlights` reads, each written as the launch
3157
+ * spec's `highlight` writes one: a locstring, or an object whose
3158
+ * `assemblyName` defaults to the view's. Throws on one that names no
3159
+ * region, writing none.
2579
3160
  */
2580
- moveTrackDown(id: string): void;
3161
+ setHighlights(highlights: readonly (string | HighlightInput)[]): void;
2581
3162
  /**
2582
3163
  * #action
3164
+ * Show files from the user's disk as session tracks: one per data file,
3165
+ * beside the index among them that names it, its type guessed from its
3166
+ * name. Adds nothing when one file has no known type. Resolves the new
3167
+ * tracks' ids.
3168
+ */
3169
+ showFiles(files: readonly File[]): Promise<string[]>;
3170
+ } & {
3171
+ /**
3172
+ * #method
3173
+ * The shown track a move action means: the menu passes a track model's
3174
+ * own `id`, an agent passes the `trackId` it knows the track by, and
3175
+ * both name one shown track. Answers the model id, or the argument
3176
+ * unchanged when nothing shown matches, so the move reports it.
2583
3177
  */
2584
- moveTrackUp(id: string): void;
3178
+ trackModelId(idOrTrackId: string): string;
3179
+ } & {
3180
+ moveTrack: (moving: string, target: string) => void;
2585
3181
  /**
2586
3182
  * #action
2587
3183
  */
2588
- moveTrackToTop(id: string): void;
3184
+ moveTrackDown(idOrTrackId: string): void;
2589
3185
  /**
2590
3186
  * #action
2591
3187
  */
2592
- moveTrackToBottom(id: string): void;
3188
+ moveTrackUp(idOrTrackId: string): void;
2593
3189
  /**
2594
3190
  * #action
2595
3191
  */
2596
- moveTrack(movingId: string, targetId: string): void;
3192
+ moveTrackToTop(idOrTrackId: string): void;
3193
+ /**
3194
+ * #action
3195
+ */
3196
+ moveTrackToBottom(idOrTrackId: string): void;
3197
+ } & {
2597
3198
  /**
2598
3199
  * #action
2599
3200
  */
@@ -2606,7 +3207,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2606
3207
  /**
2607
3208
  * #action
2608
3209
  */
2609
- setTrackLabels(setting: 'overlapping' | 'offset' | 'hidden'): void;
3210
+ setTrackLabels(setting: ViewTrackLabelMode): void;
2610
3211
  /**
2611
3212
  * #action
2612
3213
  */
@@ -2619,24 +3220,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2619
3220
  * #action
2620
3221
  */
2621
3222
  toggleTrackSelector(): import("@jbrowse/core/util").Widget;
2622
- /**
2623
- * #method
2624
- * Helper method for the fetchSequence.
2625
- * Retrieves the corresponding regions that were selected by the
2626
- * rubberband
2627
- *
2628
- * @param leftOffset - `object as {start, end, index, offset}`, offset = start
2629
- * of user drag
2630
- * @param rightOffset - `object as {start, end, index, offset}`,
2631
- * offset = end of user drag
2632
- * @returns array of Region[]
2633
- */
2634
- getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset): {
2635
- assemblyName: string;
2636
- refName: string;
2637
- start: number;
2638
- end: number;
2639
- }[];
2640
3223
  /**
2641
3224
  * #action
2642
3225
  */
@@ -2645,10 +3228,6 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2645
3228
  * #action
2646
3229
  */
2647
3230
  setDraggingTrackId(idx?: string): void;
2648
- /**
2649
- * #action
2650
- */
2651
- setLastTrackDragY(y: number): void;
2652
3231
  /**
2653
3232
  * #action
2654
3233
  * called while dragging a track over the track at `targetId`; reorders
@@ -2660,11 +3239,25 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2660
3239
  * #action
2661
3240
  */
2662
3241
  setLaunch(launch?: LaunchInput<InitState>): void;
3242
+ } & {
2663
3243
  /**
2664
3244
  * #method
2665
- * creates an svg export and save using FileSaver
3245
+ * Helper method for the fetchSequence.
3246
+ * Returns the regions the user selected with the
3247
+ * rubberband
3248
+ *
3249
+ * @param leftOffset - `object as {start, end, index, offset}`, offset = start
3250
+ * of user drag
3251
+ * @param rightOffset - `object as {start, end, index, offset}`,
3252
+ * offset = end of user drag
3253
+ * @returns array of Region[]
2666
3254
  */
2667
- exportSvg(opts?: ExportSvgOptions): Promise<void>;
3255
+ getSelectedRegions(leftOffset?: BpOffset, rightOffset?: BpOffset): {
3256
+ assemblyName: string;
3257
+ refName: string;
3258
+ start: number;
3259
+ end: number;
3260
+ }[];
2668
3261
  } & {
2669
3262
  slide: (viewWidths: number) => void;
2670
3263
  zoom: (targetBpPerPx: number) => void;
@@ -2678,19 +3271,18 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2678
3271
  * #getter
2679
3272
  * an ideogram only reads correctly against an entire chromosome: on a
2680
3273
  * sub-region it is a meaningless slice of bands, and the centromere shows
2681
- * up as a lone half-triangle
3274
+ * up as a lone half-triangle. The chromosome also needs bands: a cytoband
3275
+ * file often lists only the main chromosomes, not chrM or the
3276
+ * unplaced scaffolds
2682
3277
  */
2683
3278
  readonly canShowCytobands: boolean;
2684
3279
  /**
2685
3280
  * #getter
2686
3281
  * the `showCytobands` setting gated by whether cytobands can be shown at
2687
- * all (whole chromosome + data present) — i.e. actually on screen
3282
+ * all (whole chromosome with bands in the cytoband file) and by the header
3283
+ * overview they draw in being on, which the SVG export follows too
2688
3284
  */
2689
3285
  readonly effectiveShowCytobands: boolean;
2690
- /**
2691
- * #getter
2692
- */
2693
- readonly anyCytobandsExist: boolean;
2694
3286
  /**
2695
3287
  * #getter
2696
3288
  * the cytoband is displayed to the right of the chromosome name, and
@@ -2707,6 +3299,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2707
3299
  * return the view menu items
2708
3300
  */
2709
3301
  menuItems(): MenuItem[];
3302
+ /**
3303
+ * #method
3304
+ * the view menu's Highlights submenu; extend this to add a row there
3305
+ */
3306
+ highlightsSubMenuItems(): MenuItem[];
2710
3307
  /**
2711
3308
  * #method
2712
3309
  * what a plugin can start from the selected region — a synteny view, a
@@ -2735,9 +3332,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2735
3332
  /**
2736
3333
  * #getter
2737
3334
  * dynamic blocks represent the exact coordinates of the currently
2738
- * visible genome regions on the screen. they are similar to static
2739
- * blocks, but static blocks can go offscreen while dynamic blocks
2740
- * represent exactly what is on screen
3335
+ * visible genome regions on the screen. Static blocks can go
3336
+ * offscreen, while dynamic blocks represent exactly what is on screen
2741
3337
  */
2742
3338
  readonly dynamicBlocks: BlockSet;
2743
3339
  /**
@@ -2769,12 +3365,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2769
3365
  * The frame exists because those three are laid out across every
2770
3366
  * displayed region rather than across the viewport — it overhangs on
2771
3367
  * both sides — so their `x` values are stable under a scroll and only
2772
- * this number moves. `scalebarRefNameLabels` is the exception and says
2773
- * so: its `transform` is already a screen x, because a sticky label's
3368
+ * this number moves. `scalebarRefNameLabels` is the exception: its `transform` is already a screen x, because a sticky label's
2774
3369
  * position is a function of the scroll rather than of block geometry.
2775
3370
  *
2776
- * **The subtraction must happen here, in float64, and that is the
2777
- * load-bearing part.** `offsetPx` is a whole-genome pixel coordinate —
3371
+ * **The subtraction must happen here, in float64.** `offsetPx` is a whole-genome pixel coordinate —
2778
3372
  * hg38 chr1 at base resolution is already past 1e10 — and a length that
2779
3373
  * size does not survive the trip through CSS: the transform matrix is
2780
3374
  * float32 by the time it reaches the compositor, where consecutive
@@ -2786,13 +3380,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2786
3380
  * assemblies at high zoom, which is not where anyone tests. Both
2787
3381
  * operands here are large and their difference is bounded by the
2788
3382
  * overhang (a block or two), so what reaches CSS is small and exact.
2789
- * Same rule as the GPU side, one layer up —
3383
+ * This applies the GPU side's rule one layer up; see
2790
3384
  * `agent-docs/reference/BP_PRECISION.md`.
2791
3385
  *
2792
3386
  * Published because it is the one piece of coordinate arithmetic a host
2793
3387
  * drawing its own chrome would otherwise have to know, and because
2794
- * having it written out at each call site is how the two in-tree copies
2795
- * came to disagree about rounding. Round it where the content is text
3388
+ * copies written out at each call site disagree about rounding. Round it where the content is text
2796
3389
  * (a fractional offset blurs a label); leave it alone for paths and
2797
3390
  * boxes.
2798
3391
  */
@@ -2835,11 +3428,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2835
3428
  * sticky, transform, maxWidth, paddingLeft, text}` each. One per run of
2836
3429
  * same-refName regions, plus a "sticky" one pinned to the viewport's
2837
3430
  * left edge naming the refName under it, so panning into a chromosome
2838
- * does not scroll its own name off the screen.
3431
+ * does not scroll the chromosome's name off the screen.
2839
3432
  *
2840
- * Three rules live in here that a host drawing region names will
2841
- * otherwise rediscover the hard way, and two of them are invisible until
2842
- * the data is awkward:
3433
+ * This getter applies three rules that a host drawing region names would
3434
+ * otherwise have to rediscover, and two of them are invisible until the
3435
+ * data is awkward:
2843
3436
  *
2844
3437
  * - the sticky label rides the rightmost run that has scrolled off the
2845
3438
  * left, not the region's first block — that one is gone from
@@ -2851,7 +3444,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2851
3444
  * is fitted to the whole run, and `displayedRegionIndex` /
2852
3445
  * `lastDisplayedRegionIndex` bracket what it stands for.
2853
3446
  * - a name is drawn whole or not at all, measured against the space its
2854
- * run leaves. Clipped to its own width, `chr16` reads as `chr1` —
3447
+ * run leaves. Clipped to that space, `chr16` reads as `chr1` —
2855
3448
  * a different chromosome rather than a shortened name, which is why
2856
3449
  * this is a fit test rather than an ellipsis.
2857
3450
  *
@@ -2867,10 +3460,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2867
3460
  * into that through `scalebarDisplayPrefix`) and whether it is flipped.
2868
3461
  * A ` [rev]` there is a fact about the ROW; the same marker on a
2869
3462
  * chromosome name means that one region, which only happens under mixed
2870
- * orientation. `captionSpanPx` is the width it takes, which the
2871
- * coordinate numbers stay out from under. The SVG export deliberately
3463
+ * orientation. `captionSpanPx` is the width it takes: the sticky label
3464
+ * pins to its right edge rather than the viewport's, and the coordinate
3465
+ * numbers stay out from under it. The SVG export deliberately
2872
3466
  * calls `getScalebarRefNameLabels` itself with no prefix rather than
2873
- * reading this, since it draws its own assembly name above the ruler.
3467
+ * reading this, since it draws the assembly name itself above the ruler.
2874
3468
  */
2875
3469
  readonly scalebarRefNameLabels: {
2876
3470
  labels: import("./util.ts").ScalebarRefNameLabel[];
@@ -2882,36 +3476,36 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2882
3476
  * Every span along the row that is not track data, as plain geometry in
2883
3477
  * the staticBlocks frame — the same frame as gridlineTicks and
2884
3478
  * scalebarLabels, so one `translateX(staticBlocksTranslateX)` places all
2885
- * three. Three kinds, and a host drawing its own chrome needs all of
2886
- * them:
3479
+ * three. A host that draws the row's chrome itself needs all three kinds:
2887
3480
  *
2888
3481
  * - `seam`: the 3px bar at a region's right edge. Displayed regions are
2889
- * laid out **contiguously** — calculateStaticBlocks emits boundary
2890
- * padding only before the first region and after the last — so this
3482
+ * laid out **contiguously** (calculateStaticBlocks emits boundary
3483
+ * padding only before the first region and after the last), so this
2891
3484
  * bar is the only thing separating two of them. Without it a
2892
- * two-region view reads as a one-region view scrolled somewhere
2893
- * strange. `isRightEndOfDisplayedRegion` is what marks it, and the
2894
- * right edge of the blocks currently *loaded* — which is what block
2895
- * geometry hands you — is not the same filter.
3485
+ * two-region view looks like a single region.
3486
+ * `isRightEndOfDisplayedRegion` marks it; the right edge of the
3487
+ * currently *loaded* blocks, which block geometry gives you, is a
3488
+ * different set.
2896
3489
  * - `elided`: a region too narrow to draw at this zoom. Whole-genome on
2897
- * a real assembly is mostly these — hg38 has 455 sequences and all
2898
- * but the 24 chromosomes land sub-pixel — so a host that skips them
2899
- * renders that tail as nothing at all.
3490
+ * a real assembly is mostly these (hg38 has 455 sequences, and all
3491
+ * but the 24 chromosomes are under a pixel wide), so a host that
3492
+ * skips them leaves that part of the row empty.
2900
3493
  * - `boundary`: past the start of the first region or the end of the
2901
- * last. Greying it is what makes the last region's seam read as the
2902
- * edge of a filled area rather than a rule floating in the track.
2903
- *
2904
- * Elided blocks get no seam even though they carry the flag: at the
2905
- * zoom where regions elide, one bar per region is a solid grey wall.
2906
- *
2907
- * PaddingBlocks is the in-tree consumer. The SVG export is deliberately
2908
- * NOT one: `SVGRegionSeparators` walks dynamicBlocks itself and draws
2909
- * only the seam, because `elided` and `boundary` are chrome for an
2910
- * interactive row rather than information a figure carries — striped
2911
- * grey saying "regions here are too narrow to draw" is noise in a
2912
- * static image, and at whole-genome zoom it would be most of the row.
2913
- * The seam is the one that must survive: regions lay out contiguously,
2914
- * so it is all that separates two of them.
3494
+ * last. Greying it makes the last region's seam read as the edge of a
3495
+ * filled area, where it would otherwise look like a line in the
3496
+ * middle of the track.
3497
+ *
3498
+ * Elided blocks get no seam even though they have the flag: at the
3499
+ * zoom where regions elide, one bar per region would fill the row solid
3500
+ * grey.
3501
+ *
3502
+ * PaddingBlocks is the in-tree consumer. The SVG export does not use
3503
+ * it: `SVGRegionSeparators` walks dynamicBlocks itself and draws only
3504
+ * the seam, because `elided` and `boundary` mark state for an
3505
+ * interactive row. In a static figure the striped grey would cover most
3506
+ * of the row at whole-genome zoom. The export keeps the seam because
3507
+ * regions lay out contiguously and the seam is all that separates two
3508
+ * of them.
2915
3509
  */
2916
3510
  readonly paddingSpans: readonly {
2917
3511
  key: string;
@@ -2943,8 +3537,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2943
3537
  * viewport. False both when the view holds no regions at all and when
2944
3538
  * it holds some but is scrolled entirely off them; either way there is
2945
3539
  * no visible span for the scalebar, ruler and refName labels to
2946
- * describe, which is what the SVG export's header checks before drawing
2947
- * one. Distinct from `hasDisplayedRegions`, which only asks whether the
3540
+ * describe. The SVG export checks it before drawing its header.
3541
+ * Distinct from `hasDisplayedRegions`, which only asks whether the
2948
3542
  * view has been given regions, not whether any are on screen.
2949
3543
  */
2950
3544
  readonly hasVisibleContent: boolean;
@@ -2980,7 +3574,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2980
3574
  /**
2981
3575
  * #getter
2982
3576
  * Right edge (px, viewport-relative) of the on-screen content, clamped
2983
- * to the track — where a right-pinned overlay such as a wiggle's colour
3577
+ * to the track — where a right-pinned overlay such as a wiggle's color
2984
3578
  * or score legend belongs, rather than out in the empty gutter the
2985
3579
  * regions can leave at whole-genome zoom. `@jbrowse/display-kit`'s
2986
3580
  * `contentRightEdgePx` states the rule; an SVG export applies the same
@@ -2990,7 +3584,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2990
3584
  * array of fresh objects on every pan and zoom frame, so a component
2991
3585
  * that derived this number itself re-rendered on every frame of every
2992
3586
  * gesture — to produce, whenever content fills the track, the unchanged
2993
- * `trackWidthPx`. Reading the scalar lets MobX's `===` stop the chain at
3587
+ * `trackWidthPx`. A component that reads the scalar lets MobX's `===` stop the chain at
2994
3588
  * this computed instead. Measured over 20 zoom frames: the wiggle
2995
3589
  * family's three body instances fell from 66 renders to 7.
2996
3590
  */
@@ -3020,23 +3614,22 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3020
3614
  readonly visibleLocStrings: string;
3021
3615
  /**
3022
3616
  * #getter
3023
- * **What a debounced consumer clips to**: the coarse blocks once the
3024
- * view has settled at least once, the live ones before that.
3617
+ * **The blocks a debounced consumer clips to**: the coarse blocks once
3618
+ * the view has settled at least once, the live ones before that.
3025
3619
  *
3026
- * The coarse blocks exist so a per-bp scan does not recompute on every
3027
- * animation frame during a pan or zoom — wiggle's autoscale domain, the
3028
- * alignments coverage scale and MAF's coverage band are the three — and
3029
- * while they are stale
3030
- * the answer is merely a frame or two old, which is what the debounce
3031
- * means. **Empty is different in kind.** A scan over no blocks yields no
3032
- * entries, and no entries is not a stale domain, it is the fallback one:
3033
- * `[0,1]`, which draws a line plot blank and a density plot saturated.
3034
- * That window is the 500ms between a view initializing and the coarse
3035
- * autorun's first run, and data can now land inside it — the per-region
3036
- * fetch used to be trailing-edge at 600ms, so it never did.
3620
+ * The coarse blocks stop a per-bp scan from recomputing on every
3621
+ * animation frame during a pan or zoom. Wiggle's autoscale domain, the
3622
+ * alignments coverage scale and MAF's coverage band use them. While the
3623
+ * coarse blocks are stale the result is a frame or two old, as the
3624
+ * debounce intends. **Empty coarse blocks are a different case.** A scan
3625
+ * over no blocks yields no entries, and the consumer falls back to the
3626
+ * domain `[0,1]`, which draws a line plot blank and a density plot
3627
+ * saturated. The coarse blocks are empty for the 500ms between a view
3628
+ * initializing and the coarse autorun's first run, and data can load
3629
+ * within that window.
3037
3630
  *
3038
- * One recompute at that transition, against N per frame, which is the
3039
- * trade the guard was making anyway.
3631
+ * Falling back to the live blocks costs one extra recompute at that
3632
+ * transition, compared with N per frame without the debounce.
3040
3633
  */
3041
3634
  readonly settledDynamicBlocks: ContentBlock[];
3042
3635
  /**
@@ -3069,7 +3662,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3069
3662
  *
3070
3663
  * The coarse blocks are a 500ms throttle, and every consumer trades
3071
3664
  * freshness for not recomputing per animation frame — the location box,
3072
- * canvas's on-screen feature set, and the two per-bp scans behind
3665
+ * the feature display's on-screen feature set, and the two per-bp scans behind
3073
3666
  * `settledDynamicBlocks`. That trade is only sound while the answer is a
3074
3667
  * few frames old. **A jump makes it unrelated instead**, because there is
3075
3668
  * nothing to coalesce: the viewport left behind is not an approximation of
@@ -3077,21 +3670,29 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3077
3670
  * as a navigation that didn't happen, and wiggle's autoscale domain is
3078
3671
  * computed over the window the user just left — measured at `[0,200]`
3079
3672
  * against a correct `[0,300]` when a 40bp coarse window survived a jump to
3080
- * 4040bp on screen. Only the per-region fetch moving to the leading edge
3081
- * made that reachable: at 600ms the data never landed inside the hole.
3673
+ * 4040bp on screen.
3082
3674
  *
3083
- * **The continuous paths deliberately do not come through here.** The
3675
+ * **The continuous paths do not call this.** The
3084
3676
  * spring zoom writes through `zoomTo` per frame and a drag through
3085
3677
  * `scrollTo`, so this adds no per-frame work; the settle is idempotent
3086
3678
  * (`setCoarseDynamicBlocks` compares block keys), so the debounced
3087
- * autorun's own follow-up run costs nothing.
3679
+ * autorun's follow-up run costs nothing.
3088
3680
  *
3089
- * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` is what
3090
- * makes that true of the next one — it scans this file for the writes and
3681
+ * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` enforces
3682
+ * that for the next one: it scans this file for the writes and
3091
3683
  * fails on a placer that reaches neither the settle nor its named list of
3092
3684
  * continuous paths. Two passes by hand missed four.
3093
3685
  */
3094
3686
  settleCoarseBlocks(): void;
3687
+ } & {
3688
+ /**
3689
+ * #method
3690
+ * renders the view to SVG markup, which it returns; saves it through
3691
+ * FileSaver unless `save: false`. A `viewWidth` lays the view out at
3692
+ * that many pixels for the export, as a window that wide would, and
3693
+ * puts the on-screen width back after.
3694
+ */
3695
+ exportSvg(opts?: ExportSvgOptions): Promise<string>;
3095
3696
  } & {
3096
3697
  /**
3097
3698
  * #action
@@ -3104,17 +3705,17 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3104
3705
  moveTo(start?: BpOffset, end?: BpOffset): void;
3105
3706
  /**
3106
3707
  * #action
3107
- * Place the viewport by the pair of PIXEL quantities it used to be stored
3108
- * as. Prefer `setWindow`: pixels mean nothing without the width they were
3708
+ * Place the viewport by `bpPerPx` and `offsetPx`, the pixel pair the view
3709
+ * stored before it stored the window. Prefer `setWindow`: pixels mean nothing without the width they were
3109
3710
  * measured at, so a round trip through here is only exact while the width
3110
3711
  * holds still. Kept for callers that genuinely have pixels — a wheel
3111
- * gesture, a rubberband — and for reading old snapshots.
3712
+ * gesture, a rubberband.
3112
3713
  */
3113
3714
  setNewView(bpPerPx: number, offsetPx: number): void;
3114
3715
  /**
3115
3716
  * #action
3116
3717
  * Place the viewport by the pair it is actually STORED as: the window's
3117
- * width and left edge, both in bp. `setNewView`'s bp-space twin, and the
3718
+ * width and left edge, both in bp. The bp-space counterpart of `setNewView`, and the
3118
3719
  * right one for anything that captures a viewport and puts it back later
3119
3720
  * (an Undo, a saved location) — those two moments can be a window resize
3120
3721
  * apart, and this pair survives one where a pixel pair does not.
@@ -3136,8 +3737,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3136
3737
  setWindowFrame(windowWidthBp: number, windowStartBp: number): void;
3137
3738
  /**
3138
3739
  * #action
3139
- * The worst jump of them to leave unsettled: the coarse blocks are keyed
3140
- * by `displayedRegionIndex`, so a set that outlives the region list has a
3740
+ * Settles the coarse blocks, since this is the worst jump to leave
3741
+ * unsettled: they are keyed by `displayedRegionIndex`, so a set that outlives the region list has a
3141
3742
  * consumer reading one contig's data against another's blocks.
3142
3743
  */
3143
3744
  setDisplayedRegions(regions: Region[]): void;
@@ -3282,6 +3883,24 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3282
3883
  * adds 20% padding on each side)
3283
3884
  */
3284
3885
  navToLocation(parsedLocString: ParsedLocString, assemblyName?: string, grow?: number): Promise<void>;
3886
+ /**
3887
+ * #action
3888
+ * adds the region in view to the session's highlights
3889
+ */
3890
+ highlightCurrentRegion(): void;
3891
+ /**
3892
+ * #action
3893
+ * navigates to a highlight, zoomed out a little for context. Goes through
3894
+ * a locstring so it reaches a refName the view is not displaying
3895
+ */
3896
+ navToHighlight(highlight: HighlightType): Promise<boolean>;
3897
+ } & {
3898
+ /**
3899
+ * #action
3900
+ * navigates to the most recently added highlight on this view's
3901
+ * assemblies
3902
+ */
3903
+ navigateNewestHighlight(): Promise<void>;
3285
3904
  } & {
3286
3905
  /**
3287
3906
  * #method
@@ -3300,31 +3919,30 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3300
3919
  } | undefined;
3301
3920
  /**
3302
3921
  * #method
3303
- * Map a highlight or bookmark region to its pixel position+width inside
3922
+ * Map a highlight region to its pixel position+width inside
3304
3923
  * the tracks container. Falls back to the raw refName if the region's
3305
3924
  * assemblyName is missing or unknown so highlights authored without an
3306
3925
  * assembly still render in single-assembly views.
3307
3926
  */
3308
- getHighlightCoords(region: {
3309
- assemblyName?: string;
3310
- refName: string;
3311
- start: number;
3312
- end: number;
3313
- }): {
3927
+ getHighlightCoords(region: HighlightRegion): {
3314
3928
  width: number;
3315
3929
  left: number;
3316
3930
  } | undefined;
3931
+ /**
3932
+ * #method
3933
+ * y ranges, from the top of the highlight bands, of tracks whose display
3934
+ * sets `drawsGenomicCoordinates` to false; the bands skip them
3935
+ */
3936
+ nonGenomicTrackBands(): {
3937
+ top: number;
3938
+ height: number;
3939
+ }[];
3317
3940
  /**
3318
3941
  * #method
3319
3942
  * like getHighlightCoords but laid out against the overview scalebar and
3320
3943
  * shifted by the cytoband offset
3321
3944
  */
3322
- getOverviewHighlightCoords(region: {
3323
- assemblyName?: string;
3324
- refName: string;
3325
- start: number;
3326
- end: number;
3327
- }): {
3945
+ getOverviewHighlightCoords(region: HighlightRegion): {
3328
3946
  width: number;
3329
3947
  left: number;
3330
3948
  } | undefined;
@@ -3346,6 +3964,14 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3346
3964
  * #getter
3347
3965
  */
3348
3966
  readonly centerLineInfo: import("@jbrowse/core/util/Base1DUtils").PxToBpResult | undefined;
3967
+ } & {
3968
+ /**
3969
+ * #action
3970
+ * a region edit from the ruler's menu as one action, which a synteny
3971
+ * stack's follow reads as the reader's gesture on this row; see
3972
+ * `setDisplayedRegionsKeepingCenter`
3973
+ */
3974
+ editDisplayedRegions(edit: RegionEdit): void;
3349
3975
  } & {
3350
3976
  /**
3351
3977
  * #method
@@ -3353,8 +3979,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3353
3979
  rubberbandClickMenuItems(clickOffset: BpOffset): MenuItem[];
3354
3980
  /**
3355
3981
  * #method
3356
- * returns menu items for a highlight context menu. plugins can extend
3357
- * this via Core-extendPluggableElement to add their own items
3982
+ * a highlight chip's menu rows after Dismiss; extend this to add one
3358
3983
  */
3359
3984
  highlightMenuItems(_highlight: HighlightType): MenuItem[];
3360
3985
  } & {
@@ -3364,38 +3989,45 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3364
3989
  * `centerAt`'s animated twin: the same destination, reached along the
3365
3990
  * arc instead of jumped to, at the zoom the view is already on.
3366
3991
  */
3367
- flyToCenter(coord: number, refName: string): void;
3992
+ flyToCenter(coord: number, refName: string, displayedRegionIndex?: number): void;
3993
+ /**
3994
+ * #action
3995
+ * A flight to a linear bp centre at the zoom the view is on, or is
3996
+ * already flying to, widened where that is narrower than `fitWidthBp`.
3997
+ * The current width mid-flight is a point on the arc, so a second
3998
+ * flight read from it would land pulled back.
3999
+ */
4000
+ flyToFit(centerBp: number, fitWidthBp: number): void;
3368
4001
  } & {
3369
4002
  afterCreate(): void;
3370
4003
  afterAttach(): void;
3371
- }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>, InitState, "bpPerPx" | "offsetPx">, {
4004
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>, InitState, "bpPerPx" | "colorByCDS" | "offsetPx" | "showCytobandsSetting">, {
3372
4005
  displayName: string | undefined;
3373
4006
  minimized: boolean;
3374
- highlight: HighlightType[];
3375
- showHighlightChips: boolean;
3376
4007
  id: string;
3377
4008
  type: string;
3378
4009
  windowStartBp: number;
3379
4010
  windowWidthBp: number;
3380
4011
  legacyBpPerPx: number;
3381
4012
  displayedRegions: Region[];
3382
- tracks: any[];
4013
+ tracks: import("@jbrowse/core/util/tracks").TrackSnapshot[];
3383
4014
  hideHeader: boolean;
3384
4015
  hideHeaderOverview: boolean;
3385
4016
  hideNoTracksActive: boolean;
3386
4017
  trackSelectorType: string;
3387
- showGridlines: boolean;
3388
- labelsVisible: boolean;
4018
+ showCytobands: boolean;
4019
+ trackLabels: "" | "hidden" | "offset" | "overlapping";
4020
+ axis: import("@jbrowse/mobx-state-tree").ModelSnapshotType<Record<string, import("@jbrowse/mobx-state-tree").IAnyType>>;
4021
+ colorByFrame: boolean;
4022
+ showAminoAcids: boolean;
4023
+ showTrackOutlines: boolean;
3389
4024
  scalebarOnly: boolean;
3390
- launch?: LaunchInput<InitState> | undefined;
3391
- showCytobands?: false | undefined;
3392
- trackLabels?: string | undefined;
3393
- colorByCDS?: true | undefined;
3394
- showAminoAcids?: false | undefined;
3395
- showTrackOutlines?: false | undefined;
4025
+ launch: LaunchInput<InitState> | undefined;
3396
4026
  }>;
3397
- export type LinearGenomeViewStateModel = ReturnType<typeof stateModelFactory>;
4027
+ export interface LinearGenomeViewStateModel extends ReturnType<typeof stateModelFactory> {
4028
+ }
3398
4029
  export type LinearGenomeViewModel = Instance<LinearGenomeViewStateModel>;
4030
+ export type LinearGenomeViewTrack = LinearGenomeViewModel['tracks'][number];
3399
4031
  declare module '@jbrowse/core/PluginManager' {
3400
4032
  interface ViewTypeRegistry {
3401
4033
  LinearGenomeView: LinearGenomeViewStateModel;