react-msaview 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (310) hide show
  1. package/README.md +11 -10
  2. package/bundle/index.js +122 -111
  3. package/bundle/index.js.map +4 -4
  4. package/dist/colorSchemes.js +1 -2
  5. package/dist/colorSchemes.js.map +1 -1
  6. package/dist/columnStats.d.ts +28 -0
  7. package/dist/columnStats.js +34 -0
  8. package/dist/columnStats.js.map +1 -0
  9. package/dist/components/DragHandle.d.ts +3 -2
  10. package/dist/components/DragHandle.js +11 -5
  11. package/dist/components/DragHandle.js.map +1 -1
  12. package/dist/components/Loading.js.map +1 -1
  13. package/dist/components/MSAView.js +17 -6
  14. package/dist/components/MSAView.js.map +1 -1
  15. package/dist/components/MSAViewer.d.ts +64 -7
  16. package/dist/components/MSAViewer.js +128 -23
  17. package/dist/components/MSAViewer.js.map +1 -1
  18. package/dist/components/PortalTooltip.d.ts +11 -0
  19. package/dist/components/PortalTooltip.js +29 -0
  20. package/dist/components/PortalTooltip.js.map +1 -0
  21. package/dist/components/ResizeHandles.js +11 -29
  22. package/dist/components/ResizeHandles.js.map +1 -1
  23. package/dist/components/SequenceTextArea.js +3 -3
  24. package/dist/components/SequenceTextArea.js.map +1 -1
  25. package/dist/components/Track.js +41 -22
  26. package/dist/components/Track.js.map +1 -1
  27. package/dist/components/dialogs/ExportSVGDialog.js +5 -3
  28. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  29. package/dist/components/dialogs/TrackInfoDialog.js +1 -1
  30. package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
  31. package/dist/components/header/GappynessSlider.js +6 -11
  32. package/dist/components/header/GappynessSlider.js.map +1 -1
  33. package/dist/components/header/Header.js +3 -0
  34. package/dist/components/header/Header.js.map +1 -1
  35. package/dist/components/header/LoadWarnings.js +3 -4
  36. package/dist/components/header/LoadWarnings.js.map +1 -1
  37. package/dist/components/header/ScrollZoomIcons.d.ts +6 -0
  38. package/dist/components/header/ScrollZoomIcons.js +35 -0
  39. package/dist/components/header/ScrollZoomIcons.js.map +1 -0
  40. package/dist/components/header/TreeSettingsMenu.js +1 -3
  41. package/dist/components/header/TreeSettingsMenu.js.map +1 -1
  42. package/dist/components/header/UnshareableDataWarning.js +2 -4
  43. package/dist/components/header/UnshareableDataWarning.js.map +1 -1
  44. package/dist/components/header/ZoomControls.js +49 -6
  45. package/dist/components/header/ZoomControls.js.map +1 -1
  46. package/dist/components/header/getAnnotationsMenu.js +3 -6
  47. package/dist/components/header/getAnnotationsMenu.js.map +1 -1
  48. package/dist/components/header/settingsMenuItems.js +10 -7
  49. package/dist/components/header/settingsMenuItems.js.map +1 -1
  50. package/dist/components/import/util.js +1 -2
  51. package/dist/components/import/util.js.map +1 -1
  52. package/dist/components/minimap/Minimap.js +1 -2
  53. package/dist/components/minimap/Minimap.js.map +1 -1
  54. package/dist/components/msa/AnnotationLegend.js +27 -19
  55. package/dist/components/msa/AnnotationLegend.js.map +1 -1
  56. package/dist/components/msa/MSACanvas.js +1 -1
  57. package/dist/components/msa/MSACanvas.js.map +1 -1
  58. package/dist/components/msa/MSACanvasBlock.js +13 -15
  59. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  60. package/dist/components/msa/MSAMouseoverCanvas.js +2 -1
  61. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  62. package/dist/components/msa/domainBandCursor.d.ts +7 -11
  63. package/dist/components/msa/domainBandCursor.js +7 -11
  64. package/dist/components/msa/domainBandCursor.js.map +1 -1
  65. package/dist/components/msa/drawFeatureSpans.d.ts +53 -0
  66. package/dist/components/msa/drawFeatureSpans.js +78 -0
  67. package/dist/components/msa/drawFeatureSpans.js.map +1 -0
  68. package/dist/components/msa/legendRows.d.ts +8 -0
  69. package/dist/components/msa/legendRows.js +16 -0
  70. package/dist/components/msa/legendRows.js.map +1 -0
  71. package/dist/components/msa/msaRaster.d.ts +24 -31
  72. package/dist/components/msa/msaRaster.js +30 -39
  73. package/dist/components/msa/msaRaster.js.map +1 -1
  74. package/dist/components/msa/packDomainLanes.d.ts +20 -0
  75. package/dist/components/msa/packDomainLanes.js +33 -0
  76. package/dist/components/msa/packDomainLanes.js.map +1 -0
  77. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +3 -1
  78. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +51 -87
  79. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  80. package/dist/components/msa/renderHighlights.d.ts +15 -13
  81. package/dist/components/msa/renderHighlights.js +43 -20
  82. package/dist/components/msa/renderHighlights.js.map +1 -1
  83. package/dist/components/msa/renderMSABlock.js +5 -4
  84. package/dist/components/msa/renderMSABlock.js.map +1 -1
  85. package/dist/components/msa/tileColor.js +4 -7
  86. package/dist/components/msa/tileColor.js.map +1 -1
  87. package/dist/components/msa/useMsaBlockMouse.d.ts +5 -3
  88. package/dist/components/msa/useMsaBlockMouse.js +6 -6
  89. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  90. package/dist/components/rowpanels/RowPanelBlock.d.ts +9 -0
  91. package/dist/components/rowpanels/RowPanelBlock.js +86 -0
  92. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -0
  93. package/dist/components/rowpanels/RowPanelHeaders.d.ts +12 -0
  94. package/dist/components/rowpanels/RowPanelHeaders.js +38 -0
  95. package/dist/components/rowpanels/RowPanelHeaders.js.map +1 -0
  96. package/dist/components/{msa/ColumnStats.d.ts → rowpanels/RowPanels.d.ts} +2 -2
  97. package/dist/components/rowpanels/RowPanels.js +32 -0
  98. package/dist/components/rowpanels/RowPanels.js.map +1 -0
  99. package/dist/components/rowpanels/headerLayout.d.ts +1 -0
  100. package/dist/components/rowpanels/headerLayout.js +5 -0
  101. package/dist/components/rowpanels/headerLayout.js.map +1 -0
  102. package/dist/components/rowpanels/renderFeaturePanel.d.ts +21 -0
  103. package/dist/components/rowpanels/renderFeaturePanel.js +37 -0
  104. package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -0
  105. package/dist/components/rowpanels/renderRowPanel.d.ts +23 -0
  106. package/dist/components/rowpanels/renderRowPanel.js +22 -0
  107. package/dist/components/rowpanels/renderRowPanel.js.map +1 -0
  108. package/dist/components/rowpanels/renderStrip.d.ts +20 -0
  109. package/dist/components/rowpanels/renderStrip.js +26 -0
  110. package/dist/components/rowpanels/renderStrip.js.map +1 -0
  111. package/dist/components/tracks/TrackBlocks.js +3 -5
  112. package/dist/components/tracks/TrackBlocks.js.map +1 -1
  113. package/dist/components/tracks/TrackTooltipContent.d.ts +15 -0
  114. package/dist/components/tracks/TrackTooltipContent.js +109 -0
  115. package/dist/components/tracks/TrackTooltipContent.js.map +1 -0
  116. package/dist/components/tracks/drawTracks.d.ts +4 -4
  117. package/dist/components/tracks/drawTracks.js +17 -34
  118. package/dist/components/tracks/drawTracks.js.map +1 -1
  119. package/dist/components/tracks/useTrackHover.d.ts +22 -0
  120. package/dist/components/tracks/useTrackHover.js +30 -0
  121. package/dist/components/tracks/useTrackHover.js.map +1 -0
  122. package/dist/components/tree/CladeLabels.d.ts +12 -0
  123. package/dist/components/tree/CladeLabels.js +48 -0
  124. package/dist/components/tree/CladeLabels.js.map +1 -0
  125. package/dist/components/tree/TreeCanvas.js +4 -1
  126. package/dist/components/tree/TreeCanvas.js.map +1 -1
  127. package/dist/components/tree/TreeCanvasBlock.js +4 -21
  128. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  129. package/dist/components/tree/TreeOverview.d.ts +14 -0
  130. package/dist/components/tree/TreeOverview.js +75 -0
  131. package/dist/components/tree/TreeOverview.js.map +1 -0
  132. package/dist/components/tree/TreeRuler.js +9 -13
  133. package/dist/components/tree/TreeRuler.js.map +1 -1
  134. package/dist/components/tree/cladeBrackets.d.ts +25 -0
  135. package/dist/components/tree/cladeBrackets.js +51 -0
  136. package/dist/components/tree/cladeBrackets.js.map +1 -0
  137. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -2
  138. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  139. package/dist/components/tree/renderTreeCanvas.js +158 -24
  140. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  141. package/dist/components/tree/renderTreeOverview.d.ts +52 -0
  142. package/dist/components/tree/renderTreeOverview.js +138 -0
  143. package/dist/components/tree/renderTreeOverview.js.map +1 -0
  144. package/dist/components/tree/useTreeHover.js +2 -4
  145. package/dist/components/tree/useTreeHover.js.map +1 -1
  146. package/dist/constants.d.ts +15 -0
  147. package/dist/constants.js +48 -22
  148. package/dist/constants.js.map +1 -1
  149. package/dist/createPaletteMap.d.ts +7 -6
  150. package/dist/createPaletteMap.js +10 -9
  151. package/dist/createPaletteMap.js.map +1 -1
  152. package/dist/element.d.ts +13 -0
  153. package/dist/element.js +269 -0
  154. package/dist/element.js.map +1 -0
  155. package/dist/featureFields.d.ts +11 -0
  156. package/dist/featureFields.js +17 -0
  157. package/dist/featureFields.js.map +1 -0
  158. package/dist/flatToTree.js +1 -2
  159. package/dist/flatToTree.js.map +1 -1
  160. package/dist/ggplotPalettes.d.ts +10 -0
  161. package/dist/ggplotPalettes.js +58 -0
  162. package/dist/ggplotPalettes.js.map +1 -1
  163. package/dist/hierarchy.d.ts +27 -0
  164. package/dist/hierarchy.js +66 -9
  165. package/dist/hierarchy.js.map +1 -1
  166. package/dist/index.d.ts +9 -1
  167. package/dist/index.js +5 -3
  168. package/dist/index.js.map +1 -1
  169. package/dist/model/DataModel.js +2 -5
  170. package/dist/model/DataModel.js.map +1 -1
  171. package/dist/model/msaModel.d.ts +3 -2
  172. package/dist/model/msaModel.js +3 -2
  173. package/dist/model/msaModel.js.map +1 -1
  174. package/dist/model/treeModel.d.ts +30 -0
  175. package/dist/model/treeModel.js +37 -1
  176. package/dist/model/treeModel.js.map +1 -1
  177. package/dist/model.d.ts +531 -275
  178. package/dist/model.js +1295 -547
  179. package/dist/model.js.map +1 -1
  180. package/dist/mount.d.ts +11 -0
  181. package/dist/mount.js +22 -0
  182. package/dist/mount.js.map +1 -0
  183. package/dist/neighborJoining.js +8 -32
  184. package/dist/neighborJoining.js.map +1 -1
  185. package/dist/renderToStaticMarkup.d.ts +10 -19
  186. package/dist/renderToStaticMarkup.js +13 -24
  187. package/dist/renderToStaticMarkup.js.map +1 -1
  188. package/dist/renderToSvg.js +180 -56
  189. package/dist/renderToSvg.js.map +1 -1
  190. package/dist/rowCoordinateCalculations.d.ts +4 -6
  191. package/dist/rowCoordinateCalculations.js +4 -6
  192. package/dist/rowCoordinateCalculations.js.map +1 -1
  193. package/dist/scales.d.ts +22 -0
  194. package/dist/scales.js +30 -0
  195. package/dist/scales.js.map +1 -0
  196. package/dist/seqPosToGlobalCol.d.ts +2 -3
  197. package/dist/seqPosToGlobalCol.js +2 -3
  198. package/dist/seqPosToGlobalCol.js.map +1 -1
  199. package/dist/sequenceLogo.d.ts +6 -11
  200. package/dist/sequenceLogo.js +6 -11
  201. package/dist/sequenceLogo.js.map +1 -1
  202. package/dist/stripDefault.d.ts +7 -14
  203. package/dist/stripDefault.js +7 -14
  204. package/dist/stripDefault.js.map +1 -1
  205. package/dist/svgTestUtil.d.ts +172 -52
  206. package/dist/types.d.ts +219 -21
  207. package/dist/umd.d.ts +2 -0
  208. package/dist/umd.js +4 -2
  209. package/dist/umd.js.map +1 -1
  210. package/dist/useCanvasAutorun.d.ts +5 -10
  211. package/dist/useCanvasAutorun.js +5 -10
  212. package/dist/useCanvasAutorun.js.map +1 -1
  213. package/dist/useMsaSvgFigure.d.ts +20 -0
  214. package/dist/useMsaSvgFigure.js +46 -0
  215. package/dist/useMsaSvgFigure.js.map +1 -0
  216. package/dist/util.d.ts +5 -6
  217. package/dist/util.js +13 -6
  218. package/dist/util.js.map +1 -1
  219. package/dist/version.d.ts +1 -1
  220. package/dist/version.js +1 -1
  221. package/package.json +19 -12
  222. package/src/colorSchemes.ts +1 -2
  223. package/src/columnStats.ts +58 -0
  224. package/src/components/DragHandle.tsx +18 -7
  225. package/src/components/Loading.tsx +2 -6
  226. package/src/components/MSAView.tsx +19 -5
  227. package/src/components/MSAViewer.tsx +240 -28
  228. package/src/components/PortalTooltip.tsx +47 -0
  229. package/src/components/ResizeHandles.tsx +17 -32
  230. package/src/components/SequenceTextArea.tsx +3 -3
  231. package/src/components/Track.tsx +55 -18
  232. package/src/components/dialogs/ExportSVGDialog.tsx +7 -2
  233. package/src/components/dialogs/TrackInfoDialog.tsx +1 -1
  234. package/src/components/header/GappynessSlider.tsx +6 -11
  235. package/src/components/header/Header.tsx +6 -0
  236. package/src/components/header/LoadWarnings.tsx +3 -4
  237. package/src/components/header/ScrollZoomIcons.tsx +52 -0
  238. package/src/components/header/TreeSettingsMenu.tsx +1 -3
  239. package/src/components/header/UnshareableDataWarning.tsx +2 -4
  240. package/src/components/header/ZoomControls.tsx +74 -14
  241. package/src/components/header/getAnnotationsMenu.ts +3 -6
  242. package/src/components/header/settingsMenuItems.ts +11 -6
  243. package/src/components/import/ImportFormExamples.tsx +2 -2
  244. package/src/components/import/util.ts +1 -2
  245. package/src/components/minimap/Minimap.tsx +1 -2
  246. package/src/components/msa/AnnotationLegend.tsx +48 -38
  247. package/src/components/msa/MSACanvas.tsx +3 -5
  248. package/src/components/msa/MSACanvasBlock.tsx +13 -16
  249. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -1
  250. package/src/components/msa/domainBandCursor.ts +7 -11
  251. package/src/components/msa/drawFeatureSpans.ts +150 -0
  252. package/src/components/msa/legendRows.ts +24 -0
  253. package/src/components/msa/msaRaster.ts +30 -39
  254. package/src/components/msa/packDomainLanes.ts +36 -0
  255. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +69 -123
  256. package/src/components/msa/renderHighlights.ts +53 -20
  257. package/src/components/msa/renderMSABlock.ts +5 -3
  258. package/src/components/msa/tileColor.ts +4 -7
  259. package/src/components/msa/useMsaBlockMouse.ts +6 -6
  260. package/src/components/rowpanels/RowPanelBlock.tsx +139 -0
  261. package/src/components/rowpanels/RowPanelHeaders.tsx +57 -0
  262. package/src/components/rowpanels/RowPanels.tsx +77 -0
  263. package/src/components/rowpanels/headerLayout.ts +5 -0
  264. package/src/components/rowpanels/renderFeaturePanel.ts +66 -0
  265. package/src/components/rowpanels/renderRowPanel.ts +41 -0
  266. package/src/components/rowpanels/renderStrip.ts +46 -0
  267. package/src/components/tracks/TrackBlocks.tsx +3 -5
  268. package/src/components/tracks/TrackTooltipContent.tsx +156 -0
  269. package/src/components/tracks/drawTracks.ts +17 -34
  270. package/src/components/tracks/useTrackHover.ts +42 -0
  271. package/src/components/tree/CladeLabels.tsx +77 -0
  272. package/src/components/tree/TreeCanvas.tsx +2 -0
  273. package/src/components/tree/TreeCanvasBlock.tsx +8 -32
  274. package/src/components/tree/TreeOverview.tsx +106 -0
  275. package/src/components/tree/TreeRuler.tsx +11 -22
  276. package/src/components/tree/cladeBrackets.ts +73 -0
  277. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +2 -2
  278. package/src/components/tree/renderTreeCanvas.ts +240 -20
  279. package/src/components/tree/renderTreeOverview.ts +212 -0
  280. package/src/components/tree/useTreeHover.ts +2 -4
  281. package/src/constants.ts +56 -22
  282. package/src/createPaletteMap.ts +10 -9
  283. package/src/element.ts +321 -0
  284. package/src/featureFields.ts +19 -0
  285. package/src/flatToTree.ts +1 -2
  286. package/src/ggplotPalettes.ts +60 -0
  287. package/src/hierarchy.ts +77 -9
  288. package/src/index.ts +31 -7
  289. package/src/model/DataModel.ts +2 -5
  290. package/src/model/msaModel.ts +3 -2
  291. package/src/model/treeModel.ts +42 -0
  292. package/src/model.ts +1523 -560
  293. package/src/mount.tsx +32 -0
  294. package/src/neighborJoining.ts +8 -32
  295. package/src/renderToStaticMarkup.ts +13 -24
  296. package/src/renderToSvg.tsx +335 -68
  297. package/src/rowCoordinateCalculations.ts +4 -6
  298. package/src/scales.ts +47 -0
  299. package/src/seqPosToGlobalCol.ts +2 -3
  300. package/src/sequenceLogo.ts +6 -11
  301. package/src/stripDefault.ts +7 -14
  302. package/src/types.ts +258 -45
  303. package/src/umd.ts +4 -2
  304. package/src/useCanvasAutorun.ts +5 -10
  305. package/src/useMsaSvgFigure.ts +72 -0
  306. package/src/util.ts +15 -6
  307. package/src/version.ts +1 -1
  308. package/dist/components/msa/ColumnStats.js +0 -42
  309. package/dist/components/msa/ColumnStats.js.map +0 -1
  310. package/src/components/msa/ColumnStats.tsx +0 -54
