react-msaview 6.5.0 → 8.0.0

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 (414) hide show
  1. package/README.md +13 -11
  2. package/bundle/index.js +122 -112
  3. package/bundle/index.js.map +4 -4
  4. package/dist/colorSchemes.js +1 -2
  5. package/dist/colorSchemes.js.map +1 -1
  6. package/dist/columnStats.d.ts +28 -0
  7. package/dist/columnStats.js +34 -0
  8. package/dist/columnStats.js.map +1 -0
  9. package/dist/components/DragHandle.d.ts +3 -2
  10. package/dist/components/DragHandle.js +11 -5
  11. package/dist/components/DragHandle.js.map +1 -1
  12. package/dist/components/Loading.js +2 -2
  13. package/dist/components/Loading.js.map +1 -1
  14. package/dist/components/MSAView.js +17 -6
  15. package/dist/components/MSAView.js.map +1 -1
  16. package/dist/components/MSAViewer.d.ts +69 -4
  17. package/dist/components/MSAViewer.js +201 -8
  18. package/dist/components/MSAViewer.js.map +1 -1
  19. package/dist/components/PortalTooltip.d.ts +11 -0
  20. package/dist/components/PortalTooltip.js +29 -0
  21. package/dist/components/PortalTooltip.js.map +1 -0
  22. package/dist/components/ResizeHandles.d.ts +3 -3
  23. package/dist/components/ResizeHandles.js +13 -24
  24. package/dist/components/ResizeHandles.js.map +1 -1
  25. package/dist/components/SequenceTextArea.js +3 -3
  26. package/dist/components/SequenceTextArea.js.map +1 -1
  27. package/dist/components/Track.js +41 -22
  28. package/dist/components/Track.js.map +1 -1
  29. package/dist/components/dialogs/{InterProScanDialog.d.ts → AnnotationFileDialog.d.ts} +2 -2
  30. package/dist/components/dialogs/AnnotationFileDialog.js +92 -0
  31. package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -0
  32. package/dist/components/dialogs/ExportSVGDialog.js +5 -3
  33. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  34. package/dist/components/dialogs/FeatureDialog.js +13 -9
  35. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  36. package/dist/components/dialogs/TrackInfoDialog.js +1 -1
  37. package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
  38. package/dist/components/header/GappynessSlider.js +6 -11
  39. package/dist/components/header/GappynessSlider.js.map +1 -1
  40. package/dist/components/header/Header.js +7 -0
  41. package/dist/components/header/Header.js.map +1 -1
  42. package/dist/components/header/HeaderStatusArea.js +0 -2
  43. package/dist/components/header/HeaderStatusArea.js.map +1 -1
  44. package/dist/components/header/LoadWarnings.d.ts +6 -0
  45. package/dist/components/header/LoadWarnings.js +35 -0
  46. package/dist/components/header/LoadWarnings.js.map +1 -0
  47. package/dist/components/header/MultiAlignmentSelector.js +0 -0
  48. package/dist/components/header/MultiAlignmentSelector.js.map +1 -1
  49. package/dist/components/header/ScrollZoomIcons.d.ts +6 -0
  50. package/dist/components/header/ScrollZoomIcons.js +35 -0
  51. package/dist/components/header/ScrollZoomIcons.js.map +1 -0
  52. package/dist/components/header/TreeSettingsMenu.js +7 -1
  53. package/dist/components/header/TreeSettingsMenu.js.map +1 -1
  54. package/dist/components/header/UnshareableDataWarning.d.ts +6 -0
  55. package/dist/components/header/UnshareableDataWarning.js +40 -0
  56. package/dist/components/header/UnshareableDataWarning.js.map +1 -0
  57. package/dist/components/header/ZoomControls.js +49 -6
  58. package/dist/components/header/ZoomControls.js.map +1 -1
  59. package/dist/components/header/getAnnotationsMenu.js +11 -14
  60. package/dist/components/header/getAnnotationsMenu.js.map +1 -1
  61. package/dist/components/header/settingsMenuItems.js +10 -7
  62. package/dist/components/header/settingsMenuItems.js.map +1 -1
  63. package/dist/components/import/ImportForm.js +1 -1
  64. package/dist/components/import/ImportForm.js.map +1 -1
  65. package/dist/components/import/ImportFormExamples.js +2 -6
  66. package/dist/components/import/ImportFormExamples.js.map +1 -1
  67. package/dist/components/import/util.js +2 -0
  68. package/dist/components/import/util.js.map +1 -1
  69. package/dist/components/minimap/Minimap.js +1 -2
  70. package/dist/components/minimap/Minimap.js.map +1 -1
  71. package/dist/components/msa/AnnotationLegend.js +27 -19
  72. package/dist/components/msa/AnnotationLegend.js.map +1 -1
  73. package/dist/components/msa/MSACanvas.js +1 -1
  74. package/dist/components/msa/MSACanvas.js.map +1 -1
  75. package/dist/components/msa/MSACanvasBlock.js +17 -20
  76. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  77. package/dist/components/msa/MSAMouseoverCanvas.js +2 -1
  78. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  79. package/dist/components/msa/domainBandCursor.d.ts +7 -11
  80. package/dist/components/msa/domainBandCursor.js +7 -11
  81. package/dist/components/msa/domainBandCursor.js.map +1 -1
  82. package/dist/components/msa/drawFeatureSpans.d.ts +53 -0
  83. package/dist/components/msa/drawFeatureSpans.js +78 -0
  84. package/dist/components/msa/drawFeatureSpans.js.map +1 -0
  85. package/dist/components/msa/legendRows.d.ts +8 -0
  86. package/dist/components/msa/legendRows.js +16 -0
  87. package/dist/components/msa/legendRows.js.map +1 -0
  88. package/dist/components/msa/msaRaster.d.ts +30 -27
  89. package/dist/components/msa/msaRaster.js +193 -90
  90. package/dist/components/msa/msaRaster.js.map +1 -1
  91. package/dist/components/msa/packDomainLanes.d.ts +20 -0
  92. package/dist/components/msa/packDomainLanes.js +33 -0
  93. package/dist/components/msa/packDomainLanes.js.map +1 -0
  94. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +3 -1
  95. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +51 -87
  96. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  97. package/dist/components/msa/renderHighlights.d.ts +44 -4
  98. package/dist/components/msa/renderHighlights.js +99 -11
  99. package/dist/components/msa/renderHighlights.js.map +1 -1
  100. package/dist/components/msa/renderMSABlock.d.ts +1 -2
  101. package/dist/components/msa/renderMSABlock.js +28 -31
  102. package/dist/components/msa/renderMSABlock.js.map +1 -1
  103. package/dist/components/msa/renderMSAMouseover.js +9 -30
  104. package/dist/components/msa/renderMSAMouseover.js.map +1 -1
  105. package/dist/components/msa/tileColor.js +4 -7
  106. package/dist/components/msa/tileColor.js.map +1 -1
  107. package/dist/components/msa/useMsaBlockMouse.d.ts +5 -3
  108. package/dist/components/msa/useMsaBlockMouse.js +6 -6
  109. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  110. package/dist/components/renderCtx.d.ts +1 -1
  111. package/dist/components/rowpanels/RowPanelBlock.d.ts +9 -0
  112. package/dist/components/rowpanels/RowPanelBlock.js +86 -0
  113. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -0
  114. package/dist/components/rowpanels/RowPanelHeaders.d.ts +12 -0
  115. package/dist/components/rowpanels/RowPanelHeaders.js +38 -0
  116. package/dist/components/rowpanels/RowPanelHeaders.js.map +1 -0
  117. package/dist/components/{msa/ColumnStats.d.ts → rowpanels/RowPanels.d.ts} +2 -2
  118. package/dist/components/rowpanels/RowPanels.js +32 -0
  119. package/dist/components/rowpanels/RowPanels.js.map +1 -0
  120. package/dist/components/rowpanels/headerLayout.d.ts +1 -0
  121. package/dist/components/rowpanels/headerLayout.js +5 -0
  122. package/dist/components/rowpanels/headerLayout.js.map +1 -0
  123. package/dist/components/rowpanels/renderFeaturePanel.d.ts +21 -0
  124. package/dist/components/rowpanels/renderFeaturePanel.js +37 -0
  125. package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -0
  126. package/dist/components/rowpanels/renderRowPanel.d.ts +23 -0
  127. package/dist/components/rowpanels/renderRowPanel.js +22 -0
  128. package/dist/components/rowpanels/renderRowPanel.js.map +1 -0
  129. package/dist/components/rowpanels/renderStrip.d.ts +20 -0
  130. package/dist/components/rowpanels/renderStrip.js +26 -0
  131. package/dist/components/rowpanels/renderStrip.js.map +1 -0
  132. package/dist/components/tracks/TrackBlocks.js +13 -16
  133. package/dist/components/tracks/TrackBlocks.js.map +1 -1
  134. package/dist/components/tracks/TrackTooltipContent.d.ts +15 -0
  135. package/dist/components/tracks/TrackTooltipContent.js +109 -0
  136. package/dist/components/tracks/TrackTooltipContent.js.map +1 -0
  137. package/dist/components/tracks/drawTracks.d.ts +30 -12
  138. package/dist/components/tracks/drawTracks.js +127 -34
  139. package/dist/components/tracks/drawTracks.js.map +1 -1
  140. package/dist/components/tracks/useTrackHover.d.ts +22 -0
  141. package/dist/components/tracks/useTrackHover.js +30 -0
  142. package/dist/components/tracks/useTrackHover.js.map +1 -0
  143. package/dist/components/tree/CladeLabels.d.ts +12 -0
  144. package/dist/components/tree/CladeLabels.js +48 -0
  145. package/dist/components/tree/CladeLabels.js.map +1 -0
  146. package/dist/components/tree/TreeCanvas.js +6 -4
  147. package/dist/components/tree/TreeCanvas.js.map +1 -1
  148. package/dist/components/tree/TreeCanvasBlock.js +6 -21
  149. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  150. package/dist/components/tree/TreeOverview.d.ts +14 -0
  151. package/dist/components/tree/TreeOverview.js +75 -0
  152. package/dist/components/tree/TreeOverview.js.map +1 -0
  153. package/dist/components/tree/TreeRuler.js +11 -5
  154. package/dist/components/tree/TreeRuler.js.map +1 -1
  155. package/dist/components/tree/cladeBrackets.d.ts +25 -0
  156. package/dist/components/tree/cladeBrackets.js +51 -0
  157. package/dist/components/tree/cladeBrackets.js.map +1 -0
  158. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -2
  159. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  160. package/dist/components/tree/renderTreeCanvas.d.ts +0 -1
  161. package/dist/components/tree/renderTreeCanvas.js +221 -47
  162. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  163. package/dist/components/tree/renderTreeOverview.d.ts +52 -0
  164. package/dist/components/tree/renderTreeOverview.js +138 -0
  165. package/dist/components/tree/renderTreeOverview.js.map +1 -0
  166. package/dist/components/tree/scaleBar.d.ts +10 -0
  167. package/dist/components/tree/scaleBar.js +24 -0
  168. package/dist/components/tree/scaleBar.js.map +1 -0
  169. package/dist/components/tree/useTreeHover.js +2 -4
  170. package/dist/components/tree/useTreeHover.js.map +1 -1
  171. package/dist/constants.d.ts +18 -1
  172. package/dist/constants.js +51 -8
  173. package/dist/constants.js.map +1 -1
  174. package/dist/createPaletteMap.d.ts +7 -6
  175. package/dist/createPaletteMap.js +10 -9
  176. package/dist/createPaletteMap.js.map +1 -1
  177. package/dist/element.d.ts +13 -0
  178. package/dist/element.js +269 -0
  179. package/dist/element.js.map +1 -0
  180. package/dist/featureFields.d.ts +11 -0
  181. package/dist/featureFields.js +17 -0
  182. package/dist/featureFields.js.map +1 -0
  183. package/dist/fetchUtils.d.ts +7 -7
  184. package/dist/fetchUtils.js +4 -32
  185. package/dist/fetchUtils.js.map +1 -1
  186. package/dist/flatToTree.js +1 -2
  187. package/dist/flatToTree.js.map +1 -1
  188. package/dist/ggplotPalettes.d.ts +10 -0
  189. package/dist/ggplotPalettes.js +58 -0
  190. package/dist/ggplotPalettes.js.map +1 -1
  191. package/dist/hierarchy.d.ts +29 -1
  192. package/dist/hierarchy.js +82 -19
  193. package/dist/hierarchy.js.map +1 -1
  194. package/dist/index.d.ts +10 -1
  195. package/dist/index.js +10 -2
  196. package/dist/index.js.map +1 -1
  197. package/dist/model/DataModel.js +4 -4
  198. package/dist/model/DataModel.js.map +1 -1
  199. package/dist/model/msaModel.d.ts +3 -2
  200. package/dist/model/msaModel.js +3 -2
  201. package/dist/model/msaModel.js.map +1 -1
  202. package/dist/model/treeModel.d.ts +30 -0
  203. package/dist/model/treeModel.js +37 -1
  204. package/dist/model/treeModel.js.map +1 -1
  205. package/dist/model.d.ts +792 -259
  206. package/dist/model.js +2092 -675
  207. package/dist/model.js.map +1 -1
  208. package/dist/mount.d.ts +11 -0
  209. package/dist/mount.js +22 -0
  210. package/dist/mount.js.map +1 -0
  211. package/dist/neighborJoining.js +8 -32
  212. package/dist/neighborJoining.js.map +1 -1
  213. package/dist/renderToStaticMarkup.d.ts +15 -13
  214. package/dist/renderToStaticMarkup.js +37 -25
  215. package/dist/renderToStaticMarkup.js.map +1 -1
  216. package/dist/renderToSvg.js +198 -68
  217. package/dist/renderToSvg.js.map +1 -1
  218. package/dist/rowCoordinateCalculations.d.ts +26 -28
  219. package/dist/rowCoordinateCalculations.js +13 -39
  220. package/dist/rowCoordinateCalculations.js.map +1 -1
  221. package/dist/scales.d.ts +22 -0
  222. package/dist/scales.js +30 -0
  223. package/dist/scales.js.map +1 -0
  224. package/dist/seqPosToGlobalCol.d.ts +2 -3
  225. package/dist/seqPosToGlobalCol.js +5 -4
  226. package/dist/seqPosToGlobalCol.js.map +1 -1
  227. package/dist/sequenceLogo.d.ts +6 -11
  228. package/dist/sequenceLogo.js +6 -11
  229. package/dist/sequenceLogo.js.map +1 -1
  230. package/dist/stripDefault.d.ts +7 -14
  231. package/dist/stripDefault.js +7 -14
  232. package/dist/stripDefault.js.map +1 -1
  233. package/dist/svgTestUtil.d.ts +306 -124
  234. package/dist/types.d.ts +295 -3
  235. package/dist/umd.d.ts +2 -0
  236. package/dist/umd.js +4 -2
  237. package/dist/umd.js.map +1 -1
  238. package/dist/useCanvasAutorun.d.ts +5 -10
  239. package/dist/useCanvasAutorun.js +5 -10
  240. package/dist/useCanvasAutorun.js.map +1 -1
  241. package/dist/useMsaSvgFigure.d.ts +20 -0
  242. package/dist/useMsaSvgFigure.js +46 -0
  243. package/dist/useMsaSvgFigure.js.map +1 -0
  244. package/dist/util.d.ts +10 -4
  245. package/dist/util.js +37 -10
  246. package/dist/util.js.map +1 -1
  247. package/dist/version.d.ts +1 -1
  248. package/dist/version.js +1 -1
  249. package/dist/wuss.d.ts +14 -0
  250. package/dist/wuss.js +55 -0
  251. package/dist/wuss.js.map +1 -0
  252. package/package.json +23 -14
  253. package/src/colorSchemes.ts +1 -2
  254. package/src/columnStats.ts +58 -0
  255. package/src/components/DragHandle.tsx +18 -7
  256. package/src/components/Loading.tsx +14 -8
  257. package/src/components/MSAView.tsx +19 -5
  258. package/src/components/MSAViewer.tsx +326 -10
  259. package/src/components/PortalTooltip.tsx +47 -0
  260. package/src/components/ResizeHandles.tsx +21 -36
  261. package/src/components/SequenceTextArea.tsx +3 -3
  262. package/src/components/Track.tsx +55 -18
  263. package/src/components/dialogs/AnnotationFileDialog.tsx +162 -0
  264. package/src/components/dialogs/ExportSVGDialog.tsx +7 -2
  265. package/src/components/dialogs/FeatureDialog.tsx +13 -9
  266. package/src/components/dialogs/TrackInfoDialog.tsx +1 -1
  267. package/src/components/header/GappynessSlider.tsx +6 -11
  268. package/src/components/header/Header.tsx +10 -0
  269. package/src/components/header/HeaderStatusArea.tsx +0 -5
  270. package/src/components/header/LoadWarnings.tsx +48 -0
  271. package/src/components/header/MultiAlignmentSelector.tsx +0 -0
  272. package/src/components/header/ScrollZoomIcons.tsx +52 -0
  273. package/src/components/header/TreeSettingsMenu.tsx +7 -1
  274. package/src/components/header/UnshareableDataWarning.tsx +56 -0
  275. package/src/components/header/ZoomControls.tsx +74 -14
  276. package/src/components/header/getAnnotationsMenu.ts +13 -17
  277. package/src/components/header/settingsMenuItems.ts +11 -6
  278. package/src/components/import/ImportForm.tsx +2 -2
  279. package/src/components/import/ImportFormExamples.tsx +4 -8
  280. package/src/components/import/util.ts +2 -0
  281. package/src/components/minimap/Minimap.tsx +1 -2
  282. package/src/components/msa/AnnotationLegend.tsx +48 -38
  283. package/src/components/msa/MSACanvas.tsx +3 -5
  284. package/src/components/msa/MSACanvasBlock.tsx +17 -21
  285. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -1
  286. package/src/components/msa/domainBandCursor.ts +7 -11
  287. package/src/components/msa/drawFeatureSpans.ts +150 -0
  288. package/src/components/msa/legendRows.ts +24 -0
  289. package/src/components/msa/msaRaster.ts +236 -88
  290. package/src/components/msa/packDomainLanes.ts +36 -0
  291. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +69 -123
  292. package/src/components/msa/renderHighlights.ts +141 -10
  293. package/src/components/msa/renderMSABlock.ts +29 -38
  294. package/src/components/msa/renderMSAMouseover.ts +9 -39
  295. package/src/components/msa/tileColor.ts +4 -7
  296. package/src/components/msa/useMsaBlockMouse.ts +6 -6
  297. package/src/components/renderCtx.ts +1 -0
  298. package/src/components/rowpanels/RowPanelBlock.tsx +139 -0
  299. package/src/components/rowpanels/RowPanelHeaders.tsx +57 -0
  300. package/src/components/rowpanels/RowPanels.tsx +77 -0
  301. package/src/components/rowpanels/headerLayout.ts +5 -0
  302. package/src/components/rowpanels/renderFeaturePanel.ts +66 -0
  303. package/src/components/rowpanels/renderRowPanel.ts +41 -0
  304. package/src/components/rowpanels/renderStrip.ts +46 -0
  305. package/src/components/tracks/TrackBlocks.tsx +13 -18
  306. package/src/components/tracks/TrackTooltipContent.tsx +156 -0
  307. package/src/components/tracks/drawTracks.ts +169 -38
  308. package/src/components/tracks/useTrackHover.ts +42 -0
  309. package/src/components/tree/CladeLabels.tsx +77 -0
  310. package/src/components/tree/TreeCanvas.tsx +4 -3
  311. package/src/components/tree/TreeCanvasBlock.tsx +10 -32
  312. package/src/components/tree/TreeOverview.tsx +106 -0
  313. package/src/components/tree/TreeRuler.tsx +29 -5
  314. package/src/components/tree/cladeBrackets.ts +73 -0
  315. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +2 -2
  316. package/src/components/tree/renderTreeCanvas.ts +312 -48
  317. package/src/components/tree/renderTreeOverview.ts +212 -0
  318. package/src/components/tree/scaleBar.ts +23 -0
  319. package/src/components/tree/useTreeHover.ts +2 -4
  320. package/src/constants.ts +61 -8
  321. package/src/createPaletteMap.ts +10 -9
  322. package/src/element.ts +321 -0
  323. package/src/featureFields.ts +19 -0
  324. package/src/fetchUtils.ts +7 -40
  325. package/src/flatToTree.ts +1 -2
  326. package/src/ggplotPalettes.ts +60 -0
  327. package/src/hierarchy.ts +97 -20
  328. package/src/index.ts +46 -6
  329. package/src/model/DataModel.ts +5 -4
  330. package/src/model/msaModel.ts +3 -2
  331. package/src/model/treeModel.ts +42 -0
  332. package/src/model.ts +2492 -793
  333. package/src/mount.tsx +32 -0
  334. package/src/neighborJoining.ts +8 -32
  335. package/src/rawImports.d.ts +9 -0
  336. package/src/renderToStaticMarkup.ts +41 -25
  337. package/src/renderToSvg.tsx +365 -92
  338. package/src/rowCoordinateCalculations.ts +16 -62
  339. package/src/scales.ts +47 -0
  340. package/src/seqPosToGlobalCol.ts +5 -4
  341. package/src/sequenceLogo.ts +6 -11
  342. package/src/stripDefault.ts +7 -14
  343. package/src/types.ts +352 -12
  344. package/src/umd.ts +4 -2
  345. package/src/useCanvasAutorun.ts +5 -10
  346. package/src/useMsaSvgFigure.ts +72 -0
  347. package/src/util.ts +40 -14
  348. package/src/version.ts +1 -1
  349. package/src/wuss.ts +62 -0
  350. package/dist/components/dialogs/InterProScanDialog.js +0 -137
  351. package/dist/components/dialogs/InterProScanDialog.js.map +0 -1
  352. package/dist/components/dialogs/InterProScanFileDialog.d.ts +0 -7
  353. package/dist/components/dialogs/InterProScanFileDialog.js +0 -64
  354. package/dist/components/dialogs/InterProScanFileDialog.js.map +0 -1
  355. package/dist/components/msa/ColumnStats.js +0 -42
  356. package/dist/components/msa/ColumnStats.js.map +0 -1
  357. package/dist/launchInterProScan.d.ts +0 -13
  358. package/dist/launchInterProScan.js +0 -110
  359. package/dist/launchInterProScan.js.map +0 -1
  360. package/dist/useColorContrast.d.ts +0 -10
  361. package/dist/useColorContrast.js +0 -13
  362. package/dist/useColorContrast.js.map +0 -1
  363. package/src/clustalX.test.ts +0 -74
  364. package/src/colSpace.test.ts +0 -67
  365. package/src/collapseLogic.test.ts +0 -115
  366. package/src/colorSchemes.docs.test.ts +0 -57
  367. package/src/columnCounts.test.ts +0 -73
  368. package/src/columnStats.test.ts +0 -94
  369. package/src/columnTracks.test.ts +0 -97
  370. package/src/components/dialogs/InterProScanDialog.tsx +0 -214
  371. package/src/components/dialogs/InterProScanFileDialog.tsx +0 -138
  372. package/src/components/minimap/minimapLayout.test.ts +0 -71
  373. package/src/components/msa/ColumnStats.tsx +0 -54
  374. package/src/components/msa/msaRaster.test.ts +0 -145
  375. package/src/components/msa/renderBoxFeatureCanvasBlock.test.ts +0 -51
  376. package/src/components/tree/renderTreeCanvas.test.ts +0 -296
  377. package/src/dataInitialized.test.ts +0 -42
  378. package/src/domainBands.test.ts +0 -122
  379. package/src/domainLetterColor.test.ts +0 -80
  380. package/src/exportFileName.test.ts +0 -40
  381. package/src/fetchUtils.test.ts +0 -83
  382. package/src/flatToTree.test.ts +0 -51
  383. package/src/hierarchy.test.ts +0 -228
  384. package/src/highlights.test.ts +0 -70
  385. package/src/impgRender.test.tsx +0 -68
  386. package/src/largeTree.test.ts +0 -67
  387. package/src/launchInterProScan.ts +0 -167
  388. package/src/loadErrorDisplay.test.tsx +0 -102
  389. package/src/modelFilehandleLoaders.test.ts +0 -137
  390. package/src/modelReset.test.ts +0 -120
  391. package/src/neighborJoining.test.ts +0 -164
  392. package/src/parseAsn1.test.ts +0 -36
  393. package/src/propertyConservation.test.ts +0 -36
  394. package/src/renderColumnTracksSvg.test.tsx +0 -108
  395. package/src/renderDomainsSvg.test.tsx +0 -118
  396. package/src/renderHighlightsSvg.test.tsx +0 -85
  397. package/src/renderMinimapSvg.test.tsx +0 -62
  398. package/src/renderRasterSvg.test.tsx +0 -144
  399. package/src/renderSequenceLogoSvg.test.tsx +0 -165
  400. package/src/renderToSvg.test.tsx +0 -65
  401. package/src/reset.test.ts +0 -61
  402. package/src/rowCoordinateCalculations.test.ts +0 -211
  403. package/src/rowSpace.test.ts +0 -46
  404. package/src/segmentOverlay.test.ts +0 -70
  405. package/src/seqPosToGlobalCol.test.ts +0 -59
  406. package/src/sequenceLogo.test.ts +0 -88
  407. package/src/setFontSize.test.ts +0 -33
  408. package/src/stripDefault.test.ts +0 -48
  409. package/src/stripDefaultSnapshot.test.ts +0 -87
  410. package/src/treeMetadata.test.ts +0 -39
  411. package/src/useCanvasAutorun.test.tsx +0 -98
  412. package/src/useColorContrast.ts +0 -18
  413. package/src/viewChrome.test.tsx +0 -134
  414. package/src/wheelZoom.test.ts +0 -46
