react-msaview 9.1.0 → 9.2.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 (278) hide show
  1. package/bundle/index.js +111 -115
  2. package/bundle/index.js.map +4 -4
  3. package/dist/blosum62.d.ts +3 -0
  4. package/dist/blosum62.js +43 -0
  5. package/dist/blosum62.js.map +1 -0
  6. package/dist/colorSchemes.js +1 -0
  7. package/dist/colorSchemes.js.map +1 -1
  8. package/dist/components/Loading.d.ts +3 -2
  9. package/dist/components/Loading.js +2 -2
  10. package/dist/components/Loading.js.map +1 -1
  11. package/dist/components/MSAView.d.ts +3 -2
  12. package/dist/components/MSAView.js +7 -4
  13. package/dist/components/MSAView.js.map +1 -1
  14. package/dist/components/MSAViewer.d.ts +64 -12
  15. package/dist/components/MetadataTable.d.ts +4 -1
  16. package/dist/components/MetadataTable.js +55 -16
  17. package/dist/components/MetadataTable.js.map +1 -1
  18. package/dist/components/Track.js +6 -0
  19. package/dist/components/Track.js.map +1 -1
  20. package/dist/components/controls.js +2 -1
  21. package/dist/components/controls.js.map +1 -1
  22. package/dist/components/dialogs/AnnotationFileDialog.js +7 -2
  23. package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -1
  24. package/dist/components/dialogs/FeatureDialog.js +2 -2
  25. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  26. package/dist/components/{header/MSASettingsMenu.d.ts → dialogs/GapThresholdDialog.d.ts} +3 -2
  27. package/dist/components/dialogs/GapThresholdDialog.js +15 -0
  28. package/dist/components/dialogs/GapThresholdDialog.js.map +1 -0
  29. package/dist/components/{header → dialogs}/GappynessSlider.d.ts +1 -1
  30. package/dist/components/{header → dialogs}/GappynessSlider.js +3 -10
  31. package/dist/components/dialogs/GappynessSlider.js.map +1 -0
  32. package/dist/components/{header → dialogs}/GoToBox.d.ts +4 -2
  33. package/dist/components/dialogs/GoToBox.js +48 -0
  34. package/dist/components/dialogs/GoToBox.js.map +1 -0
  35. package/dist/components/dialogs/GoToDialog.d.ts +6 -0
  36. package/dist/components/dialogs/GoToDialog.js +10 -0
  37. package/dist/components/dialogs/GoToDialog.js.map +1 -0
  38. package/dist/components/dialogs/MetadataDialog.js +11 -3
  39. package/dist/components/dialogs/MetadataDialog.js.map +1 -1
  40. package/dist/components/dialogs/goTo.d.ts +5 -0
  41. package/dist/components/{header → dialogs}/goTo.js +1 -1
  42. package/dist/components/dialogs/goTo.js.map +1 -0
  43. package/dist/components/dialogs/metadataLabels.d.ts +4 -0
  44. package/dist/components/dialogs/metadataLabels.js +52 -0
  45. package/dist/components/dialogs/metadataLabels.js.map +1 -0
  46. package/dist/components/dialogs/metadataRecord.d.ts +1 -0
  47. package/dist/components/dialogs/metadataRecord.js +38 -0
  48. package/dist/components/dialogs/metadataRecord.js.map +1 -0
  49. package/dist/components/header/Header.d.ts +6 -2
  50. package/dist/components/header/Header.js +30 -32
  51. package/dist/components/header/Header.js.map +1 -1
  52. package/dist/components/header/{TreeSettingsMenu.d.ts → HiddenColumnsChip.d.ts} +2 -2
  53. package/dist/components/header/HiddenColumnsChip.js +15 -0
  54. package/dist/components/header/HiddenColumnsChip.js.map +1 -0
  55. package/dist/components/header/MenuBar.d.ts +6 -0
  56. package/dist/components/header/MenuBar.js +33 -0
  57. package/dist/components/header/MenuBar.js.map +1 -0
  58. package/dist/components/header/ScrollZoomCheckbox.d.ts +7 -0
  59. package/dist/components/header/ScrollZoomCheckbox.js +19 -0
  60. package/dist/components/header/ScrollZoomCheckbox.js.map +1 -0
  61. package/dist/components/header/ZoomControls.js +10 -30
  62. package/dist/components/header/ZoomControls.js.map +1 -1
  63. package/dist/components/header/colorSchemeMenuItems.d.ts +4 -0
  64. package/dist/components/header/colorSchemeMenuItems.js +106 -0
  65. package/dist/components/header/colorSchemeMenuItems.js.map +1 -0
  66. package/dist/components/header/getAnnotationsMenu.d.ts +3 -30
  67. package/dist/components/header/getAnnotationsMenu.js +48 -54
  68. package/dist/components/header/getAnnotationsMenu.js.map +1 -1
  69. package/dist/components/header/menuBarItems.d.ts +11 -0
  70. package/dist/components/header/menuBarItems.js +277 -0
  71. package/dist/components/header/menuBarItems.js.map +1 -0
  72. package/dist/components/import/ImportForm.js +12 -6
  73. package/dist/components/import/ImportForm.js.map +1 -1
  74. package/dist/components/minimap/Minimap.js +7 -3
  75. package/dist/components/minimap/Minimap.js.map +1 -1
  76. package/dist/components/minimap/MinimapSVG.js +2 -1
  77. package/dist/components/minimap/MinimapSVG.js.map +1 -1
  78. package/dist/components/minimap/minimapLayout.d.ts +12 -0
  79. package/dist/components/minimap/minimapLayout.js +20 -0
  80. package/dist/components/minimap/minimapLayout.js.map +1 -1
  81. package/dist/components/msa/MSACanvas.js +26 -9
  82. package/dist/components/msa/MSACanvas.js.map +1 -1
  83. package/dist/components/msa/MSACanvasBlock.js +15 -11
  84. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  85. package/dist/components/msa/MSAMouseoverCanvas.js +2 -2
  86. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  87. package/dist/components/msa/WheelZoomHint.d.ts +7 -0
  88. package/dist/components/msa/WheelZoomHint.js +38 -0
  89. package/dist/components/msa/WheelZoomHint.js.map +1 -0
  90. package/dist/components/msa/msaKeys.js +3 -0
  91. package/dist/components/msa/msaKeys.js.map +1 -1
  92. package/dist/components/msa/msaRaster.d.ts +4 -5
  93. package/dist/components/msa/msaRaster.js +5 -5
  94. package/dist/components/msa/msaRaster.js.map +1 -1
  95. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +22 -2
  96. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  97. package/dist/components/msa/renderHighlights.d.ts +0 -3
  98. package/dist/components/msa/renderHighlights.js +3 -3
  99. package/dist/components/msa/renderHighlights.js.map +1 -1
  100. package/dist/components/msa/renderMSABlock.d.ts +6 -1
  101. package/dist/components/msa/renderMSABlock.js +44 -17
  102. package/dist/components/msa/renderMSABlock.js.map +1 -1
  103. package/dist/components/msa/tileColor.js +7 -0
  104. package/dist/components/msa/tileColor.js.map +1 -1
  105. package/dist/components/rowpanels/RowPanelBlock.js +2 -2
  106. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -1
  107. package/dist/components/settings/MenuItemsForm.d.ts +10 -0
  108. package/dist/components/settings/MenuItemsForm.js +80 -0
  109. package/dist/components/settings/MenuItemsForm.js.map +1 -0
  110. package/dist/components/settings/SettingsPanel.d.ts +12 -0
  111. package/dist/components/settings/SettingsPanel.js +92 -0
  112. package/dist/components/settings/SettingsPanel.js.map +1 -0
  113. package/dist/components/{header/FileMenu.d.ts → settings/TrackList.d.ts} +2 -2
  114. package/dist/components/settings/TrackList.js +58 -0
  115. package/dist/components/settings/TrackList.js.map +1 -0
  116. package/dist/components/tracks/TrackBlocks.js +2 -2
  117. package/dist/components/tracks/TrackBlocks.js.map +1 -1
  118. package/dist/components/tracks/TrackTooltipContent.js +2 -1
  119. package/dist/components/tracks/TrackTooltipContent.js.map +1 -1
  120. package/dist/components/tracks/drawTracks.js +13 -6
  121. package/dist/components/tracks/drawTracks.js.map +1 -1
  122. package/dist/components/tree/TreeCanvasBlock.js +2 -2
  123. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  124. package/dist/components/tree/TreeMenu.js +4 -6
  125. package/dist/components/tree/TreeMenu.js.map +1 -1
  126. package/dist/components/tree/TreeOverview.js +2 -2
  127. package/dist/components/tree/TreeOverview.js.map +1 -1
  128. package/dist/constants.d.ts +4 -1
  129. package/dist/constants.js +7 -1
  130. package/dist/constants.js.map +1 -1
  131. package/dist/darkReader.d.ts +7 -0
  132. package/dist/darkReader.js +42 -0
  133. package/dist/darkReader.js.map +1 -0
  134. package/dist/element.js +22 -47
  135. package/dist/element.js.map +1 -1
  136. package/dist/featurePanels.d.ts +37 -0
  137. package/dist/featurePanels.js +187 -0
  138. package/dist/featurePanels.js.map +1 -0
  139. package/dist/filehandleLoader.d.ts +41 -0
  140. package/dist/filehandleLoader.js +99 -0
  141. package/dist/filehandleLoader.js.map +1 -0
  142. package/dist/index.d.ts +3 -0
  143. package/dist/index.js +2 -0
  144. package/dist/index.js.map +1 -1
  145. package/dist/model/treeModel.d.ts +9 -0
  146. package/dist/model/treeModel.js +12 -1
  147. package/dist/model/treeModel.js.map +1 -1
  148. package/dist/model.d.ts +148 -32
  149. package/dist/model.js +291 -569
  150. package/dist/model.js.map +1 -1
  151. package/dist/neighborJoining.js +1 -40
  152. package/dist/neighborJoining.js.map +1 -1
  153. package/dist/renderToSvg.js +1 -13
  154. package/dist/renderToSvg.js.map +1 -1
  155. package/dist/rerootTree.d.ts +1 -0
  156. package/dist/rerootTree.js +7 -6
  157. package/dist/rerootTree.js.map +1 -1
  158. package/dist/schemeResidueColor.d.ts +12 -0
  159. package/dist/schemeResidueColor.js +33 -0
  160. package/dist/schemeResidueColor.js.map +1 -0
  161. package/dist/similarityColors.d.ts +11 -0
  162. package/dist/similarityColors.js +90 -0
  163. package/dist/similarityColors.js.map +1 -0
  164. package/dist/svgTestUtil.d.ts +64 -12
  165. package/dist/treeDisplay.d.ts +37 -0
  166. package/dist/treeDisplay.js +209 -0
  167. package/dist/treeDisplay.js.map +1 -0
  168. package/dist/types.d.ts +7 -3
  169. package/dist/useWheelScroll.d.ts +3 -1
  170. package/dist/useWheelScroll.js +36 -17
  171. package/dist/useWheelScroll.js.map +1 -1
  172. package/dist/util.d.ts +2 -0
  173. package/dist/util.js +2 -0
  174. package/dist/util.js.map +1 -1
  175. package/dist/version.d.ts +1 -1
  176. package/dist/version.js +1 -1
  177. package/dist/wheelZoom.d.ts +8 -3
  178. package/dist/wheelZoom.js +44 -32
  179. package/dist/wheelZoom.js.map +1 -1
  180. package/dist/zoomSnapshot.d.ts +29 -0
  181. package/dist/zoomSnapshot.js +47 -0
  182. package/dist/zoomSnapshot.js.map +1 -0
  183. package/package.json +11 -11
  184. package/src/blosum62.ts +45 -0
  185. package/src/colorSchemes.ts +1 -0
  186. package/src/components/Loading.tsx +6 -2
  187. package/src/components/MSAView.tsx +22 -5
  188. package/src/components/MetadataTable.tsx +83 -26
  189. package/src/components/Track.tsx +13 -0
  190. package/src/components/controls.ts +2 -1
  191. package/src/components/dialogs/AnnotationFileDialog.tsx +12 -1
  192. package/src/components/dialogs/FeatureDialog.tsx +2 -5
  193. package/src/components/dialogs/GapThresholdDialog.tsx +36 -0
  194. package/src/components/{header → dialogs}/GappynessSlider.tsx +3 -10
  195. package/src/components/{header → dialogs}/GoToBox.tsx +36 -10
  196. package/src/components/dialogs/GoToDialog.tsx +30 -0
  197. package/src/components/dialogs/MetadataDialog.tsx +32 -4
  198. package/src/components/{header → dialogs}/goTo.ts +1 -1
  199. package/src/components/dialogs/metadataLabels.ts +54 -0
  200. package/src/components/dialogs/metadataRecord.tsx +61 -0
  201. package/src/components/header/Header.tsx +75 -42
  202. package/src/components/header/HiddenColumnsChip.tsx +39 -0
  203. package/src/components/header/MenuBar.tsx +64 -0
  204. package/src/components/header/ScrollZoomCheckbox.tsx +46 -0
  205. package/src/components/header/ZoomControls.tsx +20 -35
  206. package/src/components/header/colorSchemeMenuItems.ts +121 -0
  207. package/src/components/header/getAnnotationsMenu.ts +52 -56
  208. package/src/components/header/menuBarItems.ts +357 -0
  209. package/src/components/import/ImportForm.tsx +19 -7
  210. package/src/components/minimap/Minimap.tsx +11 -3
  211. package/src/components/minimap/MinimapSVG.tsx +17 -1
  212. package/src/components/minimap/minimapLayout.ts +27 -0
  213. package/src/components/msa/MSACanvas.tsx +22 -3
  214. package/src/components/msa/MSACanvasBlock.tsx +18 -11
  215. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -2
  216. package/src/components/msa/WheelZoomHint.tsx +56 -0
  217. package/src/components/msa/msaKeys.ts +3 -0
  218. package/src/components/msa/msaRaster.ts +6 -8
  219. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +28 -5
  220. package/src/components/msa/renderHighlights.ts +3 -3
  221. package/src/components/msa/renderMSABlock.ts +51 -15
  222. package/src/components/msa/tileColor.ts +7 -0
  223. package/src/components/rowpanels/RowPanelBlock.tsx +2 -2
  224. package/src/components/settings/MenuItemsForm.tsx +225 -0
  225. package/src/components/settings/SettingsPanel.tsx +156 -0
  226. package/src/components/settings/TrackList.tsx +124 -0
  227. package/src/components/tracks/TrackBlocks.tsx +2 -2
  228. package/src/components/tracks/TrackTooltipContent.tsx +2 -1
  229. package/src/components/tracks/drawTracks.ts +15 -7
  230. package/src/components/tree/TreeCanvasBlock.tsx +2 -2
  231. package/src/components/tree/TreeMenu.tsx +4 -6
  232. package/src/components/tree/TreeOverview.tsx +2 -2
  233. package/src/constants.ts +9 -1
  234. package/src/darkReader.ts +57 -0
  235. package/src/element.ts +34 -57
  236. package/src/featurePanels.ts +269 -0
  237. package/src/filehandleLoader.ts +136 -0
  238. package/src/index.ts +4 -0
  239. package/src/model/treeModel.ts +13 -0
  240. package/src/model.ts +370 -748
  241. package/src/neighborJoining.ts +1 -42
  242. package/src/renderToSvg.tsx +1 -13
  243. package/src/rerootTree.ts +7 -6
  244. package/src/schemeResidueColor.ts +37 -0
  245. package/src/similarityColors.ts +112 -0
  246. package/src/treeDisplay.ts +278 -0
  247. package/src/types.ts +7 -4
  248. package/src/useWheelScroll.ts +43 -22
  249. package/src/util.ts +3 -0
  250. package/src/version.ts +1 -1
  251. package/src/wheelZoom.ts +55 -33
  252. package/src/zoomSnapshot.ts +80 -0
  253. package/dist/components/header/ColorSchemeMenu.d.ts +0 -12
  254. package/dist/components/header/ColorSchemeMenu.js +0 -37
  255. package/dist/components/header/ColorSchemeMenu.js.map +0 -1
  256. package/dist/components/header/FileMenu.js +0 -92
  257. package/dist/components/header/FileMenu.js.map +0 -1
  258. package/dist/components/header/GappynessSlider.js.map +0 -1
  259. package/dist/components/header/GoToBox.js +0 -31
  260. package/dist/components/header/GoToBox.js.map +0 -1
  261. package/dist/components/header/MSASettingsMenu.js +0 -11
  262. package/dist/components/header/MSASettingsMenu.js.map +0 -1
  263. package/dist/components/header/ScrollZoomIcons.d.ts +0 -6
  264. package/dist/components/header/ScrollZoomIcons.js +0 -35
  265. package/dist/components/header/ScrollZoomIcons.js.map +0 -1
  266. package/dist/components/header/TreeSettingsMenu.js +0 -11
  267. package/dist/components/header/TreeSettingsMenu.js.map +0 -1
  268. package/dist/components/header/goTo.d.ts +0 -20
  269. package/dist/components/header/goTo.js.map +0 -1
  270. package/dist/components/header/settingsMenuItems.d.ts +0 -5
  271. package/dist/components/header/settingsMenuItems.js +0 -171
  272. package/dist/components/header/settingsMenuItems.js.map +0 -1
  273. package/src/components/header/ColorSchemeMenu.tsx +0 -56
  274. package/src/components/header/FileMenu.tsx +0 -107
  275. package/src/components/header/MSASettingsMenu.tsx +0 -26
  276. package/src/components/header/ScrollZoomIcons.tsx +0 -52
  277. package/src/components/header/TreeSettingsMenu.tsx +0 -30
  278. package/src/components/header/settingsMenuItems.ts +0 -216
