react-msaview 8.1.0 → 8.3.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 (195) hide show
  1. package/bundle/index.js +104 -117
  2. package/bundle/index.js.map +4 -4
  3. package/dist/columnCounts.d.ts +4 -3
  4. package/dist/columnCounts.js +11 -6
  5. package/dist/columnCounts.js.map +1 -1
  6. package/dist/components/CopyButton.d.ts +1 -1
  7. package/dist/components/CopyButton.js +1 -1
  8. package/dist/components/CopyButton.js.map +1 -1
  9. package/dist/components/DragHandle.js +14 -2
  10. package/dist/components/DragHandle.js.map +1 -1
  11. package/dist/components/Loading.js +10 -11
  12. package/dist/components/Loading.js.map +1 -1
  13. package/dist/components/MSAViewer.d.ts +12 -1
  14. package/dist/components/MSAViewer.js +12 -1
  15. package/dist/components/MSAViewer.js.map +1 -1
  16. package/dist/components/SequenceTextArea.d.ts +11 -0
  17. package/dist/components/SequenceTextArea.js +40 -8
  18. package/dist/components/SequenceTextArea.js.map +1 -1
  19. package/dist/components/StatusMessage.d.ts +12 -0
  20. package/dist/components/StatusMessage.js +43 -0
  21. package/dist/components/StatusMessage.js.map +1 -0
  22. package/dist/components/Track.js +3 -3
  23. package/dist/components/Track.js.map +1 -1
  24. package/dist/components/VerticalScrollbar.js +6 -1
  25. package/dist/components/VerticalScrollbar.js.map +1 -1
  26. package/dist/components/dialogs/ExportSVGDialog.d.ts +3 -2
  27. package/dist/components/dialogs/ExportSVGDialog.js +4 -2
  28. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  29. package/dist/components/dialogs/FeatureDialog.js +15 -10
  30. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  31. package/dist/components/getVisibleLeaves.d.ts +1 -1
  32. package/dist/components/header/FileMenu.js +9 -0
  33. package/dist/components/header/FileMenu.js.map +1 -1
  34. package/dist/components/header/GappynessSlider.js +15 -3
  35. package/dist/components/header/GappynessSlider.js.map +1 -1
  36. package/dist/components/header/Header.js +6 -7
  37. package/dist/components/header/Header.js.map +1 -1
  38. package/dist/components/header/{HeaderStatusArea.d.ts → RowSearch.d.ts} +2 -2
  39. package/dist/components/header/RowSearch.js +15 -0
  40. package/dist/components/header/RowSearch.js.map +1 -0
  41. package/dist/components/header/revealRow.d.ts +3 -0
  42. package/dist/components/header/revealRow.js +15 -0
  43. package/dist/components/header/revealRow.js.map +1 -0
  44. package/dist/components/header/settingsMenuItems.js +57 -1
  45. package/dist/components/header/settingsMenuItems.js.map +1 -1
  46. package/dist/components/import/ImportForm.js +10 -4
  47. package/dist/components/import/ImportForm.js.map +1 -1
  48. package/dist/components/import/ImportFormExamples.js +19 -27
  49. package/dist/components/import/ImportFormExamples.js.map +1 -1
  50. package/dist/components/minimap/Minimap.js +6 -1
  51. package/dist/components/minimap/Minimap.js.map +1 -1
  52. package/dist/components/msa/AnnotationLegend.js +11 -5
  53. package/dist/components/msa/AnnotationLegend.js.map +1 -1
  54. package/dist/components/msa/MSACanvas.js +6 -1
  55. package/dist/components/msa/MSACanvas.js.map +1 -1
  56. package/dist/components/msa/MSACanvasBlock.js +3 -7
  57. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  58. package/dist/components/msa/msaKeys.d.ts +5 -0
  59. package/dist/components/msa/msaKeys.js +35 -0
  60. package/dist/components/msa/msaKeys.js.map +1 -0
  61. package/dist/components/msa/useMsaBlockMouse.d.ts +2 -4
  62. package/dist/components/msa/useMsaBlockMouse.js +18 -5
  63. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  64. package/dist/components/rowpanels/RowPanelBlock.js +10 -14
  65. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -1
  66. package/dist/components/tracks/drawTracks.d.ts +1 -0
  67. package/dist/components/tracks/drawTracks.js +14 -2
  68. package/dist/components/tracks/drawTracks.js.map +1 -1
  69. package/dist/components/tracks/useTrackHover.d.ts +1 -5
  70. package/dist/components/tracks/useTrackHover.js +5 -5
  71. package/dist/components/tracks/useTrackHover.js.map +1 -1
  72. package/dist/components/tree/ScaleBarSVG.d.ts +14 -0
  73. package/dist/components/tree/ScaleBarSVG.js +11 -0
  74. package/dist/components/tree/ScaleBarSVG.js.map +1 -0
  75. package/dist/components/tree/TreeCanvas.js +8 -26
  76. package/dist/components/tree/TreeCanvas.js.map +1 -1
  77. package/dist/components/tree/TreeCanvasBlock.js +11 -20
  78. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  79. package/dist/components/tree/{TreeBranchMenu.d.ts → TreeMenu.d.ts} +5 -4
  80. package/dist/components/tree/TreeMenu.js +48 -0
  81. package/dist/components/tree/TreeMenu.js.map +1 -0
  82. package/dist/components/tree/TreeRuler.js +3 -3
  83. package/dist/components/tree/TreeRuler.js.map +1 -1
  84. package/dist/components/tree/renderTreeCanvas.js +19 -9
  85. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  86. package/dist/components/tree/renderTreeMouseover.d.ts +5 -0
  87. package/dist/components/tree/renderTreeMouseover.js +20 -0
  88. package/dist/components/tree/renderTreeMouseover.js.map +1 -0
  89. package/dist/components/tree/useTreeHover.d.ts +3 -8
  90. package/dist/components/tree/useTreeHover.js +8 -10
  91. package/dist/components/tree/useTreeHover.js.map +1 -1
  92. package/dist/components/useHoverAnchor.d.ts +19 -0
  93. package/dist/components/useHoverAnchor.js +18 -0
  94. package/dist/components/useHoverAnchor.js.map +1 -0
  95. package/dist/constants.d.ts +4 -1
  96. package/dist/constants.js +12 -3
  97. package/dist/constants.js.map +1 -1
  98. package/dist/expandSpec.d.ts +46 -0
  99. package/dist/expandSpec.js +127 -0
  100. package/dist/expandSpec.js.map +1 -0
  101. package/dist/exportFileName.d.ts +3 -3
  102. package/dist/exportFileName.js +4 -4
  103. package/dist/exportFileName.js.map +1 -1
  104. package/dist/hierarchy.d.ts +51 -0
  105. package/dist/hierarchy.js +125 -0
  106. package/dist/hierarchy.js.map +1 -1
  107. package/dist/index.d.ts +4 -2
  108. package/dist/index.js +2 -0
  109. package/dist/index.js.map +1 -1
  110. package/dist/model/treeModel.d.ts +12 -0
  111. package/dist/model/treeModel.js +14 -1
  112. package/dist/model/treeModel.js.map +1 -1
  113. package/dist/model.d.ts +188 -47
  114. package/dist/model.js +482 -192
  115. package/dist/model.js.map +1 -1
  116. package/dist/renderToSvg.js +2 -4
  117. package/dist/renderToSvg.js.map +1 -1
  118. package/dist/rerootTree.d.ts +33 -0
  119. package/dist/rerootTree.js +144 -0
  120. package/dist/rerootTree.js.map +1 -0
  121. package/dist/svgTestUtil.d.ts +114 -20
  122. package/dist/types.d.ts +25 -12
  123. package/dist/useMsaSvgFigure.d.ts +2 -1
  124. package/dist/useMsaSvgFigure.js +11 -4
  125. package/dist/useMsaSvgFigure.js.map +1 -1
  126. package/dist/version.d.ts +1 -1
  127. package/dist/version.js +1 -1
  128. package/dist/writeNewick.d.ts +8 -0
  129. package/dist/writeNewick.js +34 -0
  130. package/dist/writeNewick.js.map +1 -0
  131. package/package.json +3 -3
  132. package/src/columnCounts.ts +14 -6
  133. package/src/components/CopyButton.tsx +2 -2
  134. package/src/components/DragHandle.tsx +21 -1
  135. package/src/components/Loading.tsx +14 -30
  136. package/src/components/MSAViewer.tsx +26 -0
  137. package/src/components/SequenceTextArea.tsx +54 -8
  138. package/src/components/StatusMessage.tsx +70 -0
  139. package/src/components/Track.tsx +8 -4
  140. package/src/components/VerticalScrollbar.tsx +7 -0
  141. package/src/components/dialogs/ExportSVGDialog.tsx +5 -2
  142. package/src/components/dialogs/FeatureDialog.tsx +59 -38
  143. package/src/components/header/FileMenu.tsx +9 -0
  144. package/src/components/header/GappynessSlider.tsx +17 -4
  145. package/src/components/header/Header.tsx +7 -8
  146. package/src/components/header/RowSearch.tsx +34 -0
  147. package/src/components/header/revealRow.ts +17 -0
  148. package/src/components/header/settingsMenuItems.ts +66 -0
  149. package/src/components/import/ImportForm.tsx +14 -7
  150. package/src/components/import/ImportFormExamples.tsx +20 -28
  151. package/src/components/minimap/Minimap.tsx +7 -0
  152. package/src/components/msa/AnnotationLegend.tsx +12 -6
  153. package/src/components/msa/MSACanvas.tsx +8 -0
  154. package/src/components/msa/MSACanvasBlock.tsx +5 -11
  155. package/src/components/msa/msaKeys.ts +39 -0
  156. package/src/components/msa/useMsaBlockMouse.ts +23 -7
  157. package/src/components/rowpanels/RowPanelBlock.tsx +16 -23
  158. package/src/components/tracks/drawTracks.ts +15 -2
  159. package/src/components/tracks/useTrackHover.ts +5 -5
  160. package/src/components/tree/ScaleBarSVG.tsx +30 -0
  161. package/src/components/tree/TreeCanvas.tsx +9 -40
  162. package/src/components/tree/TreeCanvasBlock.tsx +19 -39
  163. package/src/components/tree/TreeMenu.tsx +129 -0
  164. package/src/components/tree/TreeRuler.tsx +7 -13
  165. package/src/components/tree/renderTreeCanvas.ts +20 -8
  166. package/src/components/tree/renderTreeMouseover.ts +41 -0
  167. package/src/components/tree/useTreeHover.ts +8 -17
  168. package/src/components/useHoverAnchor.ts +31 -0
  169. package/src/constants.ts +14 -3
  170. package/src/expandSpec.ts +196 -0
  171. package/src/exportFileName.ts +4 -3
  172. package/src/hierarchy.ts +151 -4
  173. package/src/index.ts +11 -1
  174. package/src/model/treeModel.ts +22 -0
  175. package/src/model.ts +588 -221
  176. package/src/renderToSvg.tsx +6 -9
  177. package/src/rerootTree.ts +172 -0
  178. package/src/types.ts +34 -12
  179. package/src/useMsaSvgFigure.ts +11 -4
  180. package/src/version.ts +1 -1
  181. package/src/writeNewick.ts +38 -0
  182. package/dist/components/PortalTooltip.d.ts +0 -11
  183. package/dist/components/PortalTooltip.js +0 -29
  184. package/dist/components/PortalTooltip.js.map +0 -1
  185. package/dist/components/header/HeaderStatusArea.js +0 -21
  186. package/dist/components/header/HeaderStatusArea.js.map +0 -1
  187. package/dist/components/tree/TreeBranchMenu.js +0 -29
  188. package/dist/components/tree/TreeBranchMenu.js.map +0 -1
  189. package/dist/components/tree/TreeNodeMenu.d.ts +0 -13
  190. package/dist/components/tree/TreeNodeMenu.js +0 -41
  191. package/dist/components/tree/TreeNodeMenu.js.map +0 -1
  192. package/src/components/PortalTooltip.tsx +0 -47
  193. package/src/components/header/HeaderStatusArea.tsx +0 -32
  194. package/src/components/tree/TreeBranchMenu.tsx +0 -68
  195. package/src/components/tree/TreeNodeMenu.tsx +0 -95