@@ -0,0 +1,22 @@
1
+ import { renderFeaturePanel } from './renderFeaturePanel.js';
2
+ import { renderStrip } from './renderStrip.js';
3
+ /**
4
+ * One row panel, by kind. `x` is the panel's left edge in the context: the
5
+ * live view gives each panel a canvas of its own and passes 0, and the export
6
+ * packs every panel into one context and passes the panel's own offset.
7
+ */
8
+ export function renderRowPanel({ panel, ...rest }) {
9
+ if (panel.kind === 'features') {
10
+ renderFeaturePanel({ panel, ...rest });
11
+ }
12
+ else {
13
+ renderStrip({ panel, ...rest });
14
+ }
15
+ }
16
+ /** every row panel side by side in one context, for the SVG export */
17
+ export function renderRowPanels({ model, ...rest }) {
18
+ for (const panel of model.resolvedRowPanels) {
19
+ renderRowPanel({ model, panel, x: panel.offsetX, ...rest });
20
+ }
21
+ }
22
+ //# sourceMappingURL=renderRowPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderRowPanel.js","sourceRoot":"","sources":["../../../src/components/rowpanels/renderRowPanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAkB9C;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAa;IAC1D,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QAC9B,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IACxC,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IACjC,CAAC;AACH,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,GAAG,IAAI,EACwB;IAC/B,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC5C,cAAc,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { MsaViewModel } from '../../model.ts';
2
+ import type { ResolvedStripPanel } from '../../types.ts';
3
+ import type { RenderCtx } from '../renderCtx.ts';
4
+ /**
5
+ * One cell per row of a `strip` panel, in the color its field takes through
6
+ * the panel's scale. A row the table has no value for leaves the cell empty.
7
+ *
8
+ * `x` is the panel's left edge in the context: the live view gives each panel
9
+ * a canvas of its own and passes 0, and the export packs every panel into one
10
+ * context and passes the panel's own offset.
11
+ */
12
+ export declare function renderStrip({ ctx, model, panel, x, offsetY, blockSizeYOverride, highResScaleFactorOverride, }: {
13
+ ctx: RenderCtx;
14
+ model: MsaViewModel;
15
+ panel: ResolvedStripPanel;
16
+ x: number;
17
+ offsetY: number;
18
+ blockSizeYOverride?: number;
19
+ highResScaleFactorOverride?: number;
20
+ }): void;
@@ -0,0 +1,26 @@
1
+ import { getVisibleLeaves } from '../getVisibleLeaves.js';
2
+ /**
3
+ * One cell per row of a `strip` panel, in the color its field takes through
4
+ * the panel's scale. A row the table has no value for leaves the cell empty.
5
+ *
6
+ * `x` is the panel's left edge in the context: the live view gives each panel
7
+ * a canvas of its own and passes 0, and the export packs every panel into one
8
+ * context and passes the panel's own offset.
9
+ */
10
+ export function renderStrip({ ctx, model, panel, x, offsetY, blockSizeYOverride, highResScaleFactorOverride, }) {
11
+ const { rowHeight, blockSize, highResScaleFactor } = model;
12
+ const by = blockSizeYOverride ?? blockSize;
13
+ ctx.resetTransform();
14
+ const k = highResScaleFactorOverride ?? highResScaleFactor;
15
+ ctx.scale(k, k);
16
+ ctx.translate(x, -offsetY);
17
+ for (const leaf of getVisibleLeaves({ model, offsetY, blockSizeY: by })) {
18
+ const color = panel.colors.get(leaf.data.name);
19
+ if (color) {
20
+ ctx.fillStyle = color;
21
+ // leaf.x is the row's center, at rowHeight*(index+0.5)
22
+ ctx.fillRect(0, leaf.x - rowHeight / 2, panel.width, rowHeight);
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=renderStrip.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderStrip.js","sourceRoot":"","sources":["../../../src/components/rowpanels/renderStrip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAMzD;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,GAAG,EACH,KAAK,EACL,KAAK,EACL,CAAC,EACD,OAAO,EACP,kBAAkB,EAClB,0BAA0B,GAS3B;IACC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAA;IAC1D,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,MAAM,CAAC,GAAG,0BAA0B,IAAI,kBAAkB,CAAA;IAC1D,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACf,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAA;IAC1B,KAAK,MAAM,IAAI,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,SAAS,GAAG,KAAK,CAAA;YACrB,uDAAuD;YACvD,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,CAAE,GAAG,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAClE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -34,11 +34,9 @@ const TrackBlock = observer(function ({ model, track, offsetX, }) {
34
34
  * not how the blocks are laid out or kept in sync with the horizontal scroll.
35
35
  */
36
36
  const TrackBlocks = observer(function ({ model, track, }) {
37
- // msaCanvasWidth, not msaAreaWidth: a track row is a legend for the columns
38
- // directly below it, so it has to stop where the alignment canvas does rather
39
- // than running on another 20px under the vertical scrollbar -- otherwise the
40
- // last columns appear in the tracks but not in the alignment, and the hovered
41
- // -column indicator (sized to the canvas) stops short of the track it crosses
37
+ // msaCanvasWidth, not msaAreaWidth: tracks stop where the alignment canvas
38
+ // does, not 20px further under the vertical scrollbar, so their columns and
39
+ // the hover indicator line up with the alignment
42
40
  const { blocksX, msaCanvasWidth, scrollX } = model;
43
41
  const { kind, height, data, arcs } = track.model;
44
42
  // a track with nothing to draw would still take up its vertical space
@@ -1 +1 @@
1
- {"version":3,"file":"TrackBlocks.js","sourceRoot":"","sources":["../../../src/components/tracks/TrackBlocks.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TrackBlocks.js","sourceRoot":"","sources":["../../../src/components/tracks/TrackBlocks.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import type { MsaViewModel } from '../../model.ts';
3
+ import type { BasicTrack } from '../../types.ts';
4
+ /**
5
+ * One track's reading at the hovered column: a bar track's value, the logo's
6
+ * information content and composition, the columns an arc joins, the letter on a
7
+ * text track. `drawTrackBlock` dispatches on the same `kind`, so a new kind
8
+ * needs a case in both.
9
+ */
10
+ declare const TrackTooltipContent: ({ model, track, col, }: {
11
+ model: MsaViewModel;
12
+ track: BasicTrack;
13
+ col: number;
14
+ }) => React.JSX.Element;
15
+ export default TrackTooltipContent;
@@ -0,0 +1,109 @@
1
+ import React from 'react';
2
+ import { observer } from 'mobx-react';
3
+ import { columnLogoStack } from '../../sequenceLogo.js';
4
+ import { barTrackValues } from './drawTracks.js';
5
+ const pct = (n) => `${Math.round(n * 100)}%`;
6
+ const MAX_PARTNERS = 8;
7
+ function ColumnLabel({ model, col }) {
8
+ const { relativeTo } = model;
9
+ const pos = relativeTo
10
+ ? model.visibleColToSeqPosOneBased(relativeTo, col)
11
+ : undefined;
12
+ return (React.createElement("b", null,
13
+ "Column ",
14
+ col + 1,
15
+ pos === undefined ? null : ` (${relativeTo}:${pos})`));
16
+ }
17
+ function BarTooltip({ model, track, col, }) {
18
+ const { id, name } = track.model;
19
+ const value = barTrackValues(model, id)[col];
20
+ return value === undefined ? null : (React.createElement("div", null,
21
+ React.createElement(ColumnLabel, { model: model, col: col }),
22
+ React.createElement("br", null),
23
+ name,
24
+ ": ",
25
+ value.toFixed(2)));
26
+ }
27
+ function LogoTooltip({ model, col }) {
28
+ const stats = model.columnStatsAt(col);
29
+ if (!stats) {
30
+ return null;
31
+ }
32
+ const { total, consensusLetter, consensusFraction, gapFraction } = stats;
33
+ const stack = columnLogoStack(model.colStats, col, model.alphabetMaxBits);
34
+ const bits = stack.reduce((a, b) => a + b.bits, 0);
35
+ return (React.createElement("div", null,
36
+ React.createElement(ColumnLabel, { model: model, col: col }),
37
+ " (",
38
+ total,
39
+ " seqs)",
40
+ React.createElement("br", null),
41
+ "Information: ",
42
+ bits.toFixed(2),
43
+ " bits",
44
+ React.createElement("br", null),
45
+ "Consensus: ",
46
+ consensusLetter || '-',
47
+ " (",
48
+ pct(consensusFraction),
49
+ ")",
50
+ React.createElement("br", null),
51
+ "Gaps: ",
52
+ pct(gapFraction),
53
+ React.createElement("br", null),
54
+ stats.distribution.slice(0, 6).map(([letter, count]) => (React.createElement("span", { key: letter, style: { marginRight: 8 } },
55
+ letter,
56
+ " ",
57
+ pct(count / total))))));
58
+ }
59
+ function TextTooltip({ model, track, col, }) {
60
+ const { name, data } = track.model;
61
+ const letter = data?.[col];
62
+ return letter === undefined ? null : (React.createElement("div", null,
63
+ React.createElement(ColumnLabel, { model: model, col: col }),
64
+ React.createElement("br", null),
65
+ name,
66
+ ": ",
67
+ letter === ' ' ? 'blank' : letter));
68
+ }
69
+ function ArcTooltip({ model, track, col, }) {
70
+ const { name, arcs } = track.model;
71
+ const partners = (arcs ?? [])
72
+ .filter(arc => arc.start === col || arc.end === col)
73
+ .map(arc => (arc.start === col ? arc.end : arc.start) + 1);
74
+ return partners.length === 0 ? null : (React.createElement("div", null,
75
+ React.createElement(ColumnLabel, { model: model, col: col }),
76
+ React.createElement("br", null),
77
+ name,
78
+ ": pairs with ",
79
+ partners.slice(0, MAX_PARTNERS).join(', '),
80
+ partners.length > MAX_PARTNERS ? '...' : null));
81
+ }
82
+ /**
83
+ * One track's reading at the hovered column: a bar track's value, the logo's
84
+ * information content and composition, the columns an arc joins, the letter on a
85
+ * text track. `drawTrackBlock` dispatches on the same `kind`, so a new kind
86
+ * needs a case in both.
87
+ */
88
+ const TrackTooltipContent = observer(function ({ model, track, col, }) {
89
+ switch (track.model.kind) {
90
+ case 'bar': {
91
+ return React.createElement(BarTooltip, { model: model, track: track, col: col });
92
+ }
93
+ case 'logo': {
94
+ return React.createElement(LogoTooltip, { model: model, col: col });
95
+ }
96
+ case 'text': {
97
+ return React.createElement(TextTooltip, { model: model, track: track, col: col });
98
+ }
99
+ case 'arc': {
100
+ return React.createElement(ArcTooltip, { model: model, track: track, col: col });
101
+ }
102
+ case 'ruler': {
103
+ return (React.createElement("div", null,
104
+ React.createElement(ColumnLabel, { model: model, col: col })));
105
+ }
106
+ }
107
+ });
108
+ export default TrackTooltipContent;
109
+ //# sourceMappingURL=TrackTooltipContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TrackTooltipContent.js","sourceRoot":"","sources":["../../../src/components/tracks/TrackTooltipContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAKhD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAA;AAEpD,MAAM,YAAY,GAAG,CAAC,CAAA;AAEtB,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAwC;IACvE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IAC5B,MAAM,GAAG,GAAG,UAAU;QACpB,CAAC,CAAC,KAAK,CAAC,0BAA0B,CAAC,UAAU,EAAE,GAAG,CAAC;QACnD,CAAC,CAAC,SAAS,CAAA;IACb,OAAO,CACL;;QACU,GAAG,GAAG,CAAC;QACd,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,GAAG,GAAG,CACnD,CACL,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,KAAK,EACL,GAAG,GAKJ;IACC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;IAChC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAA;IAC5C,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAClC;QACE,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI;QACvC,+BAAM;QACL,IAAI;;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACrB,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,EAAwC;IACvE,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IACxE,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;IACzE,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IAClD,OAAO,CACL;QACE,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI;;QAAG,KAAK;;QAC/C,+BAAM;;QACQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;QAC7B,+BAAM;;QACM,eAAe,IAAI,GAAG;;QAAI,GAAG,CAAC,iBAAiB,CAAC;;QAC5D,+BAAM;;QACC,GAAG,CAAC,WAAW,CAAC;QACvB,+BAAM;QACL,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CACvD,8BAAM,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE;YACzC,MAAM;;YAAG,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,CACvB,CACR,CAAC,CACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EACnB,KAAK,EACL,KAAK,EACL,GAAG,GAKJ;IACC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;IAClC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,CAAA;IAC1B,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACnC;QACE,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI;QACvC,+BAAM;QACL,IAAI;;QAAI,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CACtC,CACP,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAClB,KAAK,EACL,KAAK,EACL,GAAG,GAKJ;IACC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAA;IAClC,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC;SACnD,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5D,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CACpC;QACE,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI;QACvC,+BAAM;QACL,IAAI;;QAAe,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7D,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAC1C,CACP,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,mBAAmB,GAAG,QAAQ,CAAC,UAAU,EAC7C,KAAK,EACL,KAAK,EACL,GAAG,GAKJ;IACC,QAAQ,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,KAAK,EAAE,CAAC;YACX,OAAO,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;QAC7D,CAAC;QACD,KAAK,MAAM,EAAE,CAAC;YACZ,OAAO,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;QAChD,CAAC;QACD,KAAK,MAAM,EAAE,CAAC;YACZ,OAAO,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;QAC9D,CAAC;QACD,KAAK,KAAK,EAAE,CAAC;YACX,OAAO,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CAAA;QAC7D,CAAC;QACD,KAAK,OAAO,EAAE,CAAC;YACb,OAAO,CACL;gBACE,oBAAC,WAAW,IAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,GAAI,CACnC,CACP,CAAA;QACH,CAAC;IACH,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,mBAAmB,CAAA"}
@@ -58,9 +58,9 @@ export declare function drawSequenceLogo({ ctx, colStats, colorScheme, maxBits,
58
58
  }): void;
59
59
  /**
60
60
  * Draw one track's content into a block of the alignment's column space, at
61
- * `offsetY` within the ctx. Owns the transform, so both callers -- the live
62
- * canvas blocks and the SVG export -- draw into the same coordinate space, and
63
- * adding a track kind means a `kind`, a draw function above, and a case here.
61
+ * `offsetY` within the ctx. Owns the transform, so the live canvas blocks and
62
+ * the SVG export draw into the same coordinate space. A new track kind needs a
63
+ * `kind`, a draw function above, and a case here.
64
64
  */
65
65
  export declare function drawTrackBlock({ model, ctx, track, offsetX, offsetY, theme, blockSizeXOverride, highResScaleFactorOverride, }: {
66
66
  model: MsaViewModel;
@@ -74,7 +74,7 @@ export declare function drawTrackBlock({ model, ctx, track, offsetX, offsetY, th
74
74
  }): void;
75
75
  /**
76
76
  * Every turned-on track stacked top to bottom, for the SVG export. The live
77
- * view draws the same content one canvas block at a time -- see TrackBlocks.
77
+ * view draws the same content one canvas block at a time in TrackBlocks.
78
78
  */
79
79
  export declare function renderAllTracks({ model, ctx, offsetX, theme, blockSizeXOverride, highResScaleFactorOverride, }: {
80
80
  model: MsaViewModel;
@@ -16,8 +16,8 @@ export function drawConservationBars({ ctx, values, color, colWidth, trackHeight
16
16
  ctx.fillRect(x, trackHeight - barHeight, colWidth, barHeight);
17
17
  }
18
18
  }
19
- // the bar-track values live on model getters (kept off the plain track object so
20
- // the live canvas autorun stays reactive); select the right one by track id
19
+ // bar-track values are model getters, off the plain track object, so the canvas
20
+ // autorun stays reactive
21
21
  export function barTrackValues(model, trackId) {
22
22
  const supplied = model.columnTrackContent.get(trackId)?.values;
23
23
  if (supplied) {
@@ -27,10 +27,8 @@ export function barTrackValues(model, trackId) {
27
27
  ? model.propertyConservation
28
28
  : model.conservation;
29
29
  }
30
- // An arc's apex scales with how far it reaches, so a short helix stays shallow
31
- // and a long-range pair sweeps the full track height. The scale is sqrt rather
32
- // than linear because a contact map's spans are heavily skewed towards short
33
- // ones, which linear scaling flattens into a smear along the baseline.
30
+ // An arc's apex scales with the square root of its span. Contact-map spans skew
31
+ // short, and a linear scale flattens them along the baseline.
34
32
  export function drawArcs({ ctx, arcs, color, colWidth, trackHeight, offsetX, blockSize, }) {
35
33
  if (!arcs?.length) {
36
34
  return;
@@ -79,16 +77,12 @@ export function drawTextTrackContent({ ctx, data, colorScheme, contrastText, bgC
79
77
  ctx.fillRect(x, 0, colWidth, rowHeight);
80
78
  }
81
79
  if (drawLetters) {
82
- // a letter on a colored tile needs that tile's contrast color; otherwise
83
- // it sits on the plain background and takes the theme's text color
84
80
  ctx.fillStyle = contrastText(fill);
85
81
  ctx.fillText(letter, x + colWidth / 2, rowHeight / 2);
86
82
  }
87
83
  }
88
84
  }
89
- // Column numbers every `step` columns, with a tick under each. The step is the
90
- // smallest 1/2/5 x 10^n that leaves room for a label, so a zoom changes how many
91
- // numbers appear rather than crowding them.
85
+ // the smallest 1/2/5 x 10^n column step that leaves room for a label
92
86
  export function rulerStep(colWidth, minPixels = 55) {
93
87
  let step = 1;
94
88
  const mantissas = [1, 2, 5];
@@ -126,17 +120,11 @@ export function drawColumnRuler({ ctx, numColumns, label, textColor, colWidth, t
126
120
  ctx.stroke();
127
121
  }
128
122
  }
129
- // Cap height as a fraction of the font size. Every logo letter is scaled from
130
- // one reference font size to the height its frequency earns, and that scale is
131
- // only right if we know how tall the glyph actually draws. Measuring per letter
132
- // would be exact but `measureText` reports no vertical box in the SVG export
133
- // backend, so the ratio is a constant: the cap height of the sans-serif faces
134
- // both backends use, within a percent or two. It only has to be consistent --
135
- // the same ratio for every letter is what makes the slices sum to the stack
136
- // height instead of drifting apart.
123
+ // Cap height as a fraction of the font size, within a percent or two for the
124
+ // sans-serif faces both backends use. `measureText` reports no vertical box in
125
+ // the SVG export backend, so one constant ratio scales every logo letter, and
126
+ // the slices sum to the stack height.
137
127
  const CAP_HEIGHT_RATIO = 0.72;
138
- // letters below this many pixels are noise, and a stack that thin reads better
139
- // as the bar chart it approximates
140
128
  const MIN_LETTER_PX = 3;
141
129
  export function drawSequenceLogo({ ctx, colStats, colorScheme, maxBits, textColor, colWidth, trackHeight, offsetX, blockSize, }) {
142
130
  const { xStart, xEnd } = visibleColRange({
@@ -145,8 +133,8 @@ export function drawSequenceLogo({ ctx, colStats, colorScheme, maxBits, textColo
145
133
  colWidth,
146
134
  });
147
135
  const end = Math.min(xEnd, colStats.numColumns);
148
- // one reference size for every glyph; each letter's own transform takes it
149
- // from here to the height it earned, so the font is set once for the block
136
+ // one reference font size for the block; each letter's transform scales it to
137
+ // a height proportional to its frequency
150
138
  const referenceFontSize = trackHeight;
151
139
  setFontSize(ctx, referenceFontSize);
152
140
  ctx.textAlign = 'left';
@@ -158,9 +146,7 @@ export function drawSequenceLogo({ ctx, colStats, colorScheme, maxBits, textColo
158
146
  continue;
159
147
  }
160
148
  const x = col * colWidth;
161
- // stack up from the baseline: the array is ascending, so the tallest letter
162
- // lands on top, which is the convention that makes a logo readable at a
163
- // glance
149
+ // the stack is ascending, so the tallest letter lands on top
164
150
  let bottom = trackHeight;
165
151
  for (const { letter, bits } of stack) {
166
152
  const h = (bits / maxBits) * trackHeight;
@@ -187,9 +173,9 @@ export function drawSequenceLogo({ ctx, colStats, colorScheme, maxBits, textColo
187
173
  }
188
174
  /**
189
175
  * Draw one track's content into a block of the alignment's column space, at
190
- * `offsetY` within the ctx. Owns the transform, so both callers -- the live
191
- * canvas blocks and the SVG export -- draw into the same coordinate space, and
192
- * adding a track kind means a `kind`, a draw function above, and a case here.
176
+ * `offsetY` within the ctx. Owns the transform, so the live canvas blocks and
177
+ * the SVG export draw into the same coordinate space. A new track kind needs a
178
+ * `kind`, a draw function above, and a case here.
193
179
  */
194
180
  export function drawTrackBlock({ model, ctx, track, offsetX, offsetY = 0, theme, blockSizeXOverride, highResScaleFactorOverride, }) {
195
181
  const { blockSize, bgColor, colWidth, colStats, colorScheme: modelColorScheme, fontSize, rowHeight, showMsaLetters, alphabetMaxBits, highResScaleFactor, } = model;
@@ -244,8 +230,7 @@ export function drawTrackBlock({ model, ctx, track, offsetX, offsetY = 0, theme,
244
230
  drawColumnRuler({
245
231
  ctx,
246
232
  numColumns,
247
- // numbered by the reference row's own residues when the alignment is
248
- // drawn relative to one, which is what the rest of the view counts in
233
+ // with relativeTo set, number by the reference row's residues
249
234
  label: relativeTo
250
235
  ? col => {
251
236
  const pos = model.visibleColToSeqPosOneBased(relativeTo, col);
@@ -270,8 +255,6 @@ export function drawTrackBlock({ model, ctx, track, offsetX, offsetY = 0, theme,
270
255
  colorScheme: customColorScheme ?? modelColorScheme,
271
256
  contrastText: contrastTextFn(theme),
272
257
  bgColor,
273
- // a text track is one alignment row tall, so it shows letters exactly
274
- // when the alignment does
275
258
  drawLetters: showMsaLetters,
276
259
  colWidth,
277
260
  rowHeight,
@@ -285,7 +268,7 @@ export function drawTrackBlock({ model, ctx, track, offsetX, offsetY = 0, theme,
285
268
  }
286
269
  /**
287
270
  * Every turned-on track stacked top to bottom, for the SVG export. The live
288
- * view draws the same content one canvas block at a time -- see TrackBlocks.
271
+ * view draws the same content one canvas block at a time in TrackBlocks.
289
272
  */
290
273
  export function renderAllTracks({ model, ctx, offsetX, theme, blockSizeXOverride, highResScaleFactorOverride, }) {
291
274
  let currentY = 0;
@@ -1 +1 @@
1
- {"version":3,"file":"drawTracks.js","sourceRoot":"","sources":["../../../src/components/tracks/drawTracks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drawTracks.js","sourceRoot":"","sources":["../../../src/components/tracks/drawTracks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { MsaViewModel } from '../../model.ts';
2
+ import type React from 'react';
3
+ /**
4
+ * Translates pointer events over a track's row into the hovered column and a
5
+ * tooltip anchor. The track shares the alignment's columns, so hovering it sets
6
+ * the model's mouse column too and the alignment's hover band follows along.
7
+ *
8
+ * `tooltip` off skips the anchor, so a track whose tooltip is turned off still
9
+ * drives the hover band without re-rendering on every mouse move.
10
+ */
11
+ export declare function useTrackHover({ model, tooltip, }: {
12
+ model: MsaViewModel;
13
+ tooltip: boolean;
14
+ }): {
15
+ hover: {
16
+ col: number;
17
+ x: number;
18
+ y: number;
19
+ } | undefined;
20
+ onMouseMove: (event: React.MouseEvent, el: HTMLElement) => void;
21
+ onMouseLeave: () => void;
22
+ };
@@ -0,0 +1,30 @@
1
+ import { useState } from 'react';
2
+ /**
3
+ * Translates pointer events over a track's row into the hovered column and a
4
+ * tooltip anchor. The track shares the alignment's columns, so hovering it sets
5
+ * the model's mouse column too and the alignment's hover band follows along.
6
+ *
7
+ * `tooltip` off skips the anchor, so a track whose tooltip is turned off still
8
+ * drives the hover band without re-rendering on every mouse move.
9
+ */
10
+ export function useTrackHover({ model, tooltip, }) {
11
+ const [hover, setHover] = useState();
12
+ // the blocks are laid out in column space and scrolled by a transform on
13
+ // their container, so the pointer's column comes off the untransformed row
14
+ function onMouseMove(event, el) {
15
+ const { colWidth, scrollX, numColumns } = model;
16
+ const { left } = el.getBoundingClientRect();
17
+ const col = Math.floor((event.clientX - left - scrollX) / colWidth);
18
+ const hit = col >= 0 && col < numColumns;
19
+ model.setMousePos(hit ? col : undefined, undefined);
20
+ if (tooltip) {
21
+ setHover(hit ? { col, x: event.clientX, y: event.clientY } : undefined);
22
+ }
23
+ }
24
+ function onMouseLeave() {
25
+ setHover(undefined);
26
+ model.setMousePos(undefined, undefined);
27
+ }
28
+ return { hover: tooltip ? hover : undefined, onMouseMove, onMouseLeave };
29
+ }
30
+ //# sourceMappingURL=useTrackHover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrackHover.js","sourceRoot":"","sources":["../../../src/components/tracks/useTrackHover.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAKhC;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,GAIR;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAyC,CAAA;IAE3E,yEAAyE;IACzE,2EAA2E;IAC3E,SAAS,WAAW,CAAC,KAAuB,EAAE,EAAe;QAC3D,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;QAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,qBAAqB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAA;QACnE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,UAAU,CAAA;QACxC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACnD,IAAI,OAAO,EAAE,CAAC;YACZ,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAED,SAAS,YAAY;QACnB,QAAQ,CAAC,SAAS,CAAC,CAAA;QACnB,KAAK,CAAC,WAAW,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA;AAC1E,CAAC"}
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import type { MsaViewModel } from '../../model.ts';
3
+ /**
4
+ * The label of each bracket, in the gutter beside its bar, where the canvas
5
+ * draws the bar itself. The text is DOM text, turned on its side for a clade
6
+ * shorter than the font, the way the strip headers are; the SVG export draws
7
+ * the same labels with a `rotate(-90)`.
8
+ */
9
+ declare const CladeLabels: ({ model }: {
10
+ model: MsaViewModel;
11
+ }) => React.JSX.Element | null;
12
+ export default CladeLabels;
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { useTheme } from '@mui/material';
3
+ import { observer } from 'mobx-react';
4
+ import { bracketGap, cladeHeight, cladeInGutter, cladeLabelHorizontal, cladeLabelOffset, } from './cladeBrackets.js';
5
+ /**
6
+ * The label of each bracket, in the gutter beside its bar, where the canvas
7
+ * draws the bar itself. The text is DOM text, turned on its side for a clade
8
+ * shorter than the font, the way the strip headers are; the SVG export draws
9
+ * the same labels with a `rotate(-90)`.
10
+ */
11
+ const CladeLabels = observer(function ({ model }) {
12
+ const { resolvedClades, cladeGutterWidth, rowHeight, treeAreaWidth, fontSize, } = model;
13
+ const theme = useTheme();
14
+ if (cladeGutterWidth === 0) {
15
+ return null;
16
+ }
17
+ const gutterLeft = treeAreaWidth - cladeGutterWidth;
18
+ return (React.createElement(React.Fragment, null, resolvedClades.map((clade, index) => {
19
+ const { label, markColor, rows } = clade;
20
+ if (!label || !cladeInGutter(clade)) {
21
+ return null;
22
+ }
23
+ const left = gutterLeft + cladeLabelOffset(clade);
24
+ const horizontal = cladeLabelHorizontal(clade, rowHeight, fontSize);
25
+ return (React.createElement("div", { key: `${rows[0]}-${rows[1]}-${index}`, title: label, style: {
26
+ position: 'absolute',
27
+ left,
28
+ top: rows[0] * rowHeight,
29
+ width: treeAreaWidth - left - bracketGap,
30
+ height: cladeHeight(clade, rowHeight),
31
+ display: 'flex',
32
+ alignItems: 'center',
33
+ color: markColor ?? theme.palette.text.primary,
34
+ fontSize,
35
+ overflow: 'hidden',
36
+ textOverflow: 'ellipsis',
37
+ whiteSpace: 'nowrap',
38
+ pointerEvents: 'none',
39
+ // vertical-rl reads top to bottom, and the half turn makes it
40
+ // read upwards, which is what rotate(-90) exports
41
+ ...(horizontal
42
+ ? {}
43
+ : { writingMode: 'vertical-rl', transform: 'rotate(180deg)' }),
44
+ } }, label));
45
+ })));
46
+ });
47
+ export default CladeLabels;
48
+ //# sourceMappingURL=CladeLabels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CladeLabels.js","sourceRoot":"","sources":["../../../src/components/tree/CladeLabels.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAErC,OAAO,EACL,UAAU,EACV,WAAW,EACX,aAAa,EACb,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,oBAAoB,CAAA;AAI3B;;;;;GAKG;AACH,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACvE,MAAM,EACJ,cAAc,EACd,gBAAgB,EAChB,SAAS,EACT,aAAa,EACb,QAAQ,GACT,GAAG,KAAK,CAAA;IACT,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAA;IACxB,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,UAAU,GAAG,aAAa,GAAG,gBAAgB,CAAA;IACnD,OAAO,CACL,0CACG,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACnC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;QACxC,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACjD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAA;QACnE,OAAO,CACL,6BACE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EACrC,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE;gBACL,QAAQ,EAAE,UAAU;gBACpB,IAAI;gBACJ,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS;gBACxB,KAAK,EAAE,aAAa,GAAG,IAAI,GAAG,UAAU;gBACxC,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC;gBACrC,OAAO,EAAE,MAAM;gBACf,UAAU,EAAE,QAAQ;gBACpB,KAAK,EAAE,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO;gBAC9C,QAAQ;gBACR,QAAQ,EAAE,QAAQ;gBAClB,YAAY,EAAE,UAAU;gBACxB,UAAU,EAAE,QAAQ;gBACpB,aAAa,EAAE,MAAM;gBACrB,8DAA8D;gBAC9D,kDAAkD;gBAClD,GAAG,CAAC,UAAU;oBACZ,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;aACjE,IAEA,KAAK,CACF,CACP,CAAA;IACH,CAAC,CAAC,CACD,CACJ,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,WAAW,CAAA"}
@@ -4,6 +4,7 @@ import { observer } from 'mobx-react';
4
4
  import { useCanvasAutorun } from '../../useCanvasAutorun.js';
5
5
  import { useWheelScroll } from '../../useWheelScroll.js';
6
6
  import { referenceColor, treeHoverColor } from '../overlayColors.js';
7
+ import CladeLabels from './CladeLabels.js';
7
8
  import TreeCanvasBlock from './TreeCanvasBlock.js';
8
9
  const TreeCanvas = observer(function ({ model }) {
9
10
  const ref = useRef(null);
@@ -55,7 +56,9 @@ const TreeCanvas = observer(function ({ model }) {
55
56
  left: 0,
56
57
  transform: `translateY(${scrollY}px)`,
57
58
  willChange: 'transform',
58
- } }, blocksY.map(block => (React.createElement(TreeCanvasBlock, { key: block, model: model, offsetY: block })))),
59
+ } },
60
+ blocksY.map(block => (React.createElement(TreeCanvasBlock, { key: block, model: model, offsetY: block }))),
61
+ React.createElement(CladeLabels, { model: model })),
59
62
  React.createElement("canvas", { ref: mouseoverRef, width: treeAreaWidth, height: height, style: {
60
63
  position: 'absolute',
61
64
  top: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"TreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/TreeCanvas.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/TreeCanvas.tsx"],"names":[],"mappings":"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"}