@@ -1,7 +1,7 @@
1
1
  import MSAModelF from './model.ts';
2
2
  type Snapshot = NonNullable<Parameters<ReturnType<typeof MSAModelF>['create']>[0]>;
3
3
  export declare function installSvgTestEnv(contextExtras?: Partial<CanvasRenderingContext2D>): void;
4
- export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?: number): import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<Omit<Omit<Omit<{}, "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeOrder" | "treeWidth"> & {
4
+ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?: number): import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<Omit<Omit<Omit<{}, "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "showTreeScaleBar" | "treeAreaWidth" | "treeOrder" | "treeWidth"> & {
5
5
  drawLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
6
6
  labelsAlignRight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
7
7
  treeAreaWidth: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
@@ -12,6 +12,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
12
12
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
13
13
  drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
14
14
  showTreeOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
15
+ showTreeScaleBar: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
15
16
  overviewHeight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
16
17
  }, "bgColor" | "colorSchemeName" | "customColorScheme" | "msaFormat" | "showColumnStats"> & {
17
18
  bgColor: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -19,15 +20,17 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
19
20
  customColorScheme: import("@jbrowse/mobx-state-tree").IType<Record<string, string> | undefined, Record<string, string> | undefined, Record<string, string> | undefined>;
20
21
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
21
22
  msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
22
- }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "features" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "selection" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
23
+ }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "domainFill" | "drawMsaLetters" | "embeddedMode" | "encodings" | "features" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "selection" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
23
24
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
24
25
  showDomains: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