@@ -0,0 +1,144 @@
1
+ function preorder(root) {
2
+ const order = [];
3
+ const parents = new Map();
4
+ const stack = [root];
5
+ while (stack.length > 0) {
6
+ const node = stack.pop();
7
+ order.push(node);
8
+ for (const child of (node.children ?? [])) {
9
+ parents.set(child, node);
10
+ stack.push(child);
11
+ }
12
+ }
13
+ return { order, parents };
14
+ }
15
+ function hasLengths(order) {
16
+ return order.some(n => n.length !== undefined);
17
+ }
18
+ // the root's two children make one branch of the unrooted tree, which is the
19
+ // branch a rerooting at either of them splits
20
+ function mergedSibling(root, target) {
21
+ return root.children?.length === 2
22
+ ? root.children.find(c => c !== target)
23
+ : undefined;
24
+ }
25
+ /**
26
+ * The tree rooted on the branch above `target`, `offset` up from it, or at the
27
+ * middle of that branch without one. Where the root has two children, their
28
+ * branches are one branch of the unrooted tree, and `offset` runs across both.
29
+ *
30
+ * The nodes between `target` and the old root turn over. A name on one of them
31
+ * labels the branch above it, which is where a support value sits, so the name
32
+ * follows that branch to the node now at its lower end. A two-child root has
33
+ * nothing left to split once one child leaves, so it drops out and its
34
+ * branches join.
35
+ */
36
+ export function rerootTree(root, target, offset) {
37
+ const { order, parents } = preorder(root);
38
+ if (!parents.has(target)) {
39
+ return root;
40
+ }
41
+ const lengths = hasLengths(order);
42
+ const sibling = parents.get(target) === root ? mergedSibling(root, target) : undefined;
43
+ const branch = (target.length ?? 0) + (sibling?.length ?? 0);
44
+ const at = Math.min(Math.max(offset ?? branch / 2, 0), branch);
45
+ const length = (n) => (lengths ? n : undefined);
46
+ const path = [target];
47
+ for (let n = parents.get(target); n; n = parents.get(n)) {
48
+ path.push(n);
49
+ }
50
+ // Built from the old root down, so the node each turned node now hangs
51
+ // `above` it already exists. undefined where the old root dropped out.
52
+ let above;
53
+ for (let i = path.length - 1; i >= 1; i--) {
54
+ const node = path[i];
55
+ const below = path[i - 1];
56
+ const children = node.children.filter(c => c !== below);
57
+ if (above) {
58
+ children.push(above);
59
+ }
60
+ if (children.length === 0) {
61
+ above = undefined;
62
+ }
63
+ else if (i === path.length - 1 && children.length === 1) {
64
+ const only = children[0];
65
+ above = {
66
+ ...only,
67
+ length: length((only.length ?? 0) + (below.length ?? 0) - (i === 1 ? at : 0)),
68
+ };
69
+ }
70
+ else {
71
+ above = {
72
+ ...node,
73
+ name: i === 1 ? undefined : below.name,
74
+ children,
75
+ length: length((below.length ?? 0) - (i === 1 ? at : 0)),
76
+ };
77
+ }
78
+ }
79
+ return {
80
+ children: [{ ...target, length: length(at) }, ...(above ? [above] : [])],
81
+ };
82
+ }
83
+ /**
84
+ * The tree rooted halfway along the longest path between two tips, which is
85
+ * where a clock would put the root: the usual choice for the unrooted tree
86
+ * FastTree, IQ-TREE or neighbor joining writes. A tree with no branch lengths
87
+ * counts branches.
88
+ */
89
+ export function midpointRoot(root) {
90
+ const { order, parents } = preorder(root);
91
+ const tips = order.filter(n => !n.children?.length);
92
+ if (tips.length < 2) {
93
+ return root;
94
+ }
95
+ const lengths = hasLengths(order);
96
+ const weight = (n) => (lengths ? (n.length ?? 0) : 1);
97
+ // distance from `from` to every node over the unrooted tree, and the
98
+ // neighbor each was reached through
99
+ function reach(from) {
100
+ const dist = new Map([[from, 0]]);
101
+ const via = new Map();
102
+ const stack = [from];
103
+ while (stack.length > 0) {
104
+ const node = stack.pop();
105
+ const d = dist.get(node);
106
+ const parent = parents.get(node);
107
+ if (parent && !dist.has(parent)) {
108
+ dist.set(parent, d + weight(node));
109
+ via.set(parent, node);
110
+ stack.push(parent);
111
+ }
112
+ for (const child of (node.children ?? [])) {
113
+ if (!dist.has(child)) {
114
+ dist.set(child, d + weight(child));
115
+ via.set(child, node);
116
+ stack.push(child);
117
+ }
118
+ }
119
+ }
120
+ return { dist, via };
121
+ }
122
+ function farthest(dist) {
123
+ return tips.reduce((best, tip) => dist.get(tip) > dist.get(best) ? tip : best);
124
+ }
125
+ const a = farthest(reach(tips[0]).dist);
126
+ const { dist, via } = reach(a);
127
+ const b = farthest(dist);
128
+ if (b === a) {
129
+ return root;
130
+ }
131
+ const half = dist.get(b) / 2;
132
+ let node = b;
133
+ let next = via.get(node);
134
+ while (dist.get(next) > half) {
135
+ node = next;
136
+ next = via.get(node);
137
+ }
138
+ // the midpoint lies on the branch between `node` and `next`, and whichever
139
+ // of them is the child carries that branch
140
+ return parents.get(node) === next
141
+ ? rerootTree(root, node, dist.get(node) - half)
142
+ : rerootTree(root, next, half - dist.get(next));
143
+ }
144
+ //# sourceMappingURL=rerootTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rerootTree.js","sourceRoot":"","sources":["../src/rerootTree.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
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<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeWidth"> & {
4
+ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?: number): import("@jbrowse/mobx-state-tree").ModelInstanceTypeProps<Omit<Omit<Omit<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "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").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
8
8
  treeWidth: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