package/dist/model.d.ts CHANGED
@@ -1,24 +1,23 @@
1
+ import type { ColumnStats } from './columnStats.ts';
2
+ import type { ScrollZoomAxis } from './constants.ts';
1
3
  import type { HierarchyNode } from './hierarchy.ts';
2
4
  import type { ExportSvgOptions } from './renderToSvg.tsx';
3
- import type { Annotation, BasicTrack, ColumnTrackSpec, DomainBand, Highlight, NodeWithIds, NodeWithIdsAndLength, ResolvedHighlight } from './types.ts';
5
+ import type { Annotation, Arc, BasicTrack, Cell, Clade, ResidueMappingProblem, ColumnTrackSpec, DomainBand, Encoding, Highlight, Legend, NodeWithIds, NodeWithIdsAndLength, Region, ResidueMapping, ResolvedClade, ResolvedEncoding, ResolvedHighlight, ResolvedRowPanel, RowPanelSpec, RowResidue, StructureResidue, TrackKind, UnshareableData, Viewport } from './types.ts';
4
6
  import type { FileLocation as FileLocationType } from '@jbrowse/core/util/types';
5
7
  import type { Instance } from '@jbrowse/mobx-state-tree';
6
8
  import type { InterProScanResults } from 'msa-parsers';
9
+ export declare const defaultTrackHeights: Partial<Record<TrackKind, number>>;
7
10
  /**
8
11
  * The snapshot properties reset() carries across a return to the import form:
9
12
  * display preferences and layout, nothing derived from the loaded file.
10
13
  *
11
- * reset() applies a default snapshot filtered to this list, so the list is the
12
- * whole decision: a property left off it resets to its default, a visible and
13
- * benign failure. The previous shape — a hand-maintained list of things to
14
- * CLEAR — failed in the dangerous direction: a forgotten property silently
15
- * carried the previous file's state into the next one, and because node ids
16
- * are path-derived (node-0-0-1), a stale `collapsed` or `showOnly` id matched
17
- * a real node in the new tree and folded it. Downstream composed properties
18
- * (e.g. the jbrowse plugin's) are not on the list, so they reset too.
14
+ * reset() applies a default snapshot filtered to this list, so any property
15
+ * left off it resets, including downstream composed ones (e.g. the jbrowse
16
+ * plugin's). Node ids are path-derived (node-0-0-1), so a carried-over
17
+ * `collapsed` or `showOnly` id would match a real node in the next tree and
18
+ * fold it.
19
19
  *
20
- * Exported for modelReset.test.ts, which checks that everything off this list
21
- * matches a freshly created model after reset().
20
+ * Exported for modelReset.test.ts.
22
21
  */