26
+ domainFill: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
25
27
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
26
28
  hideGaps: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
27
29
  allowedGappyness: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
28
30
  subFeatureRows: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
29
31
  type: import("@jbrowse/mobx-state-tree").ILiteralType<"MsaView">;
30
32
  drawMsaLetters: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
33
+ embeddedMode: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
31
34
  scrollZoom: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
32
35
  scrollZoomAxis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"both" | "horizontal" | "vertical">, [undefined]>;
33
36
  height: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -405,6 +408,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
405
408
  setDrawNodeBubbles(arg: boolean): void;
406
409
  setDrawNodeLabels(arg: boolean): void;
407
410
  setShowTreeOverview(arg: boolean): void;
411
+ setShowTreeScaleBar(arg: boolean): void;
408
412
  setDrawLabels(arg: boolean): void;
409
413
  } & {
410
414
  setColorSchemeName(name: string): void;
@@ -414,6 +418,11 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
414
418
  setMSAFormat(arg?: import("msa-parsers").MSAFormat): void;
415
419
  } & {
416
420
  headerHeight: number;
421
+ settingsOpen: boolean;
422
+ zoomHeld: {
423
+ col: number;
424
+ row: number;
425
+ };
417
426
  hideHeader: boolean;
418
427
  importForm: boolean;
419
428
  status: {
@@ -421,6 +430,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
421
430
  onCancel?: () => void;
422
431
  } | undefined;
423
432
  highResScaleFactor: number;
433
+ zoomSnapshot: import("./zoomSnapshot.ts").ZoomSnapshot | undefined;
424
434
  loadingMSA: boolean;
425
435
  loadingTree: boolean;
426
436
  volatileWidth: number | undefined;
@@ -451,6 +461,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
451
461
  setLoadingMSA(arg: boolean): void;
452
462
  setLoadingTree(arg: boolean): void;
453
463
  setWidth(arg: number): void;
464
+ setSettingsOpen(arg: boolean): void;
454
465
  setHighResScaleFactor(arg: number): void;
455
466
  setHeight(height: number): void;
456
467
  setError(error?: unknown): void;
@@ -467,6 +478,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
467
478
  applyHighlight(owner: string, highlights: import("./types.ts").Highlight[]): void;
468
479
  clearHighlight(owner: string): void;
469
480
  setShowDomains(arg: boolean): void;
481
+ setDomainFill(arg: boolean): void;
482
+ setCellFill(mode: 'residue' | 'domain' | 'none'): void;
470
483
  setShowDomainLegend(arg: boolean): void;
471
484
  setSubFeatureRows(arg: boolean): void;
472
485
  setMouseClickPos(col?: number, row?: number): void;
@@ -494,8 +507,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
494
507
  setGFF(result?: string): void;
495
508
  } & {
496
509
  readonly hideGapsEffective: boolean;
497
- readonly allAnnotations: import("msa-parsers").Annotation[];
498
- readonly actuallyShowDomains: boolean;
499
510
  readonly hostRestoresData: boolean;
500
511
  readonly viewInitialized: boolean;
501
512
  readonly width: number;
@@ -523,6 +534,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
523
534
  rowDataOf(name: string): Record<string, string> | undefined;
524
535
  readonly rowFields: string[];
525
536
  readonly MSA: import("msa-parsers").MSAParserType | null;
537
+ readonly allAnnotations: import("msa-parsers").Annotation[];
538
+ readonly actuallyShowDomains: boolean;
526
539
  readonly numColumns: number;
527
540
  readonly inputTree: import("./types.ts").NodeWithIds;
528
541
  readonly tree: import("./types.ts").NodeWithIds;
@@ -586,6 +599,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
586
599
  color: string | undefined;
587
600
  }[];