9
9
  showBranchLen: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
10
+ treeOrder: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<import("./types.ts").TreeOrder>, [undefined]>;
10
11
  drawTree: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
11
12
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
12
13
  drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -18,7 +19,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
18
19
  colorSchemeName: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
19
20
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
20
21
  msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
21
- }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "relativeTo" | "residueMappings" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
22
+ }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
22
23
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
23
24
  showDomains: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
24
25
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -412,6 +413,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
412
413
  }>, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
413
414
  currentAlignment: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
414
415
  collapsed: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>, [undefined]>;
416
+ rotated: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>, [undefined]>;
417
+ treeRoot: import("@jbrowse/mobx-state-tree").IType<import("./types.ts").TreeRoot | undefined, import("./types.ts").TreeRoot | undefined, import("./types.ts").TreeRoot | undefined>;
415
418
  showOnly: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
416
419
  turnedOffTracks: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>, [undefined]>;
417
420
  trackHeights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<number>>, [undefined]>;
@@ -434,6 +437,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
434
437
  relativeTo: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
435
438
  highlightColumns: import("@jbrowse/mobx-state-tree").IType<number[] | undefined, number[] | undefined, number[] | undefined>;
436
439
  highlights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Highlight, import("./types.ts").Highlight, import("./types.ts").Highlight>>, [undefined]>;
