@jbrowse/plugin-alignments 1.7.10 → 2.0.1

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 (291) hide show
  1. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +192 -216
  2. package/dist/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  3. package/dist/AlignmentsFeatureDetail/index.d.ts +3 -3
  4. package/dist/AlignmentsFeatureDetail/index.js +48 -44
  5. package/dist/AlignmentsFeatureDetail/index.js.map +1 -0
  6. package/dist/AlignmentsTrack/index.js +24 -32
  7. package/dist/AlignmentsTrack/index.js.map +1 -0
  8. package/dist/BamAdapter/BamAdapter.js +345 -585
  9. package/dist/BamAdapter/BamAdapter.js.map +1 -0
  10. package/dist/BamAdapter/BamSlightlyLazyFeature.js +143 -174
  11. package/dist/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  12. package/dist/BamAdapter/MismatchParser.d.ts +1 -1
  13. package/dist/BamAdapter/MismatchParser.js +341 -417
  14. package/dist/BamAdapter/MismatchParser.js.map +1 -0
  15. package/dist/BamAdapter/configSchema.js +33 -46
  16. package/dist/BamAdapter/configSchema.js.map +1 -0
  17. package/dist/BamAdapter/index.js +36 -32
  18. package/dist/BamAdapter/index.js.map +1 -0
  19. package/dist/CramAdapter/CramAdapter.js +376 -644
  20. package/dist/CramAdapter/CramAdapter.js.map +1 -0
  21. package/dist/CramAdapter/CramSlightlyLazyFeature.js +374 -439
  22. package/dist/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  23. package/dist/CramAdapter/CramTestAdapters.js +169 -227
  24. package/dist/CramAdapter/CramTestAdapters.js.map +1 -0
  25. package/dist/CramAdapter/configSchema.js +28 -38
  26. package/dist/CramAdapter/configSchema.js.map +1 -0
  27. package/dist/CramAdapter/index.js +37 -32
  28. package/dist/CramAdapter/index.js.map +1 -0
  29. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js +91 -93
  30. package/dist/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  31. package/dist/HtsgetBamAdapter/configSchema.js +19 -29
  32. package/dist/HtsgetBamAdapter/configSchema.js.map +1 -0
  33. package/dist/HtsgetBamAdapter/index.js +44 -38
  34. package/dist/HtsgetBamAdapter/index.js.map +1 -0
  35. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +36 -65
  36. package/dist/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  37. package/dist/LinearAlignmentsDisplay/index.js +22 -28
  38. package/dist/LinearAlignmentsDisplay/index.js.map +1 -0
  39. package/dist/LinearAlignmentsDisplay/models/configSchema.js +12 -23
  40. package/dist/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  41. package/dist/LinearAlignmentsDisplay/models/model.d.ts +10 -10
  42. package/dist/LinearAlignmentsDisplay/models/model.js +257 -245
  43. package/dist/LinearAlignmentsDisplay/models/model.js.map +1 -0
  44. package/dist/LinearPileupDisplay/components/ColorByModifications.js +98 -116
  45. package/dist/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  46. package/dist/LinearPileupDisplay/components/ColorByTag.js +82 -91
  47. package/dist/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  48. package/dist/LinearPileupDisplay/components/FilterByTag.js +156 -192
  49. package/dist/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  50. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +15 -29
  51. package/dist/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  52. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js +79 -93
  53. package/dist/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  54. package/dist/LinearPileupDisplay/components/SetMaxHeight.js +78 -81
  55. package/dist/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  56. package/dist/LinearPileupDisplay/components/SortByTag.js +80 -88
  57. package/dist/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  58. package/dist/LinearPileupDisplay/configSchema.js +40 -42
  59. package/dist/LinearPileupDisplay/configSchema.js.map +1 -0
  60. package/dist/LinearPileupDisplay/index.js +21 -27
  61. package/dist/LinearPileupDisplay/index.js.map +1 -0
  62. package/dist/LinearPileupDisplay/model.d.ts +28 -18
  63. package/dist/LinearPileupDisplay/model.js +702 -797
  64. package/dist/LinearPileupDisplay/model.js.map +1 -0
  65. package/dist/LinearSNPCoverageDisplay/components/Tooltip.d.ts +1 -1
  66. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js +104 -77
  67. package/dist/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  68. package/dist/LinearSNPCoverageDisplay/index.js +21 -27
  69. package/dist/LinearSNPCoverageDisplay/index.js.map +1 -0
  70. package/dist/LinearSNPCoverageDisplay/models/configSchema.js +45 -55
  71. package/dist/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  72. package/dist/LinearSNPCoverageDisplay/models/model.d.ts +14 -12
  73. package/dist/LinearSNPCoverageDisplay/models/model.js +257 -230
  74. package/dist/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  75. package/dist/NestedFrequencyTable.js +104 -139
  76. package/dist/NestedFrequencyTable.js.map +1 -0
  77. package/dist/PileupRPC/rpcMethods.js +199 -278
  78. package/dist/PileupRPC/rpcMethods.js.map +1 -0
  79. package/dist/PileupRenderer/PileupLayoutSession.js +56 -76
  80. package/dist/PileupRenderer/PileupLayoutSession.js.map +1 -0
  81. package/dist/PileupRenderer/PileupRenderer.d.ts +4 -4
  82. package/dist/PileupRenderer/PileupRenderer.js +938 -1205
  83. package/dist/PileupRenderer/PileupRenderer.js.map +1 -0
  84. package/dist/PileupRenderer/components/PileupRendering.d.ts +1 -1
  85. package/dist/PileupRenderer/components/PileupRendering.js +173 -253
  86. package/dist/PileupRenderer/components/PileupRendering.js.map +1 -0
  87. package/dist/PileupRenderer/configSchema.js +65 -71
  88. package/dist/PileupRenderer/configSchema.js.map +1 -0
  89. package/dist/PileupRenderer/index.js +17 -22
  90. package/dist/PileupRenderer/index.js.map +1 -0
  91. package/dist/PileupRenderer/sortUtil.js +83 -107
  92. package/dist/PileupRenderer/sortUtil.js.map +1 -0
  93. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js +436 -589
  94. package/dist/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  95. package/dist/SNPCoverageAdapter/configSchema.js +10 -20
  96. package/dist/SNPCoverageAdapter/configSchema.js.map +1 -0
  97. package/dist/SNPCoverageAdapter/index.js +46 -41
  98. package/dist/SNPCoverageAdapter/index.js.map +1 -0
  99. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +1 -1
  100. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js +265 -290
  101. package/dist/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  102. package/dist/SNPCoverageRenderer/configSchema.js +30 -39
  103. package/dist/SNPCoverageRenderer/configSchema.js.map +1 -0
  104. package/dist/SNPCoverageRenderer/index.js +19 -30
  105. package/dist/SNPCoverageRenderer/index.js.map +1 -0
  106. package/dist/index.js +135 -152
  107. package/dist/index.js.map +1 -0
  108. package/dist/shared.js +84 -92
  109. package/dist/shared.js.map +1 -0
  110. package/dist/util.js +130 -121
  111. package/dist/util.js.map +1 -0
  112. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.d.ts +6 -0
  113. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js +145 -0
  114. package/esm/AlignmentsFeatureDetail/AlignmentsFeatureDetail.js.map +1 -0
  115. package/esm/AlignmentsFeatureDetail/index.d.ts +38 -0
  116. package/esm/AlignmentsFeatureDetail/index.js +23 -0
  117. package/esm/AlignmentsFeatureDetail/index.js.map +1 -0
  118. package/esm/AlignmentsTrack/index.d.ts +2 -0
  119. package/esm/AlignmentsTrack/index.js +23 -0
  120. package/esm/AlignmentsTrack/index.js.map +1 -0
  121. package/esm/BamAdapter/BamAdapter.d.ts +40 -0
  122. package/esm/BamAdapter/BamAdapter.js +173 -0
  123. package/esm/BamAdapter/BamAdapter.js.map +1 -0
  124. package/esm/BamAdapter/BamSlightlyLazyFeature.d.ts +33 -0
  125. package/esm/BamAdapter/BamSlightlyLazyFeature.js +107 -0
  126. package/esm/BamAdapter/BamSlightlyLazyFeature.js.map +1 -0
  127. package/esm/BamAdapter/MismatchParser.d.ts +25 -0
  128. package/esm/BamAdapter/MismatchParser.js +294 -0
  129. package/esm/BamAdapter/MismatchParser.js.map +1 -0
  130. package/esm/BamAdapter/configSchema.d.ts +2 -0
  131. package/esm/BamAdapter/configSchema.js +31 -0
  132. package/esm/BamAdapter/configSchema.js.map +1 -0
  133. package/esm/BamAdapter/index.d.ts +3 -0
  134. package/esm/BamAdapter/index.js +10 -0
  135. package/esm/BamAdapter/index.js.map +1 -0
  136. package/esm/CramAdapter/CramAdapter.d.ts +53 -0
  137. package/esm/CramAdapter/CramAdapter.js +228 -0
  138. package/esm/CramAdapter/CramAdapter.js.map +1 -0
  139. package/esm/CramAdapter/CramSlightlyLazyFeature.d.ts +49 -0
  140. package/esm/CramAdapter/CramSlightlyLazyFeature.js +349 -0
  141. package/esm/CramAdapter/CramSlightlyLazyFeature.js.map +1 -0
  142. package/esm/CramAdapter/CramTestAdapters.d.ts +29 -0
  143. package/esm/CramAdapter/CramTestAdapters.js +70 -0
  144. package/esm/CramAdapter/CramTestAdapters.js.map +1 -0
  145. package/esm/CramAdapter/configSchema.d.ts +3 -0
  146. package/esm/CramAdapter/configSchema.js +26 -0
  147. package/esm/CramAdapter/configSchema.js.map +1 -0
  148. package/esm/CramAdapter/index.d.ts +3 -0
  149. package/esm/CramAdapter/index.js +11 -0
  150. package/esm/CramAdapter/index.js.map +1 -0
  151. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.d.ts +9 -0
  152. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js +27 -0
  153. package/esm/HtsgetBamAdapter/HtsgetBamAdapter.js.map +1 -0
  154. package/esm/HtsgetBamAdapter/configSchema.d.ts +2 -0
  155. package/esm/HtsgetBamAdapter/configSchema.js +17 -0
  156. package/esm/HtsgetBamAdapter/configSchema.js.map +1 -0
  157. package/esm/HtsgetBamAdapter/index.d.ts +3 -0
  158. package/esm/HtsgetBamAdapter/index.js +16 -0
  159. package/esm/HtsgetBamAdapter/index.js.map +1 -0
  160. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.d.ts +7 -0
  161. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js +34 -0
  162. package/esm/LinearAlignmentsDisplay/components/AlignmentsDisplay.js.map +1 -0
  163. package/esm/LinearAlignmentsDisplay/index.d.ts +2 -0
  164. package/esm/LinearAlignmentsDisplay/index.js +19 -0
  165. package/esm/LinearAlignmentsDisplay/index.js.map +1 -0
  166. package/esm/LinearAlignmentsDisplay/models/configSchema.d.ts +4 -0
  167. package/esm/LinearAlignmentsDisplay/models/configSchema.js +12 -0
  168. package/esm/LinearAlignmentsDisplay/models/configSchema.js.map +1 -0
  169. package/esm/LinearAlignmentsDisplay/models/model.d.ts +105 -0
  170. package/esm/LinearAlignmentsDisplay/models/model.js +181 -0
  171. package/esm/LinearAlignmentsDisplay/models/model.js.map +1 -0
  172. package/esm/LinearPileupDisplay/components/ColorByModifications.d.ts +14 -0
  173. package/esm/LinearPileupDisplay/components/ColorByModifications.js +71 -0
  174. package/esm/LinearPileupDisplay/components/ColorByModifications.js.map +1 -0
  175. package/esm/LinearPileupDisplay/components/ColorByTag.d.ts +9 -0
  176. package/esm/LinearPileupDisplay/components/ColorByTag.js +45 -0
  177. package/esm/LinearPileupDisplay/components/ColorByTag.js.map +1 -0
  178. package/esm/LinearPileupDisplay/components/FilterByTag.d.ts +18 -0
  179. package/esm/LinearPileupDisplay/components/FilterByTag.js +123 -0
  180. package/esm/LinearPileupDisplay/components/FilterByTag.js.map +1 -0
  181. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.d.ts +13 -0
  182. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js +13 -0
  183. package/esm/LinearPileupDisplay/components/LinearPileupDisplayBlurb.js.map +1 -0
  184. package/esm/LinearPileupDisplay/components/SetFeatureHeight.d.ts +16 -0
  185. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js +41 -0
  186. package/esm/LinearPileupDisplay/components/SetFeatureHeight.js.map +1 -0
  187. package/esm/LinearPileupDisplay/components/SetMaxHeight.d.ts +10 -0
  188. package/esm/LinearPileupDisplay/components/SetMaxHeight.js +43 -0
  189. package/esm/LinearPileupDisplay/components/SetMaxHeight.js.map +1 -0
  190. package/esm/LinearPileupDisplay/components/SortByTag.d.ts +9 -0
  191. package/esm/LinearPileupDisplay/components/SortByTag.js +43 -0
  192. package/esm/LinearPileupDisplay/components/SortByTag.js.map +1 -0
  193. package/esm/LinearPileupDisplay/configSchema.d.ts +6 -0
  194. package/esm/LinearPileupDisplay/configSchema.js +41 -0
  195. package/esm/LinearPileupDisplay/configSchema.js.map +1 -0
  196. package/esm/LinearPileupDisplay/index.d.ts +2 -0
  197. package/esm/LinearPileupDisplay/index.js +18 -0
  198. package/esm/LinearPileupDisplay/index.js.map +1 -0
  199. package/esm/LinearPileupDisplay/model.d.ts +332 -0
  200. package/esm/LinearPileupDisplay/model.js +576 -0
  201. package/esm/LinearPileupDisplay/model.js.map +1 -0
  202. package/esm/LinearSNPCoverageDisplay/components/Tooltip.d.ts +10 -0
  203. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js +57 -0
  204. package/esm/LinearSNPCoverageDisplay/components/Tooltip.js.map +1 -0
  205. package/esm/LinearSNPCoverageDisplay/index.d.ts +2 -0
  206. package/esm/LinearSNPCoverageDisplay/index.js +18 -0
  207. package/esm/LinearSNPCoverageDisplay/index.js.map +1 -0
  208. package/esm/LinearSNPCoverageDisplay/models/configSchema.d.ts +2 -0
  209. package/esm/LinearSNPCoverageDisplay/models/configSchema.js +44 -0
  210. package/esm/LinearSNPCoverageDisplay/models/configSchema.js.map +1 -0
  211. package/esm/LinearSNPCoverageDisplay/models/model.d.ts +348 -0
  212. package/esm/LinearSNPCoverageDisplay/models/model.js +185 -0
  213. package/esm/LinearSNPCoverageDisplay/models/model.js.map +1 -0
  214. package/esm/NestedFrequencyTable.d.ts +14 -0
  215. package/esm/NestedFrequencyTable.js +101 -0
  216. package/esm/NestedFrequencyTable.js.map +1 -0
  217. package/esm/PileupRPC/rpcMethods.d.ts +34 -0
  218. package/esm/PileupRPC/rpcMethods.js +70 -0
  219. package/esm/PileupRPC/rpcMethods.js.map +1 -0
  220. package/esm/PileupRenderer/PileupLayoutSession.d.ts +32 -0
  221. package/esm/PileupRenderer/PileupLayoutSession.js +32 -0
  222. package/esm/PileupRenderer/PileupLayoutSession.js.map +1 -0
  223. package/esm/PileupRenderer/PileupRenderer.d.ts +182 -0
  224. package/esm/PileupRenderer/PileupRenderer.js +830 -0
  225. package/esm/PileupRenderer/PileupRenderer.js.map +1 -0
  226. package/esm/PileupRenderer/components/PileupRendering.d.ts +23 -0
  227. package/esm/PileupRenderer/components/PileupRendering.js +138 -0
  228. package/esm/PileupRenderer/components/PileupRendering.js.map +1 -0
  229. package/esm/PileupRenderer/configSchema.d.ts +2 -0
  230. package/esm/PileupRenderer/configSchema.js +64 -0
  231. package/esm/PileupRenderer/configSchema.js.map +1 -0
  232. package/esm/PileupRenderer/index.d.ts +2 -0
  233. package/esm/PileupRenderer/index.js +12 -0
  234. package/esm/PileupRenderer/index.js.map +1 -0
  235. package/esm/PileupRenderer/sortUtil.d.ts +8 -0
  236. package/esm/PileupRenderer/sortUtil.js +80 -0
  237. package/esm/PileupRenderer/sortUtil.js.map +1 -0
  238. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.d.ts +67 -0
  239. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js +259 -0
  240. package/esm/SNPCoverageAdapter/SNPCoverageAdapter.js.map +1 -0
  241. package/esm/SNPCoverageAdapter/configSchema.d.ts +3 -0
  242. package/esm/SNPCoverageAdapter/configSchema.js +6 -0
  243. package/esm/SNPCoverageAdapter/configSchema.js.map +1 -0
  244. package/esm/SNPCoverageAdapter/index.d.ts +3 -0
  245. package/esm/SNPCoverageAdapter/index.js +18 -0
  246. package/esm/SNPCoverageAdapter/index.js.map +1 -0
  247. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.d.ts +20 -0
  248. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js +185 -0
  249. package/esm/SNPCoverageRenderer/SNPCoverageRenderer.js.map +1 -0
  250. package/esm/SNPCoverageRenderer/configSchema.d.ts +2 -0
  251. package/esm/SNPCoverageRenderer/configSchema.js +29 -0
  252. package/esm/SNPCoverageRenderer/configSchema.js.map +1 -0
  253. package/esm/SNPCoverageRenderer/index.d.ts +3 -0
  254. package/esm/SNPCoverageRenderer/index.js +14 -0
  255. package/esm/SNPCoverageRenderer/index.js.map +1 -0
  256. package/esm/index.d.ts +10 -0
  257. package/esm/index.js +91 -0
  258. package/esm/index.js.map +1 -0
  259. package/esm/shared.d.ts +25 -0
  260. package/esm/shared.js +28 -0
  261. package/esm/shared.js.map +1 -0
  262. package/esm/util.d.ts +19 -0
  263. package/esm/util.js +83 -0
  264. package/esm/util.js.map +1 -0
  265. package/package.json +22 -14
  266. package/src/AlignmentsFeatureDetail/AlignmentsFeatureDetail.tsx +4 -4
  267. package/src/AlignmentsFeatureDetail/__snapshots__/index.test.js.snap +321 -397
  268. package/src/BamAdapter/MismatchParser.ts +2 -2
  269. package/src/LinearAlignmentsDisplay/components/AlignmentsDisplay.tsx +3 -3
  270. package/src/LinearPileupDisplay/components/ColorByModifications.tsx +7 -7
  271. package/src/LinearPileupDisplay/components/ColorByTag.tsx +5 -5
  272. package/src/LinearPileupDisplay/components/FilterByTag.tsx +5 -5
  273. package/src/LinearPileupDisplay/components/LinearPileupDisplayBlurb.tsx +1 -1
  274. package/src/LinearPileupDisplay/components/SetFeatureHeight.tsx +9 -9
  275. package/src/LinearPileupDisplay/components/SetMaxHeight.tsx +5 -5
  276. package/src/LinearPileupDisplay/components/SortByTag.tsx +5 -5
  277. package/src/LinearPileupDisplay/model.ts +16 -10
  278. package/src/LinearSNPCoverageDisplay/models/model.ts +25 -25
  279. package/src/PileupRenderer/PileupRenderer.tsx +54 -40
  280. package/src/PileupRenderer/components/PileupRendering.tsx +11 -11
  281. package/src/SNPCoverageRenderer/SNPCoverageRenderer.ts +7 -5
  282. package/dist/AlignmentsFeatureDetail/index.test.js +0 -60
  283. package/dist/BamAdapter/BamAdapter.test.js +0 -177
  284. package/dist/BamAdapter/MismatchParser.test.js +0 -251
  285. package/dist/CramAdapter/CramAdapter.test.js +0 -138
  286. package/dist/LinearAlignmentsDisplay/models/configSchema.test.js +0 -83
  287. package/dist/LinearPileupDisplay/configSchema.test.js +0 -92
  288. package/dist/LinearSNPCoverageDisplay/models/configSchema.test.js +0 -62
  289. package/dist/PileupRenderer/components/PileupRendering.test.js +0 -36
  290. package/dist/declare.d.js +0 -1
  291. package/dist/index.test.js +0 -26