23
22
  export declare const preservedOnReset: Set<string>;
24
23
  /**
@@ -41,7 +40,7 @@ export declare const preservedOnReset: Set<string>;
41
40
  * root.view.setData({ msa: '>seq1\nACGT\n>seq2\nACGT' })
42
41
  * ```
43
42
  */
44
- declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawTree" | "labelsAlignRight" | "showBranchLen" | "treeAreaWidth" | "treeWidth"> & {
43
+ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeWidth"> & {
45
44
  drawLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
46
45
  labelsAlignRight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
47
46
  treeAreaWidth: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -49,13 +48,16 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
49
48
  showBranchLen: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
50
49
  drawTree: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
51
50
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
51
+ drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
52
+ showTreeOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
53
+ overviewHeight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
52
54
  autoTreeAreaWidth: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
53
55
  }, "bgColor" | "colorSchemeName" | "msaFormat" | "showColumnStats"> & {
54
56
  bgColor: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
55
57
  colorSchemeName: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
56
58
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
57
59
  msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
58
- }, "allowedGappyness" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "featureFilters" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "relativeTo" | "rowHeight" | "scrollX" | "scrollY" | "scrollZoom" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffTracks" | "type"> & {
60
+ }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "relativeTo" | "residueMappings" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
59
61
  /**
60
62
  * #property
61
63
  * id of view, randomly generated if not provided
@@ -68,10 +70,8 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
68
70
  /**
69
71
  * #property
70
72
  * whether the domain legend is expanded. The legend floats over the
71
- * top-right of the alignment, so on a tall panel it covers real
72
- * residues -- persisting the state is what lets a reader collapse it
73
- * and keep it collapsed, and what lets a session or a figure open with
74
- * it already out of the way.
73
+ * top-right of the alignment and covers residues, so a session or
74
+ * figure can open with it collapsed.
75
75
  */
76
76
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
77
77
  /**
@@ -90,7 +90,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
90
90
  * #property
91
91
  * hardcoded view type
92
92
  */
93
- type: import("@jbrowse/mobx-state-tree").ISimpleType<"MsaView">;
93
+ type: import("@jbrowse/mobx-state-tree").ILiteralType<"MsaView">;
94
94
  /**
95
95
  * #property
96
96
  */
@@ -100,6 +100,11 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
100
100
  * zoom in/out on plain mouse-wheel without holding ctrl
101
101
  */
102
102
  scrollZoom: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
103
+ /**
104
+ * #property
105
+ * which cell dimensions a wheel zoom scales, while `scrollZoom` is on
106
+ */
107
+ scrollZoomAxis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"both" | "horizontal" | "vertical">, [undefined]>;
103
108
  /**
104
109
  * #property
105
110
  * height of the div containing the view, px
@@ -543,11 +548,27 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
543
548
  turnedOffTracks: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>, [undefined]>;
544
549
  /**
545
550
  * #property
546
- * tracks supplied as data rather than computed from the alignment:
547
- * per-column values drawn as bars, or a per-column string drawn as a
548
- * text track. See docs/layers.md
551
+ * the height of every track one divider resizes, keyed by `heightKey`:
552
+ * the `kind` for the computed tracks, `own:<id>` for a data track. A
553
+ * key is absent until the user drags that divider, and
554
+ * `defaultTrackHeights` answers for it until then, so an untouched
555
+ * viewer adds nothing to the shared URL.
556
+ */
557
+ trackHeights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<number>>, [undefined]>;
558
+ /**
559
+ * #property
560
+ * tracks supplied as data: per-column values drawn as bars, or a
561
+ * per-column string drawn as a text track. See docs/layers.md
549
562
  */
550
563
  columnTracks: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<ColumnTrackSpec, ColumnTrackSpec, ColumnTrackSpec>>, [undefined]>;
564
+ /**
565
+ * #property
566
+ * row-to-structure residue correspondence, computed outside the viewer
567
+ * (e.g. from SIFTS). Matching by sequence equality places a tagged
568
+ * construct, a truncation or a subsequence row on the wrong residue.
569
+ * See docs/layers.md
570
+ */
571
+ residueMappings: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<ResidueMapping, ResidueMapping, ResidueMapping>>, [undefined]>;
551
572
  /**
552
573
  * #property
553
574
  * data from the loaded tree/msa/treeMetadata, generally loaded by
@@ -568,8 +589,12 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
568
589
  }>, [undefined]>;
569
590
  /**
570
591
  * #property
592
+ * the user's explicit hide choices per annotation accession, keyed by
593
+ * accession with the value meaning "off", like `turnedOffTracks`. An
594
+ * untouched accession is absent and drawn, so the shared URL grows
595
+ * only with the user's filters
571
596
  */
572
- featureFilters: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>, [undefined]>;
597
+ turnedOffFeatures: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>, [undefined]>;
573
598
  /**
574
599
  * #property
575
600
  */
@@ -588,9 +613,34 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
588
613
  * labeled highlights in 1-based inclusive coordinates: a column span
589
614
  * `{start, end}`, a residue span `{row, start, end}` of a named row,
590
615
  * or a row set `{rows}`, each with an optional `label` and `color`.
591
- * Persists in the snapshot, so a computed answer travels in the URL.
616
+ * Persists in the snapshot and the URL.
592
617
  */
593
618
  highlights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<Highlight, Highlight, Highlight>>, [undefined]>;