440
+ region: import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Region | undefined, import("./types.ts").Region | undefined, import("./types.ts").Region | undefined>;
437
441
  clades: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Clade, import("./types.ts").Clade, import("./types.ts").Clade>>, [undefined]>;
438
442
  encodings: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Encoding, import("./types.ts").Encoding, import("./types.ts").Encoding>>, [undefined]>;
439
443
  rowPanels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").RowPanelSpec, import("./types.ts").RowPanelSpec, import("./types.ts").RowPanelSpec>>, [undefined]>;
@@ -452,6 +456,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
452
456
  setDrawTree(arg: boolean): void;
453
457
  setAutoTreeAreaWidth(arg: boolean): void;
454
458
  setShowBranchLen(arg: boolean): void;
459
+ setTreeOrder(order: import("./types.ts").TreeOrder): void;
455
460
  setDrawNodeBubbles(arg: boolean): void;
456
461
  setDrawNodeLabels(arg: boolean): void;
457
462
  setShowTreeOverview(arg: boolean): void;
@@ -488,7 +493,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
488
493
  minimapHeight: number;
489
494
  marginLeft: number;
490
495
  error: unknown;
491
- warnings: string[];
496
+ loadWarnings: string[];
497
+ dismissedWarnings: string[];
492
498
  resetCount: number;
493
499
  hostCarriesData: boolean;
494
500
  annotations: import("msa-parsers").Annotation[];
@@ -503,10 +509,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
503
509
  setHeight(height: number): void;
504
510
  setError(error?: unknown): void;
505
511
  addWarning(warning: string): void;
506
- clearWarnings(): void;
507
512
  setHostCarriesData(arg: boolean): void;
508
513
  setMousePos(col?: number, row?: number): void;
509
514
  setHighlightedColumns(columns?: number[]): void;
515
+ setRegion(region?: import("./types.ts").Region): void;
510
516
  setHighlights(highlights: import("./types.ts").Highlight[]): void;
511
517
  setClades(clades: import("./types.ts").Clade[]): void;
512
518
  applyHighlight(owner: string, highlights: import("./types.ts").Highlight[]): void;
@@ -519,6 +525,9 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
519
525
  setColWidth(n: number): void;
520
526
  setCurrentAlignment(n: number): void;
521
527
  toggleCollapsed(node: string): void;
528
+ toggleRotated(node: string): void;
529
+ clearRotated(): void;
530
+ setTreeRoot(treeRoot?: import("./types.ts").TreeRoot): void;
522
531
  setShowOnly(node?: string): void;
