@jbrowse/plugin-alignments 2.5.0 → 2.6.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 (402) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +2 -1
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.d.ts +2 -1
  3. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js +2 -1
  4. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js.map +1 -1
  5. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.d.ts +2 -1
  6. package/dist/BamAdapter/BamAdapter.d.ts +1 -1
  7. package/dist/BamAdapter/BamAdapter.js +25 -30
  8. package/dist/BamAdapter/BamAdapter.js.map +1 -1
  9. package/dist/BamAdapter/BamSlightlyLazyFeature.d.ts +1 -1
  10. package/dist/CramAdapter/CramAdapter.js +48 -46
  11. package/dist/CramAdapter/CramAdapter.js.map +1 -1
  12. package/dist/CramAdapter/CramSlightlyLazyFeature.js +3 -5
  13. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  14. package/dist/CramAdapter/CramTestAdapters.js +1 -1
  15. package/dist/CramAdapter/CramTestAdapters.js.map +1 -1
  16. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +2 -1
  17. package/dist/LinearAlignmentsDisplay/models/model.d.ts +16 -6
  18. package/dist/LinearAlignmentsDisplay/models/model.js +2 -1
  19. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -1
  20. package/dist/LinearPileupDisplay/components/ColorByModifications.d.ts +2 -1
  21. package/dist/LinearPileupDisplay/components/ColorByModifications.js +3 -23
  22. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -1
  23. package/dist/LinearPileupDisplay/components/ColorByTag.d.ts +2 -1
  24. package/dist/LinearPileupDisplay/components/ColorByTag.js +2 -6
  25. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -1
  26. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +3 -2
  27. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +6 -6
  28. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -1
  29. package/dist/LinearPileupDisplay/components/ModificationsTable.d.ts +4 -0
  30. package/dist/LinearPileupDisplay/components/ModificationsTable.js +29 -0
  31. package/dist/LinearPileupDisplay/components/ModificationsTable.js.map +1 -0
  32. package/dist/LinearPileupDisplay/components/SetFeatureHeight.d.ts +2 -1
  33. package/dist/LinearPileupDisplay/components/SetMaxHeight.d.ts +2 -1
  34. package/dist/LinearPileupDisplay/components/SortByTag.d.ts +2 -1
  35. package/dist/LinearPileupDisplay/model.d.ts +101 -78
  36. package/dist/LinearPileupDisplay/model.js +161 -115
  37. package/dist/LinearPileupDisplay/model.js.map +1 -1
  38. package/dist/LinearReadArcsDisplay/components/ReactComponent.d.ts +2 -1
  39. package/dist/LinearReadArcsDisplay/components/ReactComponent.js +36 -39
  40. package/dist/LinearReadArcsDisplay/components/ReactComponent.js.map +1 -1
  41. package/dist/LinearReadArcsDisplay/configSchema.d.ts +0 -3
  42. package/dist/LinearReadArcsDisplay/drawFeats.d.ts +2 -15
  43. package/dist/LinearReadArcsDisplay/drawFeats.js +56 -64
  44. package/dist/LinearReadArcsDisplay/drawFeats.js.map +1 -1
  45. package/dist/LinearReadArcsDisplay/model.d.ts +52 -244
  46. package/dist/LinearReadArcsDisplay/model.js +65 -115
  47. package/dist/LinearReadArcsDisplay/model.js.map +1 -1
  48. package/dist/LinearReadArcsDisplay/util.d.ts +2 -0
  49. package/dist/LinearReadArcsDisplay/util.js +13 -0
  50. package/dist/LinearReadArcsDisplay/util.js.map +1 -0
  51. package/dist/LinearReadCloudDisplay/components/ReactComponent.d.ts +2 -1
  52. package/dist/LinearReadCloudDisplay/components/ReactComponent.js +34 -36
  53. package/dist/LinearReadCloudDisplay/components/ReactComponent.js.map +1 -1
  54. package/dist/LinearReadCloudDisplay/configSchema.d.ts +3 -1
  55. package/dist/LinearReadCloudDisplay/drawFeats.d.ts +2 -12
  56. package/dist/LinearReadCloudDisplay/drawFeats.js +11 -127
  57. package/dist/LinearReadCloudDisplay/drawFeats.js.map +1 -1
  58. package/dist/LinearReadCloudDisplay/drawLongReadChains.d.ts +11 -0
  59. package/dist/LinearReadCloudDisplay/drawLongReadChains.js +69 -0
  60. package/dist/LinearReadCloudDisplay/drawLongReadChains.js.map +1 -0
  61. package/dist/LinearReadCloudDisplay/drawPairChains.d.ts +17 -0
  62. package/dist/LinearReadCloudDisplay/drawPairChains.js +100 -0
  63. package/dist/LinearReadCloudDisplay/drawPairChains.js.map +1 -0
  64. package/dist/LinearReadCloudDisplay/model.d.ts +60 -238
  65. package/dist/LinearReadCloudDisplay/model.js +55 -92
  66. package/dist/LinearReadCloudDisplay/model.js.map +1 -1
  67. package/dist/LinearReadCloudDisplay/util.d.ts +2 -0
  68. package/dist/LinearReadCloudDisplay/util.js +35 -0
  69. package/dist/LinearReadCloudDisplay/util.js.map +1 -0
  70. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +2 -1
  71. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +134 -74
  72. package/dist/LinearSNPCoverageDisplay/models/model.js +46 -33
  73. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  74. package/dist/MismatchParser/index.d.ts +7 -2
  75. package/dist/MismatchParser/index.js +44 -5
  76. package/dist/MismatchParser/index.js.map +1 -1
  77. package/dist/PileupRPC/methods/GetReducedFeatures.d.ts +15 -2
  78. package/dist/PileupRPC/methods/GetReducedFeatures.js +1 -8
  79. package/dist/PileupRPC/methods/GetReducedFeatures.js.map +1 -1
  80. package/dist/PileupRenderer/PileupRenderer.d.ts +4 -117
  81. package/dist/PileupRenderer/PileupRenderer.js +18 -761
  82. package/dist/PileupRenderer/PileupRenderer.js.map +1 -1
  83. package/dist/PileupRenderer/colorBy.d.ts +7 -0
  84. package/dist/PileupRenderer/colorBy.js +69 -0
  85. package/dist/PileupRenderer/colorBy.js.map +1 -0
  86. package/dist/PileupRenderer/components/PileupRendering.d.ts +7 -2
  87. package/dist/PileupRenderer/components/PileupRendering.js +17 -18
  88. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -1
  89. package/dist/PileupRenderer/getAlignmentShapeColor.d.ts +10 -0
  90. package/dist/PileupRenderer/getAlignmentShapeColor.js +60 -0
  91. package/dist/PileupRenderer/getAlignmentShapeColor.js.map +1 -0
  92. package/dist/PileupRenderer/index.js +1 -1
  93. package/dist/PileupRenderer/index.js.map +1 -1
  94. package/dist/PileupRenderer/layoutFeature.d.ts +18 -0
  95. package/dist/PileupRenderer/layoutFeature.js +41 -0
  96. package/dist/PileupRenderer/layoutFeature.js.map +1 -0
  97. package/dist/PileupRenderer/layoutFeatures.d.ts +2 -0
  98. package/dist/PileupRenderer/layoutFeatures.js +35 -0
  99. package/dist/PileupRenderer/layoutFeatures.js.map +1 -0
  100. package/dist/PileupRenderer/makeImageData.d.ts +17 -0
  101. package/dist/PileupRenderer/makeImageData.js +64 -0
  102. package/dist/PileupRenderer/makeImageData.js.map +1 -0
  103. package/dist/PileupRenderer/renderAlignment.d.ts +13 -0
  104. package/dist/PileupRenderer/renderAlignment.js +72 -0
  105. package/dist/PileupRenderer/renderAlignment.js.map +1 -0
  106. package/dist/PileupRenderer/renderAlignmentShape.d.ts +7 -0
  107. package/dist/PileupRenderer/renderAlignmentShape.js +41 -0
  108. package/dist/PileupRenderer/renderAlignmentShape.js.map +1 -0
  109. package/dist/PileupRenderer/renderMethylation.d.ts +11 -0
  110. package/dist/PileupRenderer/renderMethylation.js +63 -0
  111. package/dist/PileupRenderer/renderMethylation.js.map +1 -0
  112. package/dist/PileupRenderer/renderMismatches.d.ts +21 -0
  113. package/dist/PileupRenderer/renderMismatches.js +135 -0
  114. package/dist/PileupRenderer/renderMismatches.js.map +1 -0
  115. package/dist/PileupRenderer/renderModifications.d.ts +11 -0
  116. package/dist/PileupRenderer/renderModifications.js +54 -0
  117. package/dist/PileupRenderer/renderModifications.js.map +1 -0
  118. package/dist/PileupRenderer/renderPerBaseLettering.d.ts +13 -0
  119. package/dist/PileupRenderer/renderPerBaseLettering.js +47 -0
  120. package/dist/PileupRenderer/renderPerBaseLettering.js.map +1 -0
  121. package/dist/PileupRenderer/renderPerBaseQuality.d.ts +9 -0
  122. package/dist/PileupRenderer/renderPerBaseQuality.js +39 -0
  123. package/dist/PileupRenderer/renderPerBaseQuality.js.map +1 -0
  124. package/dist/PileupRenderer/renderSoftClipping.d.ts +13 -0
  125. package/dist/PileupRenderer/renderSoftClipping.js +48 -0
  126. package/dist/PileupRenderer/renderSoftClipping.js.map +1 -0
  127. package/dist/PileupRenderer/sortUtil.js +1 -2
  128. package/dist/PileupRenderer/sortUtil.js.map +1 -1
  129. package/dist/PileupRenderer/util.d.ts +24 -0
  130. package/dist/PileupRenderer/util.js +51 -0
  131. package/dist/PileupRenderer/util.js.map +1 -0
  132. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +0 -2
  133. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +0 -3
  134. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  135. package/dist/SNPCoverageAdapter/generateCoverageBins.d.ts +3 -43
  136. package/dist/SNPCoverageAdapter/generateCoverageBins.js +72 -49
  137. package/dist/SNPCoverageAdapter/generateCoverageBins.js.map +1 -1
  138. package/dist/SNPCoverageAdapter/index.js +0 -2
  139. package/dist/SNPCoverageAdapter/index.js.map +1 -1
  140. package/dist/SNPCoverageAdapter/util.d.ts +29 -0
  141. package/dist/SNPCoverageAdapter/util.js +3 -0
  142. package/dist/SNPCoverageAdapter/util.js.map +1 -0
  143. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  144. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +2 -2
  145. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  146. package/dist/SNPCoverageRenderer/configSchema.d.ts +5 -0
  147. package/dist/SNPCoverageRenderer/configSchema.js +5 -0
  148. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -1
  149. package/dist/shared/BaseDisplayComponent.d.ts +8 -0
  150. package/dist/shared/BaseDisplayComponent.js +49 -0
  151. package/dist/shared/BaseDisplayComponent.js.map +1 -0
  152. package/dist/shared/FilterByTag.d.ts +13 -11
  153. package/dist/shared/FilterByTag.js +8 -13
  154. package/dist/shared/FilterByTag.js.map +1 -1
  155. package/dist/shared/afterAttach.d.ts +2 -0
  156. package/dist/shared/afterAttach.js +44 -0
  157. package/dist/shared/afterAttach.js.map +1 -0
  158. package/dist/shared/color.d.ts +44 -6
  159. package/dist/shared/color.js +57 -23
  160. package/dist/shared/color.js.map +1 -1
  161. package/dist/shared/fetchChains.d.ts +3 -2
  162. package/dist/shared/fetchChains.js +14 -20
  163. package/dist/shared/fetchChains.js.map +1 -1
  164. package/dist/shared/renderSvg.d.ts +7 -0
  165. package/dist/shared/renderSvg.js +69 -0
  166. package/dist/shared/renderSvg.js.map +1 -0
  167. package/dist/shared/util.d.ts +2 -0
  168. package/dist/shared/util.js +13 -0
  169. package/dist/shared/util.js.map +1 -0
  170. package/dist/util.d.ts +16 -2
  171. package/dist/util.js +45 -4
  172. package/dist/util.js.map +1 -1
  173. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +2 -1
  174. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.d.ts +2 -1
  175. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js +3 -2
  176. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureFlags.js.map +1 -1
  177. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureSuppAligns.d.ts +2 -1
  178. package/esm/BamAdapter/BamAdapter.d.ts +1 -1
  179. package/esm/BamAdapter/BamAdapter.js +25 -30
  180. package/esm/BamAdapter/BamAdapter.js.map +1 -1
  181. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +1 -1
  182. package/esm/CramAdapter/CramAdapter.js +49 -47
  183. package/esm/CramAdapter/CramAdapter.js.map +1 -1
  184. package/esm/CramAdapter/CramSlightlyLazyFeature.js +3 -5
  185. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -1
  186. package/esm/CramAdapter/CramTestAdapters.js +1 -1
  187. package/esm/CramAdapter/CramTestAdapters.js.map +1 -1
  188. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +2 -1
  189. package/esm/LinearAlignmentsDisplay/models/model.d.ts +16 -6
  190. package/esm/LinearAlignmentsDisplay/models/model.js +2 -1
  191. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -1
  192. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +2 -1
  193. package/esm/LinearPileupDisplay/components/ColorByModifications.js +2 -22
  194. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -1
  195. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +2 -1
  196. package/esm/LinearPileupDisplay/components/ColorByTag.js +2 -6
  197. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -1
  198. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +3 -2
  199. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +6 -6
  200. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -1
  201. package/esm/LinearPileupDisplay/components/ModificationsTable.d.ts +4 -0
  202. package/esm/LinearPileupDisplay/components/ModificationsTable.js +23 -0
  203. package/esm/LinearPileupDisplay/components/ModificationsTable.js.map +1 -0
  204. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +2 -1
  205. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +2 -1
  206. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +2 -1
  207. package/esm/LinearPileupDisplay/model.d.ts +101 -78
  208. package/esm/LinearPileupDisplay/model.js +162 -116
  209. package/esm/LinearPileupDisplay/model.js.map +1 -1
  210. package/esm/LinearReadArcsDisplay/components/ReactComponent.d.ts +2 -1
  211. package/esm/LinearReadArcsDisplay/components/ReactComponent.js +13 -39
  212. package/esm/LinearReadArcsDisplay/components/ReactComponent.js.map +1 -1
  213. package/esm/LinearReadArcsDisplay/configSchema.d.ts +0 -3
  214. package/esm/LinearReadArcsDisplay/drawFeats.d.ts +2 -15
  215. package/esm/LinearReadArcsDisplay/drawFeats.js +54 -61
  216. package/esm/LinearReadArcsDisplay/drawFeats.js.map +1 -1
  217. package/esm/LinearReadArcsDisplay/model.d.ts +52 -244
  218. package/esm/LinearReadArcsDisplay/model.js +69 -119
  219. package/esm/LinearReadArcsDisplay/model.js.map +1 -1
  220. package/esm/LinearReadArcsDisplay/util.d.ts +2 -0
  221. package/esm/LinearReadArcsDisplay/util.js +9 -0
  222. package/esm/LinearReadArcsDisplay/util.js.map +1 -0
  223. package/esm/LinearReadCloudDisplay/components/ReactComponent.d.ts +2 -1
  224. package/esm/LinearReadCloudDisplay/components/ReactComponent.js +11 -36
  225. package/esm/LinearReadCloudDisplay/components/ReactComponent.js.map +1 -1
  226. package/esm/LinearReadCloudDisplay/configSchema.d.ts +3 -1
  227. package/esm/LinearReadCloudDisplay/drawFeats.d.ts +2 -12
  228. package/esm/LinearReadCloudDisplay/drawFeats.js +9 -126
  229. package/esm/LinearReadCloudDisplay/drawFeats.js.map +1 -1
  230. package/esm/LinearReadCloudDisplay/drawLongReadChains.d.ts +11 -0
  231. package/esm/LinearReadCloudDisplay/drawLongReadChains.js +65 -0
  232. package/esm/LinearReadCloudDisplay/drawLongReadChains.js.map +1 -0
  233. package/esm/LinearReadCloudDisplay/drawPairChains.d.ts +17 -0
  234. package/esm/LinearReadCloudDisplay/drawPairChains.js +95 -0
  235. package/esm/LinearReadCloudDisplay/drawPairChains.js.map +1 -0
  236. package/esm/LinearReadCloudDisplay/model.d.ts +60 -238
  237. package/esm/LinearReadCloudDisplay/model.js +59 -96
  238. package/esm/LinearReadCloudDisplay/model.js.map +1 -1
  239. package/esm/LinearReadCloudDisplay/util.d.ts +2 -0
  240. package/esm/LinearReadCloudDisplay/util.js +30 -0
  241. package/esm/LinearReadCloudDisplay/util.js.map +1 -0
  242. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +2 -1
  243. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +134 -74
  244. package/esm/LinearSNPCoverageDisplay/models/model.js +48 -35
  245. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -1
  246. package/esm/MismatchParser/index.d.ts +7 -2
  247. package/esm/MismatchParser/index.js +41 -4
  248. package/esm/MismatchParser/index.js.map +1 -1
  249. package/esm/PileupRPC/methods/GetReducedFeatures.d.ts +15 -2
  250. package/esm/PileupRPC/methods/GetReducedFeatures.js +2 -9
  251. package/esm/PileupRPC/methods/GetReducedFeatures.js.map +1 -1
  252. package/esm/PileupRenderer/PileupRenderer.d.ts +4 -117
  253. package/esm/PileupRenderer/PileupRenderer.js +20 -763
  254. package/esm/PileupRenderer/PileupRenderer.js.map +1 -1
  255. package/esm/PileupRenderer/colorBy.d.ts +7 -0
  256. package/esm/PileupRenderer/colorBy.js +61 -0
  257. package/esm/PileupRenderer/colorBy.js.map +1 -0
  258. package/esm/PileupRenderer/components/PileupRendering.d.ts +7 -2
  259. package/esm/PileupRenderer/components/PileupRendering.js +17 -18
  260. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -1
  261. package/esm/PileupRenderer/getAlignmentShapeColor.d.ts +10 -0
  262. package/esm/PileupRenderer/getAlignmentShapeColor.js +56 -0
  263. package/esm/PileupRenderer/getAlignmentShapeColor.js.map +1 -0
  264. package/esm/PileupRenderer/index.js +1 -1
  265. package/esm/PileupRenderer/index.js.map +1 -1
  266. package/esm/PileupRenderer/layoutFeature.d.ts +18 -0
  267. package/esm/PileupRenderer/layoutFeature.js +37 -0
  268. package/esm/PileupRenderer/layoutFeature.js.map +1 -0
  269. package/esm/PileupRenderer/layoutFeatures.d.ts +2 -0
  270. package/esm/PileupRenderer/layoutFeatures.js +31 -0
  271. package/esm/PileupRenderer/layoutFeatures.js.map +1 -0
  272. package/esm/PileupRenderer/makeImageData.d.ts +17 -0
  273. package/esm/PileupRenderer/makeImageData.js +60 -0
  274. package/esm/PileupRenderer/makeImageData.js.map +1 -0
  275. package/esm/PileupRenderer/renderAlignment.d.ts +13 -0
  276. package/esm/PileupRenderer/renderAlignment.js +68 -0
  277. package/esm/PileupRenderer/renderAlignment.js.map +1 -0
  278. package/esm/PileupRenderer/renderAlignmentShape.d.ts +7 -0
  279. package/esm/PileupRenderer/renderAlignmentShape.js +37 -0
  280. package/esm/PileupRenderer/renderAlignmentShape.js.map +1 -0
  281. package/esm/PileupRenderer/renderMethylation.d.ts +11 -0
  282. package/esm/PileupRenderer/renderMethylation.js +59 -0
  283. package/esm/PileupRenderer/renderMethylation.js.map +1 -0
  284. package/esm/PileupRenderer/renderMismatches.d.ts +21 -0
  285. package/esm/PileupRenderer/renderMismatches.js +131 -0
  286. package/esm/PileupRenderer/renderMismatches.js.map +1 -0
  287. package/esm/PileupRenderer/renderModifications.d.ts +11 -0
  288. package/esm/PileupRenderer/renderModifications.js +50 -0
  289. package/esm/PileupRenderer/renderModifications.js.map +1 -0
  290. package/esm/PileupRenderer/renderPerBaseLettering.d.ts +13 -0
  291. package/esm/PileupRenderer/renderPerBaseLettering.js +43 -0
  292. package/esm/PileupRenderer/renderPerBaseLettering.js.map +1 -0
  293. package/esm/PileupRenderer/renderPerBaseQuality.d.ts +9 -0
  294. package/esm/PileupRenderer/renderPerBaseQuality.js +35 -0
  295. package/esm/PileupRenderer/renderPerBaseQuality.js.map +1 -0
  296. package/esm/PileupRenderer/renderSoftClipping.d.ts +13 -0
  297. package/esm/PileupRenderer/renderSoftClipping.js +44 -0
  298. package/esm/PileupRenderer/renderSoftClipping.js.map +1 -0
  299. package/esm/PileupRenderer/sortUtil.js +1 -2
  300. package/esm/PileupRenderer/sortUtil.js.map +1 -1
  301. package/esm/PileupRenderer/util.d.ts +24 -0
  302. package/esm/PileupRenderer/util.js +42 -0
  303. package/esm/PileupRenderer/util.js.map +1 -0
  304. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +0 -2
  305. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +0 -2
  306. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -1
  307. package/esm/SNPCoverageAdapter/generateCoverageBins.d.ts +3 -43
  308. package/esm/SNPCoverageAdapter/generateCoverageBins.js +73 -50
  309. package/esm/SNPCoverageAdapter/generateCoverageBins.js.map +1 -1
  310. package/esm/SNPCoverageAdapter/index.js +0 -2
  311. package/esm/SNPCoverageAdapter/index.js.map +1 -1
  312. package/esm/SNPCoverageAdapter/util.d.ts +29 -0
  313. package/esm/SNPCoverageAdapter/util.js +2 -0
  314. package/esm/SNPCoverageAdapter/util.js.map +1 -0
  315. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  316. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +2 -2
  317. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -1
  318. package/esm/SNPCoverageRenderer/configSchema.d.ts +5 -0
  319. package/esm/SNPCoverageRenderer/configSchema.js +5 -0
  320. package/esm/SNPCoverageRenderer/configSchema.js.map +1 -1
  321. package/esm/shared/BaseDisplayComponent.d.ts +8 -0
  322. package/esm/shared/BaseDisplayComponent.js +44 -0
  323. package/esm/shared/BaseDisplayComponent.js.map +1 -0
  324. package/esm/shared/FilterByTag.d.ts +13 -11
  325. package/esm/shared/FilterByTag.js +8 -13
  326. package/esm/shared/FilterByTag.js.map +1 -1
  327. package/esm/shared/afterAttach.d.ts +2 -0
  328. package/esm/shared/afterAttach.js +40 -0
  329. package/esm/shared/afterAttach.js.map +1 -0
  330. package/esm/shared/color.d.ts +44 -6
  331. package/esm/shared/color.js +54 -20
  332. package/esm/shared/color.js.map +1 -1
  333. package/esm/shared/fetchChains.d.ts +3 -2
  334. package/esm/shared/fetchChains.js +14 -20
  335. package/esm/shared/fetchChains.js.map +1 -1
  336. package/esm/shared/renderSvg.d.ts +7 -0
  337. package/esm/shared/renderSvg.js +39 -0
  338. package/esm/shared/renderSvg.js.map +1 -0
  339. package/esm/shared/util.d.ts +2 -0
  340. package/esm/shared/util.js +9 -0
  341. package/esm/shared/util.js.map +1 -0
  342. package/esm/util.d.ts +16 -2
  343. package/esm/util.js +42 -3
  344. package/esm/util.js.map +1 -1
  345. package/package.json +3 -3
  346. package/src/AlignmentsFeatureDetail/AlignmentsFeatureFlags.tsx +3 -5
  347. package/src/BamAdapter/BamAdapter.ts +41 -42
  348. package/src/CombinationTest.test.ts +2 -2
  349. package/src/CramAdapter/CramAdapter.ts +66 -55
  350. package/src/CramAdapter/CramSlightlyLazyFeature.ts +2 -5
  351. package/src/CramAdapter/CramTestAdapters.ts +1 -1
  352. package/src/LinearAlignmentsDisplay/models/model.tsx +5 -1
  353. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +3 -39
  354. package/src/LinearPileupDisplay/components/ColorByTag.tsx +1 -6
  355. package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +10 -11
  356. package/src/LinearPileupDisplay/components/ModificationsTable.tsx +38 -0
  357. package/src/LinearPileupDisplay/model.ts +199 -152
  358. package/src/LinearReadArcsDisplay/components/ReactComponent.tsx +23 -61
  359. package/src/LinearReadArcsDisplay/drawFeats.ts +77 -85
  360. package/src/LinearReadArcsDisplay/model.tsx +77 -155
  361. package/src/LinearReadArcsDisplay/util.ts +10 -0
  362. package/src/LinearReadCloudDisplay/components/ReactComponent.tsx +21 -59
  363. package/src/LinearReadCloudDisplay/drawFeats.ts +12 -167
  364. package/src/LinearReadCloudDisplay/drawLongReadChains.ts +85 -0
  365. package/src/LinearReadCloudDisplay/drawPairChains.ts +139 -0
  366. package/src/LinearReadCloudDisplay/model.tsx +72 -131
  367. package/src/LinearReadCloudDisplay/util.ts +47 -0
  368. package/src/LinearSNPCoverageDisplay/models/model.ts +63 -50
  369. package/src/MismatchParser/index.ts +46 -4
  370. package/src/PileupRPC/methods/GetReducedFeatures.ts +2 -10
  371. package/src/PileupRenderer/PileupRenderer.ts +23 -1200
  372. package/src/PileupRenderer/colorBy.ts +74 -0
  373. package/src/PileupRenderer/components/PileupRendering.tsx +20 -25
  374. package/src/PileupRenderer/getAlignmentShapeColor.ts +87 -0
  375. package/src/PileupRenderer/index.ts +1 -1
  376. package/src/PileupRenderer/layoutFeature.ts +83 -0
  377. package/src/PileupRenderer/layoutFeatures.ts +44 -0
  378. package/src/PileupRenderer/makeImageData.ts +93 -0
  379. package/src/PileupRenderer/renderAlignment.ts +97 -0
  380. package/src/PileupRenderer/renderAlignmentShape.ts +45 -0
  381. package/src/PileupRenderer/renderMethylation.ts +75 -0
  382. package/src/PileupRenderer/renderMismatches.ts +206 -0
  383. package/src/PileupRenderer/renderModifications.ts +74 -0
  384. package/src/PileupRenderer/renderPerBaseLettering.ts +67 -0
  385. package/src/PileupRenderer/renderPerBaseQuality.ts +46 -0
  386. package/src/PileupRenderer/renderSoftClipping.ts +78 -0
  387. package/src/PileupRenderer/sortUtil.ts +1 -3
  388. package/src/PileupRenderer/util.ts +63 -0
  389. package/src/SNPCoverageAdapter/SNPCoverageAdapter.ts +0 -3
  390. package/src/SNPCoverageAdapter/generateCoverageBins.ts +111 -100
  391. package/src/SNPCoverageAdapter/index.ts +0 -2
  392. package/src/SNPCoverageAdapter/util.ts +33 -0
  393. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +3 -3
  394. package/src/SNPCoverageRenderer/configSchema.ts +6 -0
  395. package/src/shared/BaseDisplayComponent.tsx +83 -0
  396. package/src/shared/FilterByTag.tsx +13 -23
  397. package/src/shared/afterAttach.tsx +66 -0
  398. package/src/shared/color.ts +59 -20
  399. package/src/shared/fetchChains.ts +23 -24
  400. package/src/shared/renderSvg.tsx +64 -0
  401. package/src/shared/util.ts +10 -0
  402. package/src/util.ts +54 -5
