@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,24 +1,16 @@
1
1
  import { getContainingView, getSession } from '@jbrowse/core/util'
2
2
  import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view'
3
+ import { Assembly } from '@jbrowse/core/assemblyManager/assembly'
3
4
 
4
5
  // locals
5
6
  import {
6
- getOrientationColor,
7
- getInsertSizeColor,
8
- getInsertSizeAndOrientationColor,
7
+ getPairedOrientationColor,
8
+ getPairedInsertSizeColor,
9
+ getPairedInsertSizeAndOrientationColor,
9
10
  } from '../shared/color'
10
- import { ChainData } from '../shared/fetchChains'
11
11
  import { featurizeSA } from '../MismatchParser'
12
- import { Assembly } from '@jbrowse/core/assemblyManager/assembly'
13
-
14
- export function hasPairedReads(features: ChainData) {
15
- for (const f of features.chains.values()) {
16
- if (f[0].flags & 1) {
17
- return true
18
- }
19
- }
20
- return false
21
- }
12
+ import { LinearReadArcsDisplayModel } from './model'
13
+ import { hasPairedReads } from '../shared/util'
22
14
 
23
15
  type LGV = LinearGenomeViewModel
24
16
 
@@ -33,23 +25,28 @@ interface CoreFeat {
33
25
  end: number
34
26
  }
35
27
 