523
532
  setData(data: {
524
533
  msa?: string;
@@ -565,6 +574,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
565
574
  readonly rowFields: string[];
566
575
  readonly MSA: import("msa-parsers").MSAParserType | null;
567
576
  readonly numColumns: number;
577
+ readonly inputTree: import("./types.ts").NodeWithIds;
568
578
  readonly tree: import("./types.ts").NodeWithIds;
569
579
  readonly rowNames: string[];
570
580
  readonly rowNamesSet: Map<string, number>;
@@ -577,6 +587,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
577
587
  letters: string;
578
588
  } | undefined;
579
589
  readonly root: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
590
+ readonly treeNewick: string;
580
591
  readonly treeOverviewHeight: number;
581
592
  readonly treeOverviewLayout: {
582
593
  root: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
@@ -616,9 +627,14 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
616
627
  readonly conservation: number[];
617
628
  readonly alphabetMaxBits: number;
618
629
  readonly propertyConservation: number[];
619
- readonly hierarchy: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIdsAndLength>;
630
+ readonly treeLayout: {
631
+ root: import("./hierarchy.ts").LaidOutNode<import("./types.ts").NodeWithIds>;
632
+ leaves: import("./hierarchy.ts").LaidOutNode<import("./types.ts").NodeWithIds>[];
633
+ rootToTipLength: number;
634
+ };
635
+ readonly hierarchy: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
620
636
  readonly totalHeight: number;
621
- readonly leaves: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIdsAndLength>[];
637
+ readonly leaves: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>[];
622
638
  readonly rootToTipLength: number;
623
639
  readonly maxBranchLength: number;
624
640
  readonly pxPerBranchLength: number;
@@ -644,7 +660,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
644
660
  readonly labelWidthScale: number;
645
661
  readonly labelsWidth: number;
646
662
  readonly secondaryStructureConsensus: string | undefined;
647
- readonly seqConsensus: string | undefined;
648
663
  readonly secondaryStructureArcs: import("./types.ts").Arc[] | undefined;
649
664
  readonly adapterTrackModels: import("./types.ts").BasicTrack[];
650
665
  readonly basePairTrackModels: import("./types.ts").BasicTrack[];
@@ -658,6 +673,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
658
673
  globalColToVisibleCol(globalCol: number): number | undefined;
659
674
  visibleColToGlobalCol(visibleCol: number): number;
660
675
  seqPosToGlobalCol(rowName: string, seqPos: number): number | undefined;
676
+ seqEndToGlobalCol(rowName: string, seqPos: number): number | undefined;
661
677
  seqPosToVisibleCol(rowName: string, seqPos: number): number | undefined;
662
678
  visibleSpan({ row, start: rawStart, end: rawEnd }: import("./types.ts").Region): {
663
679
  startCol: number;
@@ -690,19 +706,26 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
690
706
  readonly blocksX: number[];
691
707
  readonly blocksY: number[];
692
708
  } & {
709
+ readonly verticalScrollbarWidth: 0 | 20;
710
+ readonly msaCanvasWidth: number;
711
+ readonly maxScrollX: number;
693
712
  readonly blocks2d: (readonly [number, number])[];
694
713
  readonly isLoading: boolean;
695
- readonly maxScrollX: number;
714
+ readonly dataWarnings: string[];
715
+ readonly warnings: string[];
696
716
  readonly maxScrollY: number;
697
717
  readonly wheelZoomAxis: import("./constants.ts").ScrollZoomAxis;
698
718
  } & {
699
719
  setDrawMsaLetters(arg: boolean): void;
720
+ clearWarnings(): void;
700
721
  setScrollZoom(arg: boolean): void;
701
722
  setScrollZoomAxis(arg: import("./constants.ts").ScrollZoomAxis): void;
702
723
  setHoveredTreeNode(nodeId?: string): void;
703
724
  calculateNeighborJoiningTreeFromMSA(): void;
725
+ rerootAt(nodeId: string): void;
704
726
  replaceTree(newick: string): void;
705
727
  resetZoom(): void;
728
+ zoomAtCenter(scaleFactor: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
706
729
  zoomOutHorizontal(): void;
707
730
  zoomInHorizontal(): void;
708
731
  zoomInVertical(): void;
@@ -728,8 +751,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
728
751
  onCancel?: () => void;
729
752
  }): void;
730
753
  } & {
731
- readonly verticalScrollbarWidth: 0 | 20;
732
- readonly msaCanvasWidth: number;
733
754
  cellAt(visibleCol: number, rowIndex?: number): import("./types.ts").Cell;
734
755
  readonly hoveredCell: import("./types.ts").Cell | undefined;
735
756
  readonly clickedCell: import("./types.ts").Cell | undefined;
@@ -758,6 +779,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
758
779
  start: number;
759
780
  end: number;
760
781
  }[];
782
+ fillHighlightLabel(label: string, row?: string, start?: number): string;
761
783
  readonly resolvedHighlights: import("./types.ts").ResolvedHighlight[];
762
784
  columnStatsAt(col: number): import("./columnStats.ts").ColumnStats | undefined;
763
785
  getRowData(name: string): {
@@ -769,6 +791,26 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
769
791
  rowData: Record<string, string> | undefined;
770
792
  };
771
793
  readonly resolvedEncodings: import("./types.ts").ResolvedEncoding[];
794
+ readonly rowPanelScales: ({
795
+ header: string;
796
+ legend: import("./types.ts").LegendEntry[];
797
+ legendTitle?: string;
798
+ kind: 'strip';
799
+ field: string;
800
+ colors: Map<string, string>;
801
+ } | {
802
+ header: string;
803
+ legend: import("./types.ts").LegendEntry[];
804
+ legendTitle?: string;
805
+ kind: 'features';
806
+ x: 'column' | 'position';
807
+ field?: string;
808
+ colors: Map<import("msa-parsers").Annotation, {
809
+ fill: string;
810
+ stroke: string;
811
+ }>;
812
+ labels?: Map<import("msa-parsers").Annotation, string>;
813
+ })[];
772
814
  readonly resolvedRowPanels: import("./types.ts").ResolvedRowPanel[];
773
815
  readonly featureAlignShifts: Map<string, Map<string, number>>;
774
816
  readonly tipLabelColors: Map<string, string> | undefined;
@@ -781,18 +823,20 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
781
823
  setTrackHeight(heightKey: string, height: number): void;
782
824
  reset(): void;
783
825
  exportSVG(opts: import("./renderToSvg.tsx").ExportSvgOptions): Promise<void>;
826
+ exportNewick(): void;
784
827
  setFilter(accession: string, shown: boolean): void;
785
828
  fit(): void;
786
829
  fitVertically(): void;
787
830
  zoomToRegion(region: import("./types.ts").Region): void;
788
831
  fitHorizontally(): void;
789
832
  afterCreate(): void;
790
- } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeWidth"> & {
833
+ } & import("@jbrowse/mobx-state-tree").IStateTreeNode<import("@jbrowse/mobx-state-tree").IModelType<Omit<Omit<Omit<{}, "autoTreeAreaWidth" | "drawLabels" | "drawNodeBubbles" | "drawNodeLabels" | "drawTree" | "labelsAlignRight" | "overviewHeight" | "showBranchLen" | "showTreeOverview" | "treeAreaWidth" | "treeOrder" | "treeWidth"> & {
791
834
  drawLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
792
835
  labelsAlignRight: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
793
836
  treeAreaWidth: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
794
837
  treeWidth: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
795
838
  showBranchLen: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
839
+ treeOrder: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<import("./types.ts").TreeOrder>, [undefined]>;
796
840
  drawTree: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
797
841
  drawNodeBubbles: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
798
842
  drawNodeLabels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -804,7 +848,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
804
848
  colorSchemeName: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
805
849
  showColumnStats: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
806
850
  msaFormat: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<import("msa-parsers").MSAFormat>>;
807
- }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "relativeTo" | "residueMappings" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
851
+ }, "allowedGappyness" | "clades" | "colWidth" | "collapsed" | "columnTracks" | "currentAlignment" | "data" | "drawMsaLetters" | "encodings" | "gffFilehandle" | "height" | "hideGaps" | "highlightColumns" | "highlights" | "id" | "msaFilehandle" | "region" | "relativeTo" | "residueMappings" | "rotated" | "rowHeight" | "rowPanels" | "scrollX" | "scrollY" | "scrollZoom" | "scrollZoomAxis" | "showDomainLegend" | "showDomains" | "showOnly" | "subFeatureRows" | "trackHeights" | "treeFilehandle" | "treeMetadataFilehandle" | "treeRoot" | "turnedOffFeatures" | "turnedOffTracks" | "type"> & {
808
852
  id: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<string>, [undefined]>;
809
853
  showDomains: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
810
854
  showDomainLegend: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>, [undefined]>;
@@ -1198,6 +1242,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1198
1242
  }>, import("@jbrowse/mobx-state-tree")._NotCustomized>>;
