react-msaview 9.1.0 → 9.1.1

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 (272) 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 +62 -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 +55 -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/tree/TreeCanvasBlock.js +2 -2
  119. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  120. package/dist/components/tree/TreeMenu.js +4 -6
  121. package/dist/components/tree/TreeMenu.js.map +1 -1
  122. package/dist/components/tree/TreeOverview.js +2 -2
  123. package/dist/components/tree/TreeOverview.js.map +1 -1
  124. package/dist/constants.d.ts +4 -1
  125. package/dist/constants.js +7 -1
  126. package/dist/constants.js.map +1 -1
  127. package/dist/darkReader.d.ts +7 -0
  128. package/dist/darkReader.js +42 -0
  129. package/dist/darkReader.js.map +1 -0
  130. package/dist/element.js +22 -47
  131. package/dist/element.js.map +1 -1
  132. package/dist/featurePanels.d.ts +37 -0
  133. package/dist/featurePanels.js +187 -0
  134. package/dist/featurePanels.js.map +1 -0
  135. package/dist/filehandleLoader.d.ts +41 -0
  136. package/dist/filehandleLoader.js +99 -0
  137. package/dist/filehandleLoader.js.map +1 -0
  138. package/dist/index.d.ts +3 -0
  139. package/dist/index.js +2 -0
  140. package/dist/index.js.map +1 -1
  141. package/dist/model/treeModel.d.ts +9 -0
  142. package/dist/model/treeModel.js +12 -1
  143. package/dist/model/treeModel.js.map +1 -1
  144. package/dist/model.d.ts +142 -32
  145. package/dist/model.js +268 -569
  146. package/dist/model.js.map +1 -1
  147. package/dist/neighborJoining.js +1 -40
  148. package/dist/neighborJoining.js.map +1 -1
  149. package/dist/renderToSvg.js +1 -13
  150. package/dist/renderToSvg.js.map +1 -1
  151. package/dist/rerootTree.d.ts +1 -0
  152. package/dist/rerootTree.js +7 -6
  153. package/dist/rerootTree.js.map +1 -1
  154. package/dist/schemeResidueColor.d.ts +12 -0
  155. package/dist/schemeResidueColor.js +33 -0
  156. package/dist/schemeResidueColor.js.map +1 -0
  157. package/dist/similarityColors.d.ts +11 -0
  158. package/dist/similarityColors.js +90 -0
  159. package/dist/similarityColors.js.map +1 -0
  160. package/dist/svgTestUtil.d.ts +62 -12
  161. package/dist/treeDisplay.d.ts +37 -0
  162. package/dist/treeDisplay.js +209 -0
  163. package/dist/treeDisplay.js.map +1 -0
  164. package/dist/types.d.ts +6 -2
  165. package/dist/useWheelScroll.d.ts +3 -1
  166. package/dist/useWheelScroll.js +36 -17
  167. package/dist/useWheelScroll.js.map +1 -1
  168. package/dist/util.d.ts +2 -0
  169. package/dist/util.js +2 -0
  170. package/dist/util.js.map +1 -1
  171. package/dist/version.d.ts +1 -1
  172. package/dist/version.js +1 -1
  173. package/dist/wheelZoom.d.ts +8 -3
  174. package/dist/wheelZoom.js +44 -32
  175. package/dist/wheelZoom.js.map +1 -1
  176. package/dist/zoomSnapshot.d.ts +29 -0
  177. package/dist/zoomSnapshot.js +47 -0
  178. package/dist/zoomSnapshot.js.map +1 -0
  179. package/package.json +11 -11
  180. package/src/blosum62.ts +45 -0
  181. package/src/colorSchemes.ts +1 -0
  182. package/src/components/Loading.tsx +6 -2
  183. package/src/components/MSAView.tsx +22 -5
  184. package/src/components/MetadataTable.tsx +83 -26
  185. package/src/components/Track.tsx +13 -0
  186. package/src/components/controls.ts +2 -1
  187. package/src/components/dialogs/AnnotationFileDialog.tsx +12 -1
  188. package/src/components/dialogs/FeatureDialog.tsx +2 -5
  189. package/src/components/dialogs/GapThresholdDialog.tsx +36 -0
  190. package/src/components/{header → dialogs}/GappynessSlider.tsx +3 -10
  191. package/src/components/{header → dialogs}/GoToBox.tsx +36 -10
  192. package/src/components/dialogs/GoToDialog.tsx +30 -0
  193. package/src/components/dialogs/MetadataDialog.tsx +32 -4
  194. package/src/components/{header → dialogs}/goTo.ts +1 -1
  195. package/src/components/dialogs/metadataLabels.ts +54 -0
  196. package/src/components/dialogs/metadataRecord.tsx +61 -0
  197. package/src/components/header/Header.tsx +75 -42
  198. package/src/components/header/HiddenColumnsChip.tsx +39 -0
  199. package/src/components/header/MenuBar.tsx +64 -0
  200. package/src/components/header/ScrollZoomCheckbox.tsx +46 -0
  201. package/src/components/header/ZoomControls.tsx +20 -35
  202. package/src/components/header/colorSchemeMenuItems.ts +121 -0
  203. package/src/components/header/getAnnotationsMenu.ts +52 -56
  204. package/src/components/header/menuBarItems.ts +357 -0
  205. package/src/components/import/ImportForm.tsx +19 -7
  206. package/src/components/minimap/Minimap.tsx +11 -3
  207. package/src/components/minimap/MinimapSVG.tsx +17 -1
  208. package/src/components/minimap/minimapLayout.ts +27 -0
  209. package/src/components/msa/MSACanvas.tsx +22 -3
  210. package/src/components/msa/MSACanvasBlock.tsx +18 -11
  211. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -2
  212. package/src/components/msa/WheelZoomHint.tsx +56 -0
  213. package/src/components/msa/msaKeys.ts +3 -0
  214. package/src/components/msa/msaRaster.ts +6 -8
  215. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +28 -5
  216. package/src/components/msa/renderHighlights.ts +3 -3
  217. package/src/components/msa/renderMSABlock.ts +51 -15
  218. package/src/components/msa/tileColor.ts +7 -0
  219. package/src/components/rowpanels/RowPanelBlock.tsx +2 -2
  220. package/src/components/settings/MenuItemsForm.tsx +225 -0
  221. package/src/components/settings/SettingsPanel.tsx +156 -0
  222. package/src/components/settings/TrackList.tsx +119 -0
  223. package/src/components/tracks/TrackBlocks.tsx +2 -2
  224. package/src/components/tree/TreeCanvasBlock.tsx +2 -2
  225. package/src/components/tree/TreeMenu.tsx +4 -6
  226. package/src/components/tree/TreeOverview.tsx +2 -2
  227. package/src/constants.ts +9 -1
  228. package/src/darkReader.ts +57 -0
  229. package/src/element.ts +34 -57
  230. package/src/featurePanels.ts +269 -0
  231. package/src/filehandleLoader.ts +136 -0
  232. package/src/index.ts +4 -0
  233. package/src/model/treeModel.ts +13 -0
  234. package/src/model.ts +345 -748
  235. package/src/neighborJoining.ts +1 -42
  236. package/src/renderToSvg.tsx +1 -13
  237. package/src/rerootTree.ts +7 -6
  238. package/src/schemeResidueColor.ts +37 -0
  239. package/src/similarityColors.ts +112 -0
  240. package/src/treeDisplay.ts +278 -0
  241. package/src/types.ts +6 -3
  242. package/src/useWheelScroll.ts +43 -22
  243. package/src/util.ts +3 -0
  244. package/src/version.ts +1 -1
  245. package/src/wheelZoom.ts +55 -33
  246. package/src/zoomSnapshot.ts +80 -0
  247. package/dist/components/header/ColorSchemeMenu.d.ts +0 -12
  248. package/dist/components/header/ColorSchemeMenu.js +0 -37
  249. package/dist/components/header/ColorSchemeMenu.js.map +0 -1
  250. package/dist/components/header/FileMenu.js +0 -92
  251. package/dist/components/header/FileMenu.js.map +0 -1
  252. package/dist/components/header/GappynessSlider.js.map +0 -1
  253. package/dist/components/header/GoToBox.js +0 -31
  254. package/dist/components/header/GoToBox.js.map +0 -1
  255. package/dist/components/header/MSASettingsMenu.js +0 -11
  256. package/dist/components/header/MSASettingsMenu.js.map +0 -1
  257. package/dist/components/header/ScrollZoomIcons.d.ts +0 -6
  258. package/dist/components/header/ScrollZoomIcons.js +0 -35
  259. package/dist/components/header/ScrollZoomIcons.js.map +0 -1
  260. package/dist/components/header/TreeSettingsMenu.js +0 -11
  261. package/dist/components/header/TreeSettingsMenu.js.map +0 -1
  262. package/dist/components/header/goTo.d.ts +0 -20
  263. package/dist/components/header/goTo.js.map +0 -1
  264. package/dist/components/header/settingsMenuItems.d.ts +0 -5
  265. package/dist/components/header/settingsMenuItems.js +0 -171
  266. package/dist/components/header/settingsMenuItems.js.map +0 -1
  267. package/src/components/header/ColorSchemeMenu.tsx +0 -56
  268. package/src/components/header/FileMenu.tsx +0 -107
  269. package/src/components/header/MSASettingsMenu.tsx +0 -26
  270. package/src/components/header/ScrollZoomIcons.tsx +0 -52
  271. package/src/components/header/TreeSettingsMenu.tsx +0 -30
  272. 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[];