588
601
  readonly colClustalX: Record<string, string>[];
602
+ readonly colSimilarity: Record<string, string>[];
589
603
  readonly conservation: number[];
590
604
  readonly alphabetMaxBits: number;
591
605
  readonly propertyConservation: number[];
@@ -621,6 +635,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
621
635
  readonly adapterTrackModels: import("./types.ts").BasicTrack[];
622
636
  readonly basePairTrackModels: import("./types.ts").BasicTrack[];
623
637
  readonly computedTrackModels: import("./types.ts").BasicTrack[];
638
+ readonly referenceTrackModels: import("./types.ts").BasicTrack[];
624
639
  readonly tracks: import("./types.ts").BasicTrack[];
625
640
  readonly turnedOnTracks: import("./types.ts").BasicTrack[];
626
641
  readonly showHorizontalScrollbar: boolean;
@@ -654,7 +669,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
654
669
  readonly msaAreaHeight: number;
655
670
  readonly totalTrackAreaHeight: number;
656
671
  readonly annotationTypes: Map<string, import("msa-parsers").Annotation>;
672
+ readonly defaultOffAccessions: Set<string>;
673
+ featureOff(accession: string): boolean;
657
674
  readonly filteredAnnotations: import("msa-parsers").Annotation[];
675
+ readonly cellFill: 'residue' | 'domain' | 'none';
658
676
  readonly annotationsByRow: Record<string, import("msa-parsers").Annotation[]>;