@@ -1,6 +1,12 @@
1
1
  import { lazy } from 'react'
2
2
  import { autorun, observable } from 'mobx'
3
- import { cast, types, addDisposer, Instance } from 'mobx-state-tree'
3
+ import {
4
+ cast,
5
+ types,
6
+ addDisposer,
7
+ getSnapshot,
8
+ Instance,
9
+ } from 'mobx-state-tree'
4
10
  import copy from 'copy-to-clipboard'
5
11
  import {
6
12
  AnyConfigurationModel,
@@ -40,6 +46,8 @@ import {
40
46
  FilterModel,
41
47
  } from '../shared'
42
48
  import { SimpleFeatureSerialized } from '@jbrowse/core/util/simpleFeature'
49
+ import { createAutorun, modificationColors } from '../util'
50
+ import { randomColor } from '../util'
43
51
 
44
52
  // async
45
53
  const FilterByTagDlg = lazy(() => import('../shared/FilterByTag'))
@@ -66,6 +74,7 @@ export interface Filter {
66
74
 
67
75
  /**
68
76
  * #stateModel LinearPileupDisplay
77
+ * #category display
69
78
  * extends `BaseLinearDisplay`
70
79
  */
71
80
  function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
@@ -142,14 +151,38 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
142
151
  modificationTagMap: observable.map<string, string>({}),
143
152
  featureUnderMouseVolatile: undefined as undefined | Feature,
144
153
  currSortBpPerPx: 0,
145
- ready: false,
154
+ modificationsReady: false,
155
+ sortReady: false,
156
+ tagsReady: false,
157
+ }))
158
+ .views(self => ({
159
+ get autorunReady() {
160
+ const view = getContainingView(self) as LGV
161
+ return (
162
+ view.initialized &&
163
+ self.featureDensityStatsReady &&
164
+ !self.regionTooLarge
165
+ )
166
+ },
146
167
  }))