@@ -654,7 +668,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
654
668
  readonly msaAreaHeight: number;
655
669
  readonly totalTrackAreaHeight: number;
656
670
  readonly annotationTypes: Map<string, import("msa-parsers").Annotation>;
671
+ readonly defaultOffAccessions: Set<string>;
672
+ featureOff(accession: string): boolean;
657
673
  readonly filteredAnnotations: import("msa-parsers").Annotation[];
674
+ readonly cellFill: 'residue' | 'domain' | 'none';
658
675
  readonly annotationsByRow: Record<string, import("msa-parsers").Annotation[]>;
659
676
  } & {
660
677
  readonly showVerticalScrollbar: boolean;
@@ -667,6 +684,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
667
684
  readonly msaCanvasWidth: number;
668
685
  readonly maxScrollX: number;
669
686
  readonly blocks2d: (readonly [number, number])[];
687
+ readonly wheelZooming: boolean;
670
688
  readonly isLoading: boolean;
671
689
  readonly dataWarnings: string[];
672
690
  readonly warnings: string[];
@@ -686,6 +704,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
686
704
  zoomIn(): void;
687
705
  zoomOut(): void;
688
706
  zoomToPos(scaleFactor: number, offsetX: number, offsetY: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
707
+ wheelZoomToPos(scaleFactor: number, offsetX: number, offsetY: number): void;
708
+ endWheelZoom(): void;
689
709
  doScrollY(deltaY: number): void;
690
710
  setScrollY(n: number): void;
691
711
  setAnnotations(annotations: import("msa-parsers").Annotation[]): void;
@@ -698,6 +718,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
698
718
  setRowPanels(panels: import("./types.ts").RowPanelSpec[]): void;
699
719
  setResidueMappings(mappings: import("./types.ts").ResidueMapping[]): void;
700
720
  toggleTrack(id: string): void;
721
+ setTracksShown(ids: string[], shown: boolean): void;
701
722
  setStatus(status?: {
702
723
  msg: string;
703
724
  onCancel?: () => void;
@@ -781,6 +802,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
781
802
  } & {
782
803
  setHeaderHeight(arg: number): void;
783
804
  setHideHeader(arg: boolean): void;
805
+ setEmbeddedMode(arg: boolean): void;
784
806
  setImportForm(arg: boolean): void;
785
807
  treeOverviewClick(y: number): void;
786
808
  setTrackHeight(heightKey: string, height: number): void;
@@ -789,7 +811,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
789
811
  exportNewick(): void;
790
812
  setFilter(accession: string, shown: boolean): void;
791
813
  fit(): void;
792
- fitVertically(): void;
814
+ fitVertically(maxRowHeight?: any): void;
793
815
  zoomToRegion(region: import("./types.ts").Region): void;
794
816
  revealRegion(region: import("./types.ts").Region): void;
795
817
  zoomToSelection(): void;
@@ -800,9 +822,9 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
800
822
  col: number;
801
823
  row?: number;
802
824
  }): void;
803
- fitHorizontally(): void;
825
+ fitHorizontally(maxColWidth?: any): void;
804
826
  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"> & {
827
+ } & 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
828
  drawLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
807
829
  labelsAlignRight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
808
830
  treeAreaWidth: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<number>>;
@@ -813,6 +835,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
813
835
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
814
836
  drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
815
837
  showTreeOverview: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
838
+ showTreeScaleBar: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
816
839
  overviewHeight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
817
840
  }, "bgColor" | "colorSchemeName" | "customColorScheme" | "msaFormat" | "showColumnStats"> & {
818
841
  bgColor: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -820,15 +843,17 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
820
843
  customColorScheme: import("@jbrowse/mobx-state-tree").IType<Record<string, string> | undefined, Record<string, string> | undefined, Record<string, string> | undefined>;
821
844
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
822
845
  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"> & {
846
+ }, "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
847
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
825
848
  showDomains: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
