@jbrowse/plugin-linear-genome-view 5.0.0-beta.15 → 5.0.0-beta.17

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.
@@ -55,7 +55,7 @@ export interface HighlightRegion {
55
55
  * views: [
56
56
  * {
57
57
  * type: 'LinearGenomeView',
58
- * colorByCDS: true,
58
+ * colorByFrame: true,
59
59
  * assembly: 'hg38',
60
60
  * loc: 'chr1:1,000,000-1,100,000',
61
61
  * tracks: ['genes', 'alignments'],
@@ -65,7 +65,7 @@ export interface HighlightRegion {
65
65
  * ```
66
66
  * `assembly`, `loc`, `tracks`, `tracklist`, `nav` and `highlight` need
67
67
  * on-attach resolution and are captured into the `launch` property below;
68
- * `colorByCDS`, `showAminoAcids`, `showCenterLine` and `trackLabels` are plain
68
+ * `colorByFrame`, `showAminoAcids`, `showCenterLine` and `trackLabels` are plain
69
69
  * view props MST restores natively. Both are written the same way.
70
70
  * At runtime the same model is driven imperatively — every property and action
71
71
  * below is reachable on `viewState.session.views[0]`:
@@ -80,7 +80,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
80
80
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
81
81
  displayName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
82
82
  minimized: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
83
- }, "colorByCDS" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showGridlines" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
83
+ }, "axis" | "colorByFrame" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
84
84
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
85
85
  type: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
86
86
  windowStartBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -95,8 +95,14 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
95
95
  showCenterLine: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
96
96
  showCytobands: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
97
97
  trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
98
- showGridlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
99
- colorByCDS: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
98
+ axis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
99
+ readonly grid: {
100
+ type: "boolean";
101
+ } & {
102
+ defaultValue: boolean;
103
+ };
104
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>, [undefined]>;
105
+ colorByFrame: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
100
106
  showAminoAcids: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
101
107
  showTrackOutlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
102
108
  scalebarOnly: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -184,6 +190,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
184
190
  */
185
191
  volatileGuides: VolatileGuide[];
186
192
  } & {
193
+ /**
194
+ * #getter
195
+ * `axis.grid`: whether the ruler's ticks run down through the tracks.
196
+ */
197
+ readonly axisGrid: boolean;
187
198
  /**
188
199
  * #getter
189
200
  * the launch state that still has something to apply — the gate every
@@ -612,8 +623,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
612
623
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
613
624
  /**
614
625
  * #getter
615
- * What the loading screen says while `showLoading`, read off the
616
- * assembly whose load is the wait; undefined otherwise.
626
+ * The loading screen's text while `showLoading`, taken from the
627
+ * assembly being waited on; undefined otherwise.
617
628
  */
618
629
  readonly loading: import("@jbrowse/core/util/viewStatus").ViewLoading | undefined;
619
630
  /**
@@ -655,12 +666,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
655
666
  * `width`/`staticBlocks` throw by design before the view has been
656
667
  * measured and navigated.
657
668
  *
658
- * **Not `initialized`**, which is the trap this getter exists to close.
669
+ * Use this getter rather than `initialized`.
659
670
  * That one answers "have the assembly's regions loaded", which is only
660
671
  * the first of two async steps: navigating then populates
661
672
  * `displayedRegions`, and in the window between the two `initialized` is
662
673
  * already true while there is still nothing on screen. `showLoading`
663
- * folds in `awaitingInitNavigation`, the getter that exists for exactly
674
+ * folds in `awaitingInitNavigation`, the getter for exactly
664
675
  * that gap.
665
676
  *
666
677
  * `error` is the third outcome and is why this is not a bare
@@ -710,7 +721,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
710
721
  readonly headerHeight: number;
711
722
  /**
712
723
  * #method
713
- * rendered height of a single track, collapsing to a fixed height when
724
+ * rendered height of a single track, using a fixed height when
714
725
  * minimized. Shared by trackHeights and getTrackYOffset so the two can't
715
726
  * disagree. Reads `activeDisplay` — the display TrackContainer actually
716
727
  * mounts — rather than re-picking `displays[0]`, so the view's height math
@@ -789,8 +800,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
789
800
  * or 0 for a standalone view, a mode that is off, and a stack that cannot
790
801
  * answer yet.
791
802
  *
792
- * Pulled rather than pushed down into a volatile: the number is a
793
- * function of every row's fit, all of which move on a resize, and a
803
+ * A getter rather than a volatile the container writes: the number is a
804
+ * function of every row's fit, all of which change on a resize, and a
794
805
  * stored copy would be stale by the next layout.
795
806
  */
796
807
  readonly sharedFitBpPerPx: number;
@@ -857,7 +868,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
857
868
  /**
858
869
  * #action
859
870
  */
860
- setColorByCDS(flag: boolean): void;
871
+ setColorByFrame(flag: boolean): void;
861
872
  /**
862
873
  * #action
863
874
  */
@@ -916,7 +927,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
916
927
  /**
917
928
  * #action
918
929
  */
919
- setShowGridlines(b: boolean): void;
930
+ setAxisGrid(grid: boolean): void;
920
931
  /**
921
932
  * #action
922
933
  * set temporary vertical guides (e.g., for LD display hover)
@@ -1033,7 +1044,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1033
1044
  /**
1034
1045
  * #method
1035
1046
  * Helper method for the fetchSequence.
1036
- * Retrieves the corresponding regions that were selected by the
1047
+ * Returns the regions the user selected with the
1037
1048
  * rubberband
1038
1049
  *
1039
1050
  * @param leftOffset - `object as {start, end, index, offset}`, offset = start
@@ -1080,15 +1091,15 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1080
1091
  * #getter
1081
1092
  * an ideogram only reads correctly against an entire chromosome: on a
1082
1093
  * sub-region it is a meaningless slice of bands, and the centromere shows
1083
- * up as a lone half-triangle. The chromosome needs bands of its own too:
1084
- * a cytoband file often lists only the main chromosomes, not chrM or the
1094
+ * up as a lone half-triangle. The chromosome also needs bands: a cytoband
1095
+ * file often lists only the main chromosomes, not chrM or the
1085
1096
  * unplaced scaffolds
1086
1097
  */
1087
1098
  readonly canShowCytobands: boolean;
1088
1099
  /**
1089
1100
  * #getter
1090
1101
  * the `showCytobands` setting gated by whether cytobands can be shown at
1091
- * all (whole chromosome with bands of its own) and by the header
1102
+ * all (whole chromosome with bands in the cytoband file) and by the header
1092
1103
  * overview they draw in being on, which the SVG export follows too
1093
1104
  */
1094
1105
  readonly effectiveShowCytobands: boolean;
@@ -1141,9 +1152,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1141
1152
  /**
1142
1153
  * #getter
1143
1154
  * dynamic blocks represent the exact coordinates of the currently
1144
- * visible genome regions on the screen. they are similar to static
1145
- * blocks, but static blocks can go offscreen while dynamic blocks
1146
- * represent exactly what is on screen
1155
+ * visible genome regions on the screen. Static blocks can go
1156
+ * offscreen, while dynamic blocks represent exactly what is on screen
1147
1157
  */
1148
1158
  readonly dynamicBlocks: BlockSet;
1149
1159
  /**
@@ -1175,12 +1185,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1175
1185
  * The frame exists because those three are laid out across every
1176
1186
  * displayed region rather than across the viewport — it overhangs on
1177
1187
  * both sides — so their `x` values are stable under a scroll and only
1178
- * this number moves. `scalebarRefNameLabels` is the exception and says
1179
- * so: its `transform` is already a screen x, because a sticky label's
1188
+ * this number moves. `scalebarRefNameLabels` is the exception: its `transform` is already a screen x, because a sticky label's
1180
1189
  * position is a function of the scroll rather than of block geometry.
1181
1190
  *
1182
- * **The subtraction must happen here, in float64, and that is the
1183
- * load-bearing part.** `offsetPx` is a whole-genome pixel coordinate —
1191
+ * **The subtraction must happen here, in float64.** `offsetPx` is a whole-genome pixel coordinate —
1184
1192
  * hg38 chr1 at base resolution is already past 1e10 — and a length that
1185
1193
  * size does not survive the trip through CSS: the transform matrix is
1186
1194
  * float32 by the time it reaches the compositor, where consecutive
@@ -1192,13 +1200,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1192
1200
  * assemblies at high zoom, which is not where anyone tests. Both
1193
1201
  * operands here are large and their difference is bounded by the
1194
1202
  * overhang (a block or two), so what reaches CSS is small and exact.
1195
- * Same rule as the GPU side, one layer up —
1203
+ * This applies the GPU side's rule one layer up; see
1196
1204
  * `agent-docs/reference/BP_PRECISION.md`.
1197
1205
  *
1198
1206
  * Published because it is the one piece of coordinate arithmetic a host
1199
1207
  * drawing its own chrome would otherwise have to know, and because
1200
- * having it written out at each call site is how the two in-tree copies
1201
- * came to disagree about rounding. Round it where the content is text
1208
+ * copies written out at each call site disagree about rounding. Round it where the content is text
1202
1209
  * (a fractional offset blurs a label); leave it alone for paths and
1203
1210
  * boxes.
1204
1211
  */
@@ -1241,11 +1248,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1241
1248
  * sticky, transform, maxWidth, paddingLeft, text}` each. One per run of
1242
1249
  * same-refName regions, plus a "sticky" one pinned to the viewport's
1243
1250
  * left edge naming the refName under it, so panning into a chromosome
1244
- * does not scroll its own name off the screen.
1251
+ * does not scroll the chromosome's name off the screen.
1245
1252
  *
1246
- * Three rules live in here that a host drawing region names will
1247
- * otherwise rediscover the hard way, and two of them are invisible until
1248
- * the data is awkward:
1253
+ * This getter applies three rules that a host drawing region names would
1254
+ * otherwise have to rediscover, and two of them are invisible until the
1255
+ * data is awkward:
1249
1256
  *
1250
1257
  * - the sticky label rides the rightmost run that has scrolled off the
1251
1258
  * left, not the region's first block — that one is gone from
@@ -1257,7 +1264,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1257
1264
  * is fitted to the whole run, and `displayedRegionIndex` /
1258
1265
  * `lastDisplayedRegionIndex` bracket what it stands for.
1259
1266
  * - a name is drawn whole or not at all, measured against the space its
1260
- * run leaves. Clipped to its own width, `chr16` reads as `chr1` —
1267
+ * run leaves. Clipped to that space, `chr16` reads as `chr1` —
1261
1268
  * a different chromosome rather than a shortened name, which is why
1262
1269
  * this is a fit test rather than an ellipsis.
1263
1270
  *
@@ -1277,7 +1284,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1277
1284
  * pins to its right edge rather than the viewport's, and the coordinate
1278
1285
  * numbers stay out from under it. The SVG export deliberately
1279
1286
  * calls `getScalebarRefNameLabels` itself with no prefix rather than
1280
- * reading this, since it draws its own assembly name above the ruler.
1287
+ * reading this, since it draws the assembly name itself above the ruler.
1281
1288
  */
1282
1289
  readonly scalebarRefNameLabels: {
1283
1290
  labels: import("./util.ts").ScalebarRefNameLabel[];
@@ -1289,7 +1296,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1289
1296
  * Every span along the row that is not track data, as plain geometry in
1290
1297
  * the staticBlocks frame — the same frame as gridlineTicks and
1291
1298
  * scalebarLabels, so one `translateX(staticBlocksTranslateX)` places all
1292
- * three. A host drawing its own chrome needs all three kinds:
1299
+ * three. A host that draws the row's chrome itself needs all three kinds:
1293
1300
  *
1294
1301
  * - `seam`: the 3px bar at a region's right edge. Displayed regions are
1295
1302
  * laid out **contiguously** (calculateStaticBlocks emits boundary
@@ -1304,11 +1311,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1304
1311
  * but the 24 chromosomes are under a pixel wide), so a host that
1305
1312
  * skips them leaves that part of the row empty.
1306
1313
  * - `boundary`: past the start of the first region or the end of the
1307
- * last. Greying it shows the last region's seam as the edge of a
1314
+ * last. Greying it makes the last region's seam read as the edge of a
1308
1315
  * filled area, where it would otherwise look like a line in the
1309
1316
  * middle of the track.
1310
1317
  *
1311
- * Elided blocks get no seam even though they carry the flag: at the
1318
+ * Elided blocks get no seam even though they have the flag: at the
1312
1319
  * zoom where regions elide, one bar per region would fill the row solid
1313
1320
  * grey.
1314
1321
  *
@@ -1397,7 +1404,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1397
1404
  * array of fresh objects on every pan and zoom frame, so a component
1398
1405
  * that derived this number itself re-rendered on every frame of every
1399
1406
  * gesture — to produce, whenever content fills the track, the unchanged
1400
- * `trackWidthPx`. Reading the scalar lets MobX's `===` stop the chain at
1407
+ * `trackWidthPx`. A component that reads the scalar lets MobX's `===` stop the chain at
1401
1408
  * this computed instead. Measured over 20 zoom frames: the wiggle
1402
1409
  * family's three body instances fell from 66 renders to 7.
1403
1410
  */
@@ -1483,17 +1490,16 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1483
1490
  * as a navigation that didn't happen, and wiggle's autoscale domain is
1484
1491
  * computed over the window the user just left — measured at `[0,200]`
1485
1492
  * against a correct `[0,300]` when a 40bp coarse window survived a jump to
1486
- * 4040bp on screen. Only the per-region fetch moving to the leading edge
1487
- * made that reachable: at 600ms the data never landed inside the hole.
1493
+ * 4040bp on screen.
1488
1494
  *
1489
- * **The continuous paths deliberately do not come through here.** The
1495
+ * **The continuous paths do not call this.** The
1490
1496
  * spring zoom writes through `zoomTo` per frame and a drag through
1491
1497
  * `scrollTo`, so this adds no per-frame work; the settle is idempotent
1492
1498
  * (`setCoarseDynamicBlocks` compares block keys), so the debounced
1493
- * autorun's own follow-up run costs nothing.
1499
+ * autorun's follow-up run costs nothing.
1494
1500
  *
1495
- * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` is what
1496
- * makes that true of the next one — it scans this file for the writes and
1501
+ * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` enforces
1502
+ * that for the next one: it scans this file for the writes and
1497
1503
  * fails on a placer that reaches neither the settle nor its named list of
1498
1504
  * continuous paths. Two passes by hand missed four.
1499
1505
  */
@@ -1519,8 +1525,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1519
1525
  moveTo(start?: BpOffset, end?: BpOffset): void;
1520
1526
  /**
1521
1527
  * #action
1522
- * Place the viewport by the pair of PIXEL quantities it used to be stored
1523
- * as. Prefer `setWindow`: pixels mean nothing without the width they were
1528
+ * Place the viewport by `bpPerPx` and `offsetPx`, the pixel pair the view
1529
+ * stored before it stored the window. Prefer `setWindow`: pixels mean nothing without the width they were
1524
1530
  * measured at, so a round trip through here is only exact while the width
1525
1531
  * holds still. Kept for callers that genuinely have pixels — a wheel
1526
1532
  * gesture, a rubberband.
@@ -1529,7 +1535,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1529
1535
  /**
1530
1536
  * #action
1531
1537
  * Place the viewport by the pair it is actually STORED as: the window's
1532
- * width and left edge, both in bp. `setNewView`'s bp-space twin, and the
1538
+ * width and left edge, both in bp. The bp-space counterpart of `setNewView`, and the
1533
1539
  * right one for anything that captures a viewport and puts it back later
1534
1540
  * (an Undo, a saved location) — those two moments can be a window resize
1535
1541
  * apart, and this pair survives one where a pixel pair does not.
@@ -1551,8 +1557,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1551
1557
  setWindowFrame(windowWidthBp: number, windowStartBp: number): void;
1552
1558
  /**
1553
1559
  * #action
1554
- * The worst jump of them to leave unsettled: the coarse blocks are keyed
1555
- * by `displayedRegionIndex`, so a set that outlives the region list has a
1560
+ * Settles the coarse blocks, since this is the worst jump to leave
1561
+ * unsettled: they are keyed by `displayedRegionIndex`, so a set that outlives the region list has a
1556
1562
  * consumer reading one contig's data against another's blocks.
1557
1563
  */
1558
1564
  setDisplayedRegions(regions: Region[]): void;
@@ -1787,7 +1793,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1787
1793
  /**
1788
1794
  * #method
1789
1795
  * returns menu items for a highlight context menu. plugins can extend
1790
- * this via Core-extendPluggableElement to add their own items
1796
+ * this via Core-extendPluggableElement to add items
1791
1797
  */
1792
1798
  highlightMenuItems(_highlight: HighlightType): MenuItem[];
1793
1799
  } & {
@@ -1813,7 +1819,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1813
1819
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1814
1820
  displayName: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
1815
1821
  minimized: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1816
- }, "colorByCDS" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showGridlines" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
1822
+ }, "axis" | "colorByFrame" | "displayedRegions" | "hideHeader" | "hideHeaderOverview" | "hideNoTracksActive" | "id" | "launch" | "legacyBpPerPx" | "scalebarOnly" | "showAminoAcids" | "showCenterLine" | "showCytobands" | "showTrackOutlines" | "trackLabels" | "trackSelectorType" | "tracks" | "type" | "windowStartBp" | "windowWidthBp"> & {
1817
1823
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1818
1824
  type: import("@jbrowse/mobx-state-tree").IType<string | undefined, string, string>;
1819
1825
  windowStartBp: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -1828,8 +1834,14 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1828
1834
  showCenterLine: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1829
1835
  showCytobands: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1830
1836
  trackLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
1831
- showGridlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1832
- colorByCDS: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1837
+ axis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaType<{
1838
+ readonly grid: {
1839
+ type: "boolean";
1840
+ } & {
1841
+ defaultValue: boolean;
1842
+ };
1843
+ }, import("@jbrowse/core/configuration/configurationSchema").ConfigurationSchemaOptions<undefined, undefined, undefined, import("@jbrowse/core/configuration").ConfigurationSchemaRequirement<Partial<Record<string, string[]>>, string>, any>>, [undefined]>;
1844
+ colorByFrame: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1833
1845
  showAminoAcids: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1834
1846
  showTrackOutlines: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
1835
1847
  scalebarOnly: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -1917,6 +1929,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
1917
1929
  */
1918
1930
  volatileGuides: VolatileGuide[];
1919
1931
  } & {
1932
+ /**
1933
+ * #getter
1934
+ * `axis.grid`: whether the ruler's ticks run down through the tracks.
1935
+ */
1936
+ readonly axisGrid: boolean;
1920
1937
  /**
1921
1938
  * #getter
1922
1939
  * the launch state that still has something to apply — the gate every
@@ -2345,8 +2362,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2345
2362
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>>) | undefined;
2346
2363
  /**
2347
2364
  * #getter
2348
- * What the loading screen says while `showLoading`, read off the
2349
- * assembly whose load is the wait; undefined otherwise.
2365
+ * The loading screen's text while `showLoading`, taken from the
2366
+ * assembly being waited on; undefined otherwise.
2350
2367
  */
2351
2368
  readonly loading: import("@jbrowse/core/util/viewStatus").ViewLoading | undefined;
2352
2369
  /**
@@ -2388,12 +2405,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2388
2405
  * `width`/`staticBlocks` throw by design before the view has been
2389
2406
  * measured and navigated.
2390
2407
  *
2391
- * **Not `initialized`**, which is the trap this getter exists to close.
2408
+ * Use this getter rather than `initialized`.
2392
2409
  * That one answers "have the assembly's regions loaded", which is only
2393
2410
  * the first of two async steps: navigating then populates
2394
2411
  * `displayedRegions`, and in the window between the two `initialized` is
2395
2412
  * already true while there is still nothing on screen. `showLoading`
2396
- * folds in `awaitingInitNavigation`, the getter that exists for exactly
2413
+ * folds in `awaitingInitNavigation`, the getter for exactly
2397
2414
  * that gap.
2398
2415
  *
2399
2416
  * `error` is the third outcome and is why this is not a bare
@@ -2443,7 +2460,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2443
2460
  readonly headerHeight: number;
2444
2461
  /**
2445
2462
  * #method
2446
- * rendered height of a single track, collapsing to a fixed height when
2463
+ * rendered height of a single track, using a fixed height when
2447
2464
  * minimized. Shared by trackHeights and getTrackYOffset so the two can't
2448
2465
  * disagree. Reads `activeDisplay` — the display TrackContainer actually
2449
2466
  * mounts — rather than re-picking `displays[0]`, so the view's height math
@@ -2522,8 +2539,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2522
2539
  * or 0 for a standalone view, a mode that is off, and a stack that cannot
2523
2540
  * answer yet.
2524
2541
  *
2525
- * Pulled rather than pushed down into a volatile: the number is a
2526
- * function of every row's fit, all of which move on a resize, and a
2542
+ * A getter rather than a volatile the container writes: the number is a
2543
+ * function of every row's fit, all of which change on a resize, and a
2527
2544
  * stored copy would be stale by the next layout.
2528
2545
  */
2529
2546
  readonly sharedFitBpPerPx: number;
@@ -2590,7 +2607,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2590
2607
  /**
2591
2608
  * #action
2592
2609
  */
2593
- setColorByCDS(flag: boolean): void;
2610
+ setColorByFrame(flag: boolean): void;
2594
2611
  /**
2595
2612
  * #action
2596
2613
  */
@@ -2649,7 +2666,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2649
2666
  /**
2650
2667
  * #action
2651
2668
  */
2652
- setShowGridlines(b: boolean): void;
2669
+ setAxisGrid(grid: boolean): void;
2653
2670
  /**
2654
2671
  * #action
2655
2672
  * set temporary vertical guides (e.g., for LD display hover)
@@ -2766,7 +2783,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2766
2783
  /**
2767
2784
  * #method
2768
2785
  * Helper method for the fetchSequence.
2769
- * Retrieves the corresponding regions that were selected by the
2786
+ * Returns the regions the user selected with the
2770
2787
  * rubberband
2771
2788
  *
2772
2789
  * @param leftOffset - `object as {start, end, index, offset}`, offset = start
@@ -2813,15 +2830,15 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2813
2830
  * #getter
2814
2831
  * an ideogram only reads correctly against an entire chromosome: on a
2815
2832
  * sub-region it is a meaningless slice of bands, and the centromere shows
2816
- * up as a lone half-triangle. The chromosome needs bands of its own too:
2817
- * a cytoband file often lists only the main chromosomes, not chrM or the
2833
+ * up as a lone half-triangle. The chromosome also needs bands: a cytoband
2834
+ * file often lists only the main chromosomes, not chrM or the
2818
2835
  * unplaced scaffolds
2819
2836
  */
2820
2837
  readonly canShowCytobands: boolean;
2821
2838
  /**
2822
2839
  * #getter
2823
2840
  * the `showCytobands` setting gated by whether cytobands can be shown at
2824
- * all (whole chromosome with bands of its own) and by the header
2841
+ * all (whole chromosome with bands in the cytoband file) and by the header
2825
2842
  * overview they draw in being on, which the SVG export follows too
2826
2843
  */
2827
2844
  readonly effectiveShowCytobands: boolean;
@@ -2874,9 +2891,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2874
2891
  /**
2875
2892
  * #getter
2876
2893
  * dynamic blocks represent the exact coordinates of the currently
2877
- * visible genome regions on the screen. they are similar to static
2878
- * blocks, but static blocks can go offscreen while dynamic blocks
2879
- * represent exactly what is on screen
2894
+ * visible genome regions on the screen. Static blocks can go
2895
+ * offscreen, while dynamic blocks represent exactly what is on screen
2880
2896
  */
2881
2897
  readonly dynamicBlocks: BlockSet;
2882
2898
  /**
@@ -2908,12 +2924,10 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2908
2924
  * The frame exists because those three are laid out across every
2909
2925
  * displayed region rather than across the viewport — it overhangs on
2910
2926
  * both sides — so their `x` values are stable under a scroll and only
2911
- * this number moves. `scalebarRefNameLabels` is the exception and says
2912
- * so: its `transform` is already a screen x, because a sticky label's
2927
+ * this number moves. `scalebarRefNameLabels` is the exception: its `transform` is already a screen x, because a sticky label's
2913
2928
  * position is a function of the scroll rather than of block geometry.
2914
2929
  *
2915
- * **The subtraction must happen here, in float64, and that is the
2916
- * load-bearing part.** `offsetPx` is a whole-genome pixel coordinate —
2930
+ * **The subtraction must happen here, in float64.** `offsetPx` is a whole-genome pixel coordinate —
2917
2931
  * hg38 chr1 at base resolution is already past 1e10 — and a length that
2918
2932
  * size does not survive the trip through CSS: the transform matrix is
2919
2933
  * float32 by the time it reaches the compositor, where consecutive
@@ -2925,13 +2939,12 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2925
2939
  * assemblies at high zoom, which is not where anyone tests. Both
2926
2940
  * operands here are large and their difference is bounded by the
2927
2941
  * overhang (a block or two), so what reaches CSS is small and exact.
2928
- * Same rule as the GPU side, one layer up —
2942
+ * This applies the GPU side's rule one layer up; see
2929
2943
  * `agent-docs/reference/BP_PRECISION.md`.
2930
2944
  *
2931
2945
  * Published because it is the one piece of coordinate arithmetic a host
2932
2946
  * drawing its own chrome would otherwise have to know, and because
2933
- * having it written out at each call site is how the two in-tree copies
2934
- * came to disagree about rounding. Round it where the content is text
2947
+ * copies written out at each call site disagree about rounding. Round it where the content is text
2935
2948
  * (a fractional offset blurs a label); leave it alone for paths and
2936
2949
  * boxes.
2937
2950
  */
@@ -2974,11 +2987,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2974
2987
  * sticky, transform, maxWidth, paddingLeft, text}` each. One per run of
2975
2988
  * same-refName regions, plus a "sticky" one pinned to the viewport's
2976
2989
  * left edge naming the refName under it, so panning into a chromosome
2977
- * does not scroll its own name off the screen.
2990
+ * does not scroll the chromosome's name off the screen.
2978
2991
  *
2979
- * Three rules live in here that a host drawing region names will
2980
- * otherwise rediscover the hard way, and two of them are invisible until
2981
- * the data is awkward:
2992
+ * This getter applies three rules that a host drawing region names would
2993
+ * otherwise have to rediscover, and two of them are invisible until the
2994
+ * data is awkward:
2982
2995
  *
2983
2996
  * - the sticky label rides the rightmost run that has scrolled off the
2984
2997
  * left, not the region's first block — that one is gone from
@@ -2990,7 +3003,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
2990
3003
  * is fitted to the whole run, and `displayedRegionIndex` /
2991
3004
  * `lastDisplayedRegionIndex` bracket what it stands for.
2992
3005
  * - a name is drawn whole or not at all, measured against the space its
2993
- * run leaves. Clipped to its own width, `chr16` reads as `chr1` —
3006
+ * run leaves. Clipped to that space, `chr16` reads as `chr1` —
2994
3007
  * a different chromosome rather than a shortened name, which is why
2995
3008
  * this is a fit test rather than an ellipsis.
2996
3009
  *
@@ -3010,7 +3023,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3010
3023
  * pins to its right edge rather than the viewport's, and the coordinate
3011
3024
  * numbers stay out from under it. The SVG export deliberately
3012
3025
  * calls `getScalebarRefNameLabels` itself with no prefix rather than
3013
- * reading this, since it draws its own assembly name above the ruler.
3026
+ * reading this, since it draws the assembly name itself above the ruler.
3014
3027
  */
3015
3028
  readonly scalebarRefNameLabels: {
3016
3029
  labels: import("./util.ts").ScalebarRefNameLabel[];
@@ -3022,7 +3035,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3022
3035
  * Every span along the row that is not track data, as plain geometry in
3023
3036
  * the staticBlocks frame — the same frame as gridlineTicks and
3024
3037
  * scalebarLabels, so one `translateX(staticBlocksTranslateX)` places all
3025
- * three. A host drawing its own chrome needs all three kinds:
3038
+ * three. A host that draws the row's chrome itself needs all three kinds:
3026
3039
  *
3027
3040
  * - `seam`: the 3px bar at a region's right edge. Displayed regions are
3028
3041
  * laid out **contiguously** (calculateStaticBlocks emits boundary
@@ -3037,11 +3050,11 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3037
3050
  * but the 24 chromosomes are under a pixel wide), so a host that
3038
3051
  * skips them leaves that part of the row empty.
3039
3052
  * - `boundary`: past the start of the first region or the end of the
3040
- * last. Greying it shows the last region's seam as the edge of a
3053
+ * last. Greying it makes the last region's seam read as the edge of a
3041
3054
  * filled area, where it would otherwise look like a line in the
3042
3055
  * middle of the track.
3043
3056
  *
3044
- * Elided blocks get no seam even though they carry the flag: at the
3057
+ * Elided blocks get no seam even though they have the flag: at the
3045
3058
  * zoom where regions elide, one bar per region would fill the row solid
3046
3059
  * grey.
3047
3060
  *
@@ -3130,7 +3143,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3130
3143
  * array of fresh objects on every pan and zoom frame, so a component
3131
3144
  * that derived this number itself re-rendered on every frame of every
3132
3145
  * gesture — to produce, whenever content fills the track, the unchanged
3133
- * `trackWidthPx`. Reading the scalar lets MobX's `===` stop the chain at
3146
+ * `trackWidthPx`. A component that reads the scalar lets MobX's `===` stop the chain at
3134
3147
  * this computed instead. Measured over 20 zoom frames: the wiggle
3135
3148
  * family's three body instances fell from 66 renders to 7.
3136
3149
  */
@@ -3216,17 +3229,16 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3216
3229
  * as a navigation that didn't happen, and wiggle's autoscale domain is
3217
3230
  * computed over the window the user just left — measured at `[0,200]`
3218
3231
  * against a correct `[0,300]` when a 40bp coarse window survived a jump to
3219
- * 4040bp on screen. Only the per-region fetch moving to the leading edge
3220
- * made that reachable: at 600ms the data never landed inside the hole.
3232
+ * 4040bp on screen.
3221
3233
  *
3222
- * **The continuous paths deliberately do not come through here.** The
3234
+ * **The continuous paths do not call this.** The
3223
3235
  * spring zoom writes through `zoomTo` per frame and a drag through
3224
3236
  * `scrollTo`, so this adds no per-frame work; the settle is idempotent
3225
3237
  * (`setCoarseDynamicBlocks` compares block keys), so the debounced
3226
- * autorun's own follow-up run costs nothing.
3238
+ * autorun's follow-up run costs nothing.
3227
3239
  *
3228
- * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` is what
3229
- * makes that true of the next one — it scans this file for the writes and
3240
+ * Every placer calls it, and `placersSettleCoarseBlocks.test.ts` enforces
3241
+ * that for the next one: it scans this file for the writes and
3230
3242
  * fails on a placer that reaches neither the settle nor its named list of
3231
3243
  * continuous paths. Two passes by hand missed four.
3232
3244
  */
@@ -3252,8 +3264,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3252
3264
  moveTo(start?: BpOffset, end?: BpOffset): void;
3253
3265
  /**
3254
3266
  * #action
3255
- * Place the viewport by the pair of PIXEL quantities it used to be stored
3256
- * as. Prefer `setWindow`: pixels mean nothing without the width they were
3267
+ * Place the viewport by `bpPerPx` and `offsetPx`, the pixel pair the view
3268
+ * stored before it stored the window. Prefer `setWindow`: pixels mean nothing without the width they were
3257
3269
  * measured at, so a round trip through here is only exact while the width
3258
3270
  * holds still. Kept for callers that genuinely have pixels — a wheel
3259
3271
  * gesture, a rubberband.
@@ -3262,7 +3274,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3262
3274
  /**
3263
3275
  * #action
3264
3276
  * Place the viewport by the pair it is actually STORED as: the window's
3265
- * width and left edge, both in bp. `setNewView`'s bp-space twin, and the
3277
+ * width and left edge, both in bp. The bp-space counterpart of `setNewView`, and the
3266
3278
  * right one for anything that captures a viewport and puts it back later
3267
3279
  * (an Undo, a saved location) — those two moments can be a window resize
3268
3280
  * apart, and this pair survives one where a pixel pair does not.
@@ -3284,8 +3296,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3284
3296
  setWindowFrame(windowWidthBp: number, windowStartBp: number): void;
3285
3297
  /**
3286
3298
  * #action
3287
- * The worst jump of them to leave unsettled: the coarse blocks are keyed
3288
- * by `displayedRegionIndex`, so a set that outlives the region list has a
3299
+ * Settles the coarse blocks, since this is the worst jump to leave
3300
+ * unsettled: they are keyed by `displayedRegionIndex`, so a set that outlives the region list has a
3289
3301
  * consumer reading one contig's data against another's blocks.
3290
3302
  */
3291
3303
  setDisplayedRegions(regions: Region[]): void;
@@ -3520,7 +3532,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3520
3532
  /**
3521
3533
  * #method
3522
3534
  * returns menu items for a highlight context menu. plugins can extend
3523
- * this via Core-extendPluggableElement to add their own items
3535
+ * this via Core-extendPluggableElement to add items
3524
3536
  */
3525
3537
  highlightMenuItems(_highlight: HighlightType): MenuItem[];
3526
3538
  } & {
@@ -3542,7 +3554,7 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3542
3554
  } & {
3543
3555
  afterCreate(): void;
3544
3556
  afterAttach(): void;
3545
- }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>, InitState, "bpPerPx" | "offsetPx" | "showCytobandsSetting">, {
3557
+ }, import("@jbrowse/mobx-state-tree")._NotCustomized, import("@jbrowse/mobx-state-tree")._NotCustomized>, InitState, "bpPerPx" | "colorByCDS" | "offsetPx" | "showCytobandsSetting">, {
3546
3558
  displayName: string | undefined;
3547
3559
  minimized: boolean;
3548
3560
  id: string;
@@ -3558,8 +3570,8 @@ export declare function stateModelFactory(pluginManager: PluginManager): import(
3558
3570
  trackSelectorType: "hierarchical";
3559
3571
  showCytobands: boolean;
3560
3572
  trackLabels: string;
3561
- showGridlines: boolean;
3562
- colorByCDS: boolean;
3573
+ axis: import("@jbrowse/mobx-state-tree").ModelSnapshotType<Record<string, any>>;
3574
+ colorByFrame: boolean;
3563
3575
  showAminoAcids: boolean;
3564
3576
  showTrackOutlines: boolean;
3565
3577
  scalebarOnly: boolean;