147
168
  .actions(self => ({
148
169
  /**
149
170
  * #action
150
171
  */
151
- setReady(flag: boolean) {
152
- self.ready = flag
172
+ setModificationsReady(flag: boolean) {
173
+ self.modificationsReady = flag
174
+ },
175
+ /**
176
+ * #action
177
+ */
178
+ setTagsReady(flag: boolean) {
179
+ self.tagsReady = flag
180
+ },
181
+ /**
182
+ * #action
183
+ */
184
+ setSortReady(flag: boolean) {
185
+ self.sortReady = flag
153
186
  },
154
187
  /**
155
188
  * #action
@@ -182,19 +215,20 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
182
215
  setColorScheme(colorScheme: { type: string; tag?: string }) {
183
216
  self.colorTagMap = observable.map({}) // clear existing mapping
184
217
  self.colorBy = cast(colorScheme)
185
- self.ready = false
218
+ self.tagsReady = false
219
+ self.modificationsReady = false
186
220
  },
187
221
 
188
222
  /**
189
223
  * #action
190
224
  */
191
225
  updateModificationColorMap(uniqueModifications: string[]) {
192
- const colorPalette = ['red', 'blue', 'green', 'orange', 'purple']
193
226
  uniqueModifications.forEach(value => {
194
227
  if (!self.modificationTagMap.has(value)) {
195
- const totalKeys = [...self.modificationTagMap.keys()].length
196
- const newColor = colorPalette[totalKeys]
197
- self.modificationTagMap.set(value, newColor)
228
+ self.modificationTagMap.set(
229
+ value,
230
+ modificationColors[value] || randomColor(),
231
+ )
198
232
  }
199
233
  })
200
234
  },
@@ -222,8 +256,7 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
222
256
  uniqueTag.forEach(value => {
223
257
  if (!self.colorTagMap.has(value)) {
224
258
  const totalKeys = [...self.colorTagMap.keys()].length
225
- const newColor = colorPalette[totalKeys]
226
- self.colorTagMap.set(value, newColor)
259
+ self.colorTagMap.set(value, colorPalette[totalKeys])
227
260
  }
228
261
  })
229
262
  },
@@ -233,130 +266,6 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
233
266
  setFeatureUnderMouse(feat?: Feature) {
234
267
  self.featureUnderMouseVolatile = feat
235
268
  },
236
- }))
237
- .actions(self => ({
238
- afterAttach() {
239
- addDisposer(
240
- self,
241
- autorun(
242
- async () => {
243
- try {
244
- const { rpcManager } = getSession(self)
245
- const view = getContainingView(self) as LGV
246
- const {
247
- sortedBy,
248
- colorBy,
249
- parentTrack,
250
- adapterConfig,
251
- rendererType,
252
- } = self
253
-
254
- if (
255
- !view.initialized ||
256
- !self.featureDensityStatsReady ||
257
- self.regionTooLarge
258
- ) {
259
- return
260
- }
261
-
262
- const { staticBlocks, bpPerPx } = view
263
- // continually generate the vc pairing, set and rerender if any
264
- // new values seen
265
- if (colorBy?.tag) {
266
- self.updateColorTagMap(
267
- await getUniqueTagValues(self, colorBy, staticBlocks),
268
- )
269
- }
270
-
271
- if (colorBy?.type === 'modifications') {
272
- const adapter = getConf(parentTrack, ['adapter'])
273
- self.updateModificationColorMap(
274
- await getUniqueModificationValues(
275
- self,
276
- adapter,
277
- colorBy,
278
- staticBlocks,
279
- ),
280
- )
281
- }
282
-
283
- if (sortedBy) {
284
- const { pos, refName, assemblyName } = sortedBy
285
- // render just the sorted region first
286
- // @ts-expect-error
287
- await self.rendererType.renderInClient(rpcManager, {
288
- assemblyName,
289
- regions: [
290
- {
291
- start: pos,
292
- end: pos + 1,
293
- refName,
294
- assemblyName,
295
- },
296
- ],
297
- adapterConfig: adapterConfig,
298
- rendererType: rendererType.name,
299
- sessionId: getRpcSessionId(self),
300
- layoutId: view.id,
301
- timeout: 1000000,
302
- ...self.renderProps(),
303
- })
304
- self.setReady(true)
305
- self.setCurrSortBpPerPx(bpPerPx)
306
- } else {
307
- self.setReady(true)
308
- }
309
- } catch (e) {
310
- console.error(e)
311
- self.setError(e)
312
- }
313
- },
314
- { delay: 1000 },
315
- ),
316
- )
317
-
318
- // autorun synchronizes featureUnderMouse with featureIdUnderMouse
319
- // asynchronously. this is needed due to how we do not serialize all
320
- // features from the BAM/CRAM over the rpc
321
- addDisposer(
322
- self,
323
- autorun(async () => {
324
- const session = getSession(self)
325
- try {
326
- const featureId = self.featureIdUnderMouse
327
- if (self.featureUnderMouse?.id() !== featureId) {
328
- if (!featureId) {
329
- self.setFeatureUnderMouse(undefined)
330
- } else {
331
- const sessionId = getRpcSessionId(self)
332
- const view = getContainingView(self)
333
- const { feature } = (await session.rpcManager.call(
334
- sessionId,
335
- 'CoreGetFeatureDetails',
336
- {
337
- featureId,
338
- sessionId,
339
- layoutId: view.id,
340
- rendererType: 'PileupRenderer',
341
- },
342
- )) as { feature: SimpleFeatureSerialized }
343
-
344
- // check featureIdUnderMouse is still the same as the
345
- // feature.id that was returned e.g. that the user hasn't
346
- // moused over to a new position during the async operation
347
- // above
348
- if (self.featureIdUnderMouse === feature.uniqueId) {
349
- self.setFeatureUnderMouse(new SimpleFeature(feature))
350
- }
351
- }
352
- }
353
- } catch (e) {
354
- console.error(e)
355
- session.notify(`${e}`, 'error')
356
- }
357
- }),
358
- )
359
- },
360
269
 
361
270
  /**
362
271
  * #action
@@ -428,6 +337,7 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
428
337
  return
429
338
  }
430
339
 
340
+ self.sortReady = false
431
341
  self.sortedBy = {
432
342
  type,
433
343
  pos: centerBp,
@@ -435,7 +345,6 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
435
345
  assemblyName,
436
346
  tag,
437
347
  }
438
- self.ready = false
439
348
  },
440
349
  setFilterBy(filter: Filter) {
441
350
  self.filterBy = cast(filter)
@@ -509,6 +418,17 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
509
418
  get featureUnderMouse() {
510
419
  return self.featureUnderMouseVolatile
511
420
  },
421
+ /**
422
+ * #getter
423
+ */
424
+ get renderReady() {
425
+ const view = getContainingView(self) as LGV
426
+ return (
427
+ self.modificationsReady &&
428
+ self.tagsReady &&
429
+ self.currSortBpPerPx === view.bpPerPx
430
+ )
431
+ },
512
432
  }))
