react-msaview 6.5.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (414) hide show
  1. package/README.md +13 -11
  2. package/bundle/index.js +122 -112
  3. package/bundle/index.js.map +4 -4
  4. package/dist/colorSchemes.js +1 -2
  5. package/dist/colorSchemes.js.map +1 -1
  6. package/dist/columnStats.d.ts +28 -0
  7. package/dist/columnStats.js +34 -0
  8. package/dist/columnStats.js.map +1 -0
  9. package/dist/components/DragHandle.d.ts +3 -2
  10. package/dist/components/DragHandle.js +11 -5
  11. package/dist/components/DragHandle.js.map +1 -1
  12. package/dist/components/Loading.js +2 -2
  13. package/dist/components/Loading.js.map +1 -1
  14. package/dist/components/MSAView.js +17 -6
  15. package/dist/components/MSAView.js.map +1 -1
  16. package/dist/components/MSAViewer.d.ts +69 -4
  17. package/dist/components/MSAViewer.js +201 -8
  18. package/dist/components/MSAViewer.js.map +1 -1
  19. package/dist/components/PortalTooltip.d.ts +11 -0
  20. package/dist/components/PortalTooltip.js +29 -0
  21. package/dist/components/PortalTooltip.js.map +1 -0
  22. package/dist/components/ResizeHandles.d.ts +3 -3
  23. package/dist/components/ResizeHandles.js +13 -24
  24. package/dist/components/ResizeHandles.js.map +1 -1
  25. package/dist/components/SequenceTextArea.js +3 -3
  26. package/dist/components/SequenceTextArea.js.map +1 -1
  27. package/dist/components/Track.js +41 -22
  28. package/dist/components/Track.js.map +1 -1
  29. package/dist/components/dialogs/{InterProScanDialog.d.ts → AnnotationFileDialog.d.ts} +2 -2
  30. package/dist/components/dialogs/AnnotationFileDialog.js +92 -0
  31. package/dist/components/dialogs/AnnotationFileDialog.js.map +1 -0
  32. package/dist/components/dialogs/ExportSVGDialog.js +5 -3
  33. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  34. package/dist/components/dialogs/FeatureDialog.js +13 -9
  35. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  36. package/dist/components/dialogs/TrackInfoDialog.js +1 -1
  37. package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
  38. package/dist/components/header/GappynessSlider.js +6 -11
  39. package/dist/components/header/GappynessSlider.js.map +1 -1
  40. package/dist/components/header/Header.js +7 -0
  41. package/dist/components/header/Header.js.map +1 -1
  42. package/dist/components/header/HeaderStatusArea.js +0 -2
  43. package/dist/components/header/HeaderStatusArea.js.map +1 -1
  44. package/dist/components/header/LoadWarnings.d.ts +6 -0
  45. package/dist/components/header/LoadWarnings.js +35 -0
  46. package/dist/components/header/LoadWarnings.js.map +1 -0
  47. package/dist/components/header/MultiAlignmentSelector.js +0 -0
  48. package/dist/components/header/MultiAlignmentSelector.js.map +1 -1
  49. package/dist/components/header/ScrollZoomIcons.d.ts +6 -0
  50. package/dist/components/header/ScrollZoomIcons.js +35 -0
  51. package/dist/components/header/ScrollZoomIcons.js.map +1 -0
  52. package/dist/components/header/TreeSettingsMenu.js +7 -1
  53. package/dist/components/header/TreeSettingsMenu.js.map +1 -1
  54. package/dist/components/header/UnshareableDataWarning.d.ts +6 -0
  55. package/dist/components/header/UnshareableDataWarning.js +40 -0
  56. package/dist/components/header/UnshareableDataWarning.js.map +1 -0
  57. package/dist/components/header/ZoomControls.js +49 -6
  58. package/dist/components/header/ZoomControls.js.map +1 -1
  59. package/dist/components/header/getAnnotationsMenu.js +11 -14
  60. package/dist/components/header/getAnnotationsMenu.js.map +1 -1
  61. package/dist/components/header/settingsMenuItems.js +10 -7
  62. package/dist/components/header/settingsMenuItems.js.map +1 -1
  63. package/dist/components/import/ImportForm.js +1 -1
  64. package/dist/components/import/ImportForm.js.map +1 -1
  65. package/dist/components/import/ImportFormExamples.js +2 -6
  66. package/dist/components/import/ImportFormExamples.js.map +1 -1
  67. package/dist/components/import/util.js +2 -0
  68. package/dist/components/import/util.js.map +1 -1
  69. package/dist/components/minimap/Minimap.js +1 -2
  70. package/dist/components/minimap/Minimap.js.map +1 -1
  71. package/dist/components/msa/AnnotationLegend.js +27 -19
  72. package/dist/components/msa/AnnotationLegend.js.map +1 -1
  73. package/dist/components/msa/MSACanvas.js +1 -1
  74. package/dist/components/msa/MSACanvas.js.map +1 -1
  75. package/dist/components/msa/MSACanvasBlock.js +17 -20
  76. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  77. package/dist/components/msa/MSAMouseoverCanvas.js +2 -1
  78. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  79. package/dist/components/msa/domainBandCursor.d.ts +7 -11
  80. package/dist/components/msa/domainBandCursor.js +7 -11
  81. package/dist/components/msa/domainBandCursor.js.map +1 -1
  82. package/dist/components/msa/drawFeatureSpans.d.ts +53 -0
  83. package/dist/components/msa/drawFeatureSpans.js +78 -0
  84. package/dist/components/msa/drawFeatureSpans.js.map +1 -0
  85. package/dist/components/msa/legendRows.d.ts +8 -0
  86. package/dist/components/msa/legendRows.js +16 -0
  87. package/dist/components/msa/legendRows.js.map +1 -0
  88. package/dist/components/msa/msaRaster.d.ts +30 -27
  89. package/dist/components/msa/msaRaster.js +193 -90
  90. package/dist/components/msa/msaRaster.js.map +1 -1
  91. package/dist/components/msa/packDomainLanes.d.ts +20 -0
  92. package/dist/components/msa/packDomainLanes.js +33 -0
  93. package/dist/components/msa/packDomainLanes.js.map +1 -0
  94. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +3 -1
  95. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +51 -87
  96. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  97. package/dist/components/msa/renderHighlights.d.ts +44 -4
  98. package/dist/components/msa/renderHighlights.js +99 -11
  99. package/dist/components/msa/renderHighlights.js.map +1 -1
  100. package/dist/components/msa/renderMSABlock.d.ts +1 -2
  101. package/dist/components/msa/renderMSABlock.js +28 -31
  102. package/dist/components/msa/renderMSABlock.js.map +1 -1
  103. package/dist/components/msa/renderMSAMouseover.js +9 -30
  104. package/dist/components/msa/renderMSAMouseover.js.map +1 -1
  105. package/dist/components/msa/tileColor.js +4 -7
  106. package/dist/components/msa/tileColor.js.map +1 -1
  107. package/dist/components/msa/useMsaBlockMouse.d.ts +5 -3
  108. package/dist/components/msa/useMsaBlockMouse.js +6 -6
  109. package/dist/components/msa/useMsaBlockMouse.js.map +1 -1
  110. package/dist/components/renderCtx.d.ts +1 -1
  111. package/dist/components/rowpanels/RowPanelBlock.d.ts +9 -0
  112. package/dist/components/rowpanels/RowPanelBlock.js +86 -0
  113. package/dist/components/rowpanels/RowPanelBlock.js.map +1 -0
  114. package/dist/components/rowpanels/RowPanelHeaders.d.ts +12 -0
  115. package/dist/components/rowpanels/RowPanelHeaders.js +38 -0
  116. package/dist/components/rowpanels/RowPanelHeaders.js.map +1 -0
  117. package/dist/components/{msa/ColumnStats.d.ts → rowpanels/RowPanels.d.ts} +2 -2
  118. package/dist/components/rowpanels/RowPanels.js +32 -0
  119. package/dist/components/rowpanels/RowPanels.js.map +1 -0
  120. package/dist/components/rowpanels/headerLayout.d.ts +1 -0
  121. package/dist/components/rowpanels/headerLayout.js +5 -0
  122. package/dist/components/rowpanels/headerLayout.js.map +1 -0
  123. package/dist/components/rowpanels/renderFeaturePanel.d.ts +21 -0
  124. package/dist/components/rowpanels/renderFeaturePanel.js +37 -0
  125. package/dist/components/rowpanels/renderFeaturePanel.js.map +1 -0
  126. package/dist/components/rowpanels/renderRowPanel.d.ts +23 -0
  127. package/dist/components/rowpanels/renderRowPanel.js +22 -0
  128. package/dist/components/rowpanels/renderRowPanel.js.map +1 -0
  129. package/dist/components/rowpanels/renderStrip.d.ts +20 -0
  130. package/dist/components/rowpanels/renderStrip.js +26 -0
  131. package/dist/components/rowpanels/renderStrip.js.map +1 -0
  132. package/dist/components/tracks/TrackBlocks.js +13 -16
  133. package/dist/components/tracks/TrackBlocks.js.map +1 -1
  134. package/dist/components/tracks/TrackTooltipContent.d.ts +15 -0
  135. package/dist/components/tracks/TrackTooltipContent.js +109 -0
  136. package/dist/components/tracks/TrackTooltipContent.js.map +1 -0
  137. package/dist/components/tracks/drawTracks.d.ts +30 -12
  138. package/dist/components/tracks/drawTracks.js +127 -34
  139. package/dist/components/tracks/drawTracks.js.map +1 -1
  140. package/dist/components/tracks/useTrackHover.d.ts +22 -0
  141. package/dist/components/tracks/useTrackHover.js +30 -0
  142. package/dist/components/tracks/useTrackHover.js.map +1 -0
  143. package/dist/components/tree/CladeLabels.d.ts +12 -0
  144. package/dist/components/tree/CladeLabels.js +48 -0
  145. package/dist/components/tree/CladeLabels.js.map +1 -0
  146. package/dist/components/tree/TreeCanvas.js +6 -4
  147. package/dist/components/tree/TreeCanvas.js.map +1 -1
  148. package/dist/components/tree/TreeCanvasBlock.js +6 -21
  149. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  150. package/dist/components/tree/TreeOverview.d.ts +14 -0
  151. package/dist/components/tree/TreeOverview.js +75 -0
  152. package/dist/components/tree/TreeOverview.js.map +1 -0
  153. package/dist/components/tree/TreeRuler.js +11 -5
  154. package/dist/components/tree/TreeRuler.js.map +1 -1
  155. package/dist/components/tree/cladeBrackets.d.ts +25 -0
  156. package/dist/components/tree/cladeBrackets.js +51 -0
  157. package/dist/components/tree/cladeBrackets.js.map +1 -0
  158. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -2
  159. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  160. package/dist/components/tree/renderTreeCanvas.d.ts +0 -1
  161. package/dist/components/tree/renderTreeCanvas.js +221 -47
  162. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  163. package/dist/components/tree/renderTreeOverview.d.ts +52 -0
  164. package/dist/components/tree/renderTreeOverview.js +138 -0
  165. package/dist/components/tree/renderTreeOverview.js.map +1 -0
  166. package/dist/components/tree/scaleBar.d.ts +10 -0
  167. package/dist/components/tree/scaleBar.js +24 -0
  168. package/dist/components/tree/scaleBar.js.map +1 -0
  169. package/dist/components/tree/useTreeHover.js +2 -4
  170. package/dist/components/tree/useTreeHover.js.map +1 -1
  171. package/dist/constants.d.ts +18 -1
  172. package/dist/constants.js +51 -8
  173. package/dist/constants.js.map +1 -1
  174. package/dist/createPaletteMap.d.ts +7 -6
  175. package/dist/createPaletteMap.js +10 -9
  176. package/dist/createPaletteMap.js.map +1 -1
  177. package/dist/element.d.ts +13 -0
  178. package/dist/element.js +269 -0
  179. package/dist/element.js.map +1 -0
  180. package/dist/featureFields.d.ts +11 -0
  181. package/dist/featureFields.js +17 -0
  182. package/dist/featureFields.js.map +1 -0
  183. package/dist/fetchUtils.d.ts +7 -7
  184. package/dist/fetchUtils.js +4 -32
  185. package/dist/fetchUtils.js.map +1 -1
  186. package/dist/flatToTree.js +1 -2
  187. package/dist/flatToTree.js.map +1 -1
  188. package/dist/ggplotPalettes.d.ts +10 -0
  189. package/dist/ggplotPalettes.js +58 -0
  190. package/dist/ggplotPalettes.js.map +1 -1
  191. package/dist/hierarchy.d.ts +29 -1
  192. package/dist/hierarchy.js +82 -19
  193. package/dist/hierarchy.js.map +1 -1
  194. package/dist/index.d.ts +10 -1
  195. package/dist/index.js +10 -2
  196. package/dist/index.js.map +1 -1
  197. package/dist/model/DataModel.js +4 -4
  198. package/dist/model/DataModel.js.map +1 -1
  199. package/dist/model/msaModel.d.ts +3 -2
  200. package/dist/model/msaModel.js +3 -2
  201. package/dist/model/msaModel.js.map +1 -1
  202. package/dist/model/treeModel.d.ts +30 -0
  203. package/dist/model/treeModel.js +37 -1
  204. package/dist/model/treeModel.js.map +1 -1
  205. package/dist/model.d.ts +792 -259
  206. package/dist/model.js +2092 -675
  207. package/dist/model.js.map +1 -1
  208. package/dist/mount.d.ts +11 -0
  209. package/dist/mount.js +22 -0
  210. package/dist/mount.js.map +1 -0
  211. package/dist/neighborJoining.js +8 -32
  212. package/dist/neighborJoining.js.map +1 -1
  213. package/dist/renderToStaticMarkup.d.ts +15 -13
  214. package/dist/renderToStaticMarkup.js +37 -25
  215. package/dist/renderToStaticMarkup.js.map +1 -1
  216. package/dist/renderToSvg.js +198 -68
  217. package/dist/renderToSvg.js.map +1 -1
  218. package/dist/rowCoordinateCalculations.d.ts +26 -28
  219. package/dist/rowCoordinateCalculations.js +13 -39
  220. package/dist/rowCoordinateCalculations.js.map +1 -1
  221. package/dist/scales.d.ts +22 -0
  222. package/dist/scales.js +30 -0
  223. package/dist/scales.js.map +1 -0
  224. package/dist/seqPosToGlobalCol.d.ts +2 -3
  225. package/dist/seqPosToGlobalCol.js +5 -4
  226. package/dist/seqPosToGlobalCol.js.map +1 -1
  227. package/dist/sequenceLogo.d.ts +6 -11
  228. package/dist/sequenceLogo.js +6 -11
  229. package/dist/sequenceLogo.js.map +1 -1
  230. package/dist/stripDefault.d.ts +7 -14
  231. package/dist/stripDefault.js +7 -14
  232. package/dist/stripDefault.js.map +1 -1
  233. package/dist/svgTestUtil.d.ts +306 -124
  234. package/dist/types.d.ts +295 -3
  235. package/dist/umd.d.ts +2 -0
  236. package/dist/umd.js +4 -2
  237. package/dist/umd.js.map +1 -1
  238. package/dist/useCanvasAutorun.d.ts +5 -10
  239. package/dist/useCanvasAutorun.js +5 -10
  240. package/dist/useCanvasAutorun.js.map +1 -1
  241. package/dist/useMsaSvgFigure.d.ts +20 -0
  242. package/dist/useMsaSvgFigure.js +46 -0
  243. package/dist/useMsaSvgFigure.js.map +1 -0
  244. package/dist/util.d.ts +10 -4
  245. package/dist/util.js +37 -10
  246. package/dist/util.js.map +1 -1
  247. package/dist/version.d.ts +1 -1
  248. package/dist/version.js +1 -1
  249. package/dist/wuss.d.ts +14 -0
  250. package/dist/wuss.js +55 -0
  251. package/dist/wuss.js.map +1 -0
  252. package/package.json +23 -14
  253. package/src/colorSchemes.ts +1 -2
  254. package/src/columnStats.ts +58 -0
  255. package/src/components/DragHandle.tsx +18 -7
  256. package/src/components/Loading.tsx +14 -8
  257. package/src/components/MSAView.tsx +19 -5
  258. package/src/components/MSAViewer.tsx +326 -10
  259. package/src/components/PortalTooltip.tsx +47 -0
  260. package/src/components/ResizeHandles.tsx +21 -36
  261. package/src/components/SequenceTextArea.tsx +3 -3
  262. package/src/components/Track.tsx +55 -18
  263. package/src/components/dialogs/AnnotationFileDialog.tsx +162 -0
  264. package/src/components/dialogs/ExportSVGDialog.tsx +7 -2
  265. package/src/components/dialogs/FeatureDialog.tsx +13 -9
  266. package/src/components/dialogs/TrackInfoDialog.tsx +1 -1
  267. package/src/components/header/GappynessSlider.tsx +6 -11
  268. package/src/components/header/Header.tsx +10 -0
  269. package/src/components/header/HeaderStatusArea.tsx +0 -5
  270. package/src/components/header/LoadWarnings.tsx +48 -0
  271. package/src/components/header/MultiAlignmentSelector.tsx +0 -0
  272. package/src/components/header/ScrollZoomIcons.tsx +52 -0
  273. package/src/components/header/TreeSettingsMenu.tsx +7 -1
  274. package/src/components/header/UnshareableDataWarning.tsx +56 -0
  275. package/src/components/header/ZoomControls.tsx +74 -14
  276. package/src/components/header/getAnnotationsMenu.ts +13 -17
  277. package/src/components/header/settingsMenuItems.ts +11 -6
  278. package/src/components/import/ImportForm.tsx +2 -2
  279. package/src/components/import/ImportFormExamples.tsx +4 -8
  280. package/src/components/import/util.ts +2 -0
  281. package/src/components/minimap/Minimap.tsx +1 -2
  282. package/src/components/msa/AnnotationLegend.tsx +48 -38
  283. package/src/components/msa/MSACanvas.tsx +3 -5
  284. package/src/components/msa/MSACanvasBlock.tsx +17 -21
  285. package/src/components/msa/MSAMouseoverCanvas.tsx +2 -1
  286. package/src/components/msa/domainBandCursor.ts +7 -11
  287. package/src/components/msa/drawFeatureSpans.ts +150 -0
  288. package/src/components/msa/legendRows.ts +24 -0
  289. package/src/components/msa/msaRaster.ts +236 -88
  290. package/src/components/msa/packDomainLanes.ts +36 -0
  291. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +69 -123
  292. package/src/components/msa/renderHighlights.ts +141 -10
  293. package/src/components/msa/renderMSABlock.ts +29 -38
  294. package/src/components/msa/renderMSAMouseover.ts +9 -39
  295. package/src/components/msa/tileColor.ts +4 -7
  296. package/src/components/msa/useMsaBlockMouse.ts +6 -6
  297. package/src/components/renderCtx.ts +1 -0
  298. package/src/components/rowpanels/RowPanelBlock.tsx +139 -0
  299. package/src/components/rowpanels/RowPanelHeaders.tsx +57 -0
  300. package/src/components/rowpanels/RowPanels.tsx +77 -0
  301. package/src/components/rowpanels/headerLayout.ts +5 -0
  302. package/src/components/rowpanels/renderFeaturePanel.ts +66 -0
  303. package/src/components/rowpanels/renderRowPanel.ts +41 -0
  304. package/src/components/rowpanels/renderStrip.ts +46 -0
  305. package/src/components/tracks/TrackBlocks.tsx +13 -18
  306. package/src/components/tracks/TrackTooltipContent.tsx +156 -0
  307. package/src/components/tracks/drawTracks.ts +169 -38
  308. package/src/components/tracks/useTrackHover.ts +42 -0
  309. package/src/components/tree/CladeLabels.tsx +77 -0
  310. package/src/components/tree/TreeCanvas.tsx +4 -3
  311. package/src/components/tree/TreeCanvasBlock.tsx +10 -32
  312. package/src/components/tree/TreeOverview.tsx +106 -0
  313. package/src/components/tree/TreeRuler.tsx +29 -5
  314. package/src/components/tree/cladeBrackets.ts +73 -0
  315. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +2 -2
  316. package/src/components/tree/renderTreeCanvas.ts +312 -48
  317. package/src/components/tree/renderTreeOverview.ts +212 -0
  318. package/src/components/tree/scaleBar.ts +23 -0
  319. package/src/components/tree/useTreeHover.ts +2 -4
  320. package/src/constants.ts +61 -8
  321. package/src/createPaletteMap.ts +10 -9
  322. package/src/element.ts +321 -0
  323. package/src/featureFields.ts +19 -0
  324. package/src/fetchUtils.ts +7 -40
  325. package/src/flatToTree.ts +1 -2
  326. package/src/ggplotPalettes.ts +60 -0
  327. package/src/hierarchy.ts +97 -20
  328. package/src/index.ts +46 -6
  329. package/src/model/DataModel.ts +5 -4
  330. package/src/model/msaModel.ts +3 -2
  331. package/src/model/treeModel.ts +42 -0
  332. package/src/model.ts +2492 -793
  333. package/src/mount.tsx +32 -0
  334. package/src/neighborJoining.ts +8 -32
  335. package/src/rawImports.d.ts +9 -0
  336. package/src/renderToStaticMarkup.ts +41 -25
  337. package/src/renderToSvg.tsx +365 -92
  338. package/src/rowCoordinateCalculations.ts +16 -62
  339. package/src/scales.ts +47 -0
  340. package/src/seqPosToGlobalCol.ts +5 -4
  341. package/src/sequenceLogo.ts +6 -11
  342. package/src/stripDefault.ts +7 -14
  343. package/src/types.ts +352 -12
  344. package/src/umd.ts +4 -2
  345. package/src/useCanvasAutorun.ts +5 -10
  346. package/src/useMsaSvgFigure.ts +72 -0
  347. package/src/util.ts +40 -14
  348. package/src/version.ts +1 -1
  349. package/src/wuss.ts +62 -0
  350. package/dist/components/dialogs/InterProScanDialog.js +0 -137
  351. package/dist/components/dialogs/InterProScanDialog.js.map +0 -1
  352. package/dist/components/dialogs/InterProScanFileDialog.d.ts +0 -7
  353. package/dist/components/dialogs/InterProScanFileDialog.js +0 -64
  354. package/dist/components/dialogs/InterProScanFileDialog.js.map +0 -1
  355. package/dist/components/msa/ColumnStats.js +0 -42
  356. package/dist/components/msa/ColumnStats.js.map +0 -1
  357. package/dist/launchInterProScan.d.ts +0 -13
  358. package/dist/launchInterProScan.js +0 -110
  359. package/dist/launchInterProScan.js.map +0 -1
  360. package/dist/useColorContrast.d.ts +0 -10
  361. package/dist/useColorContrast.js +0 -13
  362. package/dist/useColorContrast.js.map +0 -1
  363. package/src/clustalX.test.ts +0 -74
  364. package/src/colSpace.test.ts +0 -67
  365. package/src/collapseLogic.test.ts +0 -115
  366. package/src/colorSchemes.docs.test.ts +0 -57
  367. package/src/columnCounts.test.ts +0 -73
  368. package/src/columnStats.test.ts +0 -94
  369. package/src/columnTracks.test.ts +0 -97
  370. package/src/components/dialogs/InterProScanDialog.tsx +0 -214
  371. package/src/components/dialogs/InterProScanFileDialog.tsx +0 -138
  372. package/src/components/minimap/minimapLayout.test.ts +0 -71
  373. package/src/components/msa/ColumnStats.tsx +0 -54
  374. package/src/components/msa/msaRaster.test.ts +0 -145
  375. package/src/components/msa/renderBoxFeatureCanvasBlock.test.ts +0 -51
  376. package/src/components/tree/renderTreeCanvas.test.ts +0 -296
  377. package/src/dataInitialized.test.ts +0 -42
  378. package/src/domainBands.test.ts +0 -122
  379. package/src/domainLetterColor.test.ts +0 -80
  380. package/src/exportFileName.test.ts +0 -40
  381. package/src/fetchUtils.test.ts +0 -83
  382. package/src/flatToTree.test.ts +0 -51
  383. package/src/hierarchy.test.ts +0 -228
  384. package/src/highlights.test.ts +0 -70
  385. package/src/impgRender.test.tsx +0 -68
  386. package/src/largeTree.test.ts +0 -67
  387. package/src/launchInterProScan.ts +0 -167
  388. package/src/loadErrorDisplay.test.tsx +0 -102
  389. package/src/modelFilehandleLoaders.test.ts +0 -137
  390. package/src/modelReset.test.ts +0 -120
  391. package/src/neighborJoining.test.ts +0 -164
  392. package/src/parseAsn1.test.ts +0 -36
  393. package/src/propertyConservation.test.ts +0 -36
  394. package/src/renderColumnTracksSvg.test.tsx +0 -108
  395. package/src/renderDomainsSvg.test.tsx +0 -118
  396. package/src/renderHighlightsSvg.test.tsx +0 -85
  397. package/src/renderMinimapSvg.test.tsx +0 -62
  398. package/src/renderRasterSvg.test.tsx +0 -144
  399. package/src/renderSequenceLogoSvg.test.tsx +0 -165
  400. package/src/renderToSvg.test.tsx +0 -65
  401. package/src/reset.test.ts +0 -61
  402. package/src/rowCoordinateCalculations.test.ts +0 -211
  403. package/src/rowSpace.test.ts +0 -46
  404. package/src/segmentOverlay.test.ts +0 -70
  405. package/src/seqPosToGlobalCol.test.ts +0 -59
  406. package/src/sequenceLogo.test.ts +0 -88
  407. package/src/setFontSize.test.ts +0 -33
  408. package/src/stripDefault.test.ts +0 -48
  409. package/src/stripDefaultSnapshot.test.ts +0 -87
  410. package/src/treeMetadata.test.ts +0 -39
  411. package/src/useCanvasAutorun.test.tsx +0 -98
  412. package/src/useColorContrast.ts +0 -18
  413. package/src/viewChrome.test.tsx +0 -134
  414. package/src/wheelZoom.test.ts +0 -46
