react-msaview 3.1.7 → 3.1.8

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 (270) hide show
  1. package/bundle/index.js +32 -32
  2. package/dist/components/Checkbox2.d.ts +7 -0
  3. package/dist/components/Checkbox2.js +10 -0
  4. package/dist/components/Checkbox2.js.map +1 -0
  5. package/dist/components/Loading.js +12 -4
  6. package/dist/components/Loading.js.map +1 -1
  7. package/dist/components/MSAView.js +5 -8
  8. package/dist/components/MSAView.js.map +1 -1
  9. package/dist/components/SequenceTextArea.d.ts +4 -0
  10. package/dist/components/SequenceTextArea.js +38 -0
  11. package/dist/components/SequenceTextArea.js.map +1 -0
  12. package/dist/components/Track.js +9 -8
  13. package/dist/components/Track.js.map +1 -1
  14. package/dist/components/dialogs/AddTrackDialog.js +0 -1
  15. package/dist/components/dialogs/AddTrackDialog.js.map +1 -1
  16. package/dist/components/{ExportSVGDialog.d.ts → dialogs/ExportSVGDialog.d.ts} +1 -1
  17. package/dist/components/{ExportSVGDialog.js → dialogs/ExportSVGDialog.js} +3 -4
  18. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -0
  19. package/dist/components/dialogs/FeatureDialog.d.ts +7 -0
  20. package/dist/components/dialogs/FeatureDialog.js +52 -0
  21. package/dist/components/dialogs/FeatureDialog.js.map +1 -0
  22. package/dist/components/dialogs/InterProScanDialog.d.ts +7 -0
  23. package/dist/components/dialogs/InterProScanDialog.js +163 -0
  24. package/dist/components/dialogs/InterProScanDialog.js.map +1 -0
  25. package/dist/components/dialogs/MetadataDialog.js +6 -3
  26. package/dist/components/dialogs/MetadataDialog.js.map +1 -1
  27. package/dist/components/dialogs/SettingsDialog.js +6 -11
  28. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  29. package/dist/components/{Header.d.ts → header/Header.d.ts} +1 -1
  30. package/dist/components/header/Header.js +30 -0
  31. package/dist/components/header/Header.js.map +1 -0
  32. package/dist/components/{HeaderInfoArea.d.ts → header/HeaderInfoArea.d.ts} +2 -2
  33. package/dist/components/header/HeaderInfoArea.js +20 -0
  34. package/dist/components/header/HeaderInfoArea.js.map +1 -0
  35. package/dist/components/header/HeaderMenu.d.ts +6 -0
  36. package/dist/components/header/HeaderMenu.js +40 -0
  37. package/dist/components/header/HeaderMenu.js.map +1 -0
  38. package/dist/components/header/HeaderMenuExtra.d.ts +6 -0
  39. package/dist/components/header/HeaderMenuExtra.js +92 -0
  40. package/dist/components/header/HeaderMenuExtra.js.map +1 -0
  41. package/dist/components/header/HeaderStatusArea.d.ts +6 -0
  42. package/dist/components/header/HeaderStatusArea.js +20 -0
  43. package/dist/components/header/HeaderStatusArea.js.map +1 -0
  44. package/dist/components/{MultiAlignmentSelector.d.ts → header/MultiAlignmentSelector.d.ts} +1 -1
  45. package/dist/components/header/MultiAlignmentSelector.js.map +1 -0
  46. package/dist/components/{ZoomControls.d.ts → header/ZoomControls.d.ts} +1 -1
  47. package/dist/components/header/ZoomControls.js +15 -0
  48. package/dist/components/header/ZoomControls.js.map +1 -0
  49. package/dist/components/{ImportForm/index.js → import/ImportForm.js} +1 -1
  50. package/dist/components/import/ImportForm.js.map +1 -0
  51. package/dist/components/{ImportForm → import}/ImportFormExamples.js +6 -2
  52. package/dist/components/import/ImportFormExamples.js.map +1 -0
  53. package/dist/components/import/data/seq2.js.map +1 -0
  54. package/dist/components/import/util.js +10 -0
  55. package/dist/components/import/util.js.map +1 -0
  56. package/dist/components/{Minimap.d.ts → minimap/Minimap.d.ts} +1 -1
  57. package/dist/components/minimap/Minimap.js.map +1 -0
  58. package/dist/components/{MinimapSVG.d.ts → minimap/MinimapSVG.d.ts} +1 -1
  59. package/dist/components/minimap/MinimapSVG.js.map +1 -0
  60. package/dist/components/msa/Loading.js.map +1 -0
  61. package/dist/components/{MSAPanel → msa}/MSACanvas.js +3 -2
  62. package/dist/components/msa/MSACanvas.js.map +1 -0
  63. package/dist/components/{MSAPanel/MSABlock.js → msa/MSACanvasBlock.js} +21 -9
  64. package/dist/components/msa/MSACanvasBlock.js.map +1 -0
  65. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -0
  66. package/dist/components/msa/MSAPanel.d.ts +6 -0
  67. package/dist/components/{MSAPanel/index.js → msa/MSAPanel.js} +6 -3
  68. package/dist/components/msa/MSAPanel.js.map +1 -0
  69. package/dist/components/msa/renderBoxFeatureCanvasBlock.d.ts +9 -0
  70. package/dist/components/msa/renderBoxFeatureCanvasBlock.js +44 -0
  71. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -0
  72. package/dist/components/{MSAPanel → msa}/renderMSABlock.js +24 -20
  73. package/dist/components/msa/renderMSABlock.js.map +1 -0
  74. package/dist/components/msa/renderMSAMouseover.js.map +1 -0
  75. package/dist/components/tree/TreeBranchMenu.js.map +1 -0
  76. package/dist/components/{TreePanel → tree}/TreeCanvas.js +1 -1
  77. package/dist/components/tree/TreeCanvas.js.map +1 -0
  78. package/dist/components/{TreePanel → tree}/TreeCanvasBlock.js +1 -1
  79. package/dist/components/tree/TreeCanvasBlock.js.map +1 -0
  80. package/dist/components/{TreePanel → tree}/TreeNodeMenu.js +2 -33
  81. package/dist/components/tree/TreeNodeMenu.js.map +1 -0
  82. package/dist/components/{TreePanel/index.js → tree/TreePanel.js} +2 -2
  83. package/dist/components/tree/TreePanel.js.map +1 -0
  84. package/dist/components/tree/TreeRuler.js.map +1 -0
  85. package/dist/components/{TreePanel → tree}/dialogs/TreeNodeInfoDialog.js +6 -2
  86. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -0
  87. package/dist/components/{TreePanel → tree}/renderTreeCanvas.js +23 -37
  88. package/dist/components/tree/renderTreeCanvas.js.map +1 -0
  89. package/dist/fetchUtils.d.ts +5 -0
  90. package/dist/fetchUtils.js +23 -0
  91. package/dist/fetchUtils.js.map +1 -0
  92. package/dist/ggplotPalettes.d.ts +3 -0
  93. package/dist/ggplotPalettes.js +24 -0
  94. package/dist/ggplotPalettes.js.map +1 -0
  95. package/dist/index.d.ts +1 -1
  96. package/dist/index.js +1 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/launchInterProScan.d.ts +32 -0
  99. package/dist/launchInterProScan.js +47 -0
  100. package/dist/launchInterProScan.js.map +1 -0
  101. package/dist/model/DataModel.js.map +1 -0
  102. package/dist/model/DialogQueue.js.map +1 -0
  103. package/dist/model/msaModel.d.ts +14 -0
  104. package/dist/model/msaModel.js +36 -0
  105. package/dist/model/msaModel.js.map +1 -0
  106. package/dist/model/treeModel.d.ts +46 -0
  107. package/dist/model/treeModel.js +105 -0
  108. package/dist/model/treeModel.js.map +1 -0
  109. package/dist/model.d.ts +261 -273
  110. package/dist/model.js +1043 -1029
  111. package/dist/model.js.map +1 -1
  112. package/dist/parseGFF.d.ts +10 -0
  113. package/dist/parseGFF.js +29 -0
  114. package/dist/parseGFF.js.map +1 -0
  115. package/dist/renderToSvg.js +23 -9
  116. package/dist/renderToSvg.js.map +1 -1
  117. package/dist/reparseTree.d.ts +2 -0
  118. package/dist/reparseTree.js +13 -0
  119. package/dist/reparseTree.js.map +1 -0
  120. package/dist/util.d.ts +4 -10
  121. package/dist/util.js +3 -28
  122. package/dist/util.js.map +1 -1
  123. package/dist/version.d.ts +1 -1
  124. package/dist/version.js +1 -1
  125. package/package.json +12 -2
  126. package/src/components/Checkbox2.tsx +34 -0
  127. package/src/components/Loading.tsx +27 -11
  128. package/src/components/MSAView.tsx +6 -10
  129. package/src/components/SequenceTextArea.tsx +63 -0
  130. package/src/components/Track.tsx +8 -13
  131. package/src/components/dialogs/AddTrackDialog.tsx +0 -1
  132. package/src/components/{ExportSVGDialog.tsx → dialogs/ExportSVGDialog.tsx} +9 -16
  133. package/src/components/dialogs/FeatureDialog.tsx +109 -0
  134. package/src/components/dialogs/InterProScanDialog.tsx +230 -0
  135. package/src/components/dialogs/MetadataDialog.tsx +9 -2
  136. package/src/components/dialogs/SettingsDialog.tsx +10 -30
  137. package/src/components/header/Header.tsx +44 -0
  138. package/src/components/header/HeaderInfoArea.tsx +27 -0
  139. package/src/components/header/HeaderMenu.tsx +54 -0
  140. package/src/components/header/HeaderMenuExtra.tsx +108 -0
  141. package/src/components/header/HeaderStatusArea.tsx +31 -0
  142. package/src/components/{MultiAlignmentSelector.tsx → header/MultiAlignmentSelector.tsx} +1 -1
  143. package/src/components/header/ZoomControls.tsx +28 -0
  144. package/src/components/{ImportForm → import}/ImportFormExamples.tsx +12 -1
  145. package/src/components/{ImportForm → import}/util.ts +5 -10
  146. package/src/components/{Minimap.tsx → minimap/Minimap.tsx} +1 -1
  147. package/src/components/{MinimapSVG.tsx → minimap/MinimapSVG.tsx} +1 -1
  148. package/src/components/{MSAPanel → msa}/MSACanvas.tsx +3 -2
  149. package/src/components/{MSAPanel/MSABlock.tsx → msa/MSACanvasBlock.tsx} +25 -12
  150. package/src/components/{MSAPanel/index.tsx → msa/MSAPanel.tsx} +8 -2
  151. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +88 -0
  152. package/src/components/{MSAPanel → msa}/renderMSABlock.ts +26 -20
  153. package/src/components/{TreePanel → tree}/TreeCanvas.tsx +1 -1
  154. package/src/components/{TreePanel → tree}/TreeCanvasBlock.tsx +1 -1
  155. package/src/components/{TreePanel → tree}/TreeNodeMenu.tsx +1 -53
  156. package/src/components/{TreePanel/index.tsx → tree/TreePanel.tsx} +1 -1
  157. package/src/components/{TreePanel → tree}/dialogs/TreeNodeInfoDialog.tsx +9 -2
  158. package/src/components/{TreePanel → tree}/renderTreeCanvas.ts +25 -41
  159. package/src/fetchUtils.ts +30 -0
  160. package/src/ggplotPalettes.ts +25 -0
  161. package/src/index.ts +1 -1
  162. package/src/launchInterProScan.ts +98 -0
  163. package/src/model/msaModel.ts +39 -0
  164. package/src/model/treeModel.ts +116 -0
  165. package/src/model.ts +1124 -1126
  166. package/src/parseGFF.ts +32 -0
  167. package/src/renderToSvg.tsx +27 -8
  168. package/src/reparseTree.ts +16 -0
  169. package/src/util.ts +4 -33
  170. package/src/version.ts +1 -1
  171. package/dist/DataModel.js.map +0 -1
  172. package/dist/DialogQueue.js.map +0 -1
  173. package/dist/SelectedStructuresMixin.d.ts +0 -46
  174. package/dist/SelectedStructuresMixin.js +0 -52
  175. package/dist/SelectedStructuresMixin.js.map +0 -1
  176. package/dist/StructureModel.d.ts +0 -9
  177. package/dist/StructureModel.js +0 -11
  178. package/dist/StructureModel.js.map +0 -1
  179. package/dist/UniprotTrack.d.ts +0 -27
  180. package/dist/UniprotTrack.js +0 -53
  181. package/dist/UniprotTrack.js.map +0 -1
  182. package/dist/components/BoxTrack.d.ts +0 -7
  183. package/dist/components/BoxTrack.js +0 -15
  184. package/dist/components/BoxTrack.js.map +0 -1
  185. package/dist/components/BoxTrackBlock.d.ts +0 -8
  186. package/dist/components/BoxTrackBlock.js +0 -136
  187. package/dist/components/BoxTrackBlock.js.map +0 -1
  188. package/dist/components/ExportSVGDialog.js.map +0 -1
  189. package/dist/components/Header.js +0 -62
  190. package/dist/components/Header.js.map +0 -1
  191. package/dist/components/HeaderInfoArea.js +0 -12
  192. package/dist/components/HeaderInfoArea.js.map +0 -1
  193. package/dist/components/ImportForm/ImportFormExamples.js.map +0 -1
  194. package/dist/components/ImportForm/data/seq2.js.map +0 -1
  195. package/dist/components/ImportForm/index.js.map +0 -1
  196. package/dist/components/ImportForm/util.js +0 -16
  197. package/dist/components/ImportForm/util.js.map +0 -1
  198. package/dist/components/MSAPanel/Loading.js.map +0 -1
  199. package/dist/components/MSAPanel/MSABlock.js.map +0 -1
  200. package/dist/components/MSAPanel/MSACanvas.js.map +0 -1
  201. package/dist/components/MSAPanel/MSAMouseoverCanvas.js.map +0 -1
  202. package/dist/components/MSAPanel/index.d.ts +0 -5
  203. package/dist/components/MSAPanel/index.js.map +0 -1
  204. package/dist/components/MSAPanel/renderMSABlock.js.map +0 -1
  205. package/dist/components/MSAPanel/renderMSAMouseover.js.map +0 -1
  206. package/dist/components/Minimap.js.map +0 -1
  207. package/dist/components/MinimapSVG.js.map +0 -1
  208. package/dist/components/MultiAlignmentSelector.js.map +0 -1
  209. package/dist/components/TreePanel/TreeBranchMenu.js.map +0 -1
  210. package/dist/components/TreePanel/TreeCanvas.js.map +0 -1
  211. package/dist/components/TreePanel/TreeCanvasBlock.js.map +0 -1
  212. package/dist/components/TreePanel/TreeNodeMenu.js.map +0 -1
  213. package/dist/components/TreePanel/TreeRuler.js.map +0 -1
  214. package/dist/components/TreePanel/dialogs/TreeNodeInfoDialog.js.map +0 -1
  215. package/dist/components/TreePanel/index.js.map +0 -1
  216. package/dist/components/TreePanel/renderTreeCanvas.js.map +0 -1
  217. package/dist/components/VerticalGuide.d.ts +0 -7
  218. package/dist/components/VerticalGuide.js +0 -30
  219. package/dist/components/VerticalGuide.js.map +0 -1
  220. package/dist/components/ZoomControls.js +0 -59
  221. package/dist/components/ZoomControls.js.map +0 -1
  222. package/src/SelectedStructuresMixin.ts +0 -59
  223. package/src/StructureModel.ts +0 -11
  224. package/src/UniprotTrack.ts +0 -59
  225. package/src/components/BoxTrack.tsx +0 -33
  226. package/src/components/BoxTrackBlock.tsx +0 -200
  227. package/src/components/Header.tsx +0 -99
  228. package/src/components/HeaderInfoArea.tsx +0 -21
  229. package/src/components/VerticalGuide.tsx +0 -50
  230. package/src/components/ZoomControls.tsx +0 -86
  231. package/dist/components/{MultiAlignmentSelector.js → header/MultiAlignmentSelector.js} +0 -0
  232. package/dist/components/{ImportForm/index.d.ts → import/ImportForm.d.ts} +0 -0
  233. package/dist/components/{ImportForm → import}/ImportFormExamples.d.ts +0 -0
  234. package/dist/components/{ImportForm → import}/data/seq2.d.ts +0 -0
  235. package/dist/components/{ImportForm → import}/data/seq2.js +0 -0
  236. package/dist/components/{ImportForm → import}/util.d.ts +0 -0
  237. package/dist/components/{Minimap.js → minimap/Minimap.js} +0 -0
  238. package/dist/components/{MinimapSVG.js → minimap/MinimapSVG.js} +0 -0
  239. package/dist/components/{MSAPanel → msa}/Loading.d.ts +0 -0
  240. package/dist/components/{MSAPanel → msa}/Loading.js +0 -0
  241. package/dist/components/{MSAPanel → msa}/MSACanvas.d.ts +0 -0
  242. package/dist/components/{MSAPanel/MSABlock.d.ts → msa/MSACanvasBlock.d.ts} +0 -0
  243. package/dist/components/{MSAPanel → msa}/MSAMouseoverCanvas.d.ts +0 -0
  244. package/dist/components/{MSAPanel → msa}/MSAMouseoverCanvas.js +0 -0
  245. package/dist/components/{MSAPanel → msa}/renderMSABlock.d.ts +1 -1
  246. /package/dist/components/{MSAPanel → msa}/renderMSAMouseover.d.ts +0 -0
  247. /package/dist/components/{MSAPanel → msa}/renderMSAMouseover.js +0 -0
  248. /package/dist/components/{TreePanel → tree}/TreeBranchMenu.d.ts +0 -0
  249. /package/dist/components/{TreePanel → tree}/TreeBranchMenu.js +0 -0
  250. /package/dist/components/{TreePanel → tree}/TreeCanvas.d.ts +0 -0
  251. /package/dist/components/{TreePanel → tree}/TreeCanvasBlock.d.ts +0 -0
  252. /package/dist/components/{TreePanel → tree}/TreeNodeMenu.d.ts +0 -0
  253. /package/dist/components/{TreePanel/index.d.ts → tree/TreePanel.d.ts} +0 -0
  254. /package/dist/components/{TreePanel → tree}/TreeRuler.d.ts +0 -0
  255. /package/dist/components/{TreePanel → tree}/TreeRuler.js +0 -0
  256. /package/dist/components/{TreePanel → tree}/dialogs/TreeNodeInfoDialog.d.ts +0 -0
  257. /package/dist/components/{TreePanel → tree}/renderTreeCanvas.d.ts +0 -0
  258. /package/dist/{DataModel.d.ts → model/DataModel.d.ts} +0 -0
  259. /package/dist/{DataModel.js → model/DataModel.js} +0 -0
  260. /package/dist/{DialogQueue.d.ts → model/DialogQueue.d.ts} +0 -0
  261. /package/dist/{DialogQueue.js → model/DialogQueue.js} +0 -0
  262. /package/src/components/{ImportForm/index.tsx → import/ImportForm.tsx} +0 -0
  263. /package/src/components/{ImportForm → import}/data/seq2.ts +0 -0
  264. /package/src/components/{MSAPanel → msa}/Loading.tsx +0 -0
  265. /package/src/components/{MSAPanel → msa}/MSAMouseoverCanvas.tsx +0 -0
  266. /package/src/components/{MSAPanel → msa}/renderMSAMouseover.ts +0 -0
  267. /package/src/components/{TreePanel → tree}/TreeBranchMenu.tsx +0 -0
  268. /package/src/components/{TreePanel → tree}/TreeRuler.tsx +0 -0
  269. /package/src/{DataModel.ts → model/DataModel.ts} +0 -0
  270. /package/src/{DialogQueue.ts → model/DialogQueue.ts} +0 -0