849
+ domainFill: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
826
850
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
827
851
  hideGaps: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
828
852
  allowedGappyness: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
829
853
  subFeatureRows: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
830
854
  type: import("@jbrowse/mobx-state-tree").ILiteralType<"MsaView">;
831
855
  drawMsaLetters: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
856
+ embeddedMode: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
832
857
  scrollZoom: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
833
858
  scrollZoomAxis: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<"both" | "horizontal" | "vertical">, [undefined]>;
834
859
  height: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
@@ -1206,6 +1231,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1206
1231
  setDrawNodeBubbles(arg: boolean): void;
1207
1232
  setDrawNodeLabels(arg: boolean): void;
1208
1233
  setShowTreeOverview(arg: boolean): void;
1234
+ setShowTreeScaleBar(arg: boolean): void;
1209
1235
  setDrawLabels(arg: boolean): void;
1210
1236
  } & {
1211
1237
  setColorSchemeName(name: string): void;
@@ -1215,6 +1241,11 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1215
1241
  setMSAFormat(arg?: import("msa-parsers").MSAFormat): void;
1216
1242
  } & {
1217
1243
  headerHeight: number;
1244
+ settingsOpen: boolean;
1245
+ zoomHeld: {
1246
+ col: number;
1247
+ row: number;
1248
+ };
1218
1249
  hideHeader: boolean;
1219
1250
  importForm: boolean;
1220
1251
  status: {
@@ -1222,6 +1253,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1222
1253
  onCancel?: () => void;
1223
1254
  } | undefined;
1224
1255
  highResScaleFactor: number;
1256
+ zoomSnapshot: import("./zoomSnapshot.ts").ZoomSnapshot | undefined;
1225
1257
  loadingMSA: boolean;
1226
1258
  loadingTree: boolean;
1227
1259
  volatileWidth: number | undefined;
@@ -1252,6 +1284,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1252
1284
  setLoadingMSA(arg: boolean): void;
1253
1285
  setLoadingTree(arg: boolean): void;
1254
1286
  setWidth(arg: number): void;
1287
+ setSettingsOpen(arg: boolean): void;
1255
1288
  setHighResScaleFactor(arg: number): void;
1256
1289
  setHeight(height: number): void;
1257
1290
  setError(error?: unknown): void;
@@ -1268,6 +1301,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1268
1301
  applyHighlight(owner: string, highlights: import("./types.ts").Highlight[]): void;
1269
1302
  clearHighlight(owner: string): void;
1270
1303
  setShowDomains(arg: boolean): void;
1304
+ setDomainFill(arg: boolean): void;
1305
+ setCellFill(mode: 'residue' | 'domain' | 'none'): void;
1271
1306
  setShowDomainLegend(arg: boolean): void;
1272
1307
  setSubFeatureRows(arg: boolean): void;
1273
1308
  setMouseClickPos(col?: number, row?: number): void;
@@ -1295,8 +1330,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1295
1330
  setGFF(result?: string): void;
1296
1331
  } & {
1297
1332
  readonly hideGapsEffective: boolean;
1298
- readonly allAnnotations: import("msa-parsers").Annotation[];
1299
- readonly actuallyShowDomains: boolean;
1300
1333
  readonly hostRestoresData: boolean;
1301
1334
  readonly viewInitialized: boolean;
1302
1335
  readonly width: number;
@@ -1324,6 +1357,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1324
1357
  rowDataOf(name: string): Record<string, string> | undefined;
1325
1358
  readonly rowFields: string[];
1326
1359
  readonly MSA: import("msa-parsers").MSAParserType | null;
1360
+ readonly allAnnotations: import("msa-parsers").Annotation[];
1361
+ readonly actuallyShowDomains: boolean;
1327
1362
  readonly numColumns: number;
1328
1363
  readonly inputTree: import("./types.ts").NodeWithIds;
1329
1364
  readonly tree: import("./types.ts").NodeWithIds;
@@ -1387,6 +1422,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1387
1422
  color: string | undefined;
1388
1423
  }[];