@@ -1,21 +1,14 @@
1
+ import { colord } from 'colord';
1
2
  import { flushSync } from 'react-dom';
2
3
  import { createRoot } from 'react-dom/client';
3
4
  /**
4
5
  * Render a React element to a static markup string, for the SVG export.
5
6
  *
6
- * Inlined rather than imported from `@jbrowse/core/util` on purpose, and this
7
- * one is the removal direction of the rule in CLAUDE.md rather than the
8
- * addition direction. Core dropped `renderToStaticMarkup` from that barrel in
9
- * jbrowse-components 0d034e2bd8 -- deliberately, because it was the barrel's
10
- * only reach into react-dom and the barrel is loaded in the RPC worker, which
11
- * never renders. The export path is the only caller, so nothing here or in
12
- * jbrowse-plugin-msaview/-tview failed to build, lint, typecheck, or boot; the
13
- * published 3.4.0 and 2.2.1 bundles simply threw the first time a user asked
14
- * for an SVG on a v5 host.
15
- *
16
- * A rendering library asking its host for a renderer was the odd coupling. Both
17
- * `react-dom` and `react-dom/client` are long-established host externals, so
18
- * this costs a few hundred bytes in the plugin bundle and no duplicate react.
7
+ * Inlined because core removed `renderToStaticMarkup` from the
8
+ * `@jbrowse/core/util` barrel in jbrowse-components 0d034e2bd8; see the
9
+ * `@jbrowse/core` note in CLAUDE.md. `react-dom` and `react-dom/client` are
10
+ * host externals, so this adds a few hundred bytes to the plugin bundle and no
11
+ * duplicate react.
19
12
  */