1199
1243
  currentAlignment: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").ISimpleType<number>, [undefined]>;
1200
1244
  collapsed: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>, [undefined]>;
1245
+ rotated: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").ISimpleType<string>>, [undefined]>;
1246
+ treeRoot: import("@jbrowse/mobx-state-tree").IType<import("./types.ts").TreeRoot | undefined, import("./types.ts").TreeRoot | undefined, import("./types.ts").TreeRoot | undefined>;
1201
1247
  showOnly: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
1202
1248
  turnedOffTracks: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<boolean>>, [undefined]>;
1203
1249
  trackHeights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IMapType<import("@jbrowse/mobx-state-tree").ISimpleType<number>>, [undefined]>;
@@ -1220,6 +1266,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1220
1266
  relativeTo: import("@jbrowse/mobx-state-tree").IMaybe<import("@jbrowse/mobx-state-tree").ISimpleType<string>>;
1221
1267
  highlightColumns: import("@jbrowse/mobx-state-tree").IType<number[] | undefined, number[] | undefined, number[] | undefined>;
1222
1268
  highlights: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Highlight, import("./types.ts").Highlight, import("./types.ts").Highlight>>, [undefined]>;
1269
+ region: import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Region | undefined, import("./types.ts").Region | undefined, import("./types.ts").Region | undefined>;
1223
1270
  clades: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Clade, import("./types.ts").Clade, import("./types.ts").Clade>>, [undefined]>;
1224
1271
  encodings: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").Encoding, import("./types.ts").Encoding, import("./types.ts").Encoding>>, [undefined]>;
1225
1272
  rowPanels: import("@jbrowse/mobx-state-tree").IOptionalIType<import("@jbrowse/mobx-state-tree").IArrayType<import("@jbrowse/mobx-state-tree").IType<import("./types.ts").RowPanelSpec, import("./types.ts").RowPanelSpec, import("./types.ts").RowPanelSpec>>, [undefined]>;
@@ -1238,6 +1285,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1238
1285
  setDrawTree(arg: boolean): void;
1239
1286
  setAutoTreeAreaWidth(arg: boolean): void;
1240
1287
  setShowBranchLen(arg: boolean): void;
1288
+ setTreeOrder(order: import("./types.ts").TreeOrder): void;
1241
1289
  setDrawNodeBubbles(arg: boolean): void;
1242
1290
  setDrawNodeLabels(arg: boolean): void;
1243
1291
  setShowTreeOverview(arg: boolean): void;
@@ -1274,7 +1322,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1274
1322
  minimapHeight: number;
1275
1323
  marginLeft: number;
1276
1324
  error: unknown;
1277
- warnings: string[];
1325
+ loadWarnings: string[];
1326
+ dismissedWarnings: string[];
1278
1327
  resetCount: number;
1279
1328
  hostCarriesData: boolean;
1280
1329
  annotations: import("msa-parsers").Annotation[];