619
+ /**
620
+ * #property
621
+ * clades of the tree with a mark drawn over them. `mrca` names tips
622
+ * whose common ancestor is the clade, or `range` its first and last
623
+ * tip in display order, and `tips` is the leaf count the producer
624
+ * measured. `mark` is `highlight`, `bracket`, `collapse` or `focus`.
625
+ * See docs/layers.md
626
+ */
627
+ clades: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<Clade, Clade, Clade>>, [undefined]>;
628
+ /**
629
+ * #property
630
+ * what the viewer's own marks read from `rowData`:
631
+ * `{channel, field, scale?}` per channel, where `channel` is
632
+ * `tipLabel` or `rowTint`. See docs/layers.md
633
+ */
634
+ encodings: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<Encoding, Encoding, Encoding>>, [undefined]>;
635
+ /**
636
+ * #property
637
+ * panels drawn between the tree and the alignment:
638
+ * `{kind: "strip", field, scale?, width?, header?}` colors one cell
639
+ * per row from a `rowData` field, and
640
+ * `{kind: "features", x, encoding?, transform?, width?, header?}`
641
+ * draws the spans the GFF carries. See docs/layers.md
642
+ */
643
+ rowPanels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<RowPanelSpec, RowPanelSpec, RowPanelSpec>>, [undefined]>;
594
644
  }, {
595
645
  queueOfDialogs: [import("@jbrowse/core/util").DialogComponentType, any][];
596
646
  } & {
@@ -607,6 +657,9 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
607
657
  setAutoTreeAreaWidth(arg: boolean): void;
608
658
  setShowBranchLen(arg: boolean): void;
609
659
  setDrawNodeBubbles(arg: boolean): void;
660
+ setDrawNodeLabels(arg: boolean): void;
661
+ setShowTreeOverview(arg: boolean): void;
662
+ setOverviewHeight(n: number): void;
610
663
  setDrawLabels(arg: boolean): void;
611
664
  } & {
612
665
  setColorSchemeName(name: string): void;
@@ -618,19 +671,22 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
618
671
  * #volatile
619
672
  */
620
673
  headerHeight: number;
674
+ /**
675
+ * #volatile
676
+ * leaves the toolbar out, for a host drawing its own controls. Kept out
677
+ * of the snapshot so a link opened in the full app shows the toolbar.
678
+ */
679
+ hideHeader: boolean;
621
680
  /**
622
681
  * #volatile
623
682
  */
624
683
  status: {
625
684
  msg: string;
626
- url?: string;
627
685
  onCancel?: () => void;
628
686
  } | undefined;
629
687
  /**
630
688
  * #volatile
631
- * high resolution scale factor, helps make canvas look better on hi-dpi
632
- * screens. derived from the device pixel ratio so canvases are crisp on
633
- * retina/4k displays and not needlessly oversized on standard ones
689
+ * canvas scale factor, from the device pixel ratio
634
690
  */
635
691
  highResScaleFactor: number;
636
692
  /**
@@ -688,6 +744,12 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
688
744
  * array of column indices to highlight
689
745
  */
690
746
  highlightedColumns: number[] | undefined;
747
+ /**
748
+ * #volatile
749
+ * transient highlights keyed by owner, so a structure viewer's hover and
750
+ * a genome view's hover each clear only their own. Not persisted.
751
+ */
752
+ transientHighlights: Record<string, Highlight[]>;
691
753
  /**
692
754
  * #volatile
693
755
  */
@@ -695,28 +757,35 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
695
757
  /**
696
758
  * #volatile
697
759
  */
698
- conservationTrackHeight: number;
760
+ marginLeft: number;
699
761
  /**
700
762
  * #volatile
701
- * taller than the conservation track by default: the logo spends its
702
- * height on stacked glyphs, and a 40px stack of four residues leaves each
703
- * one too short to identify
704
763
  */
705
- sequenceLogoTrackHeight: number;
764
+ error: unknown;
706
765
  /**
707
766
  * #volatile
767
+ * non-fatal load problems: an optional layer that failed to load, an
768
+ * overlay that failed to parse. `error` replaces the view and is for the
769
+ * alignment itself
708
770
  */
709
- marginLeft: number;
771
+ warnings: string[];
710
772
  /**
711
773
  * #volatile
774
+ * bumped by reset(). The error boundary above the view uses it as its key,
775
+ * since the boundary keeps its caught error until remounted
712
776
  */
713
- error: unknown;
777
+ resetCount: number;
778
+ /**
779
+ * #volatile
780
+ * set by a host that restores the loaded documents itself, such as a
781
+ * jbrowse session or a page that refetches them. `unshareableData` then
782
+ * reports nothing
783
+ */
784
+ hostCarriesData: boolean;
714
785
  /**
715
786
  * #volatile
716
- * overlay annotations drawn on the alignment, whatever their source.
717
- * Every source -- InterProScan, GFF, a user upload -- converts to this
718
- * flat list before it reaches the model, so nothing downstream of here
719
- * knows which one it came from
787
+ * overlay annotations drawn on the alignment. InterProScan JSON, GFF and
788
+ * user uploads all convert to this flat list
720
789
  */
721
790
  annotations: Annotation[];
722
791
  } & {
@@ -749,8 +818,8 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
749
818
  setWidth(arg: number): void;
750
819
  /**
751
820
  * #action
752
- * high-res scale factor, tracks the device pixel ratio so canvases stay
753
- * crisp when the window moves between monitors or the browser zooms
821
+ * update the canvas scale factor when the device pixel ratio changes
822
+ * (moving between monitors, browser zoom)
754
823
  */
755
824
  setHighResScaleFactor(arg: number): void;
756
825
  /**
@@ -763,28 +832,60 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
763
832
  * set error state
764
833
  */
765
834
  setError(error?: unknown): void;
835
+ /**
836
+ * #action
837
+ * record a non-fatal load problem: a layer that failed to load, a file
838
+ * that failed to parse
839
+ */
840
+ addWarning(warning: string): void;
841
+ /**
842
+ * #action
843
+ */
844
+ clearWarnings(): void;
845
+ /**
846
+ * #action
847
+ * declare that this host restores the loaded documents itself, which
848
+ * hides the "Not in the link" warning. See `hostCarriesData`
849
+ */
850
+ setHostCarriesData(arg: boolean): void;
766
851
  /**
767
852
  * #action
768
853
  * set mouse position (row, column) in the MSA
769
854
  *
770
- * CROSS-REPO CONTRACT: jbrowse-plugin-protein3d calls this (and reads the
771
- * `mouseCol` volatile) to sync MSA<->3D-structure hover. Keep the name and
772
- * signature stable; see that repo's ProteinToMsaHoverSync.tsx.
855
+ * Public API: a host calls this (and reads `mouseCol`) to sync hover with
856
+ * its own view, such as a genome view or 3D structure. Keep the name and
857
+ * signature stable.
773
858
  */
774
859
  setMousePos(col?: number, row?: number): void;
775
860
  /**
776
861
  * #action
777
862
  * set highlighted columns
778
863
  *
779
- * CROSS-REPO CONTRACT: called by jbrowse-plugin-msaview
780
- * (afterCreateAutoruns.ts) to highlight alignment columns. It has no
781
- * in-repo caller, so do not flag it as dead code — it is public API.
864
+ * Public API: jbrowse-plugin-msaview calls this from its
865
+ * afterCreateAutoruns, and MSAViewer passes its `highlightColumns` prop
866
+ * through it.
782
867
  */
783
868
  setHighlightedColumns(columns?: number[]): void;
784
869
  /**
785
870
  * #action
786
871
  */
787
872
  setHighlights(highlights: Highlight[]): void;
873
+ /**
874
+ * #action
875
+ * replace the clades the viewer marks (see docs/layers.md)
876
+ */
877
+ setClades(clades: Clade[]): void;
878
+ /**
879
+ * #action
880
+ * show `highlights` for `owner`, replacing that owner's previous ones and
881
+ * leaving other owners' in place
882
+ */
883
+ applyHighlight(owner: string, highlights: Highlight[]): void;
884
+ /**
885
+ * #action
886
+ * remove `owner`'s highlights, leaving other owners' in place
887
+ */
888
+ clearHighlight(owner: string): void;
788
889
  /**
789
890
  * #action
790
891
  * toggle the annotation overlay on the alignment
@@ -816,7 +917,9 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
816
917
  setColWidth(n: number): void;
817
918
  /**
818
919
  * #action
819
- *
920
+ * switch to another alignment of a multi-alignment file (Stockholm).
921
+ * Clears the collapsed node ids, the subtree in focus, the reference row
922
+ * and the scroll position, which all refer to the previous alignment
820
923
  */
821
924
  setCurrentAlignment(n: number): void;
822
925
  /**
@@ -869,6 +972,14 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
869
972
  * #action
870
973
  */
871
974
  setTreeMetadata(result: string): void;
975
+ /**
976
+ * #action
977
+ * store the GFF text in the snapshot like the alignment and tree. The
978
+ * parsed annotations are volatile and a blob filehandle is cleared once
979
+ * read, so the text is the only persisted copy. An autorun parses it
980
+ * into annotations.
981
+ */
982
+ setGFF(result: string): void;
872
983
  } & {
873
984
  /**
874
985
  * #getter
@@ -883,17 +994,24 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
883
994
  * #getter
884
995
  */
885
996
  readonly actuallyShowDomains: boolean;
997
+ /**
998
+ * #getter
999
+ * whether the host restores the loaded documents outside the snapshot.
1000
+ * When true, `unshareableData` is empty.
1001
+ *
1002
+ * A simple host sets `hostCarriesData`. A host where this depends on how
1003
+ * the view was opened overrides the getter in its own composed model's
1004
+ * `.views` block; jbrowse-plugin-msaview's indexed-location views refetch
1005
+ * from a URL the session holds, while its data-store views do not.
1006
+ * `unshareableData` reads it off `self`, so an override takes effect.
1007
+ */
1008
+ readonly hostRestoresData: boolean;
886
1009
  readonly viewInitialized: boolean;
887
1010
  /**
888
1011
  * #getter
889
1012
  */
890
1013
  readonly width: number;
891
1014
  } & {
892
- /**
893
- * #method
894
- * unused here, but can be used by derived classes to add extra items
895
- */
896
- extraViewMenuItems(): never[];
897
1015
  /**
898
1016
  * #getter
899
1017
  */
@@ -922,16 +1040,42 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
922
1040
  */
923
1041
  readonly noTree: boolean;
924
1042
  readonly noDomains: boolean;
1043
+ /**
1044
+ * #getter
1045
+ * loaded documents left out of the snapshot, largest first. A file opened
1046
+ * from disk or pasted in becomes inline text, and DataModel drops an
1047
+ * inline document past `maxInlineSnapshotBytes`.
1048
+ *
1049
+ * The header lists these, and the standalone app stops rewriting the
1050
+ * address bar while the list is non-empty, so a copied link does not
1051
+ * open an empty viewer unannounced. A document fetched from a URL never
1052
+ * appears here, since the snapshot keeps its filehandle.
1053
+ *
1054
+ * Empty when `hostRestoresData` is true.
1055
+ */
1056
+ readonly unshareableData: UnshareableData[];
925
1057
  menuItems(): never[];
926
1058
  /**
927
1059
  * #getter
928
- * extra per-row attributes, keyed by row name. Parsed defensively: the
929
- * source is a user-supplied document (treeMetadataFilehandle, or a
930
- * session snapshot), and this computed is read by labelWidthMap on every
931
- * layout, so a malformed file would otherwise throw out of rendering and
932
- * take the whole view down over a decorative field.
1060
+ * the row table: extra fields per row, keyed by row name, which the
1061
+ * `encodings` channels read. It is stored as the JSON string
1062
+ * `data.treeMetadata`, the name that travels in existing links, so the
1063
+ * inline size limit and `treeMetadataFilehandle` cover it. labelWidthMap
1064
+ * reads it on every layout, so a malformed user-supplied file returns {}
1065
+ * instead of throwing out of rendering.
1066
+ */
1067
+ readonly rowData: Record<string, Record<string, string> | undefined>;
1068
+ /**
1069
+ * #method
1070
+ * one row's fields, the single reader of the row table
933
1071
  */
934
- readonly treeMetadata: Record<string, Record<string, string> | undefined>;
1072
+ rowDataOf(name: string): Record<string, string> | undefined;
1073
+ /**
1074
+ * #getter
1075
+ * the field names the row table carries, sorted, for a producer or a UI
1076
+ * choosing one to encode
1077
+ */
1078
+ readonly rowFields: string[];
935
1079
  /**
936
1080
  * #getter
937
1081
  */
@@ -954,6 +1098,22 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
954
1098
  * #getter
955
1099
  */
956
1100
  readonly rowNamesSet: Map<string, number>;
1101
+ /**
1102
+ * #getter
1103
+ * `clades` resolved to the rows each one covers. The tip names resolve
1104
+ * against `tree` rather than `root`, so a clade whose ancestor the user
1105
+ * collapsed keeps its rows. One leaf pass over the tree serves every
1106
+ * clade. A `range` record names no node, so `collapse` and `focus`, which
1107
+ * need one, drop it.
1108
+ */
1109
+ readonly resolvedClades: ResolvedClade[];
1110
+ /**
1111
+ * #getter
1112
+ * the pixel column reserved at the right of the tree area for the bracket
1113
+ * mark, which the tip labels and the tree itself stay clear of. Zero
1114
+ * where no clade draws a bar or a label.
1115
+ */
1116
+ readonly cladeGutterWidth: number;
957
1117
  /**
958
1118
  * #getter
959
1119
  */
@@ -973,11 +1133,70 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
973
1133
  readonly root: HierarchyNode<NodeWithIds>;
974
1134
  /**
975
1135
  * #getter
976
- * widget width minus the tree area gives the space for the MSA
1136
+ * height of the band the tree overview draws in, zero when it is off
1137
+ */
1138
+ readonly treeOverviewHeight: number;
1139
+ /**
1140
+ * #getter
1141
+ * the whole tree laid out for the overview, or undefined when the
1142
+ * overview is off. The focus is left out, so the focused subtree draws
1143
+ * inside the whole tree, and the collapsed clades are folded, since
1144
+ * those are rows the view no longer has. `x` is in tip-index space and
1145
+ * `len` is a fraction of the root-to-tip length, so one layout serves
1146
+ * any band size.
1147
+ */
1148
+ readonly treeOverviewLayout: {
1149
+ root: HierarchyNode<NodeWithIds>;
1150
+ numTips: number;
1151
+ maxDepthToLeaf: number;
1152
+ showBranchLen: boolean;
1153
+ } | undefined;
1154
+ /**
1155
+ * #getter
1156
+ * the `clades` highlights in the overview's own row space, which the
1157
+ * focus does not narrow
1158
+ */
1159
+ readonly treeOverviewClades: ResolvedClade[];
1160
+ /**
1161
+ * #getter
1162
+ * the inclusive tip rows the focused subtree covers in the overview,
1163
+ * which is the box drawn on it. undefined with no focus
1164
+ */
1165
+ readonly treeOverviewFocusRows: [number, number] | undefined;
1166
+ /**
1167
+ * #method
1168
+ * the subtree a point `y` pixels down the tree overview picks: the
1169
+ * deepest one whose tip range covers every row under that pixel, with
1170
+ * the rows it covers. A pixel stands for several tips on a large tree,
1171
+ * which is what keeps the pick off the individual tips. undefined when
1172
+ * the overview is off or the point picks the whole tree.
1173
+ */
1174
+ treeOverviewHit(y: number): {
1175
+ id: string;
1176
+ rows: [number, number];
1177
+ } | undefined;
1178
+ /**
1179
+ * #getter
1180
+ * the pixel column the row panels occupy between the tree and the
1181
+ * alignment, the sum of each record's width
1182
+ */
1183
+ readonly rowPanelsWidth: number;
1184
+ /**
1185
+ * #getter
1186
+ * height of the band the row panel headers draw in, which is zero with
1187
+ * no row panels and leaves the top area as it was
1188
+ */
1189
+ readonly rowPanelsHeaderHeight: 0 | 56;
1190
+ /**
1191
+ * #getter
1192
+ * widget width minus the tree area and the row panels gives the space
1193
+ * for the MSA
977
1194
  */
978
1195
  readonly msaAreaWidth: number;
979
1196
  /**
980
1197
  * #getter
1198
+ * the right edge the tip labels end at, which is the tree area less the
1199
+ * margin and the bracket gutter
981
1200
  */
982
1201
  readonly treeAreaWidthMinusMargin: number;
983
1202
  /**
@@ -998,21 +1217,22 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
998
1217
  readonly rows: [string, string][];
999
1218
  /**
1000
1219
  * #getter
1001
- * number of rows the alignment occupies on screen. This is the leaf count,
1002
- * not `rows.length`: a tree leaf with no matching MSA row still takes up a
1003
- * row of vertical space (drawn blank), so row hit-testing and fit-to-height
1004
- * must count it.
1220
+ * number of rows on screen: the leaf count, which includes tree leaves
1221
+ * with no matching MSA row (drawn blank), unlike `rows.length`.
1005
1222
  */
1006
1223
  readonly numRows: number;
1007
1224
  /**
1008
- * #getter
1009
- * per-row index of the global column holding each ungapped sequence
1010
- * position, so seqPos -> column is a lookup rather than a scan of the row.
1011
- * The domain overlay resolves thousands of these per redraw.
1225
+ * #method
1226
+ * index of the global column holding each ungapped sequence position of a
1227
+ * row. The domain overlay resolves thousands of these per redraw. Built
1228
+ * lazily per row and cached on the parse.
1012
1229
  */
1013
- readonly seqPosGlobalColIndex: Map<string, Int32Array<ArrayBuffer>>;
1230
+ seqPosIndex(rowName: string): Int32Array | undefined;
1014
1231
  /**
1015
1232
  * #getter
1233
+ * every sequence in the alignment, keyed by row name, including rows a
1234
+ * collapsed clade hides. `rows` holds only the rows on screen; lookups
1235
+ * by row name use this
1016
1236
  */
1017
1237
  readonly rowMap: Map<string, string>;
1018
1238
  /**
@@ -1089,9 +1309,22 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1089
1309
  readonly leaves: HierarchyNode<NodeWithIdsAndLength>[];
1090
1310
  /**
1091
1311
  * #getter
1092
- * max branch length across the tree, used to scale phylogram x-positions
1312
+ * branch-length extent of the displayed tree, root to farthest tip, in
1313
+ * the tree's own units
1314
+ */
1315
+ readonly rootToTipLength: number;
1316
+ /**
1317
+ * #getter
1318
+ * x-position of the farthest tip in a phylogram, px: treeWidth, or 0 for
1319
+ * a tree with no branch lengths (drawn as a cladogram)
1093
1320
  */
1094
1321
  readonly maxBranchLength: number;
1322
+ /**
1323
+ * #getter
1324
+ * pixels per unit of branch length in the phylogram layout, 0 in
1325
+ * cladogram mode. The tree's scale bar uses it.
1326
+ */
1327
+ readonly pxPerBranchLength: number;
1095
1328
  /**
1096
1329
  * #getter
1097
1330
  * max topological depth to a tip, used to scale cladogram x-positions
@@ -1115,21 +1348,273 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1115
1348
  /**
1116
1349
  * #getter
1117
1350
  */
1118
- readonly dataInitialized: boolean;
1351
+ readonly showMsaLetters: boolean;
1119
1352
  /**
1120
1353
  * #getter
1121
1354
  */
1122
- readonly blocksX: number[];
1355
+ readonly showTreeText: boolean;
1356
+ } & {
1123
1357
  /**
1124
1358
  * #getter
1125
1359
  */
1126
- readonly blocksY: number[];
1360
+ readonly labelWidthMap: Map<string, number>;
1361
+ /**
1362
+ * #getter
1363
+ * factor turning a labelWidthMap entry into its width at the current
1364
+ * font size
1365
+ */
1366
+ readonly labelWidthScale: number;
1367
+ readonly labelsWidth: number;
1368
+ /**
1369
+ * #getter
1370
+ */
1371
+ readonly secondaryStructureConsensus: string | undefined;
1372
+ /**
1373
+ * #getter
1374
+ */
1375
+ readonly seqConsensus: string | undefined;
1376
+ /**
1377
+ * #getter
1378
+ * the base pairs of the consensus secondary structure, as arcs, in
1379
+ * visible column space (hidden columns are removed before parsing)
1380
+ */
1381
+ readonly secondaryStructureArcs: Arc[] | undefined;
1382
+ /**
1383
+ * #getter
1384
+ */
1385
+ readonly adapterTrackModels: BasicTrack[];
1386
+ /**
1387
+ * #getter
1388
+ * a data track's values or string, projected from its row's residues
1389
+ * onto alignment columns when it names a row
1390
+ */
1391
+ readonly columnTrackContent: Map<string, {
1392
+ values?: number[];
1393
+ data?: string;
1394
+ arcs?: Arc[];
1395
+ }>;
1396
+ /**
1397
+ * #method
1398
+ * the height a track draws at: what the user dragged its divider to,
1399
+ * then the height its snapshot asked for, then its kind's default. Only
1400
+ * a text track falls through to rowHeight, and `??` short-circuits
1401
+ * before reading it, so vertical zoom does not rebuild the other tracks
1402
+ */
1403
+ trackHeight(kind: TrackKind, heightKey?: string, given?: number): number;
1404
+ /**
1405
+ * #getter
1406
+ */
1407
+ readonly columnTrackModels: BasicTrack[];
1408
+ /**
1409
+ * #getter
1410
+ * the consensus secondary structure as a track, when there is one. A
1411
+ * separate getter keeps the object stable across zoom, so its canvas
1412
+ * does not redraw
1413
+ */
1414
+ readonly basePairTrackModels: BasicTrack[];
1415
+ /**
1416
+ * #getter
1417
+ * the tracks computed from the alignment; they depend on their heights
1418
+ * and the alphabet, not on zoom
1419
+ */
1420
+ readonly computedTrackModels: BasicTrack[];
1421
+ readonly tracks: BasicTrack[];
1422
+ /**
1423
+ * #getter
1424
+ */
1425
+ readonly turnedOnTracks: BasicTrack[];
1426
+ /**
1427
+ * #getter
1428
+ */
1429
+ readonly showHorizontalScrollbar: boolean;
1430
+ /**
1431
+ * #method
1432
+ * Return a row-specific letter at a visible column, or undefined if gap.
1433
+ *
1434
+ * @param rowName - The name of the row
1435
+ * @param visibleCol - The visible column index (what the user sees on screen)
1436
+ * @returns The letter at that position, or undefined if it's a gap
1437
+ */
1438
+ visibleColToRowLetter(rowName: string, visibleCol: number): string | undefined;
1439
+ /**
1440
+ * #method
1441
+ * Convert a visible column to a row-specific sequence position (0-based).
1442
+ * Returns undefined if the position is a gap in the sequence.
1443
+ *
1444
+ * Public API, like the sibling converters (visibleColToGlobalCol,
1445
+ * seqPosToVisibleCol, globalColToVisibleCol, seqPosToGlobalCol) hosts
1446
+ * use to translate between columns and residue positions. Keep them
1447
+ * stable.
1448
+ *
1449
+ * @param rowName - The name of the row
1450
+ * @param visibleCol - The visible column index
1451
+ * @returns The sequence position (0-based), or undefined if it's a gap
1452
+ */
1453
+ visibleColToSeqPos(rowName: string, visibleCol: number): number | undefined;
1454
+ /**
1455
+ * #method
1456
+ * Convert a visible column to a row-specific sequence position (1-based).
1457
+ * Returns undefined if the position is a gap in the sequence.
1458
+ *
1459
+ * @param rowName - The name of the row
1460
+ * @param visibleCol - The visible column index
1461
+ * @returns The sequence position (1-based), or undefined if it's a gap
1462
+ */
1463
+ visibleColToSeqPosOneBased(rowName: string, visibleCol: number): number | undefined;
1464
+ /**
1465
+ * #method
1466
+ * Convert a global column index to a visible column index.
1467
+ * Returns undefined if the column is hidden (in blanks).
1468
+ * This is the inverse of visibleColToGlobalCol.
1469
+ *
1470
+ * @param globalCol - The global column index in the full MSA
1471
+ * @returns The visible column index, or undefined if the column is hidden
1472
+ */
1473
+ globalColToVisibleCol(globalCol: number): number | undefined;
1474
+ /**
1475
+ * #method
1476
+ * Convert a visible column index (what a mouse handler reports) to a
1477
+ * column of the full alignment. A host indexing its own per-column data
1478
+ * needs this when columns are hidden.
1479
+ *
1480
+ * @param visibleCol - The visible column index
1481
+ * @returns The global column index in the full MSA
1482
+ */
1483
+ visibleColToGlobalCol(visibleCol: number): number;
1484
+ /**
1485
+ * #method
1486
+ * Convert a sequence position (ungapped) to a global column index.
1487
+ * Returns undefined for a row name the alignment does not have.
1488
+ *
1489
+ * @param rowName - The name of the row
1490
+ * @param seqPos - The sequence position (0-based, ungapped)
1491
+ * @returns The global column index in the full MSA, or undefined
1492
+ */
1493
+ seqPosToGlobalCol(rowName: string, seqPos: number): number | undefined;
1494
+ /**
1495
+ * #method
1496
+ * Convert a sequence position (ungapped) directly to a visible column index.
1497
+ * This combines seqPosToGlobalCol and globalColToVisibleCol.
1498
+ *
1499
+ * @param rowName - The name of the row
1500
+ * @param seqPos - The sequence position (0-based, ungapped)
1501
+ * @returns The visible column index, or undefined if the column is hidden
1502
+ */
1503
+ seqPosToVisibleCol(rowName: string, seqPos: number): number | undefined;
1504
+ /**
1505
+ * #method
1506
+ * the visible columns a span covers, in highlight coordinates: `start`
1507
+ * and `end` are 1-based residues of `row`, or columns of the file
1508
+ * without it. A fractional position, as a zoom gesture reports one,
1509
+ * widens to the whole residue or column it falls in. A span entirely on
1510
+ * hidden columns, or naming a row the alignment lacks, gives undefined.
1511
+ */
1512
+ visibleSpan({ row, start: rawStart, end: rawEnd }: Region): {
1513
+ startCol: number;
1514
+ endCol: number;
1515
+ } | undefined;
1516
+ /**
1517
+ * #getter
1518
+ * why each ignored residue mapping is ignored, so a host can tell a
1519
+ * missing structure from a mapping made against a different alignment.
1520
+ */
1521
+ readonly residueMappingProblems: ResidueMappingProblem[];
1522
+ /**
1523
+ * #getter
1524
+ * the mappings that fit the loaded alignment. A row-level problem drops
1525
+ * the whole mapping; a malformed segment drops only that segment.
1526
+ */
1527
+ readonly usableResidueMappings: ResidueMapping[];
1127
1528
  /**
1128
1529
  * #getter
1129
- * height of the alignment viewport, px. The same subtraction as
1130
- * msaAreaHeight, which is defined later in the views chain
1530
+ * the structures with usable mappings. A row can map onto several, such
1531
+ * as an experimental entry and a predicted model.
1131
1532
  */
1132
- readonly visibleMsaHeight: number;
1533
+ readonly mappedStructures: {
1534
+ row: string;
1535
+ structure: import("./types.ts").MappedStructure;
1536
+ }[];
1537
+ /**
1538
+ * #method
1539
+ * The structure residue for a row residue. Returns undefined when no
1540
+ * segment covers `seqPos`, or when the row maps onto several structures
1541
+ * and `structureId` does not pick one (see `mappedStructures`).
1542
+ *
1543
+ * Positions are 1-based, like `residueMappings` and `highlights`; the
1544
+ * column helpers above are 0-based.
1545
+ *
1546
+ * @param rowName - The alignment row
1547
+ * @param seqPos - Residue of that row, 1-based
1548
+ * @param structureId - Which structure, when the row maps onto several
1549
+ */
1550
+ structureResidue(rowName: string, seqPos: number, structureId?: string): StructureResidue | undefined;
1551
+ /**
1552
+ * #method
1553
+ * The row residue for a structure residue; the inverse of
1554
+ * `structureResidue`, returning undefined in the same cases. `asymId`
1555
+ * picks a chain when several mappings share an entry id, as in a
1556
+ * homodimer.
1557
+ *
1558
+ * @param structureId - The structure's id, as the mapping names it
1559
+ * @param position - Residue of that structure, 1-based label_seq_id
1560
+ * @param asymId - Which chain, when the id alone is ambiguous
1561
+ */
1562
+ rowResidue(structureId: string, position: number, asymId?: string): RowResidue | undefined;
1563
+ } & {
1564
+ /**
1565
+ * #getter
1566
+ * the branch-length scale bar over the tree, undefined in cladogram mode
1567
+ * or when the tree area is too narrow for one
1568
+ */
1569
+ readonly treeScaleBar: {
1570
+ step: number;
1571
+ px: number;
1572
+ label: string;
1573
+ } | undefined;
1574
+ /**
1575
+ * #getter
1576
+ * the band across the top: the minimap over the alignment, the row panel
1577
+ * headers, and the tree overview stacked on the scale bar, as tall as the
1578
+ * tallest of the three
1579
+ */
1580
+ readonly topBandHeight: number;
1581
+ /**
1582
+ * #getter
1583
+ * the vertical space for alignment rows: the widget height less the
1584
+ * header, the top band and the tracks. Shared by blocksY, maxScrollY, the
1585
+ * vertical scrollbar and fitVertically.
1586
+ */
1587
+ readonly msaAreaHeight: number;
1588
+ /**
1589
+ * #getter
1590
+ * total height of track area (px)
1591
+ */
1592
+ readonly totalTrackAreaHeight: number;
1593
+ /**
1594
+ * one representative annotation per accession, for the legend, the
1595
+ * filter dialog and the palettes
1596
+ */
1597
+ readonly annotationTypes: Map<string, Annotation>;
1598
+ readonly filteredAnnotations: Annotation[];
1599
+ readonly annotationsByRow: Record<string, Annotation[]>;
1600
+ } & {
1601
+ /**
1602
+ * #getter
1603
+ */
1604
+ readonly showVerticalScrollbar: boolean;
1605
+ } & {
1606
+ /**
1607
+ * #getter
1608
+ */
1609
+ readonly dataInitialized: boolean;
1610
+ /**
1611
+ * #getter
1612
+ */
1613
+ readonly blocksX: number[];
1614
+ /**
1615
+ * #getter
1616
+ */
1617
+ readonly blocksY: number[];
1133
1618
  } & {
1134
1619
  /**
1135
1620
  * #getter
@@ -1145,18 +1630,16 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1145
1630
  readonly maxScrollX: number;
1146
1631
  /**
1147
1632
  * #getter
1148
- * most-negative allowed scrollY, keeping the last row in view rather than
1149
- * letting the whole alignment scroll off the top.
1633
+ * most-negative allowed scrollY, which keeps the last row in view
1150
1634
  */
1151
1635
  readonly maxScrollY: number;
1152
1636
  /**
1153
1637
  * #getter
1638
+ * axis a wheel zoom scales, for ctrl+wheel as much as for scroll-zoom.
1639
+ * With scroll-zoom off the toolbar shows no axis, so ctrl+wheel takes
1640
+ * both.
1154
1641
  */
1155
- readonly showMsaLetters: boolean;
1156
- /**
1157
- * #getter
1158
- */
1159
- readonly showTreeText: boolean;
1642
+ readonly wheelZoomAxis: ScrollZoomAxis;
1160
1643
  } & {
1161
1644
  /**
1162
1645
  * #action
@@ -1166,6 +1649,10 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1166
1649
  * #action
1167
1650
  */
1168
1651
  setScrollZoom(arg: boolean): void;
1652
+ /**
1653
+ * #action
1654
+ */
1655
+ setScrollZoomAxis(arg: ScrollZoomAxis): void;
1169
1656
  /**
1170
1657
  * #action
1171
1658
  * set hovered tree node and its descendants
@@ -1173,9 +1660,19 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1173
1660
  setHoveredTreeNode(nodeId?: string): void;
1174
1661
  /**
1175
1662
  * #action
1176
- * Calculate a neighbor joining tree from the current MSA using BLOSUM62 distances
1663
+ * Calculate a neighbor joining tree from the current MSA using BLOSUM62
1664
+ * distances. Throws above `maxNeighborJoiningRows`: the join loop is
1665
+ * cubic and runs on the main thread, and 800 rows freeze the tab for ten
1666
+ * seconds with no cancel.
1177
1667
  */
1178
1668
  calculateNeighborJoiningTreeFromMSA(): void;
1669
+ /**
1670
+ * #action
1671
+ * swap in a different tree over the same alignment. Clears `collapsed`
1672
+ * and `showOnly`, since path-derived node ids (node-0-0-1) from the old
1673
+ * tree would match unrelated nodes in the new one.
1674
+ */
1675
+ replaceTree(newick: string): void;
1179
1676
  /**
1180
1677
  * #action
1181
1678
  * restore the default column width and row height
@@ -1209,13 +1706,14 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1209
1706
  * #action
1210
1707
  * Smoothly zoom by a continuous scaleFactor. The column under the cursor
1211
1708
  * (offsetX/offsetY, px relative to the MSA area) stays anchored
1212
- * horizontally. Vertically the anchor is biased toward the top: when the
1213
- * alignment nearly fits the viewport, snap to y=0 rather than pinning a
1214
- * random row under the cursor, with the bias fading out as the alignment
1215
- * grows taller than the viewport (where cursor-anchoring is useful).
1216
- * Drives wheel/trackpad-pinch zoom.
1709
+ * horizontally. Vertically the anchor is biased toward y=0 when the
1710
+ * alignment nearly fits the viewport, fading to cursor-anchoring as the
1711
+ * alignment grows taller than the viewport.
1712
+ * Drives wheel/trackpad-pinch zoom. `axis` holds one cell dimension
1713
+ * fixed; the held axis still re-anchors its scroll offset, since the
1714
+ * other one can change how much of the alignment fits.
1217
1715
  */
1218
- zoomToPos(scaleFactor: number, offsetX: number, offsetY: number): void;
1716
+ zoomToPos(scaleFactor: number, offsetX: number, offsetY: number, axis?: ScrollZoomAxis): void;
1219
1717
  /**
1220
1718
  * #action
1221
1719
  */
@@ -1227,9 +1725,11 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1227
1725
  setScrollY(n: number): void;
1228
1726
  /**
1229
1727
  * #action
1230
- * Set the overlay annotations and reveal the overlay in a single step (an
1231
- * empty list clears both). Every source funnels through here after its
1232
- * own adapter has flattened it: InterProScan, GFF, user uploads, NCBI CDD.
1728
+ * Set the overlay annotations (an empty list clears them). InterProScan,
1729
+ * GFF, user uploads and NCBI CDD all arrive here as Annotation[].
1730
+ *
1731
+ * Leaves `showDomains` alone, because a restored snapshot reloads its
1732
+ * GFF and must keep a hidden overlay hidden.
1233
1733
  */
1234
1734
  setAnnotations(annotations: Annotation[]): void;
1235
1735
  /**
@@ -1254,168 +1754,76 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1254
1754
  setColumnTracks(tracks: ColumnTrackSpec[]): void;
1255
1755
  /**
1256
1756
  * #action
1757
+ * replace the row table, which the model keeps as the JSON string
1758
+ * `data.treeMetadata` (see docs/layers.md)
1257
1759
  */
1258
- toggleTrack(id: string): void;
1760
+ setRowData(rowData: Record<string, Record<string, string>>): void;
1259
1761
  /**
1260
1762
  * #action
1763
+ * replace what the viewer's marks read from the row table
1261
1764
  */
1262
- setStatus(status?: {
1263
- msg: string;
1264
- url?: string;
1265
- onCancel?: () => void;
1266
- }): void;
1267
- } & {
1268
- /**
1269
- * #getter
1270
- */
1271
- readonly labelWidthMap: Map<string, number>;
1272
- /**
1273
- * #getter
1274
- * factor turning a labelWidthMap entry into its width at the current
1275
- * font size
1276
- */
1277
- readonly labelWidthScale: number;
1278
- readonly labelsWidth: number;
1279
- /**
1280
- * #getter
1281
- */
1282
- readonly secondaryStructureConsensus: string | undefined;
1283
- /**
1284
- * #getter
1285
- */
1286
- readonly seqConsensus: string | undefined;
1287
- /**
1288
- * #getter
1289
- */
1290
- readonly adapterTrackModels: BasicTrack[];
1291
- /**
1292
- * #getter
1293
- * a data track's values or string, projected from its row's residues
1294
- * onto alignment columns when it names a row
1295
- */
1296
- readonly columnTrackContent: Map<string, {
1297
- values?: number[];
1298
- data?: string;
1299
- }>;
1300
- /**
1301
- * #getter
1302
- */
1303
- readonly columnTrackModels: BasicTrack[];
1304
- /**
1305
- * #getter
1306
- */
1307
- readonly tracks: BasicTrack[];
1308
- /**
1309
- * #getter
1310
- */
1311
- readonly turnedOnTracks: BasicTrack[];
1312
- /**
1313
- * #getter
1314
- */
1315
- readonly showHorizontalScrollbar: boolean;
1316
- /**
1317
- * #method
1318
- * Return a row-specific letter at a visible column, or undefined if gap.
1319
- *
1320
- * @param rowName - The name of the row
1321
- * @param visibleCol - The visible column index (what the user sees on screen)
1322
- * @returns The letter at that position, or undefined if it's a gap
1323
- */
1324
- visibleColToRowLetter(rowName: string, visibleCol: number): string | undefined;
1325
- /**
1326
- * #method
1327
- * Convert a visible column to a row-specific sequence position (0-based).
1328
- * Returns undefined if the position is a gap in the sequence.
1329
- *
1330
- * CROSS-REPO CONTRACT: this and the sibling coordinate converters
1331
- * (seqPosToVisibleCol, globalColToVisibleCol, seqPosToGlobalCol) are used
1332
- * by jbrowse-plugin-protein3d to translate between alignment columns and
1333
- * structure/sequence residue positions across gaps. Keep them stable.
1334
- *
1335
- * @param rowName - The name of the row
1336
- * @param visibleCol - The visible column index
1337
- * @returns The sequence position (0-based), or undefined if it's a gap
1338
- */
1339
- visibleColToSeqPos(rowName: string, visibleCol: number): number | undefined;
1765
+ setEncodings(encodings: Encoding[]): void;
1340
1766
  /**
1341
- * #method
1342
- * Convert a visible column to a row-specific sequence position (1-based).
1343
- * Returns undefined if the position is a gap in the sequence.
1344
- *
1345
- * @param rowName - The name of the row
1346
- * @param visibleCol - The visible column index
1347
- * @returns The sequence position (1-based), or undefined if it's a gap
1767
+ * #action
1768
+ * replace the panels drawn between the tree and the alignment
1348
1769
  */
1349
- visibleColToSeqPosOneBased(rowName: string, visibleCol: number): number | undefined;
1770
+ setRowPanels(panels: RowPanelSpec[]): void;
1350
1771
  /**
1351
- * #method
1352
- * Convert a global column index to a visible column index.
1353
- * Returns undefined if the column is hidden (in blanks).
1354
- * This is the inverse of visibleColToGlobalCol.
1355
- *
1356
- * @param globalCol - The global column index in the full MSA
1357
- * @returns The visible column index, or undefined if the column is hidden
1772
+ * #action
1773
+ * replace the alignment<->structure correspondence (see docs/layers.md)
1358
1774
  */
1359
- globalColToVisibleCol(globalCol: number): number | undefined;
1775
+ setResidueMappings(mappings: ResidueMapping[]): void;
1360
1776
  /**
1361
- * #method
1362
- * Convert a sequence position (ungapped) to a global column index.
1363
- *
1364
- * @param rowName - The name of the row
1365
- * @param seqPos - The sequence position (0-based, ungapped)
1366
- * @returns The global column index in the full MSA
1777
+ * #action
1367
1778
  */
1368
- seqPosToGlobalCol(rowName: string, seqPos: number): number;
1779
+ toggleTrack(id: string): void;
1369
1780
  /**
1370
- * #method
1371
- * Convert a sequence position (ungapped) directly to a visible column index.
1372
- * This combines seqPosToGlobalCol and globalColToVisibleCol.
1373
- *
1374
- * @param rowName - The name of the row
1375
- * @param seqPos - The sequence position (0-based, ungapped)
1376
- * @returns The visible column index, or undefined if the column is hidden
1781
+ * #action
1377
1782
  */
1378
- seqPosToVisibleCol(rowName: string, seqPos: number): number | undefined;
1783
+ setStatus(status?: {
1784
+ msg: string;
1785
+ onCancel?: () => void;
1786
+ }): void;
1379
1787
  } & {
1380
1788
  /**
1381
1789
  * #getter
1382
- * widget width minus the tree area gives the space for the MSA
1383
1790
  */
1384
- readonly msaAreaHeight: number;
1791
+ readonly verticalScrollbarWidth: 0 | 20;
1385
1792
  /**
1386
1793
  * #getter
1387
- * total height of track area (px)
1794
+ * width of the alignment canvas: the msa area less the vertical
1795
+ * scrollbar. showHorizontalScrollbar must not read it, since that feeds
1796
+ * msaAreaHeight -> showVerticalScrollbar and would form a cycle
1388
1797
  */
1389
- readonly totalTrackAreaHeight: number;
1798
+ readonly msaCanvasWidth: number;
1390
1799
  /**
1391
- * one representative annotation per accession, which is what the legend,
1392
- * the filter dialog and the palettes key off
1800
+ * #method
1801
+ * the cell at a visible column and row index, in the coordinates a host
1802
+ * writes highlights in
1393
1803
  */
1394
- readonly annotationTypes: Map<string, Annotation>;
1395
- readonly filteredAnnotations: Annotation[];
1396
- readonly annotationsByRow: Record<string, Annotation[]>;
1397
- } & {
1804
+ cellAt(visibleCol: number, rowIndex?: number): Cell;
1398
1805
  /**
1399
1806
  * #getter
1807
+ * the cell under the pointer. Public API: MSAViewer's onCellHover
1808
+ * reports it.
1400
1809
  */
1401
- readonly showVerticalScrollbar: boolean;
1402
- } & {
1810
+ readonly hoveredCell: Cell | undefined;
1403
1811
  /**
1404
1812
  * #getter
1813
+ * the cell a click pinned. Public API: MSAViewer's onCellClick reports it.
1405
1814
  */
1406
- readonly verticalScrollbarWidth: 0 | 20;
1815
+ readonly clickedCell: Cell | undefined;
1407
1816
  /**
1408
1817
  * #getter
1409
- * width of the alignment canvas itself: the msa area less the vertical
1410
- * scrollbar sitting in it. Not usable from showHorizontalScrollbar, which
1411
- * feeds msaAreaHeight -> showVerticalScrollbar and would close a cycle
1818
+ * the columns on screen. Public API: MSAViewer's onViewportChange reports
1819
+ * it.
1412
1820
  */
1413
- readonly msaCanvasWidth: number;
1821
+ readonly viewport: Viewport | undefined;
1414
1822
  /**
1415
1823
  * #getter
1416
1824
  * ordinal segment types (exons etc.), ordered by sequence position so
1417
- * exon-1..exon-14 read left-to-right; colored by alternating shade and
1418
- * labeled by number rather than each getting a distinct hue + legend row
1825
+ * exon-1..exon-14 run left-to-right; colored by alternating shade and
1826
+ * labeled by number, with no legend row
1419
1827
  */
1420
1828
  readonly segmentDomainTypes: Annotation[];
1421
1829
  /**
@@ -1430,6 +1838,29 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1430
1838
  readonly strokePalette: {
1431
1839
  [k: string]: string;
1432
1840
  };
1841
+ /**
1842
+ * #getter
1843
+ * the encoding coloring the overlay's spans, undefined when none does,
1844
+ * which leaves each span the color its accession takes in `fillPalette`
1845
+ */
1846
+ readonly featureFillEncoding: ResolvedEncoding | undefined;
1847
+ /**
1848
+ * #getter
1849
+ * the fill and outline of every feature's span: its own GFF `color=`
1850
+ * first, then the `featureFill` scale, then the accession palette.
1851
+ * Computed once per change of the features, the encodings or the palette
1852
+ */
1853
+ readonly featureColors: Map<Annotation, {
1854
+ fill: string;
1855
+ stroke: string;
1856
+ }>;
1857
+ /**
1858
+ * #getter
1859
+ * the text the `featureLabel` channel draws inside each span, undefined
1860
+ * when no encoding names the channel. A data channel, so it draws
1861
+ * whether or not the residue letters do
1862
+ */
1863
+ readonly featureLabels: Map<Annotation, string> | undefined;
1433
1864
  /**
1434
1865
  * #getter
1435
1866
  * accession -> number drawn on each segment band: the trailing number of
@@ -1439,20 +1870,41 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1439
1870
  /**
1440
1871
  * #getter
1441
1872
  * the domain types currently drawn on the alignment (filtered-on), shared
1442
- * by the on-screen legend and the SVG export legend. Ordinal segments
1443
- * (exons) are excluded — they read as a numbered gene model, not a color
1444
- * key — so this is the categorical types ordered by sequence position
1873
+ * by the on-screen legend and the SVG export legend: the categorical types
1874
+ * ordered by sequence position. Ordinal segments (exons) are numbered on
1875
+ * the band instead
1445
1876
  */
1446
1877
  readonly visibleDomainTypes: Annotation[];
1878
+ /**
1879
+ * #getter
1880
+ * the categorical color keys drawn for this view, shared by the on-screen
1881
+ * legend overlay and the SVG export's reserved column. The domain overlay
1882
+ * produces the first, listing the `featureFill` scale where an encoding
1883
+ * names one. Every field a row-table encoding or a row panel reads
1884
+ * produces one more, so two channels over one field, or two strips over
1885
+ * it, list that field once. A strip's `legend` names the title it lists
1886
+ * under, so strips over eight fields with one set of colors list one
1887
+ * legend between them
1888
+ */
1889
+ readonly legends: Legend[];
1890
+ /**
1891
+ * #getter
1892
+ * whether the overlay marks each domain with a bar under its row instead
1893
+ * of filling the row behind the letters. Letter-color mode hands the
1894
+ * background to the color scheme, so a filled box would paint over it and
1895
+ * leave the setting with nothing to show. Sub-row layout already stacks
1896
+ * the boxes clear of the letters, and with the letters too small to draw
1897
+ * the filled box is the only thing left to read.
1898
+ */
1899
+ readonly domainUnderline: boolean;
1447
1900
  /**
1448
1901
  * #getter
1449
1902
  * every filtered-on annotation resolved to the visible column span it is
1450
1903
  * drawn across, keyed by row name. Each row is ordered longest-first so a
1451
- * short domain nested inside a long one draws on top of it rather than
1452
- * under it. Resolving these once here rather than inside each canvas
1453
- * block removes a per-feature, per-block sequence position conversion
1454
- * from every redraw, and gives the letter renderer the band colors it
1455
- * needs to keep residues readable on top of the boxes.
1904
+ * nested short domain draws on top, and each band carries the lane the
1905
+ * sub-row layout puts it in. Resolved once here instead of per canvas
1906
+ * block per redraw; the letter renderer also reads the band colors to
1907
+ * pick legible letter colors.
1456
1908
  */
1457
1909
  readonly domainBands: Map<string, DomainBand[]>;
1458
1910
  /**
@@ -1476,15 +1928,14 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1476
1928
  * #getter
1477
1929
  * row indices highlighted by the current tree hover (a hovered internal
1478
1930
  * node highlights every tip below it). Shared by the tree and MSA overlay
1479
- * canvases so they cannot disagree, and resolved through the memoized
1480
- * name->index map rather than rebuilding a lookup on each mouse move.
1931
+ * canvases, via the memoized name->index map.
1481
1932
  */
1482
1933
  readonly hoveredRowIndices: number[];
1483
1934
  /**
1484
1935
  * #getter
1485
1936
  * contiguous runs of `highlightedColumns`, so a run of highlighted columns
1486
- * draws as one bordered band. Computed here because the overlay canvas
1487
- * redraws on every mouse move while the highlight itself rarely changes.
1937
+ * draws as one bordered band. Memoized because the overlay canvas redraws
1938
+ * on every mouse move.
1488
1939
  */
1489
1940
  readonly highlightedColumnRuns: {
1490
1941
  start: number;
@@ -1498,24 +1949,20 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1498
1949
  * is dropped. Row names that match no row are ignored.
1499
1950
  */
1500
1951
  readonly resolvedHighlights: ResolvedHighlight[];
1952
+ /**
1953
+ * #method
1954
+ * per-column summary statistics: consensus residue and its identity
1955
+ * fraction, both conservation scores, gap fraction, and the sorted non-gap
1956
+ * residue distribution. undefined past the end of the alignment or for an
1957
+ * all-gap column.
1958
+ */
1959
+ columnStatsAt(col: number): ColumnStats | undefined;
1501
1960
  /**
1502
1961
  * #getter
1503
- * per-column summary statistics for the hovered column: consensus residue
1504
- * and its identity fraction, conservation score, gap fraction, and the
1505
- * sorted non-gap residue distribution. undefined when nothing is hovered.
1962
+ * `columnStatsAt` for the hovered column, undefined when nothing is
1963
+ * hovered
1506
1964
  */
1507
- readonly mouseOverColumnStats: {
1508
- col: number;
1509
- total: number;
1510
- gaps: number;
1511
- gapFraction: number;
1512
- conservation: number;
1513
- propertyConservation: number | undefined;
1514
- consensusLetter: string;
1515
- consensusCount: number;
1516
- consensusFraction: number;
1517
- distribution: [string, number][];
1518
- } | undefined;
1965
+ readonly mouseOverColumnStats: ColumnStats | undefined;
1519
1966
  /**
1520
1967
  * #method
1521
1968
  */
@@ -1525,8 +1972,58 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1525
1972
  accession?: string;
1526
1973
  dbxref?: string;
1527
1974
  } | undefined;
1528
- treeMetadata: Record<string, string> | undefined;
1975
+ rowData: Record<string, string> | undefined;
1529
1976
  };