20
13
  export function renderToStaticMarkup(node) {
21
14
  const div = document.createElement('div');
@@ -28,19 +21,38 @@ export function renderToStaticMarkup(node) {
28
21
  html = div.innerHTML;
29
22
  }
30
23
  finally {
31
- // A real client root, not a server render: effects run, so every `observer`
32
- // in the tree gets a live MobX reaction. Left mounted, an export of a large
33
- // alignment keeps tens of thousands of detached nodes subscribed to the
34
- // model and re-rendering into a dead div on every pan and zoom, once per
35
- // export ever taken. The markup is a string by here and needs no DOM.
24
+ // effects run in a client root, so every `observer` holds a MobX reaction;
25
+ // a mounted export of a large alignment would keep tens of thousands of
26
+ // detached nodes re-rendering on every pan and zoom
36
27
  root.unmount();
37
28
  }
38
- // SVG 1.1 presentation attributes (`fill`, `stroke`) take a <color>, which
39
- // excludes rgba() -- alpha belongs in a separate fill-opacity. Illustrator and
40
- // older Inkscape drop an element whose fill they cannot parse, so alpha is
41
- // stripped rather than left to break the shape. MUI palette values are the
42
- // usual source. Dropping rather than converting is what the figure snapshots
43
- // encode.
44
- return html.replaceAll(/\brgba\((.+?),[^,]+?\)/g, 'rgb($1)');
29
+ return html;
30
+ }
31
+ const tag = /<[a-zA-Z][^>]*>/g;
32
+ const colorAttr = /\b(fill|stroke|stop-color)="([^"]+)"/g;
33
+ /**
34
+ * Rewrites every color an SVG 1.1 presentation attribute cannot hold.
35
+ *
36
+ * `fill`, `stroke` and `stop-color` take a keyword, a hex triplet or rgb(). MUI
37
+ * palette values use rgba() and the percent-identity scheme uses hsl(), and
38
+ * Illustrator and older Inkscape drop an element whose fill they cannot parse.
39
+ * Alpha moves to the matching -opacity attribute unless the element already
40
+ * carries one.
41
+ */
42
+ export function svgSafeColors(html) {
43
+ return html.replaceAll(tag, el => el.replaceAll(colorAttr, (match, attr, value) => {
44
+ if (!/^(rgba|hsl)/i.test(value)) {
45
+ return match;
46
+ }
47
+ const color = colord(value);
48
+ if (!color.isValid()) {
49
+ return match;
50
+ }
51
+ const alpha = color.alpha();
52
+ const hex = color.alpha(1).toHex();
53
+ return alpha === 1 || el.includes(`${attr}-opacity=`)
54
+ ? `${attr}="${hex}"`
55
+ : `${attr}="${hex}" ${attr}-opacity="${alpha}"`;
56
+ }));
45
57
  }