@@ -1289,10 +1338,10 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1289
1338
  setHeight(height: number): void;
1290
1339
  setError(error?: unknown): void;
1291
1340
  addWarning(warning: string): void;
1292
- clearWarnings(): void;
1293
1341
  setHostCarriesData(arg: boolean): void;
1294
1342
  setMousePos(col?: number, row?: number): void;
1295
1343
  setHighlightedColumns(columns?: number[]): void;
1344
+ setRegion(region?: import("./types.ts").Region): void;
1296
1345
  setHighlights(highlights: import("./types.ts").Highlight[]): void;
1297
1346
  setClades(clades: import("./types.ts").Clade[]): void;
1298
1347
  applyHighlight(owner: string, highlights: import("./types.ts").Highlight[]): void;
@@ -1305,6 +1354,9 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1305
1354
  setColWidth(n: number): void;
1306
1355
  setCurrentAlignment(n: number): void;
1307
1356
  toggleCollapsed(node: string): void;
1357
+ toggleRotated(node: string): void;
1358
+ clearRotated(): void;
1359
+ setTreeRoot(treeRoot?: import("./types.ts").TreeRoot): void;
1308
1360
  setShowOnly(node?: string): void;
1309
1361
  setData(data: {
1310
1362
  msa?: string;
@@ -1351,6 +1403,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1351
1403
  readonly rowFields: string[];
1352
1404
  readonly MSA: import("msa-parsers").MSAParserType | null;
1353
1405
  readonly numColumns: number;
1406
+ readonly inputTree: import("./types.ts").NodeWithIds;
1354
1407
  readonly tree: import("./types.ts").NodeWithIds;
1355
1408
  readonly rowNames: string[];
1356
1409
  readonly rowNamesSet: Map<string, number>;
@@ -1363,6 +1416,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1363
1416
  letters: string;
1364
1417
  } | undefined;
1365
1418
  readonly root: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
1419
+ readonly treeNewick: string;
1366
1420
  readonly treeOverviewHeight: number;
1367
1421
  readonly treeOverviewLayout: {
1368
1422
  root: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
@@ -1402,9 +1456,14 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1402
1456
  readonly conservation: number[];
1403
1457
  readonly alphabetMaxBits: number;
1404
1458
  readonly propertyConservation: number[];
1405
- readonly hierarchy: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIdsAndLength>;
1459
+ readonly treeLayout: {
1460
+ root: import("./hierarchy.ts").LaidOutNode<import("./types.ts").NodeWithIds>;
1461
+ leaves: import("./hierarchy.ts").LaidOutNode<import("./types.ts").NodeWithIds>[];
1462
+ rootToTipLength: number;
1463
+ };
1464
+ readonly hierarchy: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>;
1406
1465
  readonly totalHeight: number;
1407
- readonly leaves: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIdsAndLength>[];
1466
+ readonly leaves: import("./hierarchy.ts").HierarchyNode<import("./types.ts").NodeWithIds>[];
1408
1467
  readonly rootToTipLength: number;
1409
1468
  readonly maxBranchLength: number;
1410
1469
  readonly pxPerBranchLength: number;
@@ -1430,7 +1489,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1430
1489
  readonly labelWidthScale: number;
1431
1490
  readonly labelsWidth: number;
1432
1491
  readonly secondaryStructureConsensus: string | undefined;
1433
- readonly seqConsensus: string | undefined;
1434
1492
  readonly secondaryStructureArcs: import("./types.ts").Arc[] | undefined;
1435
1493
  readonly adapterTrackModels: import("./types.ts").BasicTrack[];
1436
1494
  readonly basePairTrackModels: import("./types.ts").BasicTrack[];
@@ -1444,6 +1502,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1444
1502
  globalColToVisibleCol(globalCol: number): number | undefined;
1445
1503
  visibleColToGlobalCol(visibleCol: number): number;
1446
1504
  seqPosToGlobalCol(rowName: string, seqPos: number): number | undefined;
1505
+ seqEndToGlobalCol(rowName: string, seqPos: number): number | undefined;
1447
1506
  seqPosToVisibleCol(rowName: string, seqPos: number): number | undefined;
1448
1507
  visibleSpan({ row, start: rawStart, end: rawEnd }: import("./types.ts").Region): {
1449
1508
  startCol: number;
@@ -1476,19 +1535,26 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1476
1535
  readonly blocksX: number[];
1477
1536
  readonly blocksY: number[];
1478
1537
  } & {
1538
+ readonly verticalScrollbarWidth: 0 | 20;
1539
+ readonly msaCanvasWidth: number;
1540
+ readonly maxScrollX: number;
1479
1541
  readonly blocks2d: (readonly [number, number])[];
1480
1542
  readonly isLoading: boolean;
1481
- readonly maxScrollX: number;
1543
+ readonly dataWarnings: string[];
1544
+ readonly warnings: string[];
1482
1545
  readonly maxScrollY: number;
1483
1546
  readonly wheelZoomAxis: import("./constants.ts").ScrollZoomAxis;
1484
1547
  } & {
1485
1548
  setDrawMsaLetters(arg: boolean): void;
1549
+ clearWarnings(): void;
1486
1550
  setScrollZoom(arg: boolean): void;
1487
1551
  setScrollZoomAxis(arg: import("./constants.ts").ScrollZoomAxis): void;
1488
1552
  setHoveredTreeNode(nodeId?: string): void;
1489
1553
  calculateNeighborJoiningTreeFromMSA(): void;
1554
+ rerootAt(nodeId: string): void;
1490
1555
  replaceTree(newick: string): void;
1491
1556
  resetZoom(): void;
1557
+ zoomAtCenter(scaleFactor: number, axis?: import("./constants.ts").ScrollZoomAxis): void;
1492
1558
  zoomOutHorizontal(): void;
1493
1559
  zoomInHorizontal(): void;
1494
1560
  zoomInVertical(): void;
@@ -1514,8 +1580,6 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1514
1580
  onCancel?: () => void;
1515
1581
  }): void;
1516
1582
  } & {
1517
- readonly verticalScrollbarWidth: 0 | 20;
1518
- readonly msaCanvasWidth: number;
1519
1583
  cellAt(visibleCol: number, rowIndex?: number): import("./types.ts").Cell;
1520
1584
  readonly hoveredCell: import("./types.ts").Cell | undefined;
1521
1585
  readonly clickedCell: import("./types.ts").Cell | undefined;
@@ -1544,6 +1608,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1544
1608
  start: number;
1545
1609
  end: number;
1546
1610
  }[];