1389
1424
  readonly colClustalX: Record<string, string>[];
1425
+ readonly colSimilarity: Record<string, string>[];
1390
1426
  readonly conservation: number[];
1391
1427
  readonly alphabetMaxBits: number;
1392
1428
  readonly propertyConservation: number[];
@@ -1455,7 +1491,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1455
1491
  readonly msaAreaHeight: number;
1456
1492
  readonly totalTrackAreaHeight: number;
1457
1493
  readonly annotationTypes: Map<string, import("msa-parsers").Annotation>;
1494
+ readonly defaultOffAccessions: Set<string>;
1495
+ featureOff(accession: string): boolean;
1458
1496
  readonly filteredAnnotations: import("msa-parsers").Annotation[];
1497
+ readonly cellFill: 'residue' | 'domain' | 'none';
1459
1498
  readonly annotationsByRow: Record<string, import("msa-parsers").Annotation[]>;
1460
1499
  } & {
1461
1500
  readonly showVerticalScrollbar: boolean;
@@ -1468,6 +1507,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1468
1507
  readonly msaCanvasWidth: number;
1469
1508
  readonly maxScrollX: number;
1470
1509
  readonly blocks2d: (readonly [number, number])[];
1510
+ readonly wheelZooming: boolean;
1471
1511
  readonly isLoading: boolean;
1472
1512
  readonly dataWarnings: string[];
1473
1513
  readonly warnings: string[];
@@ -1487,6 +1527,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1487
1527
  zoomIn(): void;
1488
1528
  zoomOut(): void;
1489
1529
  zoomToPos(scaleFactor: number, offsetX: number, offsetY: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
1530
+ wheelZoomToPos(scaleFactor: number, offsetX: number, offsetY: number): void;
1531
+ endWheelZoom(): void;
1490
1532
  doScrollY(deltaY: number): void;
1491
1533
  setScrollY(n: number): void;
1492
1534
  setAnnotations(annotations: import("msa-parsers").Annotation[]): void;
@@ -1499,6 +1541,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1499
1541
  setRowPanels(panels: import("./types.ts").RowPanelSpec[]): void;
1500
1542
  setResidueMappings(mappings: import("./types.ts").ResidueMapping[]): void;
1501
1543
  toggleTrack(id: string): void;
1544
+ setTracksShown(ids: string[], shown: boolean): void;
1502
1545
  setStatus(status?: {
1503
1546
  msg: string;
1504
1547
  onCancel?: () => void;
@@ -1582,6 +1625,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1582
1625
  } & {
1583
1626
  setHeaderHeight(arg: number): void;
1584
1627
  setHideHeader(arg: boolean): void;
1628
+ setEmbeddedMode(arg: boolean): void;
1585
1629
  setImportForm(arg: boolean): void;
1586
1630
  treeOverviewClick(y: number): void;
1587
1631
  setTrackHeight(heightKey: string, height: number): void;
@@ -1590,7 +1634,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1590
1634
  exportNewick(): void;
1591
1635
  setFilter(accession: string, shown: boolean): void;
1592
1636
  fit(): void;
1593
- fitVertically(): void;
1637
+ fitVertically(maxRowHeight?: any): void;
1594
1638
  zoomToRegion(region: import("./types.ts").Region): void;
1595
1639
  revealRegion(region: import("./types.ts").Region): void;
1596
1640
  zoomToSelection(): void;
@@ -1601,7 +1645,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1601
1645
  col: number;
1602
1646
  row?: number;
1603
1647
  }): void;
1604
- fitHorizontally(): void;
1648
+ fitHorizontally(maxColWidth?: any): void;
1605
1649
  afterCreate(): void;
1606
1650
  }, import("@jbrowse/mobx-state-tree")._NotCustomized, {
1607
1651
  bgColor: boolean;
@@ -1619,16 +1663,19 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1619
1663
  drawNodeBubbles: boolean;
1620
1664
  drawNodeLabels: boolean;
1621
1665
  showTreeOverview: boolean;
1666
+ showTreeScaleBar: boolean;
1622
1667
  overviewHeight: number;
1623
1668
  columnTracks: import("./types.ts").ColumnTrackSpec[];
1624
1669
  id: string;
1625
1670
  showDomains: boolean;
1671
+ domainFill: boolean;
1626
1672
  showDomainLegend: boolean;
1627
1673
  hideGaps: boolean;
1628
1674
  allowedGappyness: number;
1629
1675
  subFeatureRows: boolean;
1630
1676
  type: "MsaView";
1631
1677
  drawMsaLetters: boolean;
1678
+ embeddedMode: boolean;
1632
1679
  scrollZoom: boolean;
1633
1680
  scrollZoomAxis: "both" | "horizontal" | "vertical";
1634
1681
  height: number;
@@ -1756,16 +1803,19 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1756
1803
  drawNodeBubbles: boolean;
1757
1804
  drawNodeLabels: boolean;
1758
1805
  showTreeOverview: boolean;
1806
+ showTreeScaleBar: boolean;
1759
1807
  overviewHeight: number;
1760
1808
  columnTracks?: undefined;
1761
1809
  id: string;
1762
1810
  showDomains: boolean;
1811
+ domainFill: boolean;
1763
1812
  showDomainLegend: boolean;
1764
1813
  hideGaps: boolean;
1765
1814
  allowedGappyness: number;
1766
1815
  subFeatureRows: boolean;
1767
1816
  type: "MsaView";
1768
1817
  drawMsaLetters: boolean;
1818
+ embeddedMode: boolean;
1769
1819
  scrollZoom: boolean;
1770
1820
  scrollZoomAxis: "both" | "horizontal" | "vertical";
1771
1821
  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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"}