46
58
  //# sourceMappingURL=renderToStaticMarkup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderToStaticMarkup.js","sourceRoot":"","sources":["../src/renderToStaticMarkup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,IAAI,GAAG,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;YAAS,CAAC;QACT,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IACD,2EAA2E;IAC3E,+EAA+E;IAC/E,2EAA2E;IAC3E,2EAA2E;IAC3E,6EAA6E;IAC7E,UAAU;IACV,OAAO,IAAI,CAAC,UAAU,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAA;AAC9D,CAAC"}
1
+ {"version":3,"file":"renderToStaticMarkup.js","sourceRoot":"","sources":["../src/renderToStaticMarkup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAI7C;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAwB;IAC3D,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC5B,IAAI,IAAY,CAAA;IAChB,IAAI,CAAC;QACH,SAAS,CAAC,GAAG,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,IAAI,GAAG,GAAG,CAAC,SAAS,CAAA;IACtB,CAAC;YAAS,CAAC;QACT,2EAA2E;QAC3E,wEAAwE;QACxE,oDAAoD;QACpD,IAAI,CAAC,OAAO,EAAE,CAAA;IAChB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,GAAG,GAAG,kBAAkB,CAAA;AAC9B,MAAM,SAAS,GAAG,uCAAuC,CAAA;AAEzD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAC/B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE;QAC9D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;YACrB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QAClC,OAAO,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,WAAW,CAAC;YACnD,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,GAAG;YACpB,CAAC,CAAC,GAAG,IAAI,KAAK,GAAG,KAAK,IAAI,aAAa,KAAK,GAAG,CAAA;IACnD,CAAC,CAAC,CACH,CAAA;AACH,CAAC"}
@@ -3,34 +3,44 @@ import React from 'react';
3
3
  import { when } from 'mobx';
4
4
  import { visibleRowRange } from './components/getVisibleLeaves.js';
5
5
  import MinimapSVG from './components/minimap/MinimapSVG.js';
6
+ import { legendRows } from './components/msa/legendRows.js';
6
7
  import { rasterImageHref, rasterSupported } from './components/msa/msaRaster.js';
7
8
  import { renderBoxFeatureCanvasBlock } from './components/msa/renderBoxFeatureCanvasBlock.js';
8
- import { renderHighlights } from './components/msa/renderHighlights.js';
9
+ import { renderPersistentHighlights } from './components/msa/renderHighlights.js';
9
10
  import { renderMSABlock } from './components/msa/renderMSABlock.js';
10
11
  import { visibleColRange } from './components/msa/visibleColRange.js';
12
+ import { headerRunsAcross } from './components/rowpanels/headerLayout.js';
13
+ import { renderRowPanels } from './components/rowpanels/renderRowPanel.js';
11
14
  import { renderAllTracks } from './components/tracks/drawTracks.js';
15
+ import { bracketGap, cladeHeight, cladeInGutter, cladeLabelHorizontal, cladeLabelOffset, } from './components/tree/cladeBrackets.js';
12
16
  import { renderTreeCanvas } from './components/tree/renderTreeCanvas.js';
13
- import { renderToStaticMarkup } from './renderToStaticMarkup.js';
14
- import { colorContrast } from './util.js';
15
- // domain-legend geometry, shared by the width calculation and the renderer so
16
- // the reserved column on the right exactly fits the drawn legend
17
+ import { renderTreeOverview } from './components/tree/renderTreeOverview.js';
18
+ import { treeScaleBarHeight } from './constants.js';
19
+ import { measureTextCanvas } from './measureTextCanvas.js';
20
+ import { renderToStaticMarkup, svgSafeColors } from './renderToStaticMarkup.js';
21
+ import { outlineColor } from './util.js';
22
+ // legend geometry, shared by the width calculation and the renderer so the
23
+ // reserved column on the right exactly fits the drawn legends
17
24
  const LEGEND_PAD = 8;
18
25
  const LEGEND_ROW_H = 16;
19
26
  const LEGEND_SWATCH = 12;
20
27
  const LEGEND_FONT = 12;
21
28
  const LEGEND_CHAR_W = 7;
29
+ // the width of a character as a fraction of the font size, close enough for a
30
+ // sans-serif average
31
+ const CHAR_WIDTH = 0.6;
22
32
  const LEGEND_MAX_W = 360;
23
33
  const LEGEND_TEXT_X = LEGEND_PAD + LEGEND_SWATCH + 6;
24
- function getLegendWidth(model) {
25
- const maxLen = model.visibleDomainTypes.reduce((a, d) => Math.max(a, d.name.length), 0);
34
+ function getLegendWidth(rows) {
35
+ const maxLen = rows.reduce((a, r) => Math.max(a, r.label.length), 0);
26
36
  const w = LEGEND_TEXT_X + LEGEND_PAD + maxLen * LEGEND_CHAR_W;
27
37
  return Math.min(LEGEND_MAX_W, Math.max(120, w));
28
38
  }
29
- function legendHeight(domainTypes) {
30
- return LEGEND_PAD * 2 + domainTypes.length * LEGEND_ROW_H;
39
+ function legendHeight(rows) {
40
+ return LEGEND_PAD * 2 + rows.length * LEGEND_ROW_H;
31
41
  }
32
42
  function getLayout(model, opts) {
33
- const { scrollX, scrollY, totalWidth, totalHeight, treeAreaWidth, totalTrackAreaHeight, minimapHeight, msaAreaHeight, msaCanvasWidth, showHorizontalScrollbar, } = model;
43
+ const { scrollX, scrollY, totalWidth, totalHeight, treeAreaWidth, rowPanelsWidth, rowPanelsHeaderHeight, totalTrackAreaHeight, minimapHeight, msaAreaHeight, msaCanvasWidth, showHorizontalScrollbar, treeOverviewHeight, treeScaleBar, } = model;
34
44
  const trackHeight = opts.includeTracks ? totalTrackAreaHeight : 0;
35
45
  // the minimap reflects the live viewport scroll position, so it's only
36
46
  // meaningful for a viewport export, never for the entire alignment -- and
@@ -39,9 +49,10 @@ function getLayout(model, opts) {
39
49
  const includeMinimap = opts.exportType === 'viewport' &&
40
50
  !!opts.includeMinimap &&
41
51
  showHorizontalScrollbar;
42
- const legendWidth = model.actuallyShowDomains && model.visibleDomainTypes.length > 0
43
- ? getLegendWidth(model)
44
- : 0;
52
+ const rows = legendRows(model.legends);
53
+ const legendWidth = rows.length > 0 ? getLegendWidth(rows) : 0;
54
+ const topHeight = Math.max(includeMinimap ? minimapHeight : 0, rowPanelsHeaderHeight, treeOverviewHeight + (treeScaleBar ? treeScaleBarHeight : 0));
55
+ const gutterWidth = treeAreaWidth + rowPanelsWidth;
45
56
  // width stays content-only; the legend occupies an extra column added at the
46
57
  // svg root in MsaSvg. The viewport export takes the alignment canvas's own
47
58
  // size rather than the widget's -- the widget box also covers the header, the
@@ -49,22 +60,24 @@ function getLayout(model, opts) {
49
60
  // columns the scrollbars hide on screen
50
61
  return opts.exportType === 'entire'
51
62
  ? {
52
- width: totalWidth + treeAreaWidth,
63
+ width: totalWidth + gutterWidth,
53
64
  msaAreaWidth: totalWidth,
54
- height: totalHeight + trackHeight,
65
+ height: totalHeight + trackHeight + topHeight,
55
66
  contentHeight: totalHeight,
56
67
  trackHeight,
68
+ topHeight,
57
69
  offsetX: 0,
58
70
  offsetY: 0,
59
71
  includeMinimap,
60
72
  legendWidth,
61
73
  }
62
74
  : {
63
- width: msaCanvasWidth + treeAreaWidth,
75
+ width: msaCanvasWidth + gutterWidth,
64
76
  msaAreaWidth: msaCanvasWidth,
65
- height: msaAreaHeight + (includeMinimap ? minimapHeight : 0) + trackHeight,
77
+ height: msaAreaHeight + topHeight + trackHeight,
66
78
  contentHeight: msaAreaHeight,
67
79
  trackHeight,
80
+ topHeight,
68
81
  offsetX: -scrollX,
69
82
  offsetY: -scrollY,
70
83
  includeMinimap,
@@ -79,55 +92,152 @@ export async function renderToSvg(model, opts) {
79
92
  throw model.error;
80
93
  }
81
94
  const { Context } = await import('@jbrowse/svgcanvas');
82
- return renderToStaticMarkup(React.createElement(MsaSvg, { model: model, theme: opts.theme, Context: Context, layout: getLayout(model, opts) }));
95
+ // Each svgcanvas layer is already serialized SVG, and React would have to
96
+ // parse it into a second DOM only for the export to serialize it back out.
97
+ // The layers register themselves here instead, and their markup is spliced
98
+ // into the page as strings.
99
+ const layers = new Map();
100
+ const markup = renderToStaticMarkup(React.createElement(MsaSvg, { model: model, theme: opts.theme, Context: Context, layout: getLayout(model, opts), layers: layers }));
101
+ return svgSafeColors(markup.replaceAll(/<g data-layer="([^"]+)"><\/g>/g, (match, id) => {
102
+ const ctx = layers.get(id);
103
+ return ctx ? `<g id="${id}">${ctx.getSvg().innerHTML}</g>` : match;
104
+ }));
83
105
  }
84
- function MsaSvg({ model, theme, Context, layout, }) {
85
- const { width, trackHeight, includeMinimap, legendWidth } = layout;
86
- const { treeAreaWidth, minimapHeight, visibleDomainTypes } = model;
106
+ function MsaSvg({ model, theme, Context, layout, layers, }) {
107
+ const { width, trackHeight, includeMinimap, legendWidth, topHeight } = layout;
108
+ const { treeAreaWidth, rowPanelsWidth } = model;
87
109
  const totalWidth = width + legendWidth;
88
- const legendTop = includeMinimap ? minimapHeight : 0;
89
- // a short alignment with many domain types has a key taller than its rows,
110
+ const legendTop = topHeight;
111
+ // a short alignment with many legend entries has a key taller than its rows,
90
112
  // and the page has to hold the whole key
91
113
  const height = legendWidth > 0
92
- ? Math.max(layout.height, legendTop + legendHeight(visibleDomainTypes))
114
+ ? Math.max(layout.height, legendTop + legendHeight(legendRows(model.legends)))
93
115
  : layout.height;
94
- const contrastScheme = colorContrast(model.colorScheme, theme);
95
- const props = { Context, model, theme, layout, contrastScheme };
116
+ const props = { Context, model, theme, layout, layers };
96
117
  const body = (React.createElement(React.Fragment, null,
97
118
  trackHeight > 0 ? React.createElement(TrackRendering, { ...props }) : null,
98
119
  React.createElement("g", { transform: trackHeight > 0 ? `translate(0 ${trackHeight})` : undefined },
99
120
  React.createElement(CoreRendering, { ...props }))));
100
121
  return (React.createElement("svg", { width: totalWidth, height: height, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: `0 0 ${totalWidth} ${height}` },
101
122
  React.createElement("rect", { width: "100%", height: "100%", fill: theme.palette.background.default }),
102
- includeMinimap ? (React.createElement(React.Fragment, null,
103
- React.createElement("g", { transform: `translate(${treeAreaWidth} 0)` },
104
- React.createElement(MinimapSVG, { model: model, theme: theme })),
105
- React.createElement("g", { transform: `translate(0 ${minimapHeight})` }, body))) : (body),
106
- legendWidth > 0 ? (React.createElement("g", { transform: `translate(${width} ${legendTop})` },
123
+ topHeight > 0 ? (React.createElement(React.Fragment, null,
124
+ includeMinimap ? (React.createElement("g", { id: "minimap-panel", transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)` },
125
+ React.createElement(MinimapSVG, { model: model, theme: theme }))) : null,
126
+ React.createElement(RowPanelHeadersSVG, { model: model, theme: theme, bandHeight: topHeight }),
127
+ model.showTreeOverview ? (React.createElement(TreeOverviewSVG, { model: model, theme: theme, Context: Context, layers: layers })) : null,
128
+ React.createElement(TreeScaleBarSVG, { model: model, theme: theme }),
129
+ React.createElement("g", { transform: `translate(0 ${topHeight})` }, body))) : (body),
130
+ legendWidth > 0 ? (React.createElement("g", { id: "legend-panel", transform: `translate(${width} ${legendTop})` },
107
131
  React.createElement(LegendSVG, { model: model, theme: theme, width: legendWidth }))) : null));
108
132
  }
109
- // the domain color key drawn as a reserved column to the right of the
110
- // alignment, mirroring the on-screen AnnotationLegend overlay
133
+ // The tree overview in the top band, over the tree column, where the live view
134
+ // puts it. It is part of the figure rather than chrome: the inset is what says
135
+ // where the focused clade sits in the whole tree.
136
+ function TreeOverviewSVG({ model, theme, Context, layers, }) {
137
+ const { treeAreaWidth, overviewHeight, id } = model;
138
+ const ctx = new Context(treeAreaWidth, overviewHeight);
139
+ renderTreeOverview({
140
+ model,
141
+ ctx,
142
+ theme,
143
+ width: treeAreaWidth,
144
+ height: overviewHeight,
145
+ });
146
+ return (React.createElement(ClipGroup, { panelId: "tree-overview", clipId: `tree-overview-${id}`, width: treeAreaWidth, height: overviewHeight, ctx: ctx, layers: layers }));
147
+ }
148
+ // The branch-length scale bar under the tree overview, where the live view puts
149
+ // it (see TreeRuler). A phylogram whose branch lengths are drawn to a scale
150
+ // nothing states is a figure a reader cannot measure, so the export carries the
151
+ // bar even though it is chrome on screen.
152
+ function TreeScaleBarSVG({ model, theme, }) {
153
+ const { marginLeft, treeScaleBar: bar, treeOverviewHeight } = model;
154
+ if (!bar) {
155
+ return null;
156
+ }
157
+ const y = treeOverviewHeight + treeScaleBarHeight;
158
+ const color = theme.palette.text.primary;
159
+ return (React.createElement("g", { id: "tree-scalebar" },
160
+ React.createElement("text", { x: marginLeft, y: y - 9, fontSize: 10, fill: color }, bar.label),
161
+ React.createElement("path", { d: `M${marginLeft} ${y - 7} v6 h${bar.px} v-6`, fill: "none", stroke: color })));
162
+ }
163
+ // Each strip's header over the column it names, turned on its side, where the
164
+ // live view puts it (see RowPanelHeaders). The baseline runs up the figure, so
165
+ // the name sits to the left of it, the way TrackLabelsSVG offsets a horizontal
166
+ // baseline by a third of the font size.
167
+ function RowPanelHeadersSVG({ model, theme, bandHeight, }) {
168
+ const { resolvedRowPanels, treeAreaWidth, fontSize } = model;
169
+ const y = bandHeight - 4;
170
+ return resolvedRowPanels.length === 0 ? null : (React.createElement("g", { id: "rowpanel-headers" }, resolvedRowPanels.map(panel => {
171
+ const across = headerRunsAcross(panel.width);
172
+ const size = across ? fontSize : Math.min(fontSize, panel.width);
173
+ const center = treeAreaWidth + panel.offsetX + panel.width / 2;
174
+ const x = across ? center : center + size / 3;
175
+ const room = across ? panel.width : y - LEGEND_PAD;
176
+ const maxChars = Math.floor(room / (size * CHAR_WIDTH));
177
+ return size < 5 ? null : (React.createElement("text", { key: panel.id, x: x, y: y, ...(across
178
+ ? { textAnchor: 'middle' }
179
+ : { transform: `rotate(-90 ${x} ${y})` }), fontSize: size, fill: theme.palette.text.primary }, panel.header.length > maxChars
180
+ ? `${panel.header.slice(0, Math.max(1, maxChars - 1))}…`
181
+ : panel.header));
182
+ })));
183
+ }
184
+ // A label past the room it has, cut to what fits with an ellipsis. The measure
185
+ // is the one cladeGutterWidth sizes the gutter with, so a label the gutter
186
+ // holds keeps every character.
187
+ function clipCladeLabel(label, room, fontSize) {
188
+ const width = measureTextCanvas(label, fontSize);
189
+ if (width <= room) {
190
+ return label;
191
+ }
192
+ const fits = Math.floor((label.length * room) / width);
193
+ return `${label.slice(0, Math.max(1, fits - 1))}…`;
194
+ }
195
+ // Each bracket's label in the gutter beside its bar, where the live view puts
196
+ // it (see CladeLabels). The canvas layer draws the bar; a label longer than the
197
+ // gutter or the clade is clipped, since text that overruns runs off the figure.
198
+ function CladeLabelsSVG({ model, theme, offsetY, }) {
199
+ const { resolvedClades, cladeGutterWidth, rowHeight, treeAreaWidth, fontSize, } = model;
200
+ if (cladeGutterWidth === 0) {
201
+ return null;
202
+ }
203
+ const gutterLeft = treeAreaWidth - cladeGutterWidth;
204
+ return (React.createElement("g", { id: "clade-labels" }, resolvedClades.map((clade, index) => {
205
+ const { label, markColor, rows } = clade;
206
+ if (!label || !cladeInGutter(clade)) {
207
+ return null;
208
+ }
209
+ const left = gutterLeft + cladeLabelOffset(clade);
210
+ const top = rows[0] * rowHeight - offsetY;
211
+ const height = cladeHeight(clade, rowHeight);
212
+ const horizontal = cladeLabelHorizontal(clade, rowHeight, fontSize);
213
+ const room = horizontal ? treeAreaWidth - left - bracketGap : height;
214
+ const x = horizontal ? left : left + fontSize;
215
+ const y = horizontal ? top + height / 2 + fontSize / 3 : top + height;
216
+ return (React.createElement("text", { key: `${rows[0]}-${rows[1]}-${index}`, x: x, y: y, transform: horizontal ? undefined : `rotate(-90 ${x} ${y})`, fontSize: fontSize, fill: markColor ?? theme.palette.text.primary }, clipCladeLabel(label, room, fontSize)));
217
+ })));
218
+ }
219
+ // the color keys drawn as a reserved column to the right of the alignment,
220
+ // mirroring the on-screen AnnotationLegend overlay
111
221
  function LegendSVG({ model, theme, width, }) {
112
- const { visibleDomainTypes, fillPalette, strokePalette } = model;
113
- const boxHeight = legendHeight(visibleDomainTypes);
222
+ const rows = legendRows(model.legends);
223
+ const boxHeight = legendHeight(rows);
114
224
  // the column is capped at LEGEND_MAX_W, so a name too long for it has to be
115
225
  // clipped here -- text that overruns the reserved width runs off the figure
116
226
  const maxChars = Math.floor((width - LEGEND_TEXT_X - LEGEND_PAD) / LEGEND_CHAR_W);
117
227
  return (React.createElement("g", null,
118
228
  React.createElement("rect", { x: 0, y: 0, width: width - 4, height: boxHeight, fill: theme.palette.background.paper, stroke: theme.palette.divider, rx: 2 }),
119
- visibleDomainTypes.map((d, i) => {
229
+ rows.map((row, i) => {
120
230
  const y = LEGEND_PAD + i * LEGEND_ROW_H;
121
- return (React.createElement("g", { key: d.accession },
122
- React.createElement("rect", { x: LEGEND_PAD, y: y, width: LEGEND_SWATCH, height: LEGEND_SWATCH, fill: fillPalette[d.accession], stroke: strokePalette[d.accession] }),
123
- React.createElement("text", { x: LEGEND_TEXT_X, y: y + LEGEND_SWATCH - 1, fontSize: LEGEND_FONT, fill: theme.palette.text.primary }, d.name.length > maxChars
124
- ? `${d.name.slice(0, Math.max(1, maxChars - 1))}…`
125
- : d.name)));
231
+ return (React.createElement("g", { key: row.key },
232
+ row.color ? (React.createElement("rect", { x: LEGEND_PAD, y: y, width: LEGEND_SWATCH, height: LEGEND_SWATCH, fill: row.color, stroke: outlineColor(row.color) })) : null,
233
+ React.createElement("text", { x: row.color ? LEGEND_TEXT_X : LEGEND_PAD, y: y + LEGEND_SWATCH - 1, fontSize: LEGEND_FONT, fontWeight: row.color ? undefined : 'bold', fill: theme.palette.text.primary }, row.label.length > maxChars
234
+ ? `${row.label.slice(0, Math.max(1, maxChars - 1))}…`
235
+ : row.label)));
126
236
  })));
127
237
  }
128
- function CoreRendering({ model, theme, layout, Context, contrastScheme, }) {
238
+ function CoreRendering({ model, theme, layout, Context, layers }) {
129
239
  const { contentHeight, offsetX, offsetY, msaAreaWidth } = layout;
130
- const { treeAreaWidth, id } = model;
240
+ const { treeAreaWidth, rowPanelsWidth, id } = model;
131
241
  const treeCtx = new Context(treeAreaWidth, contentHeight);
132
242
  renderTreeCanvas({
133
243
  model,
@@ -137,10 +247,24 @@ function CoreRendering({ model, theme, layout, Context, contrastScheme, }) {
137
247
  blockSizeYOverride: contentHeight,
138
248
  highResScaleFactorOverride: 1,
139
249
  });
250
+ const rowPanelsCtx = rowPanelsWidth
251
+ ? new Context(rowPanelsWidth, contentHeight)
252
+ : undefined;
253
+ if (rowPanelsCtx) {
254
+ renderRowPanels({
255
+ model,
256
+ theme,
257
+ ctx: rowPanelsCtx,
258
+ offsetY,
259
+ blockSizeYOverride: contentHeight,
260
+ highResScaleFactorOverride: 1,
261
+ });
262
+ }
140
263
  const raster = rasterBackground({ model, theme, layout });
141
264
  const msaCtx = new Context(msaAreaWidth, contentHeight);
142
265
  renderBoxFeatureCanvasBlock({
143
266
  model,
267
+ theme,
144
268
  ctx: msaCtx,
145
269
  offsetX,
146
270
  offsetY,
@@ -154,7 +278,6 @@ function CoreRendering({ model, theme, layout, Context, contrastScheme, }) {
154
278
  model,
155
279
  theme,
156
280
  ctx: msaCtx,
157
- contrastScheme,
158
281
  offsetX,
159
282
  offsetY,
160
283
  blockSizeXOverride: msaAreaWidth,
@@ -163,7 +286,7 @@ function CoreRendering({ model, theme, layout, Context, contrastScheme, }) {
163
286
  rasterTiles: !!raster,
164
287
  });
165
288
  msaCtx.resetTransform();
166
- renderHighlights({
289
+ renderPersistentHighlights({
167
290
  ctx: msaCtx,
168
291
  model,
169
292
  theme,
@@ -173,19 +296,19 @@ function CoreRendering({ model, theme, layout, Context, contrastScheme, }) {
173
296
  height: contentHeight,
174
297
  });
175
298
  return (React.createElement(React.Fragment, null,
176
- React.createElement(ClipGroup, { clipId: `tree-${id}`, width: treeAreaWidth, height: contentHeight, ctx: treeCtx }),
177
- React.createElement(ClipGroup, { clipId: `msa-${id}`, width: msaAreaWidth, height: contentHeight, transform: `translate(${treeAreaWidth} 0)`, ctx: msaCtx, underlay: raster })));
299
+ React.createElement(ClipGroup, { panelId: "tree-panel", clipId: `tree-${id}`, width: treeAreaWidth, height: contentHeight, ctx: treeCtx, layers: layers }),
300
+ React.createElement(CladeLabelsSVG, { model: model, theme: theme, offsetY: offsetY }),
301
+ rowPanelsCtx ? (React.createElement(ClipGroup, { panelId: "rowpanels-panel", clipId: `rowpanels-${id}`, width: rowPanelsWidth, height: contentHeight, transform: `translate(${treeAreaWidth} 0)`, ctx: rowPanelsCtx, layers: layers })) : null,
302
+ React.createElement(ClipGroup, { panelId: "msa-panel", clipId: `msa-${id}`, width: msaAreaWidth, height: contentHeight, transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)`, ctx: msaCtx, layers: layers, underlay: raster })));
178
303
  }
179
304
  /**
180
- * The alignment background as a single <image>, on the same terms the live
181
- * canvas uses it: no domain overlay painting its own boxes, background coloring
182
- * on, and a canvas we can actually read back.
305
+ * The alignment background as a single <image>, under the live canvas's
306
+ * conditions: no domain overlay boxes, background coloring on, and a canvas
307
+ * that reads back.
183
308
  *
184
- * One node replaces the <rect>-per-cell the vector path emits, which is what
185
- * lets an export of a real alignment finish at all. The image is one pixel per
186
- * cell drawn across the cells' own rectangle, so it upscales by whole cells --
187
- * image-rendering keeps those edges hard rather than smearing them, making it
188
- * pixel-for-pixel what the rects drew.
309
+ * The vector path's <rect> per cell exhausts the heap on a real alignment. The
310
+ * image is one pixel per cell, and image-rendering keeps the upscaled cell
311
+ * edges hard, so it matches the rects pixel for pixel.
189
312
  */
190
313
  function rasterBackground({ model, theme, layout, }) {
191
314
  const { contentHeight, offsetX, offsetY, msaAreaWidth } = layout;
@@ -215,14 +338,13 @@ function rasterBackground({ model, theme, layout, }) {
215
338
  });
216
339
  return href ? (React.createElement("image", { href: href, x: xStart * colWidth - offsetX, y: yStart * rowHeight - offsetY, width: numCols * colWidth, height: numRows * rowHeight, imageRendering: "pixelated", preserveAspectRatio: "none" })) : undefined;
217
340
  }
218
- function TrackRendering({ model, theme, layout, Context, contrastScheme, }) {
341
+ function TrackRendering({ model, theme, layout, Context, layers }) {
219
342
  const { trackHeight, offsetX, msaAreaWidth } = layout;
220
- const { treeAreaWidth, id } = model;
343
+ const { treeAreaWidth, rowPanelsWidth, id } = model;
221
344
  const ctx = new Context(msaAreaWidth, trackHeight);
222
345
  renderAllTracks({
223
346
  model,
224
347
  ctx,
225
- contrastScheme,
226
348
  theme,
227
349
  offsetX,
228
350
  blockSizeXOverride: msaAreaWidth,
@@ -230,8 +352,8 @@ function TrackRendering({ model, theme, layout, Context, contrastScheme, }) {
230
352
  });
231
353
  return (React.createElement(React.Fragment, null,
232
354
  React.createElement(TrackLabelsSVG, { model: model, theme: theme }),
233
- React.createElement("g", { transform: `translate(${treeAreaWidth} 0)` },
234
- React.createElement(ClipGroup, { clipId: `tracks-${id}`, width: msaAreaWidth, height: trackHeight, ctx: ctx }))));
355
+ React.createElement("g", { transform: `translate(${treeAreaWidth + rowPanelsWidth} 0)` },
356
+ React.createElement(ClipGroup, { panelId: "tracks-panel", clipId: `tracks-${id}`, width: msaAreaWidth, height: trackHeight, ctx: ctx, layers: layers }))));
235
357
  }
236
358
  // Each track's name in the tree-width column beside it, where the live view puts
237
359
  // it (see TrackLabel). Without these the figure has an unlabeled bar chart and
@@ -241,25 +363,33 @@ function TrackLabelsSVG({ model, theme, }) {
241
363
  if (!drawLabels) {
242
364
  return null;
243
365
  }
244
- let y = 0;
245
- return (React.createElement(React.Fragment, null, turnedOnTracks.map(track => {
366
+ const labels = turnedOnTracks.map((track, i) => {
246
367
  const { id, name, height } = track.model;
247
368
  const size = Math.min(height, fontSize);
248
- const baseline = y + height / 2 + size / 3;
249
- y += height;
369
+ const top = turnedOnTracks
370
+ .slice(0, i)
371
+ .reduce((acc, t) => acc + t.model.height, 0);
372
+ return { id, name, size, baseline: top + height / 2 + size / 3 };
373
+ });
374
+ return (React.createElement(React.Fragment, null, labels.map(({ id, name, size, baseline }) => {
250
375
  return size < 5 ? null : (React.createElement("text", { key: id, x: treeAreaWidth - 4, y: baseline, fontSize: size, textAnchor: "end", fill: theme.palette.text.primary }, name));
251
376
  })));
252
377
  }
253
- // Clips a svgcanvas Context to its box and injects its markup verbatim (it is
254
- // already serialized SVG, not React). `underlay` draws beneath that markup,
378
+ // Clips a svgcanvas Context to its box and leaves a placeholder for renderToSvg
379
+ // to splice the layer's own markup into. `underlay` draws beneath that markup,
255
380
  // inside the same clip, for the parts of a layer React emits directly.
256
- function ClipGroup({ clipId, width, height, transform, ctx, underlay, }) {
381
+ //
382
+ // `panelId` names the spliced group in the output, the same name in every
383
+ // export, so a figure can be taken apart in Illustrator or svgutils. `clipId`
384
+ // carries the model id, which keeps two viewers on one page from colliding.
385
+ function ClipGroup({ panelId, clipId, width, height, transform, ctx, layers, underlay, }) {
386
+ layers.set(panelId, ctx);
257
387
  return (React.createElement(React.Fragment, null,
258
388
  React.createElement("defs", null,
259
389
  React.createElement("clipPath", { id: clipId },
260
390
  React.createElement("rect", { x: 0, y: 0, width: width, height: height }))),
261
391
  React.createElement("g", { clipPath: `url(#${clipId})`, transform: transform },
262
392
  underlay,
263
- React.createElement("g", { dangerouslySetInnerHTML: { __html: ctx.getSvg().innerHTML } }))));
393
+ React.createElement("g", { "data-layer": panelId }))));
264
394
  }
265
395
  //# sourceMappingURL=renderToSvg.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderToSvg.js","sourceRoot":"","sources":["../src/renderToSvg.tsx"],"names":[],"mappings":"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"}