659
677
  } & {
660
678
  readonly showVerticalScrollbar: boolean;
@@ -667,6 +685,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
667
685
  readonly msaCanvasWidth: number;
668
686
  readonly maxScrollX: number;
669
687
  readonly blocks2d: (readonly [number, number])[];
688
+ readonly wheelZooming: boolean;
670
689
  readonly isLoading: boolean;
671
690
  readonly dataWarnings: string[];
672
691
  readonly warnings: string[];
@@ -686,6 +705,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
686
705
  zoomIn(): void;
687
706
  zoomOut(): void;
688
707
  zoomToPos(scaleFactor: number, offsetX: number, offsetY: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
708
+ wheelZoomToPos(scaleFactor: number, offsetX: number, offsetY: number): void;
709
+ endWheelZoom(): void;
689
710
  doScrollY(deltaY: number): void;
690
711
  setScrollY(n: number): void;
691
712
  setAnnotations(annotations: import("msa-parsers").Annotation[]): void;
@@ -698,6 +719,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
698
719
  setRowPanels(panels: import("./types.ts").RowPanelSpec[]): void;
699
720
  setResidueMappings(mappings: import("./types.ts").ResidueMapping[]): void;
700
721
  toggleTrack(id: string): void;
722
+ setTracksShown(ids: string[], shown: boolean): void;
701
723
  setStatus(status?: {
702
724
  msg: string;
703
725
  onCancel?: () => void;
@@ -781,6 +803,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
781
803
  } & {
782
804
  setHeaderHeight(arg: number): void;
783
805
  setHideHeader(arg: boolean): void;
806
+ setEmbeddedMode(arg: boolean): void;
784
807
  setImportForm(arg: boolean): void;
785
808
  treeOverviewClick(y: number): void;
786
809
  setTrackHeight(heightKey: string, height: number): void;
@@ -789,7 +812,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
789
812
  exportNewick(): void;
790
813
  setFilter(accession: string, shown: boolean): void;
791
814
  fit(): void;
792
- fitVertically(): void;
815
+ fitVertically(maxRowHeight?: any): void;
793
816
  zoomToRegion(region: import("./types.ts").Region): void;
794
817
  revealRegion(region: import("./types.ts").Region): void;
795
818
  zoomToSelection(): void;
@@ -800,9 +823,9 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
800
823
  col: number;
801
824
  row?: number;
802
825
  }): void;
803
- fitHorizontally(): void;
826
+ fitHorizontally(maxColWidth?: any): void;
804
827
  afterCreate(): void;
805
- } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeOrder" | "treeWidth"> & {
828
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "showTreeScaleBar" | "treeAreaWidth" | "treeOrder" | "treeWidth"> & {
806
829
  drawLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
807
830
  labelsAlignRight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
808
831
  treeAreaWidth: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
@@ -813,6 +836,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
813
836
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
814
837
  drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
815
838
  showTreeOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
839
+ showTreeScaleBar: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
816
840
  overviewHeight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
817
841
  }, "bgColor" | "colorSchemeName" | "customColorScheme" | "msaFormat" | "showColumnStats"> & {
818
842
  bgColor: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -820,15 +844,17 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
820
844
  customColorScheme: import("@jbrowse/mobx-state-tree").IType<Record<string, string> | undefined, Record<string, string> | undefined, Record<string, string> | undefined>;
821
845
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
822
846
  msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
823
- }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "features" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "selection" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
847
+ }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "domainFill" | "drawMsaLetters" | "embeddedMode" | "encodings" | "features" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "selection" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
824
848
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
825
849
  showDomains: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
850
+ domainFill: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
826
851
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
827
852
  hideGaps: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
828
853
  allowedGappyness: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
829
854
  subFeatureRows: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
830
855
  type: import("@jbrowse/mobx-state-tree").ILiteralType<"MsaView">;
831
856
  drawMsaLetters: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
857
+ embeddedMode: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
832
858
  scrollZoom: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
833
859
  scrollZoomAxis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"both" | "horizontal" | "vertical">, [undefined]>;
834
860
  height: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -1206,6 +1232,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1206
1232
  setDrawNodeBubbles(arg: boolean): void;
1207
1233
  setDrawNodeLabels(arg: boolean): void;
1208
1234
  setShowTreeOverview(arg: boolean): void;
1235
+ setShowTreeScaleBar(arg: boolean): void;
1209
1236
  setDrawLabels(arg: boolean): void;
1210
1237
  } & {
1211
1238
  setColorSchemeName(name: string): void;
@@ -1215,6 +1242,11 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1215
1242
  setMSAFormat(arg?: import("msa-parsers").MSAFormat): void;
1216
1243
  } & {
1217
1244
  headerHeight: number;
1245
+ settingsOpen: boolean;
1246
+ zoomHeld: {
1247
+ col: number;
1248
+ row: number;
1249
+ };
1218
1250
  hideHeader: boolean;
1219
1251
  importForm: boolean;
1220
1252
  status: {
@@ -1222,6 +1254,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1222
1254
  onCancel?: () => void;
1223
1255
  } | undefined;
1224
1256
  highResScaleFactor: number;
1257
+ zoomSnapshot: import("./zoomSnapshot.ts").ZoomSnapshot | undefined;
1225
1258
  loadingMSA: boolean;
1226
1259
  loadingTree: boolean;
1227
1260
  volatileWidth: number | undefined;
@@ -1252,6 +1285,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1252
1285
  setLoadingMSA(arg: boolean): void;
1253
1286
  setLoadingTree(arg: boolean): void;
1254
1287
  setWidth(arg: number): void;
1288
+ setSettingsOpen(arg: boolean): void;
1255
1289
  setHighResScaleFactor(arg: number): void;
1256
1290
  setHeight(height: number): void;
1257
1291
  setError(error?: unknown): void;
@@ -1268,6 +1302,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1268
1302
  applyHighlight(owner: string, highlights: import("./types.ts").Highlight[]): void;
1269
1303
  clearHighlight(owner: string): void;
1270
1304
  setShowDomains(arg: boolean): void;
1305
+ setDomainFill(arg: boolean): void;
1306
+ setCellFill(mode: 'residue' | 'domain' | 'none'): void;
1271
1307
  setShowDomainLegend(arg: boolean): void;
1272
1308
  setSubFeatureRows(arg: boolean): void;
1273
1309
  setMouseClickPos(col?: number, row?: number): void;
@@ -1295,8 +1331,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1295
1331
  setGFF(result?: string): void;
1296
1332
  } & {
1297
1333
  readonly hideGapsEffective: boolean;
1298
- readonly allAnnotations: import("msa-parsers").Annotation[];
1299
- readonly actuallyShowDomains: boolean;
1300
1334
  readonly hostRestoresData: boolean;
1301
1335
  readonly viewInitialized: boolean;
1302
1336
  readonly width: number;
@@ -1324,6 +1358,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1324
1358
  rowDataOf(name: string): Record<string, string> | undefined;
1325
1359
  readonly rowFields: string[];
1326
1360
  readonly MSA: import("msa-parsers").MSAParserType | null;
1361
+ readonly allAnnotations: import("msa-parsers").Annotation[];
1362
+ readonly actuallyShowDomains: boolean;
1327
1363
  readonly numColumns: number;
1328
1364
  readonly inputTree: import("./types.ts").NodeWithIds;
1329
1365
  readonly tree: import("./types.ts").NodeWithIds;
@@ -1387,6 +1423,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1387
1423
  color: string | undefined;
1388
1424
  }[];
