@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
@@ -5,8 +5,11 @@ import {
5
5
  parseCigar,
6
6
  getNextRefPos,
7
7
  getModificationPositions,
8
+ getMethBins,
8
9
  Mismatch,
9
10
  } from '../MismatchParser'
11
+ import { doesIntersect2 } from '@jbrowse/core/util'
12
+ import { Bin, SkipMap } from './util'
10
13
 
11
14
  function mismatchLen(mismatch: Mismatch) {
12
15
  return !isInterbase(mismatch.type) ? mismatch.length : 1
@@ -38,49 +41,25 @@ export default async function generateCoverageBins(
38
41
  fetchSequence: (arg: Region) => Promise<string>,
39
42
  ) {
40
43
  const { colorBy } = opts
41
- const binMax = Math.ceil(region.end - region.start)
42
-
43
- const skipmap = {} as {
44
- [key: string]: {
45
- score: number
46
- feature: unknown
47
- start: number
48
- end: number
49
- strand: number
50
- xs: string
51
- }
44
+ const extendedRegion = {
45
+ ...region,
46
+ start: Math.max(0, region.start - 1),
47
+ end: region.end + 1,
52
48
  }
53
-
54
- // bins contain:
55
- // - cov feature if they contribute to coverage
56
- // - noncov are insertions/clip features that don't contribute to coverage
57
- // - delskips deletions or introns that don't contribute to coverage
58
- type BinType = { total: number; strands: { [key: string]: number } }
59
-
60
- const regionSeq =
49
+ const binMax = Math.ceil(extendedRegion.end - extendedRegion.start)
50
+ const skipmap = {} as SkipMap
51
+ const regionSequence =
61
52
  features.length && shouldFetchReferenceSequence(opts.colorBy?.type)
62
53
  ? await fetchSequence(region)
63
54
  : undefined
64
55
 
65
- const bins = [] as {
66
- refbase?: string
67
- total: number
68
- all: number
69
- ref: number
70
- '-1': 0
71
- '0': 0
72
- '1': 0
73
- lowqual: BinType
74
- cov: BinType
75
- delskips: BinType
76
- noncov: BinType
77
- }[]
78
-
79
- for (let i = 0; i < features.length; i++) {
80
- const feature = features[i]
56
+ const bins = [] as Bin[]
57
+
58
+ for (const feature of features) {
81
59
  const fstart = feature.get('start')
82
60
  const fend = feature.get('end')
83
61
  const fstrand = feature.get('strand') as -1 | 0 | 1
62
+ const mismatches = (feature.get('mismatches') as Mismatch[]) || []
84
63
 
85
64
  for (let j = fstart; j < fend + 1; j++) {
86
65
  const i = j - region.start
@@ -93,10 +72,10 @@ export default async function generateCoverageBins(
93
72
  '-1': 0,
94
73
  '0': 0,
95
74
  '1': 0,
96
- lowqual: {} as BinType,
97
- cov: {} as BinType,
98
- delskips: {} as BinType,
99
- noncov: {} as BinType,
75
+ lowqual: {},
76
+ cov: {},
77
+ delskips: {},
78
+ noncov: {},
100
79
  }
101
80
  }
102
81
  if (j !== fend) {
@@ -114,79 +93,113 @@ export default async function generateCoverageBins(
114
93
  const ops = parseCigar(feature.get('CIGAR'))
115
94
  const fend = feature.get('end')
116
95
  if (seq) {
117
- getModificationPositions(mm, seq, fstrand).forEach(
118
- ({ type, positions }) => {
119
- const mod = `mod_${type}`
120
- for (const pos of getNextRefPos(ops, positions)) {
121
- const epos = pos + fstart - region.start
122
- if (epos >= 0 && epos < bins.length && pos + fstart < fend) {
123
- const bin = bins[epos]
124
- if (bin) {
125
- inc(bin, fstrand, 'cov', mod)
126
- } else {
127
- console.warn(
128
- 'Undefined position in modifications snpcoverage encountered',
129
- )
96
+ const modifications = getModificationPositions(mm, seq, fstrand)
97
+ for (const { type, positions } of modifications) {
98
+ const mod = `mod_${type}`
99
+ for (const pos of getNextRefPos(ops, positions)) {
100
+ const epos = pos + fstart - region.start
101
+ if (epos >= 0 && epos < bins.length && pos + fstart < fend) {
102
+ if (bins[epos] === undefined) {
103
+ bins[epos] = {
104
+ total: 0,
105
+ all: 0,
106
+ ref: 0,
107
+ '-1': 0,
108
+ '0': 0,
109
+ '1': 0,
110
+ lowqual: {},
111
+ cov: {},
112
+ delskips: {},
113
+ noncov: {},
130
114
  }
131
115
  }
116
+ const bin = bins[epos]
117
+ if (bin) {
118
+ inc(bin, fstrand, 'cov', mod)
119
+ } else {
120
+ console.warn(
121
+ 'Undefined position in modifications snpcoverage encountered',
122
+ )
123
+ }
132
124
  }
133
- },
134
- )
125
+ }
126
+ }
135
127
  }
136
128
  }
137
129
 
138
- // methylation based coloring takes into account both reference
139
- // sequence CpG detection and reads
140
- else if (colorBy?.type === 'methylation') {
141
- if (!regionSeq) {
130
+ if (colorBy?.type === 'methylation') {
131
+ if (!regionSequence) {
142
132
  throw new Error(
143
133
  'no region sequence detected, need sequenceAdapter configuration',
144
134
  )
145
135
  }
146
136
  const seq = feature.get('seq') as string | undefined
147
- const mm = getTagAlt(feature, 'MM', 'Mm') || ''
148
- const methBins = new Array(region.end - region.start).fill(0)
149
- const ops = parseCigar(feature.get('CIGAR'))
137
+ if (!seq) {
138
+ continue
139
+ }
140
+ const { methBins, methProbs } = getMethBins(feature)
141
+ const dels = mismatches.filter(f => f.type === 'deletion')
150
142
 
151
- if (seq) {
152
- getModificationPositions(mm, seq, fstrand).forEach(
153
- ({ type, positions }) => {
154
- // we are processing methylation
155
- if (type === 'm') {
156
- for (const pos of getNextRefPos(ops, positions)) {
157
- const epos = pos + fstart - region.start
158
- if (epos >= 0 && epos < methBins.length) {
159
- methBins[epos] = 1
160
- }
143
+ // methylation based coloring takes into account both reference sequence
144
+ // CpG detection and reads
145
+ for (let i = 0; i < fend - fstart; i++) {
146
+ const j = i + fstart
147
+ const l1 = regionSequence[j - region.start + 1]?.toLowerCase()
148
+ const l2 = regionSequence[j - region.start + 2]?.toLowerCase()
149
+ if (l1 === 'c' && l2 === 'g') {
150
+ const bin0 = bins[j - region.start]
151
+ const bin1 = bins[j - region.start + 1]
152
+ const b0 = methBins[i]
153
+ const b1 = methBins[i + 1]
154
+ const p0 = methProbs[i]
155
+ const p1 = methProbs[i + 1]
156
+
157
+ // color
158
+ if (
159
+ (b0 && (p0 !== undefined ? p0 > 0.5 : true)) ||
160
+ (b1 && (p1 !== undefined ? p1 > 0.5 : true))
161
+ ) {
162
+ if (bin0) {
163
+ inc(bin0, fstrand, 'cov', 'meth')
164
+ bin0.ref--
165
+ bin0[fstrand]--
166
+ }
167
+ if (bin1) {
168
+ inc(bin1, fstrand, 'cov', 'meth')
169
+ bin1.ref--
170
+ bin1[fstrand]--
171
+ }
172
+ } else {
173
+ if (bin0) {
174
+ if (
175
+ !dels?.some(d =>
176
+ doesIntersect2(
177
+ j,
178
+ j + 1,
179
+ d.start + fstart,
180
+ d.start + fstart + d.length,
181
+ ),
182
+ )
183
+ ) {
184
+ inc(bin0, fstrand, 'cov', 'unmeth')
185
+ bin0.ref--
186
+ bin0[fstrand]
161
187
  }
162
188
  }
163
- },
164
- )
165
-
166
- for (let j = fstart; j < fend; j++) {
167
- const i = j - region.start
168
- if (i >= 0 && i < bins.length - 1) {
169
- const l1 = regionSeq[i].toLowerCase()
170
- const l2 = regionSeq[i + 1].toLowerCase()
171
- const bin = bins[i]
172
- const bin1 = bins[i + 1]
173
-
174
- // color
175
- if (l1 === 'c' && l2 === 'g') {
176
- if (methBins[i] || methBins[i + 1]) {
177
- inc(bin, fstrand, 'cov', 'meth')
178
- inc(bin1, fstrand, 'cov', 'meth')
179
- bins[i].ref--
180
- bins[i][fstrand]--
181
- bins[i + 1].ref--
182
- bins[i + 1][fstrand]--
183
- } else {
184
- inc(bin, fstrand, 'cov', 'unmeth')
189
+ if (bin1) {
190
+ if (
191
+ !dels?.some(d =>
192
+ doesIntersect2(
193
+ j + 1,
194
+ j + 2,
195
+ d.start + fstart,
196
+ d.start + fstart + d.length,
197
+ ),
198
+ )
199
+ ) {
185
200
  inc(bin1, fstrand, 'cov', 'unmeth')
186
- bins[i].ref--
187
- bins[i][fstrand]--
188
- bins[i + 1].ref--
189
- bins[i + 1][fstrand]--
201
+ bin1.ref--
202
+ bin1[fstrand]--
190
203
  }
191
204
  }
192
205
  }
@@ -195,12 +208,10 @@ export default async function generateCoverageBins(
195
208
  }
196
209
 
197
210
  // normal SNP based coloring
198
- const mismatches = (feature.get('mismatches') as Mismatch[]) || []
199
211
  const colorSNPs =
200
212
  colorBy?.type !== 'modifications' && colorBy?.type !== 'methylation'
201
213
 
202
- for (let i = 0; i < mismatches.length; i++) {
203
- const mismatch = mismatches[i]
214
+ for (const mismatch of mismatches) {
204
215
  const mstart = fstart + mismatch.start
205
216
  const mlen = mismatchLen(mismatch)
206
217
  const mend = mstart + mlen
@@ -1,7 +1,6 @@
1
1
  import PluginManager from '@jbrowse/core/PluginManager'
2
2
  import AdapterType from '@jbrowse/core/pluggableElementTypes/AdapterType'
3
3
  import configSchema from './configSchema'
4
- import { capabilities } from './SNPCoverageAdapter'
5
4
 
6
5
  export default function (pluginManager: PluginManager) {
7
6
  pluginManager.addAdapterType(() => {
@@ -14,7 +13,6 @@ export default function (pluginManager: PluginManager) {
14
13
  getAdapterClass: () =>
15
14
  import('./SNPCoverageAdapter').then(r => r.default),
16
15
  configSchema,
17
- adapterCapabilities: capabilities,
18
16
  })
19
17
  })
20
18
  }
@@ -0,0 +1,33 @@
1
+ export interface SkipMap {
2
+ [key: string]: {
3
+ score: number
4
+ feature: unknown
5
+ start: number
6
+ end: number
7
+ strand: number
8
+ xs: string
9
+ }
10
+ }
11
+
12
+ // bins contain:
13
+ // - cov feature if they contribute to coverage
14
+ // - noncov are insertions/clip features that don't contribute to coverage
15
+ // - delskips deletions or introns that don't contribute to coverage
16
+ export interface BinType {
17
+ total?: number
18
+ strands?: { [key: string]: number }
19
+ }
20
+
21
+ export interface Bin {
22
+ refbase?: string
23
+ total: number
24
+ all: number
25
+ ref: number
26
+ '-1': number
27
+ '0': number
28
+ '1': number
29
+ lowqual: BinType
30
+ cov: BinType
31
+ delskips: BinType
32
+ noncov: BinType
33
+ }
@@ -22,7 +22,7 @@ export interface RenderArgsDeserializedWithFeatures
22
22
  features: Map<string, Feature>
23
23
  ticks: { values: number[] }
24
24
  displayCrossHatches: boolean
25
- modificationTagMap?: Record<string, string>
25
+ modificationTagMap?: Record<string, string | undefined>
26
26
  }
27
27
 
28
28
  type Counts = {
@@ -100,10 +100,10 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
100
100
  C: bases.C.main,
101
101
  G: bases.G.main,
102
102
  T: bases.T.main,
103
- total: 'lightgrey',
104
103
  insertion: 'purple',
105
104
  softclip: 'blue',
106
105
  hardclip: 'red',
106
+ total: readConfObject(cfg, 'color'),
107
107
  meth: 'red',
108
108
  unmeth: 'blue',
109
109
  }
@@ -155,7 +155,7 @@ export default class SNPCoverageRenderer extends WiggleBaseRenderer {
155
155
  ctx.fillStyle =
156
156
  colorForBase[base] ||
157
157
  modificationTagMap[base.replace('mod_', '')] ||
158
- '#888'
158
+ 'black'
159
159
 
160
160
  const height = toHeight(score)
161
161
  const bottom = toY(score) + height
@@ -51,6 +51,12 @@ const SNPCoverageRenderer = ConfigurationSchema(
51
51
  'draw a triangular indicator where an event has been detected',
52
52
  defaultValue: true,
53
53
  },
54
+
55
+ color: {
56
+ type: 'color',
57
+ description: 'Background color for the SNPCoverage renderer',
58
+ defaultValue: '#d3d3d3',
59
+ },
54
60
  },
55
61
  { explicitlyTyped: true },
56
62
  )
@@ -0,0 +1,83 @@
1
+ import React from 'react'
2
+ import { LoadingEllipses } from '@jbrowse/core/ui'
3
+ import { BlockMsg } from '@jbrowse/plugin-linear-genome-view'
4
+ import { makeStyles } from 'tss-react/mui'
5
+ import { observer } from 'mobx-react'
6
+
7
+ // local
8
+ import { LinearReadCloudDisplayModel } from '../LinearReadCloudDisplay/model'
9
+ import { LinearReadArcsDisplayModel } from '../LinearReadArcsDisplay/model'
10
+ import { getContainingView } from '@jbrowse/core/util'
11
+
12
+ const useStyles = makeStyles()(theme => {
13
+ const bg = theme.palette.action.disabledBackground
14
+ return {
15
+ loading: {
16
+ backgroundColor: theme.palette.background.default,
17
+ backgroundImage: `repeating-linear-gradient(45deg, transparent, transparent 5px, ${bg} 5px, ${bg} 10px)`,
18
+ position: 'absolute',
19
+ bottom: 0,
20
+ height: 50,
21
+ width: 300,
22
+ right: 0,
23
+ pointerEvents: 'none',
24
+ textAlign: 'center',
25
+ },
26
+ }
27
+ })
28
+
29
+ export default observer(function ({
30
+ model,
31
+ children,
32
+ }: {
33
+ model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel
34
+ children?: React.ReactNode
35
+ }) {
36
+ const { error, regionTooLarge } = model
37
+ return error ? (
38
+ <BlockMsg
39
+ message={`${error}`}
40
+ severity="error"
41
+ buttonText="Reload"
42
+ action={model.reload}
43
+ />
44
+ ) : regionTooLarge ? (
45
+ model.regionCannotBeRendered()
46
+ ) : (
47
+ <DataDisplay model={model}>{children}</DataDisplay>
48
+ )
49
+ })
50
+
51
+ const DataDisplay = observer(function ({
52
+ model,
53
+ children,
54
+ }: {
55
+ model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel
56
+ children?: React.ReactNode
57
+ }) {
58
+ const { drawn, loading } = model
59
+ const view = getContainingView(model)
60
+ const left = (model.lastDrawnOffsetPx || 0) - view.offsetPx
61
+ return (
62
+ // this data-testid is located here because changing props on the canvas
63
+ // itself is very sensitive to triggering ref invalidation
64
+ <div data-testid={`drawn-${drawn}`}>
65
+ <div style={{ position: 'absolute', left }}>{children}</div>
66
+ {left !== 0 || loading ? <LoadingBar model={model} /> : null}
67
+ </div>
68
+ )
69
+ })
70
+
71
+ const LoadingBar = observer(function ({
72
+ model,
73
+ }: {
74
+ model: LinearReadArcsDisplayModel | LinearReadCloudDisplayModel
75
+ }) {
76
+ const { classes } = useStyles()
77
+ const { message } = model
78
+ return (
79
+ <div className={classes.loading}>
80
+ <LoadingEllipses message={message} />
81
+ </div>
82
+ )
83
+ })
@@ -69,27 +69,27 @@ function Bitmask(props: { flag?: number; setFlag: Function }) {
69
69
  </>
70
70
  )
71
71
  }
72
-
72
+ interface FilterBy {
73
+ flagExclude: number
74
+ flagInclude: number
75
+ readName?: string
76
+ tagFilter?: { tag: string; value: string }
77
+ }
73
78
  function FilterByTagDlg(props: {
74
79
  model: {
75
- filterBy?: {
76
- flagExclude: number
77
- flagInclude: number
78
- readName?: string
79
- tagFilter?: { tag: string; value: string }
80
- }
81
- setFilterBy: Function
80
+ filterBy: FilterBy
81
+ setFilterBy: (arg: FilterBy) => void
82
82
  }
83
83
  handleClose: () => void
84
84
  }) {
85
85
  const { model, handleClose } = props
86
86
  const { classes } = useStyles()
87
87
  const { filterBy } = model
88
- const [flagInclude, setFlagInclude] = useState(filterBy?.flagInclude)
89
- const [flagExclude, setFlagExclude] = useState(filterBy?.flagExclude)
90
- const [tag, setTag] = useState(filterBy?.tagFilter?.tag || '')
91
- const [tagValue, setTagValue] = useState(filterBy?.tagFilter?.value || '')
92
- const [readName, setReadName] = useState(filterBy?.readName || '')
88
+ const [flagInclude, setFlagInclude] = useState(filterBy.flagInclude)
89
+ const [flagExclude, setFlagExclude] = useState(filterBy.flagExclude)
90
+ const [tag, setTag] = useState(filterBy.tagFilter?.tag || '')
91
+ const [tagValue, setTagValue] = useState(filterBy.tagFilter?.value || '')
92
+ const [readName, setReadName] = useState(filterBy.readName || '')
93
93
  const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)
94
94
 
95
95
  const site = 'https://broadinstitute.github.io/picard/explain-flags.html'
@@ -127,21 +127,15 @@ function FilterByTagDlg(props: {
127
127
  placeholder="Enter tag name"
128
128
  inputProps={{
129
129
  maxLength: 2,
130
- 'data-testid': 'color-tag-name-input',
131
130
  }}
132
131
  error={tag.length === 2 && !validTag}
133
132
  helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}
134
- data-testid="color-tag-name"
135
133
  />
136
134
  <TextField
137
135
  className={classes.field}
138
136
  value={tagValue}
139
137
  onChange={event => setTagValue(event.target.value)}
140
138
  placeholder="Enter tag value"
141
- inputProps={{
142
- 'data-testid': 'color-tag-name-input',
143
- }}
144
- data-testid="color-tag-value"
145
139
  />
146
140
  </Paper>
147
141
  <Paper className={classes.paper} variant="outlined">
@@ -151,10 +145,6 @@ function FilterByTagDlg(props: {
151
145
  value={readName}
152
146
  onChange={event => setReadName(event.target.value)}
153
147
  placeholder="Enter read name"
154
- inputProps={{
155
- 'data-testid': 'color-tag-readname-input',
156
- }}
157
- data-testid="color-tag-readname"
158
148
  />
159
149
  </Paper>
160
150
  <DialogActions>
@@ -0,0 +1,66 @@
1
+ import { getContainingView } from '@jbrowse/core/util'
2
+ import { createAutorun } from '../util'
3
+ import { fetchChains } from './fetchChains'
4
+ import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
5
+ import { IAnyStateTreeNode } from 'mobx-state-tree'
6
+
7
+ type LGV = LinearGenomeViewModel
8
+
9
+ export function doAfterAttach<T extends IAnyStateTreeNode>(
10
+ self: T,
11
+ cb: (
12
+ self: T,
13
+ ctx: CanvasRenderingContext2D,
14
+ width: number,
15
+ height: number,
16
+ ) => void,
17
+ ) {
18
+ createAutorun(
19
+ self,
20
+ async () => {
21
+ await fetchChains(self)
22
+ },
23
+ { delay: 1000 },
24
+ )
25
+
26
+ function draw(view: LGV) {
27
+ const canvas = self.ref
28
+ if (!canvas) {
29
+ return
30
+ }
31
+
32
+ const ctx = canvas.getContext('2d')
33
+ if (!ctx) {
34
+ return
35
+ }
36
+
37
+ if (!self.chainData) {
38
+ return
39
+ }
40
+
41
+ ctx.clearRect(0, 0, canvas.width, self.height * 2)
42
+ ctx.resetTransform()
43
+ ctx.scale(2, 2)
44
+ cb(self, ctx, canvas.width, self.height)
45
+ self.setLastDrawnOffsetPx(view.offsetPx)
46
+ self.setLastDrawnBpPerPx(view.bpPerPx)
47
+ }
48
+
49
+ // first autorun instantly draws if bpPerPx changes
50
+ createAutorun(self, async () => {
51
+ const view = getContainingView(self) as LGV
52
+ if (view.bpPerPx !== self.lastDrawnBpPerPx) {
53
+ draw(view)
54
+ }
55
+ })
56
+
57
+ // second autorun draws after delay 1000 e.g. if offsetPx changes
58
+ createAutorun(
59
+ self,
60
+ async () => {
61
+ const view = getContainingView(self) as LGV
62
+ draw(view)
63
+ },
64
+ { delay: 1000 },
65
+ )
66
+ }