513
433
  .views(self => {
514
434
  const {
@@ -534,12 +454,12 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
534
454
  */
535
455
  contextMenuItems() {
536
456
  const feat = self.contextMenuFeature
537
- const contextMenuItems = feat
457
+ return feat
538
458
  ? [
539
459
  {
540
460
  label: 'Open feature details',
541
461
  icon: MenuOpenIcon,
542
- onClick: () => {
462
+ onClick: (): void => {
543
463
  self.clearFeatureSelection()
544
464
  if (feat) {
545
465
  self.selectFeature(feat)
@@ -549,7 +469,7 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
549
469
  {
550
470
  label: 'Copy info to clipboard',
551
471
  icon: ContentCopyIcon,
552
- onClick: () => {
472
+ onClick: (): void => {
553
473
  if (feat) {
554
474
  self.copyFeatureToClipboard(feat)
555
475
  }
@@ -557,7 +477,6 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
557
477
  },
558
478
  ]
559
479
  : []
560
- return contextMenuItems
561
480
  },
562
481
 
563
482
  /**
@@ -569,8 +488,7 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
569
488
  /**
570
489
  * #method
571
490
  */
572
- renderProps() {
573
- const view = getContainingView(self) as LGV
491
+ renderPropsPre() {
574
492
  const {
575
493
  colorTagMap,
576
494
  modificationTagMap,
@@ -578,22 +496,16 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
578
496
  colorBy,
579
497
  filterBy,
580
498
  rpcDriverName,
581
- currSortBpPerPx,
582
- ready,
583
499
  } = self
584
500
 
585
501
  const superProps = superRenderProps()
586
-
587
502
  return {
588
503
  ...superProps,
589
- notReady:
590
- superProps.notReady ||
591
- !ready ||
592
- (sortedBy && currSortBpPerPx !== view.bpPerPx),
504
+ notReady: superProps.notReady || !self.renderReady,
593
505
  rpcDriverName,
594
506
  displayModel: self,
595
- sortedBy,
596
- colorBy,
507
+ sortedBy: sortedBy ? getSnapshot(sortedBy) : undefined,
508
+ colorBy: colorBy ? getSnapshot(colorBy) : undefined,
597
509
  filterBy: JSON.parse(JSON.stringify(filterBy)),
598
510
  colorTagMap: Object.fromEntries(colorTagMap.toJSON()),
599
511
  modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),
@@ -665,6 +577,20 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
665
577
  }
666
578
  },
667
579
 
580
+ // renderProps and renderPropsPre are separated due to sortReady
581
+ // causing a infinite loop in the sort autorun, since the sort autorun
582
+ // uses renderProps
583
+ /**
584
+ * #method
585
+ */
586
+ renderProps() {
587
+ const pre = this.renderPropsPre()
588
+ return {
589
+ ...pre,
590
+ notReady: pre.notReady || !self.sortReady,
591
+ }
592
+ },
593
+
668
594
  /**
669
595
  * #method
670
596
  */
@@ -829,9 +755,130 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
829
755
  },
830
756
  }
831
757
  })
758
+ .actions(self => ({
759
+ afterAttach() {
760
+ createAutorun(
761
+ self,
762
+ async () => {
763
+ const view = getContainingView(self) as LGV
764
+ if (!self.autorunReady) {
765
+ return
766
+ }
767
+
768
+ const { colorBy } = self
769
+ const { staticBlocks } = view
770
+ if (colorBy?.tag) {
771
+ const vals = await getUniqueTagValues(self, colorBy, staticBlocks)
772
+ self.updateColorTagMap(vals)
773
+ }
774
+ self.setTagsReady(true)
775
+ },
776
+ { delay: 1000 },
777
+ )
778
+ createAutorun(self, async () => {
779
+ if (!self.autorunReady) {
780
+ return
781
+ }
782
+ const { parentTrack, colorBy } = self
783
+ const { staticBlocks } = getContainingView(self) as LGV
784
+ if (colorBy?.type === 'modifications') {
785
+ const adapter = getConf(parentTrack, ['adapter'])
786
+ const vals = await getUniqueModificationValues(
787
+ self,
788
+ adapter,
789
+ colorBy,
790
+ staticBlocks,
791
+ )
792
+ self.updateModificationColorMap(vals)
793
+ }
794
+ self.setModificationsReady(true)
795
+ })
796
+
797
+ createAutorun(
798
+ self,
799
+ async () => {
800
+ const { rpcManager } = getSession(self)
801
+ const view = getContainingView(self) as LGV
802
+ if (!self.autorunReady) {
803
+ return
804
+ }
805
+
806
+ const { sortedBy, adapterConfig, rendererType } = self
807
+ const { bpPerPx } = view
808
+
809
+ if (sortedBy) {
810
+ const { pos, refName, assemblyName } = sortedBy
811
+ // render just the sorted region first
812
+ // @ts-expect-error
813
+ await self.rendererType.renderInClient(rpcManager, {
814
+ assemblyName,
815
+ regions: [
816
+ {
817
+ start: pos,
818
+ end: pos + 1,
819
+ refName,
820
+ assemblyName,
821
+ },
822
+ ],
823
+ adapterConfig,
824
+ rendererType: rendererType.name,
825
+ sessionId: getRpcSessionId(self),
826
+ layoutId: view.id,
827
+ timeout: 1_000_000,
828
+ ...self.renderPropsPre(),
829
+ })
830
+ }
831
+ self.setCurrSortBpPerPx(bpPerPx)
832
+ self.setSortReady(true)
833
+ },
834
+ { delay: 1000 },
835
+ )
836
+
837
+ // autorun synchronizes featureUnderMouse with featureIdUnderMouse
838
+ // asynchronously. this is needed due to how we do not serialize all
839
+ // features from the BAM/CRAM over the rpc
840
+ addDisposer(
841
+ self,
842
+ autorun(async () => {
843
+ const session = getSession(self)
844
+ try {
845
+ const featureId = self.featureIdUnderMouse
846
+ if (self.featureUnderMouse?.id() !== featureId) {
847
+ if (!featureId) {
848
+ self.setFeatureUnderMouse(undefined)
849
+ } else {
850
+ const sessionId = getRpcSessionId(self)
851
+ const view = getContainingView(self)
852
+ const { feature } = (await session.rpcManager.call(
853
+ sessionId,
854
+ 'CoreGetFeatureDetails',
855
+ {
856
+ featureId,
857
+ sessionId,
858
+ layoutId: view.id,
859
+ rendererType: 'PileupRenderer',
860
+ },
861
+ )) as { feature: SimpleFeatureSerialized }
862
+
863
+ // check featureIdUnderMouse is still the same as the
864
+ // feature.id that was returned e.g. that the user hasn't
865
+ // moused over to a new position during the async operation
866
+ // above
867
+ if (self.featureIdUnderMouse === feature.uniqueId) {
868
+ self.setFeatureUnderMouse(new SimpleFeature(feature))
869
+ }
870
+ }
871
+ }
872
+ } catch (e) {
873
+ console.error(e)
874
+ session.notify(`${e}`, 'error')
875
+ }
876
+ }),
877
+ )
878
+ },
879
+ }))
832
880
  }
833
881
 
834
882
  export type LinearPileupDisplayStateModel = ReturnType<typeof stateModelFactory>
835
883
  export type LinearPileupDisplayModel = Instance<LinearPileupDisplayStateModel>
836
-
837
884
  export default stateModelFactory
@@ -1,56 +1,38 @@
1
- import React from 'react'
2
- import { isAlive } from 'mobx-state-tree'
3
- import { makeStyles } from 'tss-react/mui'
1
+ import React, { useCallback } from 'react'
4
2
  import { observer } from 'mobx-react'
5
3
  import { getContainingView } from '@jbrowse/core/util'
6
- import { LoadingEllipses } from '@jbrowse/core/ui'
7
- import {
8
- BlockMsg,
9
- LinearGenomeViewModel,
10
- } from '@jbrowse/plugin-linear-genome-view'
4
+ import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
11
5
 
12
6
  // local
13
7
  import { LinearReadArcsDisplayModel } from '../model'
8
+ import BaseDisplayComponent from '../../shared/BaseDisplayComponent'
14
9
 
15
10
  type LGV = LinearGenomeViewModel
16
11
 
17
- const useStyles = makeStyles()(theme => {
18
- const bg = theme.palette.action.disabledBackground
19
- return {
20
- loading: {
21
- paddingLeft: '0.6em',
22
- backgroundColor: theme.palette.background.default,
23
- backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,
24
- height: '100%',
25
- width: '100%',
26
- pointerEvents: 'none',
27
- textAlign: 'center',
28
- },
29
- }
30
- })
31
-
32
12
  const Arcs = observer(function ({
33
13
  model,
34
14
  }: {
35
15
  model: LinearReadArcsDisplayModel
36
16
  }) {
37
17
  const view = getContainingView(model) as LGV
18
+ const width = Math.round(view.dynamicBlocks.totalWidthPx)
19
+ const height = model.height
20
+ const cb = useCallback(
21
+ (ref: HTMLCanvasElement) => {
22
+ model.setRef(ref)
23
+ },
24
+ // eslint-disable-next-line react-hooks/exhaustive-deps
25
+ [model, width, height],
26
+ )
27
+
28
+ // note: the position absolute below avoids scrollbar from appearing on track
38
29
  return (
39
30
  <canvas
40
- data-testid={`Arc-display-${model.drawn}`}
41
- ref={ref => {
42
- if (isAlive(model)) {
43
- model.setRef(ref)
44
- }
45
- }}
46
- style={{
47
- position: 'absolute',
48
- left: -view.offsetPx + model.lastDrawnOffsetPx,
49
- width: view.dynamicBlocks.totalWidthPx,
50
- height: model.height,
51
- }}
52
- width={view.dynamicBlocks.totalWidthPx * 2}
53
- height={model.height * 2}
31
+ data-testid="arc-canvas"
32
+ ref={cb}
33
+ style={{ width, height, position: 'absolute' }}
34
+ width={width * 2}
35
+ height={height * 2}
54
36
  />
55
37
  )
56
38
  })
@@ -60,29 +42,9 @@ export default observer(function ({
60
42
  }: {
61
43
  model: LinearReadArcsDisplayModel
62
44
  }) {
63
- const view = getContainingView(model)
64
- const { classes } = useStyles()
65
- const err = model.error
66
- return err ? (
67
- <BlockMsg
68
- message={`${err}`}
69
- severity="error"
70
- buttonText={'Reload'}
71
- action={model.reload}
72
- />
73
- ) : model.loading ? (
74
- <div
75
- className={classes.loading}
76
- style={{
77
- width: view.dynamicBlocks.totalWidthPx,
78
- height: 20,
79
- position: 'absolute',
80
- left: Math.max(0, -view.offsetPx),
81
- }}
82
- >
83
- <LoadingEllipses message={model.message} />
84
- </div>
85
- ) : (
86
- <Arcs model={model} />
45
+ return (
46
+ <BaseDisplayComponent model={model}>
47
+ <Arcs model={model} />
48
+ </BaseDisplayComponent>
87
49
  )
88
50
  })