1389
1425
  readonly colClustalX: Record<string, string>[];
1426
+ readonly colSimilarity: Record<string, string>[];
1390
1427
  readonly conservation: number[];
1391
1428
  readonly alphabetMaxBits: number;
1392
1429
  readonly propertyConservation: number[];
@@ -1422,6 +1459,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1422
1459
  readonly adapterTrackModels: import("./types.ts").BasicTrack[];
1423
1460
  readonly basePairTrackModels: import("./types.ts").BasicTrack[];
1424
1461
  readonly computedTrackModels: import("./types.ts").BasicTrack[];
1462
+ readonly referenceTrackModels: import("./types.ts").BasicTrack[];
1425
1463
  readonly tracks: import("./types.ts").BasicTrack[];
1426
1464
  readonly turnedOnTracks: import("./types.ts").BasicTrack[];
1427
1465
  readonly showHorizontalScrollbar: boolean;
@@ -1455,7 +1493,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1455
1493
  readonly msaAreaHeight: number;
1456
1494
  readonly totalTrackAreaHeight: number;
1457
1495
  readonly annotationTypes: Map<string, import("msa-parsers").Annotation>;
1496
+ readonly defaultOffAccessions: Set<string>;
1497
+ featureOff(accession: string): boolean;
1458
1498
  readonly filteredAnnotations: import("msa-parsers").Annotation[];
1499
+ readonly cellFill: 'residue' | 'domain' | 'none';
1459
1500
  readonly annotationsByRow: Record<string, import("msa-parsers").Annotation[]>;