@@ -11,8 +11,8 @@ export interface Mismatch {
11
11
  }
12
12
  const mdRegex = new RegExp(/(\d+|\^[a-z]+|[a-z])/gi)
13
13
  const modificationRegex = new RegExp(/([A-Z])([-+])([^,.?]+)([.?])?/)
14
- export function parseCigar(cigar: string) {
15
- return (cigar || '').split(/([MIDNSHPX=])/)
14
+ export function parseCigar(cigar = '') {
15
+ return cigar.split(/([MIDNSHPX=])/).slice(0, -1)
16
16
  }
17
17
  export function cigarToMismatches(
18
18
  ops: string[],
@@ -2,10 +2,10 @@ import React from 'react'
2
2
  import { observer } from 'mobx-react'
3
3
  import { getConf } from '@jbrowse/core/configuration'
4
4
  import { ResizeHandle } from '@jbrowse/core/ui'
5
- import { makeStyles } from '@material-ui/core'
5
+ import { makeStyles } from 'tss-react/mui'
6
6
  import { AlignmentsDisplayModel } from '../models/model'
7
7
 
8
- const useStyles = makeStyles(() => ({
8
+ const useStyles = makeStyles()(() => ({
9
9
  resizeHandle: {
10
10
  height: 2,
11
11
  position: 'absolute',
@@ -15,7 +15,7 @@ const useStyles = makeStyles(() => ({
15
15
 
16
16
  function AlignmentsDisplay({ model }: { model: AlignmentsDisplayModel }) {
17
17
  const { PileupDisplay, SNPCoverageDisplay, showPileup, showCoverage } = model
18
- const classes = useStyles()
18
+ const { classes } = useStyles()
19
19
  const top = SNPCoverageDisplay.height
20
20
  return (
21
21
  <div
@@ -3,18 +3,18 @@ import { observer } from 'mobx-react'
3
3
  import { ObservableMap } from 'mobx'
4
4
  import {
5
5
  Button,
6
+ CircularProgress,
6
7
  Dialog,
7
8
  DialogActions,
8
9
  DialogContent,
9
10
  DialogTitle,
10
11
  IconButton,
11
12
  Typography,
12
- CircularProgress,
13
- makeStyles,
14
- } from '@material-ui/core'
15
- import CloseIcon from '@material-ui/icons/Close'
13
+ } from '@mui/material'
14
+ import { makeStyles } from 'tss-react/mui'
15
+ import CloseIcon from '@mui/icons-material/Close'
16
16
 
17
- const useStyles = makeStyles(theme => ({
17
+ const useStyles = makeStyles()(theme => ({
18
18
  closeButton: {
19
19
  position: 'absolute',
20
20
  right: theme.spacing(1),
@@ -35,7 +35,7 @@ function ModificationTable({
35
35
  }: {
36
36
  modifications: [string, string][]
37
37
  }) {
38
- const classes = useStyles()
38
+ const { classes } = useStyles()
39
39
  return (
40
40
  <table className={classes.table}>
41
41
  <tbody>
@@ -64,7 +64,7 @@ function ColorByTagDlg(props: {
64
64
  }
65
65
  handleClose: () => void
66
66
  }) {
67
- const classes = useStyles()
67
+ const { classes } = useStyles()
68
68
  const { model, handleClose } = props
69
69
  const { colorBy, modificationTagMap } = model
70
70
 
@@ -9,11 +9,11 @@ import {
9
9
  IconButton,
10
10
  TextField,
11
11
  Typography,
12
- makeStyles,
13
- } from '@material-ui/core'
14
- import CloseIcon from '@material-ui/icons/Close'
12
+ } from '@mui/material'
13
+ import { makeStyles } from 'tss-react/mui'
14
+ import CloseIcon from '@mui/icons-material/Close'
15
15
 
16
- const useStyles = makeStyles(theme => ({
16
+ const useStyles = makeStyles()(theme => ({
17
17
  root: {
18
18
  width: 300,
19
19
  },
@@ -29,7 +29,7 @@ function ColorByTagDlg(props: {
29
29
  model: { setColorScheme: Function }
30
30
  handleClose: () => void
31
31
  }) {
32
- const classes = useStyles()
32
+ const { classes } = useStyles()
33
33
  const { model, handleClose } = props
34
34
  const [tag, setTag] = useState('')
35
35
  const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)
@@ -11,12 +11,12 @@ import {
11
11
  Paper,
12
12
  TextField,
13
13
  Typography,
14
- makeStyles,
15
- } from '@material-ui/core'
14
+ } from '@mui/material'
15
+ import { makeStyles } from 'tss-react/mui'
16
16
 
17
- import CloseIcon from '@material-ui/icons/Close'
17
+ import CloseIcon from '@mui/icons-material/Close'
18
18
 
19
- const useStyles = makeStyles(theme => ({
19
+ const useStyles = makeStyles()(theme => ({
20
20
  paper: {
21
21
  padding: theme.spacing(2),
22
22
  margin: theme.spacing(2),
@@ -93,7 +93,7 @@ function FilterByTagDlg(props: {
93
93
  handleClose: () => void
94
94
  }) {
95
95
  const { model, handleClose } = props
96
- const classes = useStyles()
96
+ const { classes } = useStyles()
97
97
  const { filterBy } = model
98
98
  const [flagInclude, setFlagInclude] = useState(filterBy?.flagInclude)
99
99
  const [flagExclude, setFlagExclude] = useState(filterBy?.flagExclude)
@@ -1,6 +1,6 @@
1
1
  import React from 'react'
2
2
  import { observer } from 'mobx-react'
3
- import Typography from '@material-ui/core/Typography'
3
+ import Typography from '@mui/material/Typography'
4
4
 
5
5
  export interface LinearPileupDisplayBlurbProps {
6
6
  model: {
@@ -2,20 +2,20 @@ import React, { useState } from 'react'
2
2
  import { observer } from 'mobx-react'
3
3
  import {
4
4
  Button,
5
- TextField,
6
- Typography,
7
- IconButton,
5
+ Checkbox,
8
6
  Dialog,
9
7
  DialogActions,
10
8
  DialogContent,
11
9
  DialogTitle,
12
- Checkbox,
13
10
  FormControlLabel,
14
- makeStyles,
15
- } from '@material-ui/core'
16
- import CloseIcon from '@material-ui/icons/Close'
11
+ IconButton,
12
+ TextField,
13
+ Typography,
14
+ } from '@mui/material'
15
+ import { makeStyles } from 'tss-react/mui'
16
+ import CloseIcon from '@mui/icons-material/Close'
17
17
 
18
- const useStyles = makeStyles(theme => ({
18
+ const useStyles = makeStyles()(theme => ({
19
19
  closeButton: {
20
20
  position: 'absolute',
21
21
  right: theme.spacing(1),
@@ -37,7 +37,7 @@ function SetFeatureHeightDlg(props: {
37
37
  }
38
38
  handleClose: () => void
39
39
  }) {
40
- const classes = useStyles()
40
+ const { classes } = useStyles()
41
41
  const { model, handleClose } = props
42
42
  const { featureHeightSetting, noSpacing: noSpacingSetting } = model
43
43
  const [height, setHeight] = useState(`${featureHeightSetting}`)
@@ -9,11 +9,11 @@ import {
9
9
  IconButton,
10
10
  TextField,
11
11
  Typography,
12
- makeStyles,
13
- } from '@material-ui/core'
14
- import CloseIcon from '@material-ui/icons/Close'
12
+ } from '@mui/material'
13
+ import { makeStyles } from 'tss-react/mui'
14
+ import CloseIcon from '@mui/icons-material/Close'
15
15
 
16
- const useStyles = makeStyles(theme => ({
16
+ const useStyles = makeStyles()(theme => ({
17
17
  root: {
18
18
  width: 500,
19
19
  },
@@ -36,7 +36,7 @@ function SetMaxHeightDlg(props: {
36
36
  handleClose: () => void
37
37
  }) {
38
38
  const { model, handleClose } = props
39
- const classes = useStyles()
39
+ const { classes } = useStyles()
40
40
  const { maxHeight = '' } = model
41
41
  const [max, setMax] = useState(`${maxHeight}`)
42
42
 
@@ -9,12 +9,12 @@ import {
9
9
  IconButton,
10
10
  TextField,
11
11
  Typography,
12
- makeStyles,
13
- } from '@material-ui/core'
12
+ } from '@mui/material'
13
+ import { makeStyles } from 'tss-react/mui'
14
14
 
15
- import CloseIcon from '@material-ui/icons/Close'
15
+ import CloseIcon from '@mui/icons-material/Close'
16
16
 
17
- const useStyles = makeStyles(theme => ({
17
+ const useStyles = makeStyles()(theme => ({
18
18
  root: {
19
19
  margin: 0,
20
20
  padding: theme.spacing(2),
@@ -31,7 +31,7 @@ function SortByTagDlg(props: {
31
31
  model: { setSortedBy: Function }
32
32
  handleClose: () => void
33
33
  }) {
34
- const classes = useStyles()
34
+ const { classes } = useStyles()
35
35
  const { model, handleClose } = props
36
36
  const [tag, setTag] = useState('')
37
37
  const validTag = tag.match(/^[A-Za-z][A-Za-z0-9]$/)
@@ -23,12 +23,12 @@ import {
23
23
  } from '@jbrowse/plugin-linear-genome-view'
24
24
 
25
25
  // icons
26
- import VisibilityIcon from '@material-ui/icons/Visibility'
26
+ import VisibilityIcon from '@mui/icons-material/Visibility'
27
27
  import { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'
28
- import MenuOpenIcon from '@material-ui/icons/MenuOpen'
29
- import SortIcon from '@material-ui/icons/Sort'
30
- import PaletteIcon from '@material-ui/icons/Palette'
31
- import FilterListIcon from '@material-ui/icons/ClearAll'
28
+ import MenuOpenIcon from '@mui/icons-material/MenuOpen'
29
+ import SortIcon from '@mui/icons-material/Sort'
30
+ import PaletteIcon from '@mui/icons-material/Palette'
31
+ import FilterListIcon from '@mui/icons-material/ClearAll'
32
32
 
33
33
  // locals
34
34
  import { LinearPileupDisplayConfigModel } from './configSchema'
@@ -178,6 +178,13 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
178
178
  } = self
179
179
  const { staticBlocks, bpPerPx } = view
180
180
 
181
+ if (!self.estimatedStatsReady) {
182
+ return
183
+ }
184
+ if (self.regionTooLarge) {
185
+ return
186
+ }
187
+
181
188
  // continually generate the vc pairing, set and rerender if any
182
189
  // new values seen
183
190
  if (colorBy?.tag) {
@@ -321,16 +328,15 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
321
328
  }
322
329
  const { refName, assemblyName, offset } = centerLineInfo
323
330
  const centerBp = Math.round(offset) + 1
324
- const centerRefName = refName
325
331
 
326
- if (centerBp < 0) {
332
+ if (centerBp < 0 || !refName) {
327
333
  return
328
334
  }
329
335
 
330
336
  self.sortedBy = {
331
337
  type,
332
338
  pos: centerBp,
333
- refName: centerRefName,
339
+ refName,
334
340
  assemblyName,
335
341
  tag,
336
342
  }
@@ -466,8 +472,8 @@ const stateModelFactory = (configSchema: LinearPileupDisplayConfigModel) =>
466
472
  sortedBy,
467
473
  colorBy,
468
474
  filterBy: JSON.parse(JSON.stringify(filterBy)),
469
- colorTagMap: JSON.parse(JSON.stringify(colorTagMap)),
470
- modificationTagMap: JSON.parse(JSON.stringify(modificationTagMap)),
475
+ colorTagMap: Object.fromEntries(colorTagMap.toJSON()),
476
+ modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),
471
477
  showSoftClip: self.showSoftClipping,
472
478
  config: self.rendererConfig,
473
479
  async onFeatureClick(_: unknown, featureId?: string) {
@@ -93,35 +93,29 @@ const stateModelFactory = (
93
93
  {
94
94
  ...configBlob,
95
95
  drawInterbaseCounts:
96
- self.drawInterbaseCounts === undefined
97
- ? configBlob.drawInterbaseCounts
98
- : self.drawInterbaseCounts,
99
- drawIndicators:
100
- self.drawIndicators === undefined
101
- ? configBlob.drawIndicators
102
- : self.drawIndicators,
103
- drawArcs:
104
- self.drawArcs === undefined
105
- ? configBlob.drawArcs
106
- : self.drawArcs,
96
+ self.drawInterbaseCounts ?? configBlob.drawInterbaseCounts,
97
+ drawIndicators: self.drawIndicators ?? configBlob.drawIndicators,
98
+ drawArcs: self.drawArcs ?? configBlob.drawArcs,
107
99
  },
108
100
  getEnv(self),
109
101
  )
110
102
  },
111
103
  get drawArcsSetting() {
112
- return self.drawArcs !== undefined
113
- ? self.drawArcs
114
- : readConfObject(this.rendererConfig, 'drawArcs')
104
+ return (
105
+ self.drawArcs ?? readConfObject(this.rendererConfig, 'drawArcs')
106
+ )
115
107
  },
116
108
  get drawInterbaseCountsSetting() {
117
- return self.drawInterbaseCounts !== undefined
118
- ? self.drawInterbaseCounts
119
- : readConfObject(this.rendererConfig, 'drawInterbaseCounts')
109
+ return (
110
+ self.drawInterbaseCounts ??
111
+ readConfObject(this.rendererConfig, 'drawInterbaseCounts')
112
+ )
120
113
  },
121
114
  get drawIndicatorsSetting() {
122
- return self.drawIndicators !== undefined
123
- ? self.drawIndicators
124
- : readConfObject(this.rendererConfig, 'drawIndicators')
115
+ return (
116
+ self.drawIndicators ??
117
+ readConfObject(this.rendererConfig, 'drawIndicators')
118
+ )
125
119
  },
126
120
 
127
121
  get modificationsReady() {
@@ -133,17 +127,16 @@ const stateModelFactory = (
133
127
 
134
128
  renderProps() {
135
129
  const superProps = superRenderProps()
130
+ const { colorBy, filterBy, modificationTagMap } = self
136
131
  return {
137
132
  ...superProps,
138
133
  notReady: superProps.notReady || !this.modificationsReady,
139
- modificationTagMap: JSON.parse(
140
- JSON.stringify(self.modificationTagMap),
141
- ),
134
+ modificationTagMap: Object.fromEntries(modificationTagMap.toJSON()),
142
135
 
143
136
  // must use getSnapshot because otherwise changes to e.g. just the
144
137
  // colorBy.type are not read
145
- colorBy: self.colorBy ? getSnapshot(self.colorBy) : undefined,
146
- filterBy: self.filterBy ? getSnapshot(self.filterBy) : undefined,
138
+ colorBy: colorBy ? getSnapshot(colorBy) : undefined,
139
+ filterBy: filterBy ? getSnapshot(filterBy) : undefined,
147
140
  }
148
141
  },
149
142
  }
@@ -166,6 +159,13 @@ const stateModelFactory = (
166
159
  try {
167
160
  const { colorBy } = self
168
161
  const { staticBlocks } = getContainingView(self) as LGV
162
+
163
+ if (!self.estimatedStatsReady) {
164
+ return
165
+ }
166
+ if (self.regionTooLarge) {
167
+ return
168
+ }
169
169
  if (colorBy?.type === 'modifications') {
170
170
  const vals = await getUniqueModificationValues(
171
171
  self,
@@ -1,4 +1,4 @@
1
- import Color from 'color'
1
+ import { Theme } from '@mui/material/styles'
2
2
  import BoxRendererType, {
3
3
  RenderArgs,
4
4
  RenderArgsSerialized,
@@ -7,7 +7,6 @@ import BoxRendererType, {
7
7
  ResultsSerialized,
8
8
  ResultsDeserialized,
9
9
  } from '@jbrowse/core/pluggableElementTypes/renderers/BoxRendererType'
10
- import { Theme } from '@material-ui/core'
11
10
  import { createJBrowseTheme } from '@jbrowse/core/ui'
12
11
  import {
13
12
  bpSpanPx,
@@ -64,11 +63,13 @@ function fillRect(
64
63
  }
65
64
 
66
65
  function getColorBaseMap(theme: Theme) {
66
+ // @ts-ignore
67
+ const { bases } = theme.palette
67
68
  return {
68
- A: theme.palette.bases.A.main,
69
- C: theme.palette.bases.C.main,
70
- G: theme.palette.bases.G.main,
71
- T: theme.palette.bases.T.main,
69
+ A: bases.A.main,
70
+ C: bases.C.main,
71
+ G: bases.G.main,
72
+ T: bases.T.main,
72
73
  deletion: '#808080', // gray
73
74
  }
74
75
  }
@@ -137,8 +138,8 @@ interface LayoutFeature {
137
138
  feature: Feature
138
139
  }
139
140
 
140
- function shouldDrawSNPs(type?: string) {
141
- return !['methylation', 'modifications'].includes(type || '')
141
+ function shouldDrawSNPsMuted(type?: string) {
142
+ return ['methylation', 'modifications'].includes(type || '')
142
143
  }
143
144
 
144
145
  function shouldDrawIndels(type?: string) {
@@ -152,7 +153,7 @@ export default class PileupRenderer extends BoxRendererType {
152
153
  // letter M is approximately the height
153
154
  getCharWidthHeight(ctx: CanvasRenderingContext2D) {
154
155
  const charWidth = measureText('A')
155
- const charHeight = measureText('M')
156
+ const charHeight = measureText('M') - 2
156
157
  return { charWidth, charHeight }
157
158
  }
158
159
 
@@ -244,7 +245,8 @@ export default class PileupRenderer extends BoxRendererType {
244
245
  )
245
246
 
246
247
  return {
247
- ...region,
248
+ // xref https://github.com/mobxjs/mobx-state-tree/issues/1524 for Omit
249
+ ...(region as Omit<typeof region, symbol>),
248
250
  start: Math.floor(Math.max(start - bpExpansion, 0)),
249
251
  end: Math.ceil(end + bpExpansion),
250
252
  }
@@ -453,7 +455,7 @@ export default class PileupRenderer extends BoxRendererType {
453
455
  canvasWidth: number
454
456
  }) {
455
457
  const { feature, topPx, heightPx } = feat
456
- const { modificationTagMap = {} } = renderArgs
458
+ const { Color, modificationTagMap = {} } = renderArgs
457
459
 
458
460
  const mm = (getTagAlt(feature, 'MM', 'Mm') as string) || ''
459
461
 
@@ -481,6 +483,8 @@ export default class PileupRenderer extends BoxRendererType {
481
483
  for (let i = 0; i < modifications.length; i++) {
482
484
  const { type, positions } = modifications[i]
483
485
  const col = modificationTagMap[type] || 'black'
486
+
487
+ // @ts-ignore
484
488
  const base = Color(col)
485
489
  for (const readPos of getNextRefPos(cigarOps, positions)) {
486
490
  const r = start + readPos
@@ -826,7 +830,7 @@ export default class PileupRenderer extends BoxRendererType {
826
830
  colorForBase,
827
831
  contrastForBase,
828
832
  canvasWidth,
829
- drawSNPs = true,
833
+ drawSNPsMuted,
830
834
  drawIndels = true,
831
835
  }: {
832
836
  ctx: CanvasRenderingContext2D
@@ -835,15 +839,15 @@ export default class PileupRenderer extends BoxRendererType {
835
839
  colorForBase: { [key: string]: string }
836
840
  contrastForBase: { [key: string]: string }
837
841
  mismatchAlpha?: boolean
838
- drawSNPs?: boolean
839
842
  drawIndels?: boolean
843
+ drawSNPsMuted?: boolean
840
844
  minSubfeatureWidth: number
841
845
  largeInsertionIndicatorScale: number
842
846
  charWidth: number
843
847
  charHeight: number
844
848
  canvasWidth: number
845
849
  }) {
846
- const { bpPerPx, regions } = renderArgs
850
+ const { Color, bpPerPx, regions } = renderArgs
847
851
  const { heightPx, topPx, feature } = feat
848
852
  const [region] = regions
849
853
  const start = feature.get('start')
@@ -868,33 +872,39 @@ export default class PileupRenderer extends BoxRendererType {
868
872
  const mbase = mismatch.base
869
873
  const [leftPx, rightPx] = bpSpanPx(mstart, mstart + mlen, region, bpPerPx)
870
874
  const widthPx = Math.max(minSubfeatureWidth, Math.abs(leftPx - rightPx))
871
- if (mismatch.type === 'mismatch' && drawSNPs) {
872
- const baseColor = colorForBase[mismatch.base] || '#888'
875
+ if (mismatch.type === 'mismatch') {
876
+ if (!drawSNPsMuted) {
877
+ const baseColor = colorForBase[mismatch.base] || '#888'
873
878
 
874
- fillRect(
875
- ctx,
876
- leftPx,
877
- topPx,
878
- widthPx,
879
- heightPx,
880
- canvasWidth,
881
- !mismatchAlpha
882
- ? baseColor
883
- : mismatch.qual !== undefined
884
- ? Color(baseColor)
885
- .alpha(Math.min(1, mismatch.qual / 50))
886
- .hsl()
887
- .string()
888
- : baseColor,
889
- )
879
+ fillRect(
880
+ ctx,
881
+ leftPx,
882
+ topPx,
883
+ widthPx,
884
+ heightPx,
885
+ canvasWidth,
886
+ !mismatchAlpha
887
+ ? baseColor
888
+ : mismatch.qual !== undefined
889
+ ? // @ts-ignore
890
+ Color(baseColor)
891
+ .alpha(Math.min(1, mismatch.qual / 50))
892
+ .hsl()
893
+ .string()
894
+ : baseColor,
895
+ )
896
+ }
890
897
 
891
898
  if (widthPx >= charWidth && heightPx >= heightLim) {
892
899
  // normal SNP coloring
893
- const contrastColor = contrastForBase[mismatch.base] || 'black'
900
+ const contrastColor = drawSNPsMuted
901
+ ? 'black'
902
+ : contrastForBase[mismatch.base] || 'black'
894
903
  ctx.fillStyle = !mismatchAlpha
895
904
  ? contrastColor
896
905
  : mismatch.qual !== undefined
897
- ? Color(contrastColor)
906
+ ? // @ts-ignore
907
+ Color(contrastColor)
898
908
  .alpha(Math.min(1, mismatch.qual / 50))
899
909
  .hsl()
900
910
  .string()
@@ -1050,11 +1060,13 @@ export default class PileupRenderer extends BoxRendererType {
1050
1060
  const mismatches: Mismatch[] = feature.get('mismatches')
1051
1061
  const seq = feature.get('seq')
1052
1062
  const { charWidth, charHeight } = this.getCharWidthHeight(ctx)
1063
+ // @ts-ignore
1064
+ const { bases } = theme.palette
1053
1065
  const colorForBase: { [key: string]: string } = {
1054
- A: theme.palette.bases.A.main,
1055
- C: theme.palette.bases.C.main,
1056
- G: theme.palette.bases.G.main,
1057
- T: theme.palette.bases.T.main,
1066
+ A: bases.A.main,
1067
+ C: bases.C.main,
1068
+ G: bases.G.main,
1069
+ T: bases.T.main,
1058
1070
  deletion: '#808080', // gray
1059
1071
  }
1060
1072
 
@@ -1152,7 +1164,7 @@ export default class PileupRenderer extends BoxRendererType {
1152
1164
  ctx.font = 'bold 10px Courier New,monospace'
1153
1165
 
1154
1166
  const { charWidth, charHeight } = this.getCharWidthHeight(ctx)
1155
- const drawSNPs = shouldDrawSNPs(colorBy?.type)
1167
+ const drawSNPsMuted = shouldDrawSNPsMuted(colorBy?.type)
1156
1168
  const drawIndels = shouldDrawIndels(colorBy?.type)
1157
1169
  for (let i = 0; i < layoutRecords.length; i++) {
1158
1170
  const feat = layoutRecords[i]
@@ -1176,7 +1188,7 @@ export default class PileupRenderer extends BoxRendererType {
1176
1188
  feat,
1177
1189
  renderArgs,
1178
1190
  mismatchAlpha,
1179
- drawSNPs,
1191
+ drawSNPsMuted,
1180
1192
  drawIndels,
1181
1193
  largeInsertionIndicatorScale,
1182
1194
  minSubfeatureWidth,
@@ -1279,6 +1291,7 @@ export default class PileupRenderer extends BoxRendererType {
1279
1291
 
1280
1292
  const width = (end - start) / bpPerPx
1281
1293
  const height = Math.max(layout.getTotalHeight(), 1)
1294
+ const Color = await import('color').then(f => f.default)
1282
1295
  const res = await renderToAbstractCanvas(
1283
1296
  width,
1284
1297
  height,
@@ -1293,6 +1306,7 @@ export default class PileupRenderer extends BoxRendererType {
1293
1306
  layout,
1294
1307
  features,
1295
1308
  regionSequence,
1309
+ Color,
1296
1310
  },
1297
1311
  }),
1298
1312
  )
@@ -1,8 +1,8 @@
1
+ import React, { useRef, useState, useEffect } from 'react'
1
2
  import { Region } from '@jbrowse/core/util/types'
2
3
  import { PrerenderedCanvas } from '@jbrowse/core/ui'
3
4
  import { bpSpanPx } from '@jbrowse/core/util'
4
5
  import { observer } from 'mobx-react'
5
- import React, { MouseEvent, useRef, useState, useEffect } from 'react'
6
6
  import type { BaseLinearDisplayModel } from '@jbrowse/plugin-linear-genome-view'
7
7
 
8
8
  // used so that user can click-away-from-feature below the laid out features
@@ -91,46 +91,46 @@ function PileupRendering(props: {
91
91
  contextMenuFeature,
92
92
  ])
93
93
 
94
- function onMouseDown(event: MouseEvent) {
94
+ function onMouseDown(event: React.MouseEvent) {
95
95
  setMouseIsDown(true)
96
96
  setMovedDuringLastMouseDown(false)
97
97
  callMouseHandler('MouseDown', event)
98
98
  }
99
99
 
100
- function onMouseEnter(event: MouseEvent) {
100
+ function onMouseEnter(event: React.MouseEvent) {
101
101
  callMouseHandler('MouseEnter', event)
102
102
  }
103
103
 
104
- function onMouseOut(event: MouseEvent) {
104
+ function onMouseOut(event: React.MouseEvent) {
105
105
  callMouseHandler('MouseOut', event)
106
106
  callMouseHandler('MouseLeave', event)
107
107
  }
108
108
 
109
- function onMouseOver(event: MouseEvent) {
109
+ function onMouseOver(event: React.MouseEvent) {
110
110
  callMouseHandler('MouseOver', event)
111
111
  }
112
112
 
113
- function onMouseUp(event: MouseEvent) {
113
+ function onMouseUp(event: React.MouseEvent) {
114
114
  setMouseIsDown(false)
115
115
  callMouseHandler('MouseUp', event)
116
116
  }
117
117
 
118
- function onClick(event: MouseEvent) {
118
+ function onClick(event: React.MouseEvent) {
119
119
  if (!movedDuringLastMouseDown) {
120
120
  callMouseHandler('Click', event)
121
121
  }
122
122
  }
123
123
 
124
- function onMouseLeave(event: MouseEvent) {
124
+ function onMouseLeave(event: React.MouseEvent) {
125
125
  callMouseHandler('MouseOut', event)
126
126
  callMouseHandler('MouseLeave', event)
127
127
  }
128
128
 
129
- function onContextMenu(event: MouseEvent) {
129
+ function onContextMenu(event: React.MouseEvent) {
130
130
  callMouseHandler('ContextMenu', event)
131
131
  }
132
132
 
133
- function mouseMove(event: MouseEvent) {
133
+ function mouseMove(event: React.MouseEvent) {
134
134
  if (mouseIsDown) {
135
135
  setMovedDuringLastMouseDown(true)
136
136
  }
@@ -158,7 +158,7 @@ function PileupRendering(props: {
158
158
  }
159
159
  }
160
160
 
161
- function callMouseHandler(handlerName: string, event: MouseEvent) {
161
+ function callMouseHandler(handlerName: string, event: React.MouseEvent) {
162
162
  // @ts-ignore
163
163
  // eslint-disable-next-line react/destructuring-assignment
164
164
  const featureHandler = props[`onFeature${handlerName}`]