36
- export default async function drawFeats(
37
- self: {
38
- setLastDrawnOffsetPx: (n: number) => void
39
- drawInter?: boolean
40
- drawLongRange?: boolean
41
- setError: (e: unknown) => void
42
- colorBy?: { type: string }
43
- height: number
44
- chainData?: ChainData
45
- lineWidthSetting: number
46
- jitterVal: number
47
- },
28
+ function drawLineAtOffset(
48
29
  ctx: CanvasRenderingContext2D,
30
+ offset: number,
31
+ height: number,
32
+ color: string,
33
+ ) {
34
+ // draws a vertical line off to middle of nowhere if the second end not found
35
+ ctx.strokeStyle = color
36
+ ctx.beginPath()
37
+ ctx.moveTo(offset, 0)
38
+ ctx.lineTo(offset, height)
39
+ ctx.stroke()
40
+ }
41
+
42
+ export function drawFeats(
43
+ self: LinearReadArcsDisplayModel,
44
+ ctx: CanvasRenderingContext2D,
45
+ width: number,
46
+ height: number,
49
47
  ) {
50
48
  const {
51
49
  chainData,
52
- height,
53
50
  colorBy,
54
51
  drawInter,
55
52
  drawLongRange,
@@ -61,25 +58,14 @@ export default async function drawFeats(
61
58
  }
62
59
  const view = getContainingView(self) as LGV
63
60
  const { assemblyManager } = getSession(self)
64
- self.setLastDrawnOffsetPx(view.offsetPx)
65
- ctx.lineWidth = lineWidthSetting
66
61
  const { chains, stats } = chainData
67
62
  const hasPaired = hasPairedReads(chainData)
68
- const assemblyName = view.assemblyNames[0]
69
- const asm = assemblyManager.get(assemblyName)
63
+ const asm = assemblyManager.get(view.assemblyNames[0])
70
64
  const type = colorBy?.type || 'insertSizeAndOrientation'
71
65
  if (!asm) {
72
66
  return
73
67
  }
74
-
75
- function drawLineAtOffset(p: number, c: string) {
76
- // draws a vertical line off to middle of nowhere if the second end not found
77
- ctx.strokeStyle = c
78
- ctx.beginPath()
79
- ctx.moveTo(p, 0)
80
- ctx.lineTo(p, height)
81
- ctx.stroke()
82
- }
68
+ ctx.lineWidth = lineWidthSetting
83
69
 
84
70
  function draw(
85
71
  k1: CoreFeat & { tlen?: number; pair_orientation?: string },
@@ -96,19 +82,20 @@ export default async function drawFeats(
96
82
  const p2 = hasPaired ? (f2 ? k2.start : k2.end) : f2 ? k2.end : k2.start
97
83
  const ra1 = assembly.getCanonicalRefName(k1.refName) || k1.refName
98
84
  const ra2 = assembly.getCanonicalRefName(k2.refName) || k2.refName
99
- const r1 = view.bpToPx({ refName: ra1, coord: p1 })
100
- const r2 = view.bpToPx({ refName: ra2, coord: p2 })
85
+ const r1 = view.bpToPx({ refName: ra1, coord: p1 })?.offsetPx
86
+ const r2 = view.bpToPx({ refName: ra2, coord: p2 })?.offsetPx
101
87
 
102
- if (r1 && r2) {
103
- const radius = (r2.offsetPx - r1.offsetPx) / 2
88
+ if (r1 !== undefined && r2 !== undefined) {
89
+ const radius = (r2 - r1) / 2
104
90
  const absrad = Math.abs(radius)
105
- const p = r1.offsetPx - view.offsetPx
106
- const p2 = r2.offsetPx - view.offsetPx
91
+ const p = r1 - view.offsetPx
92
+ const p2 = r2 - view.offsetPx
93
+ const drawArcInsteadOfBezier = absrad > 10_000
107
94
 
108
95
  // bezier (used for non-long-range arcs) requires moveTo before beginPath
109
96
  // arc (used for long-range) requires moveTo after beginPath (or else a
110
97
  // unwanted line at y=0 is rendered along with the arc)
111
- if (longRange) {
98
+ if (longRange && drawArcInsteadOfBezier) {
112
99
  ctx.moveTo(p, 0)
113
100
  ctx.beginPath()
114
101
  } else {
@@ -116,16 +103,21 @@ export default async function drawFeats(
116
103
  ctx.moveTo(p, 0)
117
104
  }
118
105
 
119
- if (longRange) {
106
+ if (longRange && drawArcInsteadOfBezier) {
120
107
  ctx.strokeStyle = 'red'
121
108
  } else {
122
109
  if (hasPaired) {
123
110
  if (type === 'insertSizeAndOrientation') {
124
- ctx.strokeStyle = getInsertSizeAndOrientationColor(k1, k2, stats)
111
+ ctx.strokeStyle = getPairedInsertSizeAndOrientationColor(
112
+ k1,
113
+ k2,
114
+ stats,
115
+ )[0]
125
116
  } else if (type === 'orientation') {
126
- ctx.strokeStyle = getOrientationColor(k1)
117
+ ctx.strokeStyle = getPairedOrientationColor(k1)[0]
127
118
  } else if (type === 'insertSize') {
128
- ctx.strokeStyle = getInsertSizeColor(k1, k2, stats) || 'grey'
119
+ ctx.strokeStyle =
120
+ getPairedInsertSizeColor(k1, k2, stats)?.[0] || 'grey'
129
121
  } else if (type === 'gradient') {
130
122
  ctx.strokeStyle = `hsl(${Math.log10(absrad) * 10},50%,50%)`
131
123
  }
@@ -150,11 +142,21 @@ export default async function drawFeats(
150
142
  // avoid drawing gigantic circles that glitch out the rendering,
151
143
  // instead draw vertical lines
152
144
  if (absrad > 100_000) {
153
- drawLineAtOffset(p + jitter(jitterVal), 'red')
154
- drawLineAtOffset(p2 + jitter(jitterVal), 'red')
155
- } else {
145
+ drawLineAtOffset(ctx, p + jitter(jitterVal), height, 'red')
146
+ drawLineAtOffset(ctx, p2 + jitter(jitterVal), height, 'red')
147
+ } else if (drawArcInsteadOfBezier) {
156
148
  ctx.arc(p + radius + jitter(jitterVal), 0, absrad, 0, Math.PI)
157
149
  ctx.stroke()
150
+ } else {
151
+ ctx.bezierCurveTo(
152
+ p + jitter(jitterVal),
153
+ destY,
154
+ destX,
155
+ destY,
156
+ destX + jitter(jitterVal),
157
+ 0,
158
+ )
159
+ ctx.stroke()
158
160
  }
159
161
  } else {
160
162
  ctx.bezierCurveTo(
@@ -168,34 +170,26 @@ export default async function drawFeats(
168
170
  ctx.stroke()
169
171
  }
170
172
  } else if (r1 && drawInter) {
171
- drawLineAtOffset(r1.offsetPx - view.offsetPx, 'purple')
173
+ drawLineAtOffset(ctx, r1 - view.offsetPx, height, 'purple')
172
174
  }
173
175
  }
174
176
 
175
- for (let i = 0; i < chains.length; i++) {
176
- let chain = chains[i]
177
+ for (const chain of chains) {
178
+ // chain.length === 1, singleton (other pairs/mates not in view)
177
179
  if (chain.length === 1 && drawLongRange) {
178
- // singleton feature
179
180
  const f = chain[0]
180
-
181
- // special case where we look at RPOS/RNEXT
182
- if (hasPaired) {
183
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
184
- const refName = f.next_ref!
185
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
186
- const coord = f.next_pos!
187
- draw(
188
- f,
189
- { refName, start: coord, end: coord, strand: f.strand },
190
- asm,
191
- true,
181
+ if (hasPaired && !(f.flags & 8)) {
182
+ const mate = {
183
+ refName: f.next_ref || '',
184
+ start: f.next_pos || 0,
185
+ end: f.next_pos || 0,
186
+ strand: f.strand,
187
+ }
188
+ draw(f, mate, asm, true)
189
+ } else {
190
+ const features = [f, ...featurizeSA(f.SA, f.id, f.strand, f.name)].sort(
191
+ (a, b) => a.clipPos - b.clipPos,
192
192
  )
193
- }
194
-
195
- // special case where we look at SA
196
- else {
197
- const suppAlns = featurizeSA(f.SA, f.id, f.strand, f.name)
198
- const features = [f, ...suppAlns].sort((a, b) => a.clipPos - b.clipPos)
199
193
  for (let i = 0; i < features.length - 1; i++) {
200
194
  const f = features[i]
201
195
  const v1 = features[i + 1]
@@ -203,15 +197,13 @@ export default async function drawFeats(
203
197
  }
204
198
  }
205
199
  } else {
206
- if (!hasPaired) {
207
- chain.sort((a, b) => a.clipPos - b.clipPos)
208
- chain = chain.filter(f => !(f.flags & 256))
209
- } else {
210
- // ignore split/supplementary reads for hasPaired=true for now
211
- chain = chain.filter(f => !(f.flags & 2048))
212
- }
213
- for (let i = 0; i < chain.length - 1; i++) {
214
- draw(chain[i], chain[i + 1], asm, false)
200
+ const res = hasPaired
201
+ ? chain.filter(f => !(f.flags & 2048) && !(f.flags & 8))
202
+ : chain
203
+ .sort((a, b) => a.clipPos - b.clipPos)
204
+ .filter(f => !(f.flags & 256))
205
+ for (let i = 0; i < res.length - 1; i++) {
206
+ draw(res[i], res[i + 1], asm, false)
215
207
  }
216
208
  }
217
209
  }
@@ -1,17 +1,15 @@
1
1
  import React, { lazy } from 'react'
2
- import { autorun } from 'mobx'
3
- import { addDisposer, cast, types, Instance } from 'mobx-state-tree'
2
+ import { cast, types, Instance } from 'mobx-state-tree'
4
3
  import {
5
4
  AnyConfigurationSchemaType,
6
5
  ConfigurationReference,
7
- ConfigurationSchema,
8
6
  getConf,
9
7
  } from '@jbrowse/core/configuration'
10
- import { getSession, getContainingView } from '@jbrowse/core/util'
11
-
8
+ import { getSession } from '@jbrowse/core/util'
9
+ import { BaseDisplay } from '@jbrowse/core/pluggableElementTypes'
12
10
  import {
13
- BaseLinearDisplay,
14
- LinearGenomeViewModel,
11
+ FeatureDensityMixin,
12
+ TrackHeightMixin,
15
13
  } from '@jbrowse/plugin-linear-genome-view'
16
14
 
17
15
  // icons
@@ -20,18 +18,11 @@ import FilterListIcon from '@mui/icons-material/ClearAll'
20
18
 
21
19
  // locals
22
20
  import { FilterModel } from '../shared'
23
- import drawFeats from './drawFeats'
24
- import { fetchChains, ChainData } from '../shared/fetchChains'
21
+ import { ChainData } from '../shared/fetchChains'
25
22
 
26
23
  // async
27
24
  const FilterByTagDlg = lazy(() => import('../shared/FilterByTag'))
28
25
 
29
- // stabilize clipid under test for snapshot
30
- function getId(id: string) {
31
- const isJest = typeof jest === 'undefined'
32
- return `arc-clip-${isJest ? id : 'jest'}`
33
- }
34
-
35
26
  interface Filter {
36
27
  flagInclude: number
37
28
  flagExclude: number
@@ -39,17 +30,18 @@ interface Filter {
39
30
  tagFilter?: { tag: string; value: string }
40
31
  }
41
32
 
42
- type LGV = LinearGenomeViewModel
43
-
44
33
  /**
45
34
  * #stateModel LinearReadArcsDisplay
46
- * extends `BaseLinearDisplay`
35
+ * extends `BaseDisplay`, it is not a block based track, hence not
36
+ * BaseLinearDisplay
47
37
  */
48
38
  function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
49
39
  return types
50
40
  .compose(
51
41
  'LinearReadArcsDisplay',
52
- BaseLinearDisplay,
42
+ BaseDisplay,
43
+ TrackHeightMixin(),
44
+ FeatureDensityMixin(),
53
45
  types.model({
54
46
  /**
55
47
  * #property
@@ -99,22 +91,41 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
99
91
  )
100
92
  .volatile(() => ({
101
93
  loading: false,
102
- drawn: false,
103
94
  chainData: undefined as ChainData | undefined,
95
+ lastDrawnOffsetPx: undefined as number | undefined,
96
+ lastDrawnBpPerPx: 0,
104
97
  ref: null as HTMLCanvasElement | null,
105
- lastDrawnOffsetPx: 0,
106
98
  }))
107
99
  .actions(self => ({
108
100
  /**
109
101
  * #action
110
- * internal, a reference to a HTMLCanvas because we use a autorun to draw the canvas
102
+ */
103
+ setLastDrawnOffsetPx(n: number) {
104
+ self.lastDrawnOffsetPx = n
105
+ },
106
+ /**
107
+ * #action
108
+ */
109
+ setLastDrawnBpPerPx(n: number) {
110
+ self.lastDrawnBpPerPx = n
111
+ },
112
+ /**
113
+ * #action
114
+ */
115
+ setLoading(f: boolean) {
116
+ self.loading = f
117
+ },
118
+
119
+ /**
120
+ * #action
111
121
  */
112
122
  reload() {
113
123
  self.error = undefined
114
124
  },
115
125
  /**
116
126
  * #action
117
- * internal, a reference to a HTMLCanvas because we use a autorun to draw the canvas
127
+ * internal, a reference to a HTMLCanvas because we use a autorun to draw
128
+ * the canvas
118
129
  */
119
130
  setRef(ref: HTMLCanvasElement | null) {
120
131
  self.ref = ref
@@ -151,90 +162,63 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
151
162
  /**
152
163
  * #action
153
164
  */
154
- setLoading(f: boolean) {
155
- self.loading = f
165
+ setFilterBy(filter: Filter) {
166
+ self.filterBy = cast(filter)
156
167
  },
157
168
 
158
169
  /**
159
170
  * #action
160
- * used during tests to detect when we can complete a snapshot test
171
+ * thin, bold, extrabold, etc
161
172
  */
162
- setDrawn(f: boolean) {
163
- self.drawn = f
173
+ setLineWidth(n: number) {
174
+ self.lineWidth = n
164
175
  },
165
176
 
166
177
  /**
167
178
  * #action
179
+ * jitter val, helpful to jitter the x direction so you see better
180
+ * evidence when e.g. 100 long reads map to same x position
168
181
  */
169
- setFilterBy(filter: Filter) {
170
- self.filterBy = cast(filter)
182
+ setJitter(n: number) {
183
+ self.jitter = n
171
184
  },
185
+ }))
172
186
 
187
+ .views(self => ({
173
188
  /**
174
- * #action
175
- * allows the drawing to slide around a little bit if it takes a long time to refresh
189
+ * #getter
176
190
  */
177
- setLastDrawnOffsetPx(n: number) {
178
- self.lastDrawnOffsetPx = n
191
+ get drawn() {
192
+ return self.lastDrawnOffsetPx !== undefined
179
193
  },
180
-
181
194
  /**
182
- * #action
183
- * thin, bold, extrabold, etc
195
+ * #getter
184
196
  */
185
- setLineWidth(n: number) {
186
- self.lineWidth = n
197
+ get lineWidthSetting() {
198
+ return self.lineWidth ?? getConf(self, 'lineWidth')
187
199
  },
188
200
 
189
201
  /**
190
- * #action
191
- * jitter val, helpful to jitter the x direction so you see better evidence when e.g. 100
192
- * long reads map to same x position
202
+ * #getter
193
203
  */
194
- setJitter(n: number) {
195
- self.jitter = n
204
+ get jitterVal(): number {
205
+ return self.jitter ?? getConf(self, 'jitter')
196
206
  },
197
207
  }))
198
-
199
208
  .views(self => {
200
209
  const {
201
210
  trackMenuItems: superTrackMenuItems,
202
211
  renderProps: superRenderProps,
203
212
  } = self
204
-
205
213
  return {
206
214
  /**
207
- * #getter
208
- */
209
- get lineWidthSetting() {
210
- return self.lineWidth ?? getConf(self, 'lineWidth')
211
- },
212
-
213
- /**
214
- * #getter
215
- */
216
- get jitterVal(): number {
217
- return self.jitter ?? getConf(self, 'jitter')
218
- },
219
- /**
220
- * #getter
215
+ * #method
216
+ * only used to tell system it's ready for export
221
217
  */
222
- get ready() {
223
- return !!self.chainData
224
- },
225
- // we don't use a server side renderer, but we need to provide this
226
- // to avoid confusing the system currently
227
- get rendererTypeName() {
228
- return 'PileupRenderer'
229
- },
230
- // we don't use a server side renderer, so this fills in minimal
231
- // info so as not to crash
232
218
  renderProps() {
233
219
  return {
234
220
  ...superRenderProps(),
235
- // never ready, we don't want to use server side render
236
- notReady: true,
237
- config: ConfigurationSchema('empty', {}).create(),
221
+ notReady: !self.chainData,
238
222
  }
239
223
  },
240
224
 
@@ -276,25 +260,24 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
276
260
  subMenu: [
277
261
  {
278
262
  type: 'checkbox',
279
- checked: this.jitterVal === 0,
263
+ checked: self.jitterVal === 0,
280
264
  label: 'None',
281
265
  onClick: () => self.setJitter(0),
282
266
  },
283
267
  {
284
268
  type: 'checkbox',
285
- checked: this.jitterVal === 2,
269
+ checked: self.jitterVal === 2,
286
270
  label: 'Small',
287
271
  onClick: () => self.setJitter(2),
288
272
  },
289
273
  {
290
274
  type: 'checkbox',
291
- checked: this.jitterVal === 10,
275
+ checked: self.jitterVal === 10,
292
276
  label: 'Large',
293
277
  onClick: () => self.setJitter(10),
294
278
  },
295
279
  ],
296
280
  },
297
-
298
281
  {
299
282
  label: 'Draw inter-region vertical lines',
300
283
  type: 'checkbox',
@@ -338,88 +321,27 @@ function stateModelFactory(configSchema: AnyConfigurationSchemaType) {
338
321
  /**
339
322
  * #method
340
323
  */
341
- async renderSvg(opts: { rasterizeLayers?: boolean }) {
342
- const view = getContainingView(self) as LGV
343
- const width = view.dynamicBlocks.totalWidthPx
344
- const height = self.height
345
- let str
346
- if (opts.rasterizeLayers) {
347
- const canvas = document.createElement('canvas')
348
- canvas.width = width * 2
349
- canvas.height = height * 2
350
- const ctx = canvas.getContext('2d')
351
- if (!ctx) {
352
- return
353
- }
354
- ctx.scale(2, 2)
355
- await drawFeats(self, ctx)
356
- str = (
357
- <image
358
- width={width}
359
- height={height}
360
- xlinkHref={canvas.toDataURL('image/png')}
361
- />
362
- )
363
- } else {
364
- // @ts-ignore
365
- const C2S = await import('canvas2svg')
366
- const ctx = new C2S.default(width, height)
367
- await drawFeats(self, ctx)
368
- const clipid = getId(self.id)
369
- str = (
370
- <>
371
- <defs>
372
- <clipPath id={clipid}>
373
- <rect x={0} y={0} width={width} height={height} />
374
- </clipPath>
375
- </defs>
376
- <g
377
- /* eslint-disable-next-line react/no-danger */
378
- dangerouslySetInnerHTML={{
379
- __html: ctx.getSvg().innerHTML,
380
- }}
381
- clipPath={`url(#${clipid})`}
382
- />
383
- </>
384
- )
385
- }
386
-
387
- return <>{str}</>
324
+ async renderSvg(opts: {
325
+ rasterizeLayers?: boolean
326
+ }): Promise<React.ReactNode> {
327
+ const { renderSvg } = await import('../shared/renderSvg')
328
+ const { drawFeats } = await import('./drawFeats')
329
+ return renderSvg(self as LinearReadArcsDisplayModel, opts, drawFeats)
388
330
  },
389
331
  }))
390
332
  .actions(self => ({
391
333
  afterAttach() {
392
- addDisposer(
393
- self,
394
- autorun(() => fetchChains(self), { delay: 1000 }),
395
- )
396
-
397
- addDisposer(
398
- self,
399
- autorun(
400
- async () => {
401
- try {
402
- const canvas = self.ref
403
- if (!canvas) {
404
- return
405
- }
406
- const ctx = canvas.getContext('2d')
407
- if (!ctx) {
408
- return
409
- }
410
- ctx.clearRect(0, 0, canvas.width, self.height * 2)
411
- ctx.resetTransform()
412
- ctx.scale(2, 2)
413
- await drawFeats(self, ctx)
414
- self.setDrawn(true)
415
- } catch (e) {
416
- console.error(e)
417
- self.setError(e)
418
- }
419
- },
420
- { delay: 1000 },
421
- ),
422
- )
334
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
335
+ ;(async () => {
336
+ try {
337
+ const { doAfterAttach } = await import('../shared/afterAttach')
338
+ const { drawFeats } = await import('./drawFeats')
339
+ doAfterAttach(self, drawFeats)
340
+ } catch (e) {
341
+ console.error(e)
342
+ self.setError(e)
343
+ }
344
+ })()
423
345
  },
424
346
  }))
425
347
  }
@@ -0,0 +1,10 @@
1
+ import { ChainData } from '../shared/fetchChains'
2
+
3
+ export function hasPairedReads(features: ChainData) {
4
+ for (const f of features.chains.values()) {
5
+ if (f[0].flags & 1) {
6
+ return true
7
+ }
8
+ }
9
+ return false
10
+ }