1460
1501
  } & {
1461
1502
  readonly showVerticalScrollbar: boolean;
@@ -1468,6 +1509,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1468
1509
  readonly msaCanvasWidth: number;
1469
1510
  readonly maxScrollX: number;
1470
1511
  readonly blocks2d: (readonly [number, number])[];
1512
+ readonly wheelZooming: boolean;
1471
1513
  readonly isLoading: boolean;
1472
1514
  readonly dataWarnings: string[];
1473
1515
  readonly warnings: string[];
@@ -1487,6 +1529,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1487
1529
  zoomIn(): void;
1488
1530
  zoomOut(): void;
1489
1531
  zoomToPos(scaleFactor: number, offsetX: number, offsetY: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
1532
+ wheelZoomToPos(scaleFactor: number, offsetX: number, offsetY: number): void;
1533
+ endWheelZoom(): void;
1490
1534
  doScrollY(deltaY: number): void;
1491
1535
  setScrollY(n: number): void;
1492
1536
  setAnnotations(annotations: import("msa-parsers").Annotation[]): void;
@@ -1499,6 +1543,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1499
1543
  setRowPanels(panels: import("./types.ts").RowPanelSpec[]): void;
1500
1544
  setResidueMappings(mappings: import("./types.ts").ResidueMapping[]): void;
1501
1545
  toggleTrack(id: string): void;
1546
+ setTracksShown(ids: string[], shown: boolean): void;
1502
1547
  setStatus(status?: {
1503
1548
  msg: string;
1504
1549
  onCancel?: () => void;
@@ -1582,6 +1627,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1582
1627
  } & {
1583
1628
  setHeaderHeight(arg: number): void;
1584
1629
  setHideHeader(arg: boolean): void;
1630
+ setEmbeddedMode(arg: boolean): void;
1585
1631
  setImportForm(arg: boolean): void;
1586
1632
  treeOverviewClick(y: number): void;
1587
1633
  setTrackHeight(heightKey: string, height: number): void;
@@ -1590,7 +1636,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1590
1636
  exportNewick(): void;
1591
1637
  setFilter(accession: string, shown: boolean): void;
1592
1638
  fit(): void;
1593
- fitVertically(): void;
1639
+ fitVertically(maxRowHeight?: any): void;
1594
1640
  zoomToRegion(region: import("./types.ts").Region): void;
1595
1641
  revealRegion(region: import("./types.ts").Region): void;
1596
1642
  zoomToSelection(): void;
@@ -1601,7 +1647,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1601
1647
  col: number;
1602
1648
  row?: number;
1603
1649
  }): void;
1604
- fitHorizontally(): void;
1650
+ fitHorizontally(maxColWidth?: any): void;
1605
1651
  afterCreate(): void;
1606
1652
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, {
1607
1653
  bgColor: boolean;
@@ -1619,16 +1665,19 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1619
1665
  drawNodeBubbles: boolean;
1620
1666
  drawNodeLabels: boolean;
1621
1667
  showTreeOverview: boolean;
1668
+ showTreeScaleBar: boolean;
1622
1669
  overviewHeight: number;
1623
1670
  columnTracks: import("./types.ts").ColumnTrackSpec[];
1624
1671
  id: string;
1625
1672
  showDomains: boolean;
1673
+ domainFill: boolean;
1626
1674
  showDomainLegend: boolean;
1627
1675
  hideGaps: boolean;
1628
1676
  allowedGappyness: number;
1629
1677
  subFeatureRows: boolean;
1630
1678
  type: "MsaView";
1631
1679
  drawMsaLetters: boolean;
1680
+ embeddedMode: boolean;
1632
1681
  scrollZoom: boolean;
1633
1682
  scrollZoomAxis: "both" | "horizontal" | "vertical";
1634
1683
  height: number;
@@ -1756,16 +1805,19 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1756
1805
  drawNodeBubbles: boolean;
1757
1806
  drawNodeLabels: boolean;
1758
1807
  showTreeOverview: boolean;
1808
+ showTreeScaleBar: boolean;
1759
1809
  overviewHeight: number;
1760
1810
  columnTracks?: undefined;
1761
1811
  id: string;
1762
1812
  showDomains: boolean;
1813
+ domainFill: boolean;
1763
1814
  showDomainLegend: boolean;
1764
1815
  hideGaps: boolean;
1765
1816
  allowedGappyness: number;
1766
1817
  subFeatureRows: boolean;
1767
1818
  type: "MsaView";
1768
1819
  drawMsaLetters: boolean;
1820
+ embeddedMode: boolean;
1769
1821
  scrollZoom: boolean;
1770
1822
  scrollZoomAxis: "both" | "horizontal" | "vertical";
1771
1823
  height: number;
@@ -0,0 +1,37 @@
1
+ import type { HierarchyNode } from './hierarchy.ts';
2
+ import type { Clade, NodeWithIds, ResolvedClade, TreeOrder, TreeRoot } from './types.ts';
3
+ export declare function parseTreeText(text: string): import("@gmod/newick").NewickNode;
4
+ /**
5
+ * Every clade that resolves, with its fill color settled, against the rows of
6
+ * `displayed`, the tree as drawn. The tree panel resolves against the
7
+ * displayed rows and the overview against its own, so both take the tree they
8
+ * draw. A `range` record names no node, so the seeding marks, which need one,
9
+ * drop it.
10
+ */
11
+ export declare function resolveClades(clades: Clade[], root: HierarchyNode<NodeWithIds>, displayed: HierarchyNode<NodeWithIds>): ResolvedClade[];
12
+ /**
13
+ * The tree with the display transforms applied: leaf counts summed, children
14
+ * put in `order` and each `rotated` node's reversed, `showOnly` taken as the
15
+ * new root, and each `collapsed` clade folded. The overview builds the same
16
+ * tree without the focus, so it shows the focused subtree inside the whole.
17
+ */
18
+ export declare function buildTreeRoot(tree: NodeWithIds, { collapsed, rotated, order, showOnly, }: {
19
+ collapsed: readonly string[];
20
+ rotated: readonly string[];
21
+ order: TreeOrder;
22
+ showOnly?: string;
23
+ }): HierarchyNode<NodeWithIds>;
24
+ /**
25
+ * The node whose branch an outgroup roots the tree on: the outgroup's most
26
+ * recent common ancestor, or the rest of the tips' where that ancestor is the
27
+ * root, since the outgroup then straddles the root and the branch above the
28
+ * other side is the same branch of the unrooted tree.
29
+ */
30
+ export declare function outgroupNode(root: HierarchyNode, outgroup: string[]): HierarchyNode<NodeWithIds> | undefined;
31
+ /**
32
+ * `tree` rerooted as `treeRoot` asks, with fresh path ids. The ids of the tree
33
+ * as written become names on unnamed nodes, and a rerooting would carry them
34
+ * along as labels, so they come off first.
35
+ */
36
+ export declare function rootTree(tree: NodeWithIds, treeRoot: TreeRoot): import("msa-parsers").NodeWithIds;
37
+ export declare function tipRange(node: HierarchyNode): [number, number];
@@ -0,0 +1,209 @@
1
+ import { generateNodeIds, parseEmfTree, parseNewick } from 'msa-parsers';
2
+ import { cladeHighlightAlpha, cladeHighlightColor } from './constants.js';
3
+ import { flatToTree } from './flatToTree.js';
4
+ import { collapse, find, forEachDescendant, hierarchy, leafIndex, leaves, mrca, sort, sum as hierarchySum, } from './hierarchy.js';
5
+ import { parseAsn1 } from './parseAsn1.js';
6
+ import { midpointRoot, preorder, rerootTree } from './rerootTree.js';
7
+ import { withAlpha } from './util.js';
8
+ export function parseTreeText(text) {
9
+ if (text.startsWith('BioTreeContainer')) {
10
+ return flatToTree(parseAsn1(text));
11
+ }
12
+ return parseNewick(text.startsWith('SEQ') ? parseEmfTree(text).tree : text);
13
+ }
14
+ // the marks that set tree state from a node rather than drawing
15
+ const seedingMarks = new Set(['collapse', 'focus', 'rotate']);
16
+ /**
17
+ * Each tip of the full tree in the order the tree draws it, with the on-screen
18
+ * row that shows it: its own, or the row of the collapsed node standing for it
19
+ */
20
+ function tipRows(root) {
21
+ const rows = new Map();
22
+ let row = 0;
23
+ const pushReversed = (stack, nodes) => {
24
+ for (let i = nodes.length - 1; i >= 0; i--) {
25
+ stack.push(nodes[i]);
26
+ }
27
+ };
28
+ const stack = [root];
29
+ while (stack.length > 0) {
30
+ const node = stack.pop();
31
+ if (node.children?.length) {
32
+ pushReversed(stack, node.children);
33
+ }
34
+ else {
35
+ const hidden = [node];
36
+ while (hidden.length > 0) {
37
+ const tip = hidden.pop();
38
+ const kids = tip.children ?? tip._children;
39
+ if (kids?.length) {
40
+ pushReversed(hidden, kids);
41
+ }
42
+ else {
43
+ rows.set(tip.data.name, { order: rows.size, row });
44
+ }
45
+ }
46
+ row++;
47
+ }
48
+ }
49
+ return rows;
50
+ }
51
+ /**
52
+ * The rows a clade covers and the node an `mrca` names, or undefined when the
53
+ * clade does not resolve: a tip name the tree does not have or has twice, or a
54
+ * leaf count `tips` disagrees with. A `range` counts its tips in the order
55
+ * `tips` gives them, so a collapsed clade inside it counts every leaf it
56
+ * stands for. `index` is the memoized leaf pass over the tree.
57
+ */
58
+ function cladeRows(clade, root, index, tips) {
59
+ if (clade.range) {
60
+ const [a, b] = clade.range.map(name => index.get(name) ? tips.get(name) : undefined);
61
+ if (a === undefined || b === undefined) {
62
+ return undefined;
63
+ }
64
+ const [first, last] = a.order <= b.order ? [a, b] : [b, a];
65
+ return last.order - first.order + 1 === clade.tips
66
+ ? { rows: [first.row, last.row] }
67
+ : undefined;
68
+ }
69
+ const node = clade.mrca ? mrca(root, clade.mrca, index) : undefined;
70
+ if (!node) {
71
+ return undefined;
72
+ }
73
+ const nodeTips = leaves(node);
74
+ if (nodeTips.length !== clade.tips) {
75
+ return undefined;
76
+ }
77
+ let first = Infinity;
78
+ let last = -Infinity;
79
+ for (const tip of nodeTips) {
80
+ const row = tips.get(tip.data.name)?.row;
81
+ if (row !== undefined) {
82
+ first = Math.min(first, row);
83
+ last = Math.max(last, row);
84
+ }
85
+ }
86
+ return first <= last
87
+ ? { rows: [first, last], nodeId: node.data.id }
88
+ : undefined;
89
+ }
90
+ /**
91
+ * Every clade that resolves, with its fill color settled, against the rows of
92
+ * `displayed`, the tree as drawn. The tree panel resolves against the
93
+ * displayed rows and the overview against its own, so both take the tree they
94
+ * draw. A `range` record names no node, so the seeding marks, which need one,
95
+ * drop it.
96
+ */
97
+ export function resolveClades(clades, root, displayed) {
98
+ const index = leafIndex(root);
99
+ const tips = tipRows(displayed);
100
+ return clades.flatMap(clade => {
101
+ const resolved = cladeRows(clade, root, index, tips);
102
+ const seeding = seedingMarks.has(clade.mark);
103
+ return resolved && !(seeding && resolved.nodeId === undefined)
104
+ ? [
105
+ {
106
+ ...resolved,
107
+ mark: clade.mark,
108
+ color: withAlpha(clade.color ?? cladeHighlightColor, cladeHighlightAlpha),
109
+ markColor: clade.color,
110
+ label: clade.label,
111
+ },
112
+ ]
113
+ : [];
114
+ });
115
+ }
116
+ const childOrders = {
117
+ input: undefined,
118
+ branchLength: (a, b) => (a.data.length ?? 1) - (b.data.length ?? 1),
119
+ ladderize: (a, b) => a.value - b.value,
120
+ ladderizeReverse: (a, b) => b.value - a.value,
121
+ };
122
+ /**
123
+ * The tree with the display transforms applied: leaf counts summed, children
124
+ * put in `order` and each `rotated` node's reversed, `showOnly` taken as the
125
+ * new root, and each `collapsed` clade folded. The overview builds the same
126
+ * tree without the focus, so it shows the focused subtree inside the whole.
127
+ */
128
+ export function buildTreeRoot(tree, { collapsed, rotated, order, showOnly, }) {
129
+ let hier = hierarchy(tree, d => d.children);
130
+ hierarchySum(hier, d => (d.children.length > 0 ? 0 : 1));
131
+ const compare = childOrders[order];
132
+ if (compare) {
133
+ sort(hier, compare);
134
+ }
135
+ if (rotated.length > 0) {
136
+ const flip = new Set(rotated);
137
+ forEachDescendant(hier, n => {
138
+ if (flip.has(n.data.id)) {
139
+ n.children?.reverse();
140
+ }
141
+ });
142
+ }
143
+ if (showOnly) {
144
+ const res = find(hier, n => n.data.id === showOnly);
145
+ if (res) {
146
+ hier = res;
147
+ }
148
+ }
149
+ for (const collapsedId of collapsed) {
150
+ const node = find(hier, n => n.data.id === collapsedId);
151
+ if (node) {
152
+ if (node.children) {
153
+ collapse(node);
154
+ }
155
+ else if (node.parent?.children) {
156
+ node.parent.children = node.parent.children.filter(c => c.data.id !== collapsedId);
157
+ }
158
+ }
159
+ }
160
+ return hier;
161
+ }
162
+ /**
163
+ * The node whose branch an outgroup roots the tree on: the outgroup's most
164
+ * recent common ancestor, or the rest of the tips' where that ancestor is the
165
+ * root, since the outgroup then straddles the root and the branch above the
166
+ * other side is the same branch of the unrooted tree.
167
+ */
168
+ export function outgroupNode(root, outgroup) {
169
+ const index = leafIndex(root);
170
+ const node = mrca(root, outgroup, index);
171
+ if (node !== root) {
172
+ return node;
173
+ }
174
+ const out = new Set(outgroup);
175
+ const rest = leaves(root)
176
+ .map(n => n.data.name)
177
+ .filter(name => !out.has(name));
178
+ const other = mrca(root, rest, index);
179
+ return other === root ? undefined : other;
180
+ }
181
+ /**
182
+ * `tree` rerooted as `treeRoot` asks, with fresh path ids. The ids of the tree
183
+ * as written become names on unnamed nodes, and a rerooting would carry them
184
+ * along as labels, so they come off first.
185
+ */
186
+ export function rootTree(tree, treeRoot) {
187
+ const plain = new Map();
188
+ for (const node of preorder(tree).reverse()) {
189
+ plain.set(node, {
190
+ name: node.name === node.id ? undefined : node.name,
191
+ length: node.length,
192
+ children: node.children.map(c => plain.get(c)),
193
+ });
194
+ }
195
+ const input = plain.get(tree);
196
+ if (treeRoot === 'midpoint') {
197
+ return generateNodeIds(midpointRoot(input));
198
+ }
199
+ const target = outgroupNode(hierarchy(tree, d => d.children), treeRoot.outgroup);
200
+ return target
201
+ ? generateNodeIds(rerootTree(input, plain.get(target.data)))
202
+ : tree;
203
+ }
204
+ // the inclusive tip indices a node covers, from its xMin/xMax in a layout one
205
+ // row per tip
206
+ export function tipRange(node) {
207
+ return [Math.round(node.xMin - 0.5), Math.round(node.xMax - 0.5)];
208
+ }
209
+ //# sourceMappingURL=treeDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"treeDisplay.js","sourceRoot":"","sources":["../src/treeDisplay.ts"],"names":[],"mappings":"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"}