# LinearSyntenyView

Auto-generated from the @jbrowse/mobx-state-tree model in the source — see the [developer guide](https://jbrowse.org/jb2/docs/developer_guide/) for concepts. Provided by the `linear-comparative-view` plugin. [View source](https://github.com/GMOD/jbrowse-components/blob/main/plugins/linear-comparative-view/src/LinearSyntenyView/model.ts).

## Example usage

Hand-authored under `defaultSession.views`, with every setting written
directly on the view object. `views` declares the member assemblies (stacked
as linear views) and `tracks` the synteny feature track connecting them with
a ribbon:

```js
{
  type: 'LinearSyntenyView',
  views: [{ assembly: 'hg38' }, { assembly: 'mm10' }],
  tracks: ['hg38_vs_mm10.paf'],
  drawCurves: true,
  color: { field: 'query' },
}
```

The launch keys are `views`, `tracks`, `levelHeights`, `autoDiagonalize`,
`sameScale` and `collapseEmptyRows`; everything else is a property below and
needs no list to join.

Stacks a linear genome view per genome, and draws the synteny tracks
between adjacent rows as ribbons joining the aligned regions.

Each section ends with the members a composed model contributes, linked to the page that documents them.

## Properties

| Member | Description |
| --- | --- |
| **id**<br><code>id: ElementId</code> |  |
| **type**<br><code>type: types.literal('LinearSyntenyView')</code> |  |
| **cigarMode**<br><code>cigarMode: types.stripDefault( types.enumeration(['off', 'matches', 'full'] as const), 'full', )</code> | How per-base insertions and deletions inside each alignment are shown: 'full' paints indel wedges, 'matches' leaves them see-through, 'off' draws blocks only. |
| **drawCurves**<br><code>drawCurves: types.stripDefault(types.boolean, false)</code> | Draw every band's ribbons as bezier curves rather than straight chords. |
| **drawLocationMarkers**<br><code>drawLocationMarkers: types.stripDefault(types.boolean, false)</code> | Continue the query row's scalebar grid down through every band: a tick at each round query coordinate, joined to the coordinate the alignment pairs it with. |
| **showOffscreenMates**<br><code>showOffscreenMates: types.stripDefault(types.boolean, true)</code> | Mark the alignments the view cannot draw a ribbon for, along both edges of each band. Costs a second query per pair of rows. |
| **overdrawPx**<br><code>overdrawPx: types.stripDefault(types.number, DEFAULT_OVERDRAW_PX)</code> | pixels beyond the visible viewport edge that synteny lines are still drawn. Effective up to the pan buffer (`syntenyPanBufferPx`: 2000px, or half the viewport when that is wider) — the worker emits CIGAR detail and location markers only that far, so a larger value draws ribbons whose detail stops partway along them. |
| **launch**<br><code>launch: types.frozen&lt; LaunchInput&lt;LinearSyntenyViewCommands&gt; &#124; undefined &gt;()</code> | Transient launch state: the settings written on the view object that need resolving before they can be view state — the genome rows to open, the synteny tracks for each band, the shared scale. The afterAttach autorun applies and clears it. Not written by hand: author every setting directly on the view. |
| **trackSelectorType**<br><code>trackSelectorType: types.stripDefault(types.string, 'hierarchical')</code> | Ignored: the hierarchical selector is the only one. Declared because sessions and share links still carry it. |
| **followSynteny**<br><code>followSynteny: types.stripDefault(types.boolean, false)</code> | The non-anchor rows follow the anchor row through the alignment, moving to whatever region aligns to its window. |
| **sameScale**<br><code>sameScale: types.stripDefault(types.boolean, false)</code> | Hold every genome row on one bp/px — the coarsest row's fit — so the rows compare by drawn length instead of each filling its pane. Moves the rows' zoom-out limit (`sharedFit`), so it holds across later zooms. |
| **followAnchorIndex**<br><code>followAnchorIndex: types.stripDefault(types.number, 0)</code> | Which genome row drives the others while following. |
| **diagonalizeAnchorRow**<br><code>diagonalizeAnchorRow: types.stripDefault(types.number, 0)</code> | Which genome row "Re-order chromosomes" keeps as it is: the rows below it are ordered against the row above them, and the rows above it against the row below. |
| **followMatchOrientation**<br><code>followMatchOrientation: types.stripDefault(types.boolean, false)</code> | While following, flip a row whose placing alignment runs the other way from the anchor's, so the two pan in the same direction. |
| **levels**<br><code>levels: types.array(LinearSyntenyLevel)</code> | One synteny band per adjacent pair of `views`, each holding its own track list. The track-selector and add-track widgets address a band through `trackContainerFor`. |
| **views**<br><code>views: types.array( pluginManager.getViewType('LinearGenomeView').stateModel, )</code> | N genome rows, with N-1 synteny `levels` between adjacent pairs (see reconcileLevels). |

9 inherited properties from 5 models:

From [BaseViewModel](../baseviewmodel): [`displayName`](../baseviewmodel#property-displayname), [`minimized`](../baseviewmodel#property-minimized)

From [SyntenyViewMixin](../syntenyviewmixin): [`lodMode`](../syntenyviewmixin#property-lodmode)

From [SyntenyColorsMixin](../syntenycolorsmixin): [`opacity`](../syntenycolorsmixin#property-opacity), [`minAlignmentLength`](../syntenycolorsmixin#property-minalignmentlength)

From [TrackColorsMixin](../trackcolorsmixin): [`color`](../trackcolorsmixin#property-color), [`trackColors`](../trackcolorsmixin#property-trackcolors), [`hideUnlabelled`](../trackcolorsmixin#property-hideunlabelled)

From [SyntenyFadeMixin](../syntenyfademixin): [`fadeThinAlignmentsMode`](../syntenyfademixin#property-fadethinalignmentsmode)


## Volatiles

| Member | Description |
| --- | --- |
| **width**<br><code>number &#124; undefined</code> |  |
| **volatileError**<br><code>unknown</code> | View-level failure, e.g. a launch that couldn't be applied. Volatile so a reload retries from a clean slate. |
| **followReport**<br><code>FollowReport</code> | What the follow's last settled pass reports, for the header's follow button: rows holding because nothing aligns under the anchor, a row placed proportionally rather than by a CIGAR walk, a level with no synteny track, a multi-contig answer refused as mostly filler. |

10 inherited volatiles from 6 models:

From [BaseViewModel](../baseviewmodel): [`bodyMounted`](../baseviewmodel#volatile-bodymounted)

From [DiagonalizeProgressMixin](../diagonalizeprogressmixin): [`awaitingAutoDiagonalize`](../diagonalizeprogressmixin#volatile-awaitingautodiagonalize), [`pendingAutoDiagonalize`](../diagonalizeprogressmixin#volatile-pendingautodiagonalize), [`diagonalizeStatus`](../diagonalizeprogressmixin#volatile-diagonalizestatus), [`diagonalizeCancel`](../diagonalizeprogressmixin#volatile-diagonalizecancel), [`diagonalizeError`](../diagonalizeprogressmixin#volatile-diagonalizeerror)

From [ImportFormSyntenyMixin](../importformsyntenymixin): [`importFormSyntenyTrackSelections`](../importformsyntenymixin#volatile-importformsyntenytrackselections)

From [SyntenyViewMixin](../syntenyviewmixin): [`colorLegendDismissedFor`](../syntenyviewmixin#volatile-colorlegenddismissedfor)

From [TrackColorsMixin](../trackcolorsmixin): [`seenAttributeRanges`](../trackcolorsmixin#volatile-seenattributeranges)

From [SyntenyFadeMixin](../syntenyfademixin): [`fadeThinLatch`](../syntenyfademixin#volatile-fadethinlatch)


## Getters

| Member | Description |
| --- | --- |
| **bandGestureRows**<br><code>(ModelInstanceTypeProps&lt;…&gt; &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; { rubberbandClickMenuItems(clickOffset: BpOffset): MenuItem[]; highlightMenuItems(_highlight: HighlightType): MenuItem[]; } &amp; { flyTo: (centerBp: number, windowWidthBp: number) =&gt; void; flyToCenter(coord: number, refName: string, displayedRegionIndex?: number &#124; undefined): void; flyToFit(centerBp: number, fitWidthBp: number): void; } &amp; { afterCreate(): void; afterAttach(): void; } &amp; IStateTreeNode&lt;…&gt;)[]</code> | The rows a drag or a wheel on a band moves: every row the follow cannot place. Off, that is every row; on, it is the anchor and any row whose level toward the anchor has no synteny track. |
| **scrollZoom**<br><code>boolean</code> | scroll-to-zoom is a global, personal preference resolved from the session; toggling it in any view applies everywhere |
| **initialized**<br><code>boolean</code> |  |
| **error**<br><code>unknown</code> | The view's own failure or the first failed row's, so an export or launcher waiting on a stack with a failed row is told why. |
| **stackError**<br><code>unknown</code> | The failure that leaves the stack nothing to show: the view's own, or every row's. One failed row reports itself in its place in the stack. |
| **assemblyNames**<br><code>string[]</code> |  |
| **sharedFit**<br><code>SharedFit</code> | The zoom-out limit every row shares while `sameScale` is on (`sharedFit.ts`). Each row pulls it through its own `maxBpPerPx`, finding this view by the presence of this getter. |
| **allSyntenyDisplays**<br><code>LinearSyntenyDisplayModel[]</code> | Every synteny display across every level. |
| **hiddenFeatureCount**<br><code>number</code> |  |
| **followPairs**<br><code>{…}[]</code> | Each connected synteny level resolved into the pair of rows a follow moves it between: which row stays, which moves, which axis the anchor window is read off, and the assembly naming the level's lane of an all-vs-all track.<br><br>Ordered outward from the anchor, so each level's staying row is the anchor or a row a nearer level has already placed, and a stack of three or more settles in one pass. |
| **trackWarnings**<br><code>TrackWarning[]</code> | Every synteny display's data-quality warnings (e.g. a reversed assembly row order), grouped under the track that raised each: what the header's warning button counts and its dialog reports. |
| **trackContainers**<br><code>TrackContainer[]</code> | Every band's track list, for a reader walking the session for displays. |
| **ownTracks**<br><code>{ configuration: { trackId: string; }; displays: { type: string; configuration: AnyConfigurationModel; }[]; }[]</code> | Every track in the view, across its bands. |
| **ownViews**<br><code>(ModelInstanceTypeProps&lt;…&gt; &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; { rubberbandClickMenuItems(clickOffset: BpOffset): MenuItem[]; highlightMenuItems(_highlight: HighlightType): MenuItem[]; } &amp; { flyTo: (centerBp: number, windowWidthBp: number) =&gt; void; flyToCenter(coord: number, refName: string, displayedRegionIndex?: number &#124; undefined): void; flyToFit(centerBp: number, fitWidthBp: number): void; } &amp; { afterCreate(): void; afterAttach(): void; } &amp; IStateTreeNode&lt;…&gt;)[]</code> |  |
| **pendingLaunch**<br><code>LaunchInput&lt;LinearSyntenyViewCommands &amp; { unknown?: Record&lt;string, unknown&gt; &#124; undefined; malformed?: Record&lt;string, unknown&gt; &#124; undefined; legacyInit?: boolean &#124; undefined; } &amp; IStateTreeNode&lt;IType&lt;LaunchInput&lt;LinearSyntenyViewCommands&gt; &#124; undefined, LaunchInput&lt;LinearSyntenyViewCommands&gt; &#124; undefined, LaunchInput&lt;LinearSyntenyViewCommands&gt; &#124; undefined&gt;&gt;&gt; &#124; undefined</code> | the launch state that still has something to apply — the gate the loading and import-form paths below read. |
| **hasSomethingToShow**<br><code>boolean</code> |  |
| **initPending**<br><code>boolean</code> | A launch that has not finished applying: the rows can exist, and be initialized, while the synteny tracks are still several awaits away. The levels' `settled` gate reads it. |
| **showAssemblyNameInSubviewScalebar**<br><code>boolean</code> | Opts each row's scalebar into captioning its refName labels with the assembly name ("hg38" ahead of "chr1"). Read duck-typed by the child LinearGenomeView. |
| **drawCIGAR**<br><code>boolean</code> |  |
| **drawCIGARMatchesOnly**<br><code>boolean</code> |  |
| **hasCigarData**<br><code>boolean</code> | Whether any synteny display could show CIGAR detail, which gates the CIGAR setting. True while no display has fetched yet, and false with no synteny tracks. |
| **presentCigarKinds**<br><code>number</code> | Union across loaded displays of the CIGAR indel ops drawn on screen, which the legend lists chips for. |
| **autoFadeWidthPx**<br><code>number</code> | The width 'auto' compares against its thresholds: the narrowest capped mean block width of any loaded display with at least `FADE_AUTO_MIN_FEATURES` blocks, or `Infinity` with none. |
| **anchorAssemblyName**<br><code>string &#124; undefined</code> | The assembly the 'reference' color field keys on: the one bordering the most synteny levels, ties to the topmost. In a stacked ref-vs-A / ref-vs-B layout that is the shared reference, so a region keeps its color across levels. |
| **showLoading**<br><code>boolean</code> | Whether to show a loading indicator instead of the import form or view |
| **loadingAssembly**<br><code>(ModelInstanceTypeProps&lt;…&gt; &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; {…} &amp; { getCanonicalRefName2(refName: string): string; isValidRefName(refName: string): boolean; } &amp; { isCircularRefName(refName: string): boolean; getRefNamePosition(refName: string): number &#124; undefined; getAliasesForRefName(refName: string): string[]; getRefNameMapForAdapter(adapterConf: AdapterConf, options: BaseOptions): Promise&lt;…&gt;; getRefNameMismatch(adapterCacheKey: string): RefNameMismatch &#124; undefined; } &amp; IStateTreeNode&lt;…&gt;) &#124; undefined</code> | The assembly whose load the spinner is waiting on. `init` names them before the rows are built, so it is the source until then. |
| **loading**<br><code>ViewLoading &#124; undefined</code> | What the loading screen says while `showLoading`, read off the assembly whose load is the wait; undefined otherwise. |
| **showImportForm**<br><code>boolean</code> | Whether to show the import form: nothing to show, or a failure that leaves the stack nothing to show (`stackError`), which the form reports in a banner. |
| **status**<br><code>ViewStatus</code> | The view's lifecycle as one value — ready, error, loading or noRegions — for a host that draws its own chrome. Same shape and precedence as the linear view's. |

24 inherited getters from 5 models:

From [BaseViewModel](../baseviewmodel): [`rendersDisplays`](../baseviewmodel#getter-rendersdisplays), [`effectiveBodyMounted`](../baseviewmodel#getter-effectivebodymounted)

From [SyntenyViewMixin](../syntenyviewmixin): [`hasLodCapableAdapter`](../syntenyviewmixin#getter-haslodcapableadapter), [`showLegend`](../syntenyviewmixin#getter-showlegend), [`legendSpec`](../syntenyviewmixin#getter-legendspec)

From [SyntenyColorsMixin](../syntenycolorsmixin): [`defaultOpacity`](../syntenycolorsmixin#getter-defaultopacity), [`opacitySetting`](../syntenycolorsmixin#getter-opacitysetting), [`opacityFade`](../syntenycolorsmixin#getter-opacityfade), [`opacityLevel`](../syntenycolorsmixin#getter-opacitylevel), [`opacityField`](../syntenycolorsmixin#getter-opacityfield)

From [TrackColorsMixin](../trackcolorsmixin): [`colorSetting`](../trackcolorsmixin#getter-colorsetting), [`colorPaint`](../trackcolorsmixin#getter-colorpaint), [`colorValue`](../trackcolorsmixin#getter-colorvalue), [`colorDomain`](../trackcolorsmixin#getter-colordomain), [`colorRange`](../trackcolorsmixin#getter-colorrange), [`colorableAttributes`](../trackcolorsmixin#getter-colorableattributes), [`attributeRanges`](../trackcolorsmixin#getter-attributeranges), [`colorableTracks`](../trackcolorsmixin#getter-colorabletracks), [`trackColorAssignments`](../trackcolorsmixin#getter-trackcolorassignments), [`colorField`](../trackcolorsmixin#getter-colorfield), [`hasLegendKey`](../trackcolorsmixin#getter-haslegendkey), [`colorLegendChips`](../trackcolorsmixin#getter-colorlegendchips), [`colorScales`](../trackcolorsmixin#getter-colorscales)

From [SyntenyFadeMixin](../syntenyfademixin): [`fadeThinAlignments`](../syntenyfademixin#getter-fadethinalignments)


## Methods

| Member | Description |
| --- | --- |
| **trackContainerFor**<br><code>(id: string) =&gt; TrackContainer &#124; undefined</code> | The level that owns a given track list, by id. The track-selector and add-track widgets target a level through here, since this view holds one track list per band rather than one of its own. |
| **syntenyTracks**<br><code>() =&gt; ComparativeTrackModel[]</code> | Every synteny track across every level, in order. |
| **loadedAttributeRanges**<br><code>() =&gt; Record&lt;string, AttributeRange&gt;[]</code> | Each loaded display's observed attribute spans, which the mixin unions into the domain the legend labels its ramp with. |
| **legendCigarOps**<br><code>() =&gt; number</code> | Only the indel ops drawn on screen get a chip. |
| **offersReferenceColor**<br><code>() =&gt; boolean</code> | A stack of two or more levels shares an anchor assembly. |
| **headerMenuItems**<br><code>(extraSubMenus?: MenuItem[]) =&gt; MenuItem[]</code> | The header's view-options menu: the zoom actions, the row coupling, what varies with the stack under "Rows", then Export SVG. Every render setting is in `SyntenySettingsMenu` instead. `ViewOptionsMenuButton` passes the "Show..." submenu as `extraSubMenus`, since the search box prefs are React state. |
| **menuItems**<br><code>() =&gt; MenuItem[]</code> |  |
| **rubberBandMenuItems**<br><code>() =&gt; MenuItem[]</code> |  |
| **rubberbandClickMenuItemsAtPx**<br><code>(px: number) =&gt; MenuItem[]</code> | What a bare click on the shared rubberband strip offers: one row per genome row, each holding that row's own click menu at the base it paints under `px`. A pixel rather than an offset, since each row maps it through its own `pxToBp`. |

6 inherited methods from 2 models:

From [SyntenyColorsMixin](../syntenycolorsmixin): [`colorableTrackConfigs`](../syntenycolorsmixin#method-colorabletrackconfigs), [`colorableAttributeNames`](../syntenycolorsmixin#method-colorableattributenames), [`legendAlpha`](../syntenycolorsmixin#method-legendalpha)

From [TrackColorsMixin](../trackcolorsmixin): [`colorSurface`](../trackcolorsmixin#method-colorsurface), [`shapeShowsStrand`](../trackcolorsmixin#method-shapeshowsstrand), [`trackColorFor`](../trackcolorsmixin#method-trackcolorfor)


## Actions

| Member | Description |
| --- | --- |
| **setFollowReport**<br><code>(report: Partial&lt;FollowReport&gt;) =&gt; void</code> | Merge into `followReport`. Declared ahead of afterAttach, which installs the follow that calls it. |
| **setFollowSynteny**<br><code>(flag: boolean) =&gt; void</code> |  |
| **setFollowAnchorIndex**<br><code>(idx: number) =&gt; void</code> |  |
| **clearClickedFeatures**<br><code>() =&gt; void</code> | Release the clicked ribbon in every band, ahead of a band pointing its own: the drawer shows one feature, so one ribbon is outlined |
| **holdFollowAnchor**<br><code>&lt;T&gt;(fn: () =&gt; T) =&gt; T</code> | Run a navigation of a row as the follow's own placement rather than as a gesture. While following, a gesture on any row makes that row the anchor, and the follow tells a gesture from its own work by root action: whatever `fn` navigates is a nested action of this one. |
| **takeOutRows**<br><code>() =&gt; void</code> |  |
| **reconcileLevels**<br><code>() =&gt; void</code> | Keep exactly one synteny level per gap between adjacent views, growing or shrinking from the end, and both anchors inside the stack. |
| **setWidth**<br><code>(newWidth: number) =&gt; void</code> |  |
| **setError**<br><code>(e: unknown) =&gt; void</code> |  |
| **setViews**<br><code>(views: LaunchSnapshotIn&lt;IModelType&lt;…&gt;, InitState, "bpPerPx" &#124; "offsetPx" &#124; "showCytobandsSetting"&gt;[]) =&gt; void</code> |  |
| **addView**<br><code>(view: LaunchSnapshotIn&lt;IModelType&lt;…&gt;, InitState, "bpPerPx" &#124; "offsetPx" &#124; "showCytobandsSetting"&gt;) =&gt; void</code> | Push a new genome row. The new trailing level starts with no synteny tracks. |
| **removeRow**<br><code>(idx: number) =&gt; void</code> | Drop one genome row and the bands beside it. An interior row leaves one new band between the rows it separated, drawn by a track that connects them where the session has one — a track the removed bands were already showing first, which is what an all-vs-all file gives. |
| **reverseRows**<br><code>() =&gt; void</code> | Flip the stack top to bottom. Every band keeps the pair of rows it draws between, so its tracks stay with it. |
| **setFollowMatchOrientation**<br><code>(arg: boolean) =&gt; void</code> |  |
| **setScrollZoom**<br><code>(arg: boolean) =&gt; void</code> |  |
| **activateTrackSelector**<br><code>(level: number) =&gt; Widget</code> |  |
| **toggleTrack**<br><code>(trackId: string, level?: any) =&gt; boolean</code> |  |
| **showTrack**<br><code>(trackId: string, level?: any, initialSnapshot?: object, displayInitialSnapshot?: DisplayInitialSnapshot, inlineConf?: Record&lt;string, unknown&gt; &#124; undefined) =&gt; any</code> | No-op for a level that doesn't exist, matching hideTrack/toggleTrack. |
| **launchTrack**<br><code>(trackId: string, level?: any, initialSnapshot?: object, displayInitialSnapshot?: DisplayInitialSnapshot, inlineConf?: Record&lt;string, unknown&gt; &#124; undefined) =&gt; Promise&lt;any&gt;</code> | showTrack for a track whose display state model may be lazily loaded: loads it, then shows |
| **hideTrack**<br><code>(trackId: string, level?: any) =&gt; void</code> |  |
| **panStack**<br><code>(dx: number) =&gt; void</code> | A band's drag, over `bandGestureRows`. The rows' scrolls nest under this action, so none of them reads as a gesture that would take the anchor. |
| **squareView**<br><code>() =&gt; void</code> | Every row onto the rows' average bp/px, each keeping its centre. |
| **showAllRegionsAcrossRows**<br><code>(sameScale: boolean) =&gt; void</code> | Every row onto its whole assembly, either all on one bp/px — the coarsest row's fit, so the largest genome fills its pane and the others draw shorter in proportion — or each fit to its own pane. `sameScale` latches, so the shared scale holds across later zooms. |
| **setSameScale**<br><code>(sameScale: boolean) =&gt; void</code> |  |
| **setDiagonalizeAnchorRow**<br><code>(row: number) =&gt; void</code> |  |
| **applySharedScale**<br><code>() =&gt; void</code> | Latch `sameScale` and zoom every row onto the shared scale, keeping each row's regions and centre. |
| **clearView**<br><code>() =&gt; void</code> | Back to the import form. Drops `launch` too, which `hasSomethingToShow` keys off while there are no rows. |
| **compactAllViews**<br><code>() =&gt; void</code> |  |
| **expandAllViews**<br><code>() =&gt; void</code> |  |
| **resizeAllLevelHeights**<br><code>(distance: number, levelIdx?: any, from?: number[]) =&gt; number</code> | Resize every synteny band at once by `scaleBandHeights`, choosing the total so the bar under band `levelIdx` moves by `distance`: the bands down to it take exactly that, and the rest keep their proportion to them. `from` is the heights to scale; a drag passes the ones it started with, so whole-pixel rounding does not compound frame by frame. Returns how far that bar can go, which is `distance` unless the floor stopped it. |
| **autoScaleLevelHeights**<br><code>() =&gt; void</code> |  |
| **appendRow**<br><code>({ assembly, loc, syntenyTrackId, }: { assembly: string; loc?: string &#124; undefined; syntenyTrackId?: string &#124; undefined; }) =&gt; Promise&lt;any&gt; &#124; undefined</code> | Append an assembly to the bottom of the stack, optionally showing a synteny track on the new level. Returns `launchTrack`'s promise rather than awaiting it, so the action stays synchronous. |
| **setDrawCurves**<br><code>(arg: boolean) =&gt; void</code> |  |
| **setCigarMode**<br><code>(arg: "full" &#124; "matches" &#124; "off") =&gt; void</code> |  |
| **setDrawLocationMarkers**<br><code>(arg: boolean) =&gt; void</code> |  |
| **setShowOffscreenMates**<br><code>(flag: boolean) =&gt; void</code> |  |
| **setOverdrawPx**<br><code>(arg: number) =&gt; void</code> |  |
| **showAllRegions**<br><code>() =&gt; void</code> | Every row back to its own whole assembly, fit to its own width, which also turns `sameScale` off. |
| **setLaunch**<br><code>(launch?: LaunchInput&lt;LinearSyntenyViewCommands&gt; &#124; undefined) =&gt; void</code> |  |
| **exportSvg**<br><code>(opts?: ExportSvgOptions) =&gt; Promise&lt;string&gt;</code> |  |
| **openInCircularSyntenyView**<br><code>() =&gt; void</code> | a circular view of this view's two genomes with its synteny tracks as ribbons, the second genome reordered to follow the first, and this view's color and length filter |

26 inherited actions from 7 models:

From [BaseViewModel](../baseviewmodel): [`setDisplayName`](../baseviewmodel#action-setdisplayname), [`setBodyMounted`](../baseviewmodel#action-setbodymounted), [`setMinimized`](../baseviewmodel#action-setminimized)

From [DiagonalizeProgressMixin](../diagonalizeprogressmixin): [`setAwaitingAutoDiagonalize`](../diagonalizeprogressmixin#action-setawaitingautodiagonalize), [`beginAutoDiagonalize`](../diagonalizeprogressmixin#action-beginautodiagonalize), [`finishAutoDiagonalize`](../diagonalizeprogressmixin#action-finishautodiagonalize), [`setDiagonalizeError`](../diagonalizeprogressmixin#action-setdiagonalizeerror), [`setDiagonalizeCancel`](../diagonalizeprogressmixin#action-setdiagonalizecancel), [`cancelAutoDiagonalize`](../diagonalizeprogressmixin#action-cancelautodiagonalize)

From [ImportFormSyntenyMixin](../importformsyntenymixin): [`setImportFormSyntenyTrack`](../importformsyntenymixin#action-setimportformsyntenytrack), [`clearImportFormSyntenyTracks`](../importformsyntenymixin#action-clearimportformsyntenytracks)

From [SyntenyViewMixin](../syntenyviewmixin): [`setLodMode`](../syntenyviewmixin#action-setlodmode), [`setShowLegend`](../syntenyviewmixin#action-setshowlegend), [`dismissLegendSection`](../syntenyviewmixin#action-dismisslegendsection)

From [SyntenyColorsMixin](../syntenycolorsmixin): [`setOpacity`](../syntenycolorsmixin#action-setopacity), [`setOpacityField`](../syntenycolorsmixin#action-setopacityfield), [`setMinAlignmentLength`](../syntenycolorsmixin#action-setminalignmentlength)

From [TrackColorsMixin](../trackcolorsmixin): [`observeAttributeRanges`](../trackcolorsmixin#action-observeattributeranges), [`resetAttributeRanges`](../trackcolorsmixin#action-resetattributeranges), [`setHideUnlabelled`](../trackcolorsmixin#action-sethideunlabelled), [`setColorField`](../trackcolorsmixin#action-setcolorfield), [`setColorDomain`](../trackcolorsmixin#action-setcolordomain), [`setTrackColor`](../trackcolorsmixin#action-settrackcolor), [`clearTrackColors`](../trackcolorsmixin#action-cleartrackcolors)

From [SyntenyFadeMixin](../syntenyfademixin): [`setFadeThinAlignmentsMode`](../syntenyfademixin#action-setfadethinalignmentsmode), [`setFadeThinLatch`](../syntenyfademixin#action-setfadethinlatch)