1977
+ /**
1978
+ * #getter
1979
+ * each encoding with its scale resolved against the values its field
1980
+ * takes: a feature channel reads them across the features drawn, every
1981
+ * other channel across the row table. Resolved once per change of that
1982
+ * table or the encodings, never per row per frame.
1983
+ */
1984
+ readonly resolvedEncodings: ResolvedEncoding[];
1985
+ /**
1986
+ * #getter
1987
+ * each row panel with its scale resolved against the values its field
1988
+ * takes across the row table, giving the color per row name, the pixel
1989
+ * column it draws in, and the entries its legend lists. Resolved once
1990
+ * per change of that table or the panels, never per block per frame.
1991
+ */
1992
+ readonly resolvedRowPanels: ResolvedRowPanel[];
1993
+ /**
1994
+ * #getter
1995
+ * the shift an `align` transform gives each row, keyed by the feature
1996
+ * name it aligns on: the offset putting the first feature of that name
1997
+ * at zero. A row carrying no such feature is absent, and keeps its own
1998
+ * origin.
1999
+ */
2000
+ readonly featureAlignShifts: Map<string, Map<string, number>>;
2001
+ /**
2002
+ * #getter
2003
+ * the color the `tipLabel` channel gives each row, by row name. Undefined
2004
+ * when no encoding names the channel, which leaves the labels the theme's
2005
+ * text color.
2006
+ */
2007
+ readonly tipLabelColors: Map<string, string> | undefined;
2008
+ /**
2009
+ * #getter
2010
+ * the wash the `rowTint` channel draws over each row, indexed by row, or
2011
+ * undefined when no encoding names the channel. The overlay draws these,
2012
+ * so a tint stays out of the raster tile cache and its keys.
2013
+ */
2014
+ readonly rowTints: (string | undefined)[] | undefined;
2015
+ /**
2016
+ * #getter
2017
+ * the color the `branch` channel gives each tree edge, by the node id at
2018
+ * the edge's far end, or undefined when no encoding names the channel. A
2019
+ * node takes the field value its tips agree on, so a clade of one value
2020
+ * colors down from where it splits off, and a node whose tips disagree or
2021
+ * whose value has no color is absent and draws in the default color.
2022
+ *
2023
+ * The pass runs over the whole tree, never `root`, so a collapsed or
2024
+ * focused clade keeps the color the full tree gives it.
2025
+ */
2026
+ readonly branchColors: Map<string, string> | undefined;
1530
2027
  } & {
1531
2028
  /**
1532
2029
  * #action
@@ -1535,25 +2032,36 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1535
2032
  /**
1536
2033
  * #action
1537
2034
  */
1538
- setConservationTrackHeight(arg: number): void;
2035
+ setHideHeader(arg: boolean): void;
2036
+ /**
2037
+ * #action
2038
+ * focus the subtree a click `y` pixels down the tree overview lands on.
2039
+ * A click inside the box already drawn there clears the focus, the way
2040
+ * clicking the focused branch again does.
2041
+ */
2042
+ treeOverviewClick(y: number): void;
1539
2043
  /**
1540
2044
  * #action
2045
+ * resize every track sharing a `heightKey`; see `trackHeights`
1541
2046
  */
1542
- setSequenceLogoTrackHeight(arg: number): void;
2047
+ setTrackHeight(heightKey: string, height: number): void;
1543
2048
  /**
1544
2049
  * #action
1545
- * Return to the import form: every property off `preservedOnReset`
1546
- * (data, filehandles, collapsed/showOnly, zoom, scroll, ...) goes back
1547
- * to its default, then the file-derived volatiles applySnapshot cannot
1548
- * reach are cleared by hand.
2050
+ * Return to the import form: reset every property not in
2051
+ * `preservedOnReset` to its default, then clear the file-derived
2052
+ * volatiles applySnapshot does not touch.
1549
2053
  */
1550
2054
  reset(): void;
1551
2055
  /**
1552
2056
  * #action
1553
2057
  */
1554
2058
  exportSVG(opts: ExportSvgOptions): Promise<void>;
1555
- initFilter(arg: string): void;
1556
- setFilter(arg: string, flag: boolean): void;
2059
+ /**
2060
+ * #action
2061
+ * show or hide an annotation type. Only hidden types are recorded; see
2062
+ * `turnedOffFeatures`
2063
+ */
2064
+ setFilter(accession: string, shown: boolean): void;
1557
2065
  /**
1558
2066
  * #action
1559
2067
  */
@@ -1562,6 +2070,13 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1562
2070
  * #action
1563
2071
  */
1564
2072
  fitVertically(): void;
2073
+ /**
2074
+ * #action
2075
+ * zoom and scroll so a span fills the alignment's width, in highlight
2076
+ * coordinates (see visibleSpan). Does nothing before the viewer knows
2077
+ * its width, or for a span that resolves to no visible column.
2078
+ */
2079
+ zoomToRegion(region: Region): void;
1565
2080
  /**
1566
2081
  * #action
1567
2082
  */
@@ -1579,6 +2094,9 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1579
2094
  showBranchLen: boolean;
1580
2095
  drawTree: boolean;
1581
2096
  drawNodeBubbles: boolean;
2097
+ drawNodeLabels: boolean;
2098
+ showTreeOverview: boolean;
2099
+ overviewHeight: number;
1582
2100
  autoTreeAreaWidth: boolean;
1583
2101
  columnTracks: ColumnTrackSpec[];
1584
2102
  id: string;
@@ -1590,6 +2108,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1590
2108
  type: "MsaView";
1591
2109
  drawMsaLetters: boolean;
1592
2110
  scrollZoom: boolean;
2111
+ scrollZoomAxis: "both" | "horizontal" | "vertical";
1593
2112
  height: number;
1594
2113
  rowHeight: number;
1595
2114
  scrollY: number;
@@ -1679,10 +2198,15 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1679
2198
  collapsed: string[];
1680
2199
  showOnly: string | undefined;
1681
2200
  turnedOffTracks: import("mobx").IKeyValueMap<boolean>;
1682
- featureFilters: import("mobx").IKeyValueMap<boolean>;
2201
+ trackHeights: import("mobx").IKeyValueMap<number>;
2202
+ residueMappings: ResidueMapping[];
2203
+ turnedOffFeatures: import("mobx").IKeyValueMap<boolean>;
1683
2204
  relativeTo: string | undefined;
1684
2205
  highlightColumns: number[] | undefined;
1685
2206
  highlights: Highlight[];
2207
+ clades: Clade[];
2208
+ encodings: Encoding[];
2209
+ rowPanels: RowPanelSpec[];
1686
2210
  data: {
1687
2211
  tree?: string | undefined;
1688
2212
  msa?: string | undefined;
@@ -1701,6 +2225,9 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1701
2225
  showBranchLen: boolean;
1702
2226
  drawTree: boolean;
1703
2227
  drawNodeBubbles: boolean;
2228
+ drawNodeLabels: boolean;
2229
+ showTreeOverview: boolean;
2230
+ overviewHeight: number;
1704
2231
  autoTreeAreaWidth: boolean;
1705
2232
  columnTracks?: undefined;
1706
2233
  id: string;
@@ -1712,6 +2239,7 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1712
2239
  type: "MsaView";
1713
2240
  drawMsaLetters: boolean;
1714
2241
  scrollZoom: boolean;
2242
+ scrollZoomAxis: "both" | "horizontal" | "vertical";
1715
2243
  height: number;
1716
2244
  rowHeight: number;
1717
2245
  scrollY: number;
@@ -1801,10 +2329,15 @@ declare function stateModelFactory(): import("@jbrowse/mobx-state-tree").IModelT
1801
2329
  collapsed: string[];
1802
2330
  showOnly: string | undefined;
1803
2331
  turnedOffTracks: import("mobx").IKeyValueMap<boolean>;
1804
- featureFilters: import("mobx").IKeyValueMap<boolean>;
2332
+ trackHeights: import("mobx").IKeyValueMap<number>;
2333
+ residueMappings: ResidueMapping[];
2334
+ turnedOffFeatures: import("mobx").IKeyValueMap<boolean>;
1805
2335
  relativeTo: string | undefined;
1806
2336
  highlightColumns: number[] | undefined;
1807
2337
  highlights: Highlight[];
2338
+ clades: Clade[];
2339
+ encodings: Encoding[];
2340
+ rowPanels: RowPanelSpec[];
1808
2341
  data: {
1809
2342
  tree?: string | undefined;
1810
2343
  msa?: string | undefined;