1611
+ fillHighlightLabel(label: string, row?: string, start?: number): string;
1547
1612
  readonly resolvedHighlights: import("./types.ts").ResolvedHighlight[];
1548
1613
  columnStatsAt(col: number): import("./columnStats.ts").ColumnStats | undefined;
1549
1614
  getRowData(name: string): {
@@ -1555,6 +1620,26 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1555
1620
  rowData: Record<string, string> | undefined;
1556
1621
  };
1557
1622
  readonly resolvedEncodings: import("./types.ts").ResolvedEncoding[];
1623
+ readonly rowPanelScales: ({
1624
+ header: string;
1625
+ legend: import("./types.ts").LegendEntry[];
1626
+ legendTitle?: string;
1627
+ kind: 'strip';
1628
+ field: string;
1629
+ colors: Map<string, string>;
1630
+ } | {
1631
+ header: string;
1632
+ legend: import("./types.ts").LegendEntry[];
1633
+ legendTitle?: string;
1634
+ kind: 'features';
1635
+ x: 'column' | 'position';
1636
+ field?: string;
1637
+ colors: Map<import("msa-parsers").Annotation, {
1638
+ fill: string;
1639
+ stroke: string;
1640
+ }>;
1641
+ labels?: Map<import("msa-parsers").Annotation, string>;
1642
+ })[];
1558
1643
  readonly resolvedRowPanels: import("./types.ts").ResolvedRowPanel[];
1559
1644
  readonly featureAlignShifts: Map<string, Map<string, number>>;
1560
1645
  readonly tipLabelColors: Map<string, string> | undefined;
@@ -1567,6 +1652,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1567
1652
  setTrackHeight(heightKey: string, height: number): void;
1568
1653
  reset(): void;
1569
1654
  exportSVG(opts: import("./renderToSvg.tsx").ExportSvgOptions): Promise<void>;
1655
+ exportNewick(): void;
1570
1656
  setFilter(accession: string, shown: boolean): void;
1571
1657
  fit(): void;
1572
1658
  fitVertically(): void;
@@ -1583,6 +1669,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1583
1669
  treeAreaWidth: number;
1584
1670
  treeWidth: number;
1585
1671
  showBranchLen: boolean;
1672
+ treeOrder: import("./types.ts").TreeOrder;
1586
1673
  drawTree: boolean;
1587
1674
  drawNodeBubbles: boolean;
1588
1675
  drawNodeLabels: boolean;
@@ -1687,6 +1774,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1687
1774
  } | undefined;
1688
1775
  currentAlignment: number;
1689
1776
  collapsed: string[];
1777
+ rotated: string[];
1778
+ treeRoot: import("./types.ts").TreeRoot | undefined;
1690
1779
  showOnly: string | undefined;
1691
1780
  turnedOffTracks: import("mobx").IKeyValueMap<boolean>;
1692
1781
  trackHeights: import("mobx").IKeyValueMap<number>;
@@ -1695,6 +1784,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1695
1784
  relativeTo: string | undefined;
1696
1785
  highlightColumns: number[] | undefined;
1697
1786
  highlights: import("./types.ts").Highlight[];
1787
+ region: import("./types.ts").Region | undefined;
1698
1788
  clades: import("./types.ts").Clade[];
1699
1789
  encodings: import("./types.ts").Encoding[];
1700
1790
  rowPanels: import("./types.ts").RowPanelSpec[];
@@ -1714,6 +1804,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1714
1804
  treeAreaWidth: number;
1715
1805
  treeWidth: number;
1716
1806
  showBranchLen: boolean;
1807
+ treeOrder: import("./types.ts").TreeOrder;
1717
1808
  drawTree: boolean;
1718
1809
  drawNodeBubbles: boolean;
1719
1810
  drawNodeLabels: boolean;
@@ -1818,6 +1909,8 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1818
1909
  } | undefined;
1819
1910
  currentAlignment: number;
1820
1911
  collapsed: string[];
1912
+ rotated: string[];
1913
+ treeRoot: import("./types.ts").TreeRoot | undefined;
1821
1914
  showOnly: string | undefined;
1822
1915
  turnedOffTracks: import("mobx").IKeyValueMap<boolean>;
1823
1916
  trackHeights: import("mobx").IKeyValueMap<number>;
@@ -1826,6 +1919,7 @@ export declare function createTestModel(snapshot: Omit<Snapshot, 'type'>, width?
1826
1919
  relativeTo: string | undefined;
1827
1920
  highlightColumns: number[] | undefined;
1828
1921
  highlights: import("./types.ts").Highlight[];
1922
+ region: import("./types.ts").Region | undefined;
1829
1923
  clades: import("./types.ts").Clade[];
1830
1924
  encodings: import("./types.ts").Encoding[];
1831
1925
  rowPanels: import("./types.ts").RowPanelSpec[];