@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
@@ -8,10 +8,10 @@ import { bytesForRegions, updateStatus, Feature } from '@jbrowse/core/util'
8
8
  import { openLocation } from '@jbrowse/core/util/io'
9
9
  import { ObservableCreate } from '@jbrowse/core/util/rxjs'
10
10
  import { toArray } from 'rxjs/operators'
11
+ import { firstValueFrom } from 'rxjs'
11
12
 
12
13
  // locals
13
14
  import BamSlightlyLazyFeature from './BamSlightlyLazyFeature'
14
- import { firstValueFrom } from 'rxjs'
15
15
 
16
16
  interface Header {
17
17
  idToName: string[]
@@ -43,8 +43,6 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
43
43
  // chunkSizeLimit and fetchSizeLimit are more troublesome than
44
44
  // helpful, and have given overly large values on the ultra long
45
45
  // nanopore reads even with 500MB limits, so disabled with infinity
46
- chunkSizeLimit: Infinity,
47
- fetchSizeLimit: Infinity,
48
46
  yieldThreadTime: Infinity,
49
47
  })
50
48
 
@@ -89,7 +87,7 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
89
87
  const idToName: string[] = []
90
88
  const nameToId: Record<string, number> = {}
91
89
  samHeader
92
- .filter(l => l.tag === 'SQ')
90
+ ?.filter(l => l.tag === 'SQ')
93
91
  .forEach((sqLine, refId) => {
94
92
  sqLine.data.forEach(item => {
95
93
  if (item.tag === 'SN') {
@@ -182,48 +180,50 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
182
180
  return ObservableCreate<Feature>(async observer => {
183
181
  const { bam } = await this.configure()
184
182
  await this.setup(opts)
185
- statusCallback('Downloading alignments')
186
- const records = await bam.getRecordsForRange(refName, start, end, opts)
187
-
188
- const {
189
- flagInclude = 0,
190
- flagExclude = 0,
191
- tagFilter,
192
- readName,
193
- } = filterBy || {}
194
-
195
- for (const record of records) {
196
- let ref: string | undefined
197
- if (!record.get('MD')) {
198
- ref = await this.seqFetch(
199
- originalRefName || refName,
200
- record.get('start'),
201
- record.get('end'),
202
- )
203
- }
183
+ const records = await updateStatus(
184
+ 'Downloading alignments',
185
+ statusCallback,
186
+ () => bam.getRecordsForRange(refName, start, end, opts),
187
+ )
204
188
 
205
- const flags = record.flags
206
- if (
207
- !((flags & flagInclude) === flagInclude && !(flags & flagExclude))
208
- ) {
209
- continue
210
- }
189
+ await updateStatus('Processing alignments', statusCallback, async () => {
190
+ const {
191
+ flagInclude = 0,
192
+ flagExclude = 0,
193
+ tagFilter,
194
+ readName,
195
+ } = filterBy || {}
196
+
197
+ for (const record of records) {
198
+ let ref: string | undefined
199
+ if (!record.get('MD')) {
200
+ ref = await this.seqFetch(
201
+ originalRefName || refName,
202
+ record.get('start'),
203
+ record.get('end'),
204
+ )
205
+ }
211
206
 
212
- if (tagFilter) {
213
- const val = record.get(tagFilter.tag)
214
- if (!(val === '*' ? val !== undefined : val === tagFilter.value)) {
207
+ const flags = record.flags
208
+ if ((flags & flagInclude) !== flagInclude && !(flags & flagExclude)) {
215
209
  continue
216
210
  }
217
- }
218
211
 
219
- if (readName && record.get('name') !== readName) {
220
- continue
221
- }
212
+ if (tagFilter) {
213
+ const v = record.get(tagFilter.tag)
214
+ if (!(v === '*' ? v !== undefined : `${v}` === tagFilter.value)) {
215
+ continue
216
+ }
217
+ }
222
218
 
223
- observer.next(new BamSlightlyLazyFeature(record, this, ref))
224
- }
225
- statusCallback('')
226
- observer.complete()
219
+ if (readName && record.get('name') !== readName) {
220
+ continue
221
+ }
222
+
223
+ observer.next(new BamSlightlyLazyFeature(record, this, ref))
224
+ }
225
+ observer.complete()
226
+ })
227
227
  }, signal)
228
228
  }
229
229
 
@@ -233,8 +233,7 @@ export default class BamAdapter extends BaseFeatureDataAdapter {
233
233
  ) {
234
234
  const { bam } = await this.configure()
235
235
  // this is a method to avoid calling on htsget adapters
236
- // @ts-expect-error
237
- if (bam.index.filehandle !== '?') {
236
+ if (bam.index) {
238
237
  const bytes = await bytesForRegions(regions, bam)
239
238
  const fetchSizeLimit = this.getConf('fetchSizeLimit')
240
239
  return { bytes, fetchSizeLimit }
@@ -100,9 +100,9 @@ async function mismatchesCheck(f: string) {
100
100
  test('match CIGAR across file types', async () => {
101
101
  await cigarCheck('volvox-sorted')
102
102
  await cigarCheck('volvox-long-reads.fastq.sorted')
103
- })
103
+ }, 20000)
104
104
 
105
105
  test('mismatches same across file types', async () => {
106
106
  await mismatchesCheck('volvox-sorted')
107
107
  await mismatchesCheck('volvox-long-reads.fastq.sorted')
108
- })
108
+ }, 20000)
@@ -4,7 +4,12 @@ import {
4
4
  BaseOptions,
5
5
  BaseSequenceAdapter,
6
6
  } from '@jbrowse/core/data_adapters/BaseAdapter'
7
- import { checkAbortSignal, Region, Feature } from '@jbrowse/core/util'
7
+ import {
8
+ checkAbortSignal,
9
+ Region,
10
+ Feature,
11
+ updateStatus,
12
+ } from '@jbrowse/core/util'
8
13
  import { openLocation } from '@jbrowse/core/util/io'
9
14
  import { ObservableCreate } from '@jbrowse/core/util/rxjs'
10
15
  import { toArray } from 'rxjs/operators'
@@ -142,36 +147,36 @@ export default class CramAdapter extends BaseFeatureDataAdapter {
142
147
 
143
148
  private async setupPre(opts?: BaseOptions) {
144
149
  const { statusCallback = () => {} } = opts || {}
145
- const conf = await this.configure()
146
- statusCallback('Downloading index')
147
- const { cram } = conf
148
- const samHeader = await cram.cram.getSamHeader()
149
-
150
- // use the @SQ lines in the header to figure out the
151
- // mapping between ref ID numbers and names
152
- const idToName: string[] = []
153
- const nameToId: Record<string, number> = {}
154
- samHeader
155
- .filter(l => l.tag === 'SQ')
156
- .forEach((sqLine, refId) => {
157
- sqLine.data.forEach(item => {
158
- if (item.tag === 'SN') {
159
- // this is the ref name
160
- const refName = item.value
161
- nameToId[refName] = refId
162
- idToName[refId] = refName
163
- }
150
+ return updateStatus('Downloading index', statusCallback, async () => {
151
+ const conf = await this.configure()
152
+ const { cram } = conf
153
+ const samHeader = await cram.cram.getSamHeader()
154
+
155
+ // use the @SQ lines in the header to figure out the
156
+ // mapping between ref ID numbers and names
157
+ const idToName: string[] = []
158
+ const nameToId: Record<string, number> = {}
159
+ samHeader
160
+ .filter(l => l.tag === 'SQ')
161
+ .forEach((sqLine, refId) => {
162
+ sqLine.data.forEach(item => {
163
+ if (item.tag === 'SN') {
164
+ // this is the ref name
165
+ const refName = item.value
166
+ nameToId[refName] = refId
167
+ idToName[refId] = refName
168
+ }
169
+ })
164
170
  })
165
- })
166
171
 
167
- const readGroups = samHeader
168
- .filter(l => l.tag === 'RG')
169
- .map(rgLine => rgLine.data.find(item => item.tag === 'ID')?.value)
172
+ const readGroups = samHeader
173
+ .filter(l => l.tag === 'RG')
174
+ .map(rgLine => rgLine.data.find(item => item.tag === 'ID')?.value)
170
175
 
171
- const data = { idToName, nameToId, readGroups }
172
- statusCallback('')
173
- this.samHeader = data
174
- return { samHeader: data, ...conf }
176
+ const data = { idToName, nameToId, readGroups }
177
+ this.samHeader = data
178
+ return { samHeader: data, ...conf }
179
+ })
175
180
  }
176
181
 
177
182
  private async setup(opts?: BaseOptions) {
@@ -236,38 +241,44 @@ export default class CramAdapter extends BaseFeatureDataAdapter {
236
241
  if (originalRefName) {
237
242
  this.seqIdToOriginalRefName[refId] = originalRefName
238
243
  }
239
- statusCallback('Downloading alignments')
240
- const records = await cram.getRecordsForRange(refId, start, end)
244
+ const records = await updateStatus(
245
+ 'Downloading alignments',
246
+ statusCallback,
247
+ () => cram.getRecordsForRange(refId, start, end),
248
+ )
241
249
  checkAbortSignal(signal)
242
- const {
243
- flagInclude = 0,
244
- flagExclude = 0,
245
- tagFilter,
246
- readName,
247
- } = filterBy || {}
248
-
249
- let filtered = records.filter(record => {
250
- const flags = record.flags
251
- return (flags & flagInclude) === flagInclude && !(flags & flagExclude)
252
- })
250
+ await updateStatus('Processing alignments', statusCallback, () => {
251
+ const {
252
+ flagInclude = 0,
253
+ flagExclude = 0,
254
+ tagFilter,
255
+ readName,
256
+ } = filterBy || {}
257
+
258
+ for (const record of records) {
259
+ const flags = record.flags
260
+ if ((flags & flagInclude) !== flagInclude && !(flags & flagExclude)) {
261
+ continue
262
+ }
253
263
 
254
- if (tagFilter) {
255
- filtered = filtered.filter(record => {
256
- // @ts-expect-error
257
- const val = record[tagFilter.tag]
258
- return val === '*' ? val !== undefined : val === tagFilter.value
259
- })
260
- }
264
+ if (tagFilter) {
265
+ const v =
266
+ tagFilter.tag === 'RG'
267
+ ? this.samHeader.readGroups?.[record.readGroupId]
268
+ : record.tags[tagFilter.tag]
269
+ if (!(v === '*' ? v !== undefined : `${v}` === tagFilter.value)) {
270
+ continue
271
+ }
272
+ }
261
273
 
262
- if (readName) {
263
- filtered = filtered.filter(record => record.readName === readName)
264
- }
274
+ if (readName && record.readName !== readName) {
275
+ continue
276
+ }
277
+ observer.next(this.cramRecordToFeature(record))
278
+ }
265
279
 
266
- filtered.forEach(record => {
267
- observer.next(this.cramRecordToFeature(record))
280
+ observer.complete()
268
281
  })
269
- statusCallback('')
270
- observer.complete()
271
282
  }, signal)
272
283
  }
273
284
 
@@ -47,8 +47,7 @@ export default class CramSlightlyLazyFeature implements Feature {
47
47
  }
48
48
 
49
49
  _read_group_id() {
50
- const rg = this._store.samHeader.readGroups
51
- return rg ? rg[this.record.readGroupId] : undefined
50
+ return this._store.samHeader.readGroups?.[this.record.readGroupId]
52
51
  }
53
52
 
54
53
  _get_qual() {
@@ -157,9 +156,7 @@ export default class CramSlightlyLazyFeature implements Feature {
157
156
  const mismatches = this.get('mismatches')
158
157
  if (mismatches.length) {
159
158
  const record =
160
- this.get('strand') === -1
161
- ? mismatches[mismatches.length - 1]
162
- : mismatches[0]
159
+ this.get('strand') === -1 ? mismatches.at(-1) : mismatches[0]
163
160
  const { type, cliplen } = record
164
161
  if (type === 'softclip' || type === 'hardclip') {
165
162
  return cliplen
@@ -13,7 +13,7 @@ export function parseSmallFasta(text: string) {
13
13
  const [defLine, ...seqLines] = entryText.split(/\n|\r\n|\r/)
14
14
  const [id, ...descriptionLines] = defLine.split(' ')
15
15
  const description = descriptionLines.join(' ')
16
- const sequence = seqLines.join('').replace(/\s/g, '')
16
+ const sequence = seqLines.join('').replaceAll(/\s/g, '')
17
17
  return { id, description, sequence }
18
18
  })
19
19
  }
@@ -336,7 +336,11 @@ function stateModelFactory(
336
336
  */
337
337
  async renderSvg(opts: { rasterizeLayers?: boolean }) {
338
338
  const pileupHeight = self.height - self.SNPCoverageDisplay.height
339
- await when(() => self.PileupDisplay.ready)
339
+ await when(
340
+ () =>
341
+ !self.PileupDisplay.renderProps().notReady &&
342
+ !self.SNPCoverageDisplay.renderProps().notReady,
343
+ )
340
344
  return (
341
345
  <>
342
346
  <g>{await self.SNPCoverageDisplay.renderSvg(opts)}</g>
@@ -9,43 +9,7 @@ import {
9
9
  Typography,
10
10
  } from '@mui/material'
11
11
  import { Dialog } from '@jbrowse/core/ui'
12
- import { makeStyles } from 'tss-react/mui'
13
-
14
- const useStyles = makeStyles()(theme => ({
15
- table: {
16
- border: '1px solid #888',
17
- margin: theme.spacing(4),
18
- '& td': {
19
- padding: theme.spacing(1),
20
- },
21
- },
22
- }))
23
-
24
- function ModificationTable({
25
- modifications,
26
- }: {
27
- modifications: [string, string][]
28
- }) {
29
- const { classes } = useStyles()
30
- return (
31
- <table className={classes.table}>
32
- <tbody>
33
- {modifications.map(([key, value]) => (
34
- <tr key={key}>
35
- <td>{key}</td>
36
- <td>{value}</td>
37
- <td
38
- style={{
39
- width: '1em',
40
- background: value,
41
- }}
42
- />
43
- </tr>
44
- ))}
45
- </tbody>
46
- </table>
47
- )
48
- }
12
+ import ModificationTable from './ModificationsTable'
49
13
 
50
14
  function ColorByTagDlg(props: {
51
15
  model: {
@@ -84,13 +48,13 @@ function ColorByTagDlg(props: {
84
48
  />
85
49
  </>
86
50
  ) : (
87
- <div>
51
+ <>
88
52
  <Typography>
89
53
  Note: color by modifications is already enabled. Loading
90
54
  current modifications...
91
55
  </Typography>
92
56
  <CircularProgress size={15} />
93
- </div>
57
+ </>
94
58
  )}
95
59
  </div>
96
60
  ) : null}
@@ -32,22 +32,17 @@ function ColorByTagDlg(props: {
32
32
  placeholder="Enter tag name"
33
33
  inputProps={{
34
34
  maxLength: 2,
35
- 'data-testid': 'color-tag-name-input',
36
35
  }}
37
36
  error={tag.length === 2 && !validTag}
38
37
  helperText={tag.length === 2 && !validTag ? 'Not a valid tag' : ''}
39
38
  autoComplete="off"
40
- data-testid="color-tag-name"
41
39
  />
42
40
  <DialogActions>
43
41
  <Button
44
42
  variant="contained"
45
43
  color="primary"
46
44
  onClick={() => {
47
- model.setColorScheme({
48
- type: 'tag',
49
- tag,
50
- })
45
+ model.setColorScheme({ type: 'tag', tag })
51
46
  handleClose()
52
47
  }}
53
48
  disabled={!validTag}
@@ -8,26 +8,25 @@ export interface LinearPileupDisplayBlurbProps {
8
8
  pos: number
9
9
  refName: number
10
10
  type: string
11
+ tag?: string
11
12
  }
12
13
  }
13
14
  }
14
15
 
15
- function LinearPileupDisplayBlurb(props: LinearPileupDisplayBlurbProps) {
16
+ export default observer(function LinearPileupDisplayBlurb(
17
+ props: LinearPileupDisplayBlurbProps,
18
+ ) {
16
19
  const { model } = props
17
20
  const { sortedBy } = model
18
21
  return sortedBy ? (
19
- <div
20
- data-testid={`blurb-${model.sortedBy}`}
21
- style={{ backgroundColor: 'white' }}
22
- >
22
+ <div data-testid={`blurb-${sortedBy}`}>
23
23
  <Typography color="secondary" variant="caption">
24
- {model.sortedBy
25
- ? `Sorted by ${sortedBy.type.toLowerCase()} at ${sortedBy.refName}:${
26
- sortedBy.pos
27
- }`
24
+ {sortedBy
25
+ ? `Sorted by ${sortedBy.tag ?? sortedBy.type} at ${
26
+ sortedBy.refName
27
+ }:${sortedBy.pos}`
28
28
  : null}
29
29
  </Typography>
30
30
  </div>
31
31
  ) : null
32
- }
33
- export default observer(LinearPileupDisplayBlurb)
32
+ })
@@ -0,0 +1,38 @@
1
+ import React from 'react'
2
+ import { makeStyles } from 'tss-react/mui'
3
+
4
+ const useStyles = makeStyles()(theme => ({
5
+ table: {
6
+ border: '1px solid #888',
7
+ margin: theme.spacing(4),
8
+ '& td': {
9
+ padding: theme.spacing(1),
10
+ },
11
+ },
12
+ }))
13
+
14
+ export default function ModificationTable({
15
+ modifications,
16
+ }: {
17
+ modifications: [string, string | undefined][]
18
+ }) {
19
+ const { classes } = useStyles()
20
+ return (
21
+ <table className={classes.table}>
22
+ <tbody>
23
+ {modifications.map(([key, value]) => (
24
+ <tr key={key}>
25
+ <td>{key}</td>
26
+ <td>{value}</td>
27
+ <td
28
+ style={{
29
+ width: '1em',
30
+ background: value,
31
+ }}
32
+ />
33
+ </tr>
34
+ ))}
35
+ </tbody>
36
+ </table>
37
+ )
38
+ }