@@ -0,0 +1,44 @@
1
+ export function renderBoxFeatureCanvasBlock({ model, offsetX, offsetY, ctx, highResScaleFactorOverride, blockSizeYOverride, }) {
2
+ const { hierarchy, blockSize, rowHeight, highResScaleFactor, featureMode } = model;
3
+ if (featureMode) {
4
+ const k = highResScaleFactorOverride || highResScaleFactor;
5
+ const by = blockSizeYOverride || blockSize;
6
+ ctx.resetTransform();
7
+ ctx.scale(k, k);
8
+ ctx.translate(-offsetX, rowHeight / 2 - offsetY);
9
+ const leaves = hierarchy.leaves();
10
+ const yStart = Math.max(0, Math.floor((offsetY - rowHeight) / rowHeight));
11
+ const yEnd = Math.max(0, Math.ceil((offsetY + by + rowHeight) / rowHeight));
12
+ const visibleLeaves = leaves.slice(yStart, yEnd);
13
+ drawTiles({
14
+ model,
15
+ ctx,
16
+ visibleLeaves,
17
+ });
18
+ }
19
+ }
20
+ function drawTiles({ model, ctx, visibleLeaves, }) {
21
+ const { subFeatureRows, colWidth, rowHeight, fillPalette, strokePalette, tidyFilteredGatheredAnnotations, } = model;
22
+ for (const node of visibleLeaves) {
23
+ const { x, data: { name }, } = node;
24
+ const y = x;
25
+ const entry = tidyFilteredGatheredAnnotations?.[name];
26
+ let j = 0;
27
+ if (entry) {
28
+ for (const { start, end, accession } of entry) {
29
+ const m1 = model.seqCoordToRowSpecificGlobalCoord(name, start - 1);
30
+ const m2 = model.seqCoordToRowSpecificGlobalCoord(name, end);
31
+ const x = m1 * colWidth;
32
+ ctx.fillStyle = fillPalette[accession];
33
+ ctx.strokeStyle = strokePalette[accession];
34
+ const h = subFeatureRows ? 4 : rowHeight;
35
+ const t = y - rowHeight + (subFeatureRows ? j * h : 0);
36
+ const lw = colWidth * (m2 - m1);
37
+ ctx.fillRect(x, t, lw, h);
38
+ ctx.strokeRect(x, t, lw, h);
39
+ j++;
40
+ }
41
+ }
42
+ }
43
+ }
44
+ //# sourceMappingURL=renderBoxFeatureCanvasBlock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderBoxFeatureCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderBoxFeatureCanvasBlock.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import { getClustalXColor, getPercentIdentityColor } from '../../colorSchemes';
2
2
  export function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, theme, highResScaleFactorOverride, blockSizeXOverride, blockSizeYOverride, }) {
3
- const { hierarchy, colWidth, blockSize, rowHeight, fontSize, highResScaleFactor, } = model;
3
+ const { hierarchy, colWidth, blockSize, rowHeight, fontSize, highResScaleFactor, featureMode, } = model;
4
4
  const k = highResScaleFactorOverride || highResScaleFactor;
5
5
  const bx = blockSizeXOverride || blockSize;
6
6
  const by = blockSizeYOverride || blockSize;
7
7
  ctx.resetTransform();
8
8
  ctx.scale(k, k);
9
- ctx.clearRect(0, 0, bx, by);
10
9
  ctx.translate(-offsetX, rowHeight / 2 - offsetY);
11
10
  ctx.textAlign = 'center';
12
11
  ctx.font = ctx.font.replace(/\d+px/, `${fontSize}px`);
@@ -16,16 +15,18 @@ export function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, t
16
15
  const xStart = Math.max(0, Math.floor(offsetX / colWidth));
17
16
  const xEnd = Math.max(0, Math.ceil((offsetX + bx) / colWidth));
18
17
  const visibleLeaves = leaves.slice(yStart, yEnd);
19
- drawTiles({
20
- model,
21
- ctx,
22
- theme,
23
- offsetX,
24
- offsetY,
25
- xStart,
26
- xEnd,
27
- visibleLeaves,
28
- });
18
+ if (!featureMode) {
19
+ drawTiles({
20
+ model,
21
+ ctx,
22
+ theme,
23
+ offsetX,
24
+ offsetY,
25
+ xStart,
26
+ xEnd,
27
+ visibleLeaves,
28
+ });
29
+ }
29
30
  drawText({
30
31
  model,
31
32
  ctx,
@@ -36,13 +37,13 @@ export function renderMSABlock({ model, offsetX, offsetY, contrastScheme, ctx, t
36
37
  xEnd,
37
38
  visibleLeaves,
38
39
  });
40
+ ctx.resetTransform();
39
41
  }
40
42
  function drawTiles({ model, offsetX, ctx, visibleLeaves, theme, xStart, xEnd, }) {
41
43
  const { bgColor, colorSchemeName, colorScheme, colStats, columns, colWidth, rowHeight, } = model;
42
44
  for (const node of visibleLeaves) {
43
- const {
44
- // @ts-expect-error
45
- x: y, data: { name }, } = node;
45
+ const { data: { name }, } = node;
46
+ const y = node.x;
46
47
  const str = columns[name]?.slice(xStart, xEnd);
47
48
  for (let i = 0; i < str?.length; i++) {
48
49
  const letter = str[i];
@@ -60,12 +61,11 @@ function drawTiles({ model, offsetX, ctx, visibleLeaves, theme, xStart, xEnd, })
60
61
  }
61
62
  }
62
63
  function drawText({ model, offsetX, contrastScheme, ctx, visibleLeaves, xStart, xEnd, }) {
63
- const { bgColor, colorScheme, columns, colWidth, rowHeight } = model;
64
+ const { bgColor, featureMode, colorScheme, columns, colWidth, rowHeight } = model;
64
65
  if (rowHeight >= 5 && colWidth > rowHeight / 2) {
65
66
  for (const node of visibleLeaves) {
66
- const {
67
- // @ts-expect-error
68
- x: y, data: { name }, } = node;
67
+ const { data: { name }, } = node;
68
+ const y = node.x;
69
69
  const str = columns[name]?.slice(xStart, xEnd);
70
70
  for (let i = 0; i < str?.length; i++) {
71
71
  const letter = str[i];
@@ -73,7 +73,11 @@ function drawText({ model, offsetX, contrastScheme, ctx, visibleLeaves, xStart,
73
73
  const contrast = contrastScheme[letter.toUpperCase()] || 'black';
74
74
  const x = i * colWidth + offsetX - (offsetX % colWidth);
75
75
  // note: -rowHeight/4 matches +rowHeight/4 in tree
76
- ctx.fillStyle = bgColor ? contrast : color || 'black';
76
+ ctx.fillStyle = featureMode
77
+ ? 'black'
78
+ : bgColor
79
+ ? contrast
80
+ : color || 'black';
77
81
  ctx.fillText(letter, x + colWidth / 2, y - rowHeight / 4);
78
82
  }
79
83
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMSABlock.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSABlock.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderMSAMouseover.js","sourceRoot":"","sources":["../../../src/components/msa/renderMSAMouseover.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,GAAG,kBAAkB,CAAA;AACrC,MAAM,cAAc,GAAG,qBAAqB,CAAA;AAE5C,MAAM,UAAU,eAAe,CAAC,EAC9B,GAAG,EACH,KAAK,GAIN;IACC,MAAM,EACJ,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,EACN,SAAS,EACT,OAAO,EACP,OAAO,EACP,QAAQ;IACR,mBAAmB;IACnB,SAAS,EACT,aAAa,EACb,aAAa,GACd,GAAG,KAAK,CAAA;IACT,GAAG,CAAC,cAAc,EAAE,CAAA;IACpB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,UAAU,CAAA;QAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,GAAG,CAAC,SAAS,GAAG,UAAU,CAAA;QAC1B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC7E,CAAC;IACD,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;IACxE,CAAC;IACD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,GAAG,CAAC,SAAS,GAAG,cAAc,CAAA;QAC9B,GAAG,CAAC,QAAQ,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IACzE,CAAC;AACH,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeBranchMenu.js","sourceRoot":"","sources":["../../../src/components/tree/TreeBranchMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAYrC,MAAM,cAAc,GAAG,QAAQ,CAAC,UAAU,EACxC,IAAI,EACJ,KAAK,EACL,OAAO,GAKR;IACC,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,IAAI,EAAE,IAAI,CAAC,CAAC;YACZ,GAAG,EAAE,IAAI,CAAC,CAAC;SACZ,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CAAC,IAAI,CACD;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,CAAC,CAAC,kBAAkB;YACpB,CAAC,CAAC,oBAAoB,CACf;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;oBACxB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC;oBAC9B,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAC9B,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;YACzB,CAAC,CAAC,6BAA6B;YAC/B,CAAC,CAAC,qBAAqB,CAChB,CACN,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,cAAc,CAAA"}
@@ -27,6 +27,7 @@ const TreeCanvas = observer(function ({ model }) {
27
27
  });
28
28
  }
29
29
  origEvent.preventDefault();
30
+ origEvent.stopPropagation();
30
31
  }
31
32
  curr.addEventListener('wheel', onWheel);
32
33
  return () => {
@@ -92,7 +93,6 @@ const TreeCanvas = observer(function ({ model }) {
92
93
  return (React.createElement("div", { ref: ref, onMouseDown: mouseDown, onMouseUp: mouseUp, onMouseLeave: mouseLeave, style: {
93
94
  height,
94
95
  position: 'relative',
95
- overflow: 'hidden',
96
96
  width: treeWidth + padding,
97
97
  } }, blocksY.map(block => (React.createElement(TreeCanvasBlock, { key: block, model: model, offsetY: block })))));
98
98
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/TreeCanvas.tsx"],"names":[],"mappings":"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"}
@@ -63,7 +63,7 @@ const TreeCanvasBlock = observer(function ({ model, offsetY, }) {
63
63
  minY: y + offsetY,
64
64
  maxY: y + 1 + offsetY,
65
65
  });
66
- return entry && entry.branch
66
+ return entry?.branch
67
67
  ? { ...entry, x: event.clientX, y: event.clientY }
68
68
  : undefined;
69
69
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeCanvasBlock.js","sourceRoot":"","sources":["../../../src/components/tree/TreeCanvasBlock.tsx"],"names":[],"mappings":"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"}
@@ -4,8 +4,7 @@ import { observer } from 'mobx-react';
4
4
  // lazies
5
5
  const TreeNodeInfoDialog = lazy(() => import('./dialogs/TreeNodeInfoDialog'));
6
6
  const TreeMenu = observer(function ({ node, onClose, model, }) {
7
- const { selectedStructures, collapsed, collapsed2, structures } = model;
8
- const nodeDetails = node ? model.getRowData(node.name) : undefined;
7
+ const { collapsed, collapsed2 } = model;
9
8
  return (React.createElement(Menu, { anchorReference: "anchorPosition", anchorPosition: {
10
9
  top: node.y,
11
10
  left: node.x,
@@ -38,37 +37,7 @@ const TreeMenu = observer(function ({ node, onClose, model, }) {
38
37
  onClose();
39
38
  } }, collapsed.includes(node.id) || collapsed2.includes(node.id)
40
39
  ? 'Show node'
41
- : 'Hide node'),
42
- structures[node.name]?.map(entry => !selectedStructures.some(n => n.id === node.name) ? (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
43
- model.addStructureToSelection({
44
- structure: entry,
45
- id: node.name,
46
- });
47
- onClose();
48
- } },
49
- "Add PDB to selection (",
50
- entry.pdb,
51
- ")")) : (React.createElement(MenuItem, { key: JSON.stringify(entry), dense: true, onClick: () => {
52
- model.removeStructureFromSelection({
53
- structure: entry,
54
- id: node.name,
55
- });
56
- onClose();
57
- } },
58
- "Remove PDB from selection (",
59
- entry.pdb,
60
- ")"))), // @ts-expect-error
61
- nodeDetails?.data.accession?.map(accession => (React.createElement(MenuItem, { dense: true, key: accession, onClick: () => {
62
- model.addUniprotTrack({
63
- // @ts-expect-error
64
- name: nodeDetails?.data.name,
65
- accession,
66
- });
67
- onClose();
68
- } },
69
- "Open UniProt track (",
70
- accession,
71
- ")")))));
40
+ : 'Hide node')));
72
41
  });
73
42
  export default TreeMenu;
74
43
  //# sourceMappingURL=TreeNodeMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeMenu.js","sourceRoot":"","sources":["../../../src/components/tree/TreeNodeMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,OAAO,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,SAAS;AACT,MAAM,kBAAkB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC,CAAA;AAE7E,MAAM,QAAQ,GAAG,QAAQ,CAAC,UAAU,EAClC,IAAI,EACJ,OAAO,EACP,KAAK,GAKN;IACC,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,KAAK,CAAA;IACvC,OAAO,CACL,oBAAC,IAAI,IACH,eAAe,EAAC,gBAAgB,EAChC,cAAc,EAAE;YACd,GAAG,EAAE,IAAI,CAAC,CAAC;YACX,IAAI,EAAE,IAAI,CAAC,CAAC;SACb,EACD,kBAAkB,EAAE,CAAC,EACrB,WAAW,QACX,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,EACnB,OAAO,EAAE,OAAO;QAEhB,oBAAC,QAAQ,IAAC,KAAK,QAAC,QAAQ,UACrB,IAAI,CAAC,IAAI,CACD;QAEX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC3B,kBAAkB;oBAClB;wBACE,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;wBACjC,KAAK;wBACL,QAAQ,EAAE,IAAI,CAAC,IAAI;wBACnB,OAAO;qBACR;iBACF,CAAC,CAAA;gBACF,OAAO,EAAE,CAAA;YACX,CAAC,mBAGQ;QACX,oBAAC,QAAQ,IACP,KAAK,QACL,OAAO,EAAE,GAAG,EAAE;gBACZ,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBAChC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBAClC,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;oBACtC,CAAC;yBAAM,CAAC;wBACN,KAAK,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAC,EAAE,WAAW,CAAC,CAAA;oBAC/C,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,CAAA;YACX,CAAC,IAEA,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,WAAW,CACN,CACN,CACR,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,QAAQ,CAAA"}
@@ -3,8 +3,8 @@ import { observer } from 'mobx-react';
3
3
  import TreeCanvas from './TreeCanvas';
4
4
  const TreePanel = observer(function ({ model }) {
5
5
  const { treeAreaWidth } = model;
6
- return (React.createElement("div", { style: { flexShrink: 0, width: treeAreaWidth } },
6
+ return (React.createElement("div", { style: { overflow: 'hidden', flexShrink: 0, width: treeAreaWidth } },
7
7
  React.createElement(TreeCanvas, { model: model })));
8
8
  });
9
9
  export default TreePanel;
10
- //# sourceMappingURL=index.js.map
10
+ //# sourceMappingURL=TreePanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreePanel.js","sourceRoot":"","sources":["../../../src/components/tree/TreePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAGrC,OAAO,UAAU,MAAM,cAAc,CAAA;AAErC,MAAM,SAAS,GAAG,QAAQ,CAAC,UAAU,EAAE,KAAK,EAA2B;IACrE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IAC/B,OAAO,CACL,6BAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE;QACrE,oBAAC,UAAU,IAAC,KAAK,EAAE,KAAK,GAAI,CACxB,CACP,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeRuler.js","sourceRoot":"","sources":["../../../src/components/tree/TreeRuler.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAKrC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,EAA2B,EAAE,EAAE;IAChE,MAAM,EAAE,aAAa,EAAE,GAAG,KAAK,CAAA;IAC/B,OAAO,6BAAK,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,GAAI,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,eAAe,SAAS,CAAA"}
@@ -3,13 +3,17 @@ import { Dialog } from '@jbrowse/core/ui';
3
3
  import { DialogContent } from '@mui/material';
4
4
  import { observer } from 'mobx-react';
5
5
  import { Attributes, BaseCard, } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail';
6
+ import SequenceTextArea from '../../SequenceTextArea';
6
7
  export default observer(function ({ info, model, nodeName, onClose, }) {
7
- const { treeMetadata } = model;
8
+ const { treeMetadata, rows } = model;
8
9
  const metadata = treeMetadata[nodeName];
9
- return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: "Tree node info" },
10
+ const [name, sequence] = rows.find(f => f[0] === nodeName);
11
+ return (React.createElement(Dialog, { onClose: () => onClose(), open: true, title: "Tree node info", maxWidth: "xl" },
10
12
  React.createElement(DialogContent, null,
11
13
  React.createElement(BaseCard, { title: "Attributes" },
12
14
  React.createElement(Attributes, { attributes: { nodeName, ...info } })),
15
+ React.createElement(BaseCard, { title: "Sequence" },
16
+ React.createElement(SequenceTextArea, { str: [[name, sequence]] })),
13
17
  metadata ? (React.createElement(BaseCard, { title: "Extra metadata" },
14
18
  React.createElement(Attributes, { attributes: metadata }))) : null)));
15
19
  });
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TreeNodeInfoDialog.js","sourceRoot":"","sources":["../../../../src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EACL,UAAU,EACV,QAAQ,GACT,MAAM,mDAAmD,CAAA;AAI1D,OAAO,gBAAgB,MAAM,wBAAwB,CAAA;AAErD,eAAe,QAAQ,CAAC,UAAU,EAChC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,OAAO,GAMR;IACC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,KAAK,CAAA;IACpC,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAE,CAAA;IAC3D,OAAO,CACL,oBAAC,MAAM,IAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,IAAI,QAAC,KAAK,EAAC,gBAAgB,EAAC,QAAQ,EAAC,IAAI;QACzE,oBAAC,aAAa;YACZ,oBAAC,QAAQ,IAAC,KAAK,EAAC,YAAY;gBAC1B,oBAAC,UAAU,IAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAI,CACxC;YACX,oBAAC,QAAQ,IAAC,KAAK,EAAC,UAAU;gBACxB,oBAAC,gBAAgB,IAAC,GAAG,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,GAAI,CACpC;YACV,QAAQ,CAAC,CAAC,CAAC,CACV,oBAAC,QAAQ,IAAC,KAAK,EAAC,gBAAgB;gBAC9B,oBAAC,UAAU,IAAC,UAAU,EAAE,QAAQ,GAAI,CAC3B,CACZ,CAAC,CAAC,CAAC,IAAI,CACM,CACT,CACV,CAAA;AACH,CAAC,CAAC,CAAA"}
@@ -6,17 +6,19 @@ export function renderTree({ offsetY, ctx, model, theme, blockSizeYOverride, })
6
6
  const { hierarchy, showBranchLen, blockSize } = model;
7
7
  const by = blockSizeYOverride || blockSize;
8
8
  ctx.strokeStyle = theme.palette.text.primary;
9
- for (const { source, target } of hierarchy.links()) {
10
- const y = showBranchLen ? 'len' : 'y';
9
+ for (const link of hierarchy.links()) {
10
+ const { source, target } = link;
11
+ const sy = source.x;
12
+ const ty = target.x;
11
13
  // @ts-expect-error
12
- const { x: sy, [y]: sx } = source;
14
+ const tx = showBranchLen ? target.len : target.y;
13
15
  // @ts-expect-error
14
- const { x: ty, [y]: tx } = target;
16
+ const sx = showBranchLen ? source.len : source.y;
15
17
  const y1 = Math.min(sy, ty);
16
18
  const y2 = Math.max(sy, ty);
17
- // 1d line intersection to check if line crosses block at all, this is
18
- // an optimization that allows us to skip drawing most tree links
19
- // outside the block
19
+ // 1d line intersection to check if line crosses block at all, this is an
20
+ // optimization that allows us to skip drawing most tree links outside the
21
+ // block
20
22
  if (offsetY + by >= y1 && y2 >= offsetY) {
21
23
  ctx.beginPath();
22
24
  ctx.moveTo(sx, sy);
@@ -31,11 +33,9 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOve
31
33
  const by = blockSizeYOverride || blockSize;
32
34
  for (const node of hierarchy.descendants()) {
33
35
  const val = showBranchLen ? 'len' : 'y';
34
- const {
35
36
  // @ts-expect-error
36
- x: y,
37
- // @ts-expect-error
38
- [val]: x, data, } = node;
37
+ const { [val]: x, data } = node;
38
+ const y = node.x;
39
39
  const { branchset, id = '', name = '' } = data;
40
40
  if (!id.endsWith('-leafnode') &&
41
41
  branchset.length &&
@@ -60,7 +60,7 @@ export function renderNodeBubbles({ ctx, clickMap, offsetY, model, blockSizeYOve
60
60
  }
61
61
  }
62
62
  export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSizeYOverride, }) {
63
- const { rowHeight, showBranchLen, treeMetadata, hierarchy, blockSize, labelsAlignRight, drawTree, structures, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft: ml, noTree, } = model;
63
+ const { fontSize, showBranchLen, treeMetadata, hierarchy, blockSize, labelsAlignRight, drawTree, treeAreaWidth, treeAreaWidthMinusMargin, marginLeft, noTree, } = model;
64
64
  const by = blockSizeYOverride || blockSize;
65
65
  if (labelsAlignRight) {
66
66
  ctx.textAlign = 'right';
@@ -70,34 +70,20 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
70
70
  ctx.textAlign = 'start';
71
71
  }
72
72
  for (const node of hierarchy.leaves()) {
73
- const {
74
- // @ts-expect-error
75
- x: y,
76
- // @ts-expect-error
77
- y: x, data: { name, id },
73
+ const { data: { name, id },
78
74
  // @ts-expect-error
79
75
  len, } = node;
76
+ const y = node.x;
77
+ const x = node.y;
80
78
  const displayName = treeMetadata[name]?.genome || name;
81
79
  if (y > offsetY - extendBounds && y < offsetY + by + extendBounds) {
82
80
  // note: +rowHeight/4 matches with -rowHeight/4 in msa
83
- const yp = y + rowHeight / 4;
84
- const xp = showBranchLen ? len : x;
81
+ const yp = y + fontSize / 4;
82
+ const xp = (showBranchLen ? len : x) || 0;
85
83
  const { width } = ctx.measureText(displayName);
86
84
  const height = ctx.measureText('M').width; // use an 'em' for height
87
- const hasStructure = structures[name];
88
- ctx.fillStyle = hasStructure ? 'blue' : theme.palette.text.primary;
89
- if (!drawTree && !labelsAlignRight) {
90
- ctx.fillText(displayName, 0, yp);
91
- clickMap?.insert({
92
- minX: 0 + ml,
93
- maxX: width + ml,
94
- minY: yp - height,
95
- maxY: yp,
96
- name,
97
- id,
98
- });
99
- }
100
- else if (labelsAlignRight) {
85
+ ctx.fillStyle = theme.palette.text.primary;
86
+ if (labelsAlignRight) {
101
87
  const smallPadding = 2;
102
88
  const offset = treeAreaWidthMinusMargin - smallPadding;
103
89
  if (drawTree && !noTree) {
@@ -119,8 +105,8 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
119
105
  else {
120
106
  ctx.fillText(displayName, xp + d, yp);
121
107
  clickMap?.insert({
122
- minX: xp + d + ml,
123
- maxX: xp + d + width + ml,
108
+ minX: xp + d + marginLeft,
109
+ maxX: xp + d + width + marginLeft,
124
110
  minY: yp - height,
125
111
  maxY: yp,
126
112
  name,
@@ -133,7 +119,7 @@ export function renderTreeLabels({ theme, model, offsetY, ctx, clickMap, blockSi
133
119
  }
134
120
  export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highResScaleFactorOverride, blockSizeYOverride, }) {
135
121
  clickMap?.clear();
136
- const { noTree, drawTree, drawNodeBubbles, treeWidth, highResScaleFactor, blockSize, fontSize, rowHeight, marginLeft, nref, } = model;
122
+ const { noTree, drawTree, drawLabels, drawNodeBubbles, treeWidth, highResScaleFactor, blockSize, fontSize, rowHeight, marginLeft, nref, } = model;
137
123
  const by = blockSizeYOverride || blockSize;
138
124
  ctx.resetTransform();
139
125
  // this is a bogus use of nref, it is never less than 0. we just are using it
@@ -166,7 +152,7 @@ export function renderTreeCanvas({ model, clickMap, ctx, offsetY, theme, highRes
166
152
  });
167
153
  }
168
154
  }
169
- if (rowHeight >= 5) {
155
+ if (rowHeight >= 5 && drawLabels) {
170
156
  renderTreeLabels({
171
157
  ctx,
172
158
  offsetY,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderTreeCanvas.js","sourceRoot":"","sources":["../../../src/components/tree/renderTreeCanvas.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,OAAO,GAAG,GAAG,CAAA;AAE1B,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB,MAAM,MAAM,GAAG,GAAG,CAAA;AAClB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAA;AAYpB,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,GAAG,EACH,KAAK,EACL,KAAK,EACL,kBAAkB,GAOnB;IACC,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IACrD,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;IAC5C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,EAAE,CAAC;QACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;QAC/B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAE,CAAA;QACpB,MAAM,EAAE,GAAG,MAAM,CAAC,CAAE,CAAA;QACpB,mBAAmB;QACnB,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAChD,mBAAmB;QACnB,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;QAEhD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QAC3B,yEAAyE;QACzE,0EAA0E;QAC1E,QAAQ;QACR,IAAI,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;YACxC,GAAG,CAAC,SAAS,EAAE,CAAA;YACf,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;YAClB,GAAG,CAAC,MAAM,EAAE,CAAA;QACd,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,GAAG,EACH,QAAQ,EACR,OAAO,EACP,KAAK,EACL,kBAAkB,GAQnB;IACC,MAAM,EACJ,SAAS,EACT,aAAa,EACb,SAAS,EACT,SAAS,EACT,UAAU,EAAE,EAAE,GACf,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAA;QACvC,mBAAmB;QACnB,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAA;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAE,CAAA;QACjB,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,GAAG,IAAI,CAAA;QAC9C,IACE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzB,SAAS,CAAC,MAAM;YAChB,CAAC,GAAG,OAAO,GAAG,YAAY;YAC1B,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY,EAC/B,CAAC;YACD,GAAG,CAAC,WAAW,GAAG,OAAO,CAAA;YACzB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAA;YAC1D,GAAG,CAAC,SAAS,EAAE,CAAA;YACf,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAA;YACrC,GAAG,CAAC,IAAI,EAAE,CAAA;YACV,GAAG,CAAC,MAAM,EAAE,CAAA;YAEZ,QAAQ,EAAE,MAAM,CAAC;gBACf,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,EAAE;gBACrB,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE;gBACzB,IAAI,EAAE,CAAC,GAAG,MAAM;gBAChB,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC;gBACpB,MAAM,EAAE,IAAI;gBACZ,EAAE;gBACF,IAAI;aACL,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,KAAK,EACL,OAAO,EACP,GAAG,EACH,QAAQ,EACR,kBAAkB,GAQnB;IACC,MAAM,EACJ,QAAQ,EACR,aAAa,EACb,YAAY,EACZ,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,aAAa,EACb,wBAAwB,EACxB,UAAU,EACV,MAAM,GACP,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAC1C,IAAI,gBAAgB,EAAE,CAAC;QACrB,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;QACvB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IACzB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,SAAS,GAAG,OAAO,CAAA;IACzB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtC,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QAClB,mBAAmB;QACnB,GAAG,GACJ,GAAG,IAAI,CAAA;QACR,MAAM,CAAC,GAAG,IAAI,CAAC,CAAE,CAAA;QACjB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAE,CAAA;QAEjB,MAAM,WAAW,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,IAAI,CAAA;QACtD,IAAI,CAAC,GAAG,OAAO,GAAG,YAAY,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;YAClE,sDAAsD;YACtD,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAA;YAC3B,MAAM,EAAE,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAEzC,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;YAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA,CAAC,yBAAyB;YAEnE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAA;YAC1C,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,YAAY,GAAG,CAAC,CAAA;gBACtB,MAAM,MAAM,GAAG,wBAAwB,GAAG,YAAY,CAAA;gBACtD,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;oBAC9C,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;oBAC9B,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAA;oBAC5C,GAAG,CAAC,MAAM,EAAE,CAAA;gBACd,CAAC;gBACD,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;gBACrC,QAAQ,EAAE,MAAM,CAAC;oBACf,IAAI,EAAE,aAAa,GAAG,KAAK;oBAC3B,IAAI,EAAE,aAAa;oBACnB,IAAI,EAAE,EAAE,GAAG,MAAM;oBACjB,IAAI,EAAE,EAAE;oBACR,IAAI;oBACJ,EAAE;iBACH,CAAC,CAAA;YACJ,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;gBACrC,QAAQ,EAAE,MAAM,CAAC;oBACf,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,UAAU;oBACzB,IAAI,EAAE,EAAE,GAAG,CAAC,GAAG,KAAK,GAAG,UAAU;oBACjC,IAAI,EAAE,EAAE,GAAG,MAAM;oBACjB,IAAI,EAAE,EAAE;oBACR,IAAI;oBACJ,EAAE;iBACH,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,GAAG,EACH,OAAO,EACP,KAAK,EACL,0BAA0B,EAC1B,kBAAkB,GASnB;IACC,QAAQ,EAAE,KAAK,EAAE,CAAA;IACjB,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,UAAU,EACV,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,SAAS,EACT,QAAQ,EACR,SAAS,EACT,UAAU,EACV,IAAI,GACL,GAAG,KAAK,CAAA;IACT,MAAM,EAAE,GAAG,kBAAkB,IAAI,SAAS,CAAA;IAE1C,GAAG,CAAC,cAAc,EAAE,CAAA;IAEpB,6EAA6E;IAC7E,yEAAyE;IACzE,2EAA2E;IAC3E,yEAAyE;IACzE,qCAAqC;IACrC,MAAM,CAAC,GACL,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,0BAA0B,IAAI,kBAAkB,CAAA;IACzE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACf,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,EAAE,EAAE,CAAC,CAAA;IAC5C,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAA;IACrB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,QAAQ,IAAI,CAAC,CAAA;IAEjD,IAAI,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QACxB,UAAU,CAAC;YACT,GAAG;YACH,OAAO;YACP,KAAK;YACL,KAAK;YACL,kBAAkB;SACnB,CAAC,CAAA;QAEF,IAAI,eAAe,EAAE,CAAC;YACpB,iBAAiB,CAAC;gBAChB,GAAG;gBACH,OAAO;gBACP,QAAQ;gBACR,KAAK;gBACL,KAAK;gBACL,kBAAkB;aACnB,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,IAAI,SAAS,IAAI,CAAC,IAAI,UAAU,EAAE,CAAC;QACjC,gBAAgB,CAAC;YACf,GAAG;YACH,OAAO;YACP,KAAK;YACL,QAAQ;YACR,KAAK;YACL,kBAAkB;SACnB,CAAC,CAAA;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function myfetch(url: string, args?: RequestInit): Promise<Response>;
2
+ export declare function textfetch(url: string, args?: RequestInit): Promise<string>;
3
+ export declare function jsonfetch(url: string, args?: RequestInit): Promise<any>;
4
+ export declare function arraybufferfetch(url: string): Promise<ArrayBuffer>;
5
+ export declare function timeout(time: number): Promise<unknown>;
@@ -0,0 +1,23 @@
1
+ export async function myfetch(url, args) {
2
+ const response = await fetch(url, args);
3
+ if (!response.ok) {
4
+ throw new Error(`HTTP ${response.status} fetching ${url} ${await response.text()}`);
5
+ }
6
+ return response;
7
+ }
8
+ export async function textfetch(url, args) {
9
+ const response = await myfetch(url, args);
10
+ return response.text();
11
+ }
12
+ export async function jsonfetch(url, args) {
13
+ const response = await myfetch(url, args);
14
+ return response.json();
15
+ }
16
+ export async function arraybufferfetch(url) {
17
+ const res = await myfetch(url);
18
+ return res.arrayBuffer();
19
+ }
20
+ export function timeout(time) {
21
+ return new Promise(res => setTimeout(res, time));
22
+ }
23
+ //# sourceMappingURL=fetchUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchUtils.js","sourceRoot":"","sources":["../src/fetchUtils.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,IAAkB;IAC3D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IAEvC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,QAAQ,QAAQ,CAAC,MAAM,aAAa,GAAG,IAAI,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CACnE,CAAA;IACH,CAAC;IAED,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAkB;IAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,IAAkB;IAC7D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,GAAW;IAChD,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAA;IAC9B,OAAO,GAAG,CAAC,WAAW,EAAE,CAAA;AAC1B,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,IAAY;IAClC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const palettes: string[][];
2
+ export declare function getPalette(l: number): string[];
3
+ export default palettes;
@@ -0,0 +1,24 @@
1
+ const palettes = [
2
+ ['#F8766D'],
3
+ ['#F8766D', '#00BFC4'],
4
+ ['#F8766D', '#00BA38', '#619CFF'],
5
+ ['#F8766D', '#7CAE00', '#00BFC4', '#C77CFF'],
6
+ ['#F8766D', '#A3A500', '#00BF7D', '#00B0F6', '#E76BF3'],
7
+ ['#F8766D', '#B79F00', '#00BA38', '#00BFC4', '#619CFF', '#F564E3'],
8
+ ['#F8766D', '#C49A00', '#53B400', '#00C094', '#00B6EB', '#A58AFF', '#FB61D7'],
9
+ [
10
+ '#F8766D',
11
+ '#CD9600',
12
+ '#7CAE00',
13
+ '#00BE67',
14
+ '#00BFC4',
15
+ '#00A9FF',
16
+ '#C77CFF',
17
+ '#FF61CC',
18
+ ],
19
+ ];
20
+ export function getPalette(l) {
21
+ return palettes[Math.min(l, palettes.length - 1)];
22
+ }
23
+ export default palettes;
24
+ //# sourceMappingURL=ggplotPalettes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ggplotPalettes.js","sourceRoot":"","sources":["../src/ggplotPalettes.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG;IACf,CAAC,SAAS,CAAC;IACX,CAAC,SAAS,EAAE,SAAS,CAAC;IACtB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACjC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IAC5C,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACvD,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IAClE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IAC7E;QACE,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;QACT,SAAS;KACV;CACF,CAAA;AAED,MAAM,UAAU,UAAU,CAAC,CAAS;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;AACnD,CAAC;AAED,eAAe,QAAQ,CAAA"}
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export { default as MSAView } from './components/Loading';
2
- export { default as MSAModel, type MsaViewModel } from './model';
2
+ export { default as MSAModelF, type MsaViewModel } from './model';
package/dist/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  export { default as MSAView } from './components/Loading';
2
- export { default as MSAModel } from './model';
2
+ export { default as MSAModelF } from './model';
3
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAqB,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAqB,MAAM,SAAS,CAAA"}
@@ -0,0 +1,32 @@
1
+ export interface InterProScanResults {
2
+ matches: {
3
+ signature: {
4
+ entry?: {
5
+ name: string;
6
+ description: string;
7
+ accession: string;
8
+ };
9
+ };
10
+ locations: {
11
+ start: number;
12
+ end: number;
13
+ }[];
14
+ }[];
15
+ xref: {
16
+ id: string;
17
+ }[];
18
+ }
19
+ export interface InterProScanResponse {
20
+ results: InterProScanResults[];
21
+ }
22
+ export declare function loadInterProScanResults(jobId: string): Promise<InterProScanResponse>;
23
+ export declare function launchInterProScan({ algorithm, seq, programs, onJobId, onProgress, }: {
24
+ algorithm: string;
25
+ seq: string;
26
+ programs: string[];
27
+ onProgress: (arg?: {
28
+ msg: string;
29
+ url?: string;
30
+ }) => void;
31
+ onJobId: (arg: string) => void;
32
+ }): Promise<InterProScanResponse>;
@@ -0,0 +1,47 @@
1
+ import { jsonfetch, textfetch, timeout } from './fetchUtils';
2
+ const base = `https://www.ebi.ac.uk/Tools/services/rest`;
3
+ async function runInterProScan({ seq, onProgress, onJobId, programs, }) {
4
+ const jobId = await textfetch(`${base}/iprscan5/run`, {
5
+ method: 'POST',
6
+ body: new URLSearchParams({
7
+ email: 'colin.diesh@gmail.com',
8
+ sequence: `${seq}`,
9
+ programs: programs.join(','),
10
+ }),
11
+ });
12
+ onJobId(jobId);
13
+ await wait({
14
+ jobId,
15
+ onProgress,
16
+ });
17
+ return loadInterProScanResults(jobId);
18
+ }
19
+ export async function loadInterProScanResults(jobId) {
20
+ return (await jsonfetch(`${base}/iprscan5/result/${jobId}/json`));
21
+ }
22
+ async function wait({ onProgress, jobId, }) {
23
+ const url = `${base}/iprscan5/status/${jobId}`;
24
+ // eslint-disable-next-line no-constant-condition
25
+ while (true) {
26
+ for (let i = 0; i < 10; i++) {
27
+ await timeout(1000);
28
+ onProgress({ msg: `Checking status... ${10 - i}`, url });
29
+ }
30
+ const result = await textfetch(url);
31
+ if (result === 'FINISHED') {
32
+ break;
33
+ }
34
+ }
35
+ }
36
+ export async function launchInterProScan({ algorithm, seq, programs, onJobId, onProgress, }) {
37
+ onProgress({ msg: `Launching ${algorithm} MSA...` });
38
+ if (algorithm === 'interproscan') {
39
+ const result = await runInterProScan({ seq, onJobId, onProgress, programs });
40
+ onProgress();
41
+ return result;
42
+ }
43
+ else {
44
+ throw new Error('unknown algorithm');
45
+ }
46
+ }
47
+ //# sourceMappingURL=launchInterProScan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launchInterProScan.js","sourceRoot":"","sources":["../src/launchInterProScan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAE5D,MAAM,IAAI,GAAG,2CAA2C,CAAA;AAmBxD,KAAK,UAAU,eAAe,CAAC,EAC7B,GAAG,EACH,UAAU,EACV,OAAO,EACP,QAAQ,GAMT;IACC,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,GAAG,IAAI,eAAe,EAAE;QACpD,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,IAAI,eAAe,CAAC;YACxB,KAAK,EAAE,uBAAuB;YAC9B,QAAQ,EAAE,GAAG,GAAG,EAAE;YAClB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;SAC7B,CAAC;KACH,CAAC,CAAA;IACF,OAAO,CAAC,KAAK,CAAC,CAAA;IACd,MAAM,IAAI,CAAC;QACT,KAAK;QACL,UAAU;KACX,CAAC,CAAA;IACF,OAAO,uBAAuB,CAAC,KAAK,CAAC,CAAA;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,KAAa;IACzD,OAAO,CAAC,MAAM,SAAS,CACrB,GAAG,IAAI,oBAAoB,KAAK,OAAO,CACxC,CAAyB,CAAA;AAC5B,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,EAClB,UAAU,EACV,KAAK,GAIN;IACC,MAAM,GAAG,GAAG,GAAG,IAAI,oBAAoB,KAAK,EAAE,CAAA;IAC9C,iDAAiD;IACjD,OAAO,IAAI,EAAE,CAAC;QACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;YACnB,UAAU,CAAC,EAAE,GAAG,EAAE,sBAAsB,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAA;QAC1D,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAA;QAEnC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,MAAK;QACP,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,SAAS,EACT,GAAG,EACH,QAAQ,EACR,OAAO,EACP,UAAU,GAOX;IACC,UAAU,CAAC,EAAE,GAAG,EAAE,aAAa,SAAS,SAAS,EAAE,CAAC,CAAA;IACpD,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAA;QAC5E,UAAU,EAAE,CAAA;QACZ,OAAO,MAAM,CAAA;IACf,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAA;IACtC,CAAC;AACH,CAAC"}