@jbrowse/plugin-wiggle 1.7.11 → 2.1.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 (446) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.d.ts +8 -7
  2. package/dist/BigWigAdapter/BigWigAdapter.js +205 -283
  3. package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -0
  4. package/dist/BigWigAdapter/configSchema.js +17 -21
  5. package/dist/BigWigAdapter/configSchema.js.map +1 -0
  6. package/dist/BigWigAdapter/index.d.ts +3 -1
  7. package/dist/BigWigAdapter/index.js +42 -12
  8. package/dist/BigWigAdapter/index.js.map +1 -0
  9. package/dist/CreateMultiWiggleExtension/ConfirmDialog.d.ts +9 -0
  10. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js +68 -0
  11. package/dist/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -0
  12. package/dist/CreateMultiWiggleExtension/index.d.ts +2 -0
  13. package/dist/CreateMultiWiggleExtension/index.js +111 -0
  14. package/dist/CreateMultiWiggleExtension/index.js.map +1 -0
  15. package/dist/DensityRenderer/DensityRenderer.d.ts +6 -0
  16. package/dist/DensityRenderer/DensityRenderer.js +74 -0
  17. package/dist/DensityRenderer/DensityRenderer.js.map +1 -0
  18. package/dist/DensityRenderer/configSchema.d.ts +2 -0
  19. package/dist/DensityRenderer/configSchema.js +10 -0
  20. package/dist/DensityRenderer/configSchema.js.map +1 -0
  21. package/dist/DensityRenderer/index.d.ts +3 -6
  22. package/dist/DensityRenderer/index.js +17 -135
  23. package/dist/DensityRenderer/index.js.map +1 -0
  24. package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +4 -2
  25. package/dist/LinePlotRenderer/LinePlotRenderer.js +83 -168
  26. package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  27. package/dist/LinePlotRenderer/configSchema.d.ts +2 -2
  28. package/dist/LinePlotRenderer/configSchema.js +15 -69
  29. package/dist/LinePlotRenderer/configSchema.js.map +1 -0
  30. package/dist/LinePlotRenderer/index.d.ts +3 -3
  31. package/dist/LinePlotRenderer/index.js +17 -32
  32. package/dist/LinePlotRenderer/index.js.map +1 -0
  33. package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +6 -2
  34. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +88 -106
  35. package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  36. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js +86 -107
  37. package/dist/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  38. package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +6 -11
  39. package/dist/LinearWiggleDisplay/components/Tooltip.js +47 -163
  40. package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  41. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js +44 -50
  42. package/dist/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  43. package/dist/LinearWiggleDisplay/components/YScaleBar.js +24 -31
  44. package/dist/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  45. package/dist/LinearWiggleDisplay/index.d.ts +7 -3
  46. package/dist/LinearWiggleDisplay/index.js +27 -41
  47. package/dist/LinearWiggleDisplay/index.js.map +1 -0
  48. package/dist/LinearWiggleDisplay/models/configSchema.js +65 -69
  49. package/dist/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  50. package/dist/LinearWiggleDisplay/models/model.d.ts +39 -18
  51. package/dist/LinearWiggleDisplay/models/model.js +538 -696
  52. package/dist/LinearWiggleDisplay/models/model.js.map +1 -0
  53. package/dist/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  54. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +135 -0
  55. package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  56. package/dist/MultiDensityRenderer/configSchema.d.ts +2 -0
  57. package/dist/MultiDensityRenderer/configSchema.js +10 -0
  58. package/dist/MultiDensityRenderer/configSchema.js.map +1 -0
  59. package/dist/MultiDensityRenderer/index.d.ts +3 -0
  60. package/dist/MultiDensityRenderer/index.js +19 -0
  61. package/dist/MultiDensityRenderer/index.js.map +1 -0
  62. package/dist/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  63. package/dist/MultiLineRenderer/MultiLineRenderer.js +124 -0
  64. package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  65. package/dist/MultiLineRenderer/configSchema.d.ts +2 -0
  66. package/dist/MultiLineRenderer/configSchema.js +23 -0
  67. package/dist/MultiLineRenderer/configSchema.js.map +1 -0
  68. package/dist/MultiLineRenderer/index.d.ts +3 -0
  69. package/dist/MultiLineRenderer/index.js +19 -0
  70. package/dist/MultiLineRenderer/index.js.map +1 -0
  71. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  72. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +239 -0
  73. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  74. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  75. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +91 -0
  76. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  77. package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  78. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +78 -0
  79. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  80. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  81. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +144 -0
  82. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  83. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  84. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js +26 -0
  85. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  86. package/dist/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  87. package/dist/MultiLinearWiggleDisplay/components/util.js +38 -0
  88. package/dist/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  89. package/dist/MultiLinearWiggleDisplay/index.d.ts +3 -0
  90. package/dist/MultiLinearWiggleDisplay/index.js +23 -0
  91. package/dist/MultiLinearWiggleDisplay/index.js.map +1 -0
  92. package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  93. package/dist/MultiLinearWiggleDisplay/models/configSchema.js +77 -0
  94. package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  95. package/dist/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  96. package/dist/MultiLinearWiggleDisplay/models/model.js +675 -0
  97. package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  98. package/dist/MultiQuantitativeTrack/index.d.ts +3 -0
  99. package/dist/MultiQuantitativeTrack/index.js +19 -0
  100. package/dist/MultiQuantitativeTrack/index.js.map +1 -0
  101. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  102. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +131 -0
  103. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  104. package/dist/MultiRowLineRenderer/configSchema.d.ts +2 -0
  105. package/dist/MultiRowLineRenderer/configSchema.js +23 -0
  106. package/dist/MultiRowLineRenderer/configSchema.js.map +1 -0
  107. package/dist/MultiRowLineRenderer/index.d.ts +3 -0
  108. package/dist/MultiRowLineRenderer/index.js +19 -0
  109. package/dist/MultiRowLineRenderer/index.js.map +1 -0
  110. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  111. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +164 -0
  112. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  113. package/dist/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  114. package/dist/MultiRowXYPlotRenderer/configSchema.js +31 -0
  115. package/dist/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  116. package/dist/MultiRowXYPlotRenderer/index.d.ts +3 -0
  117. package/dist/MultiRowXYPlotRenderer/index.js +19 -0
  118. package/dist/MultiRowXYPlotRenderer/index.js.map +1 -0
  119. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  120. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +244 -0
  121. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  122. package/dist/MultiWiggleAdapter/configSchema.d.ts +2 -0
  123. package/dist/MultiWiggleAdapter/configSchema.js +14 -0
  124. package/dist/MultiWiggleAdapter/configSchema.js.map +1 -0
  125. package/dist/MultiWiggleAdapter/index.d.ts +3 -0
  126. package/dist/MultiWiggleAdapter/index.js +47 -0
  127. package/dist/MultiWiggleAdapter/index.js.map +1 -0
  128. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  129. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +139 -0
  130. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  131. package/dist/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  132. package/dist/MultiWiggleAddTrackWidget/index.js +19 -0
  133. package/dist/MultiWiggleAddTrackWidget/index.js.map +1 -0
  134. package/dist/MultiWiggleRendering.d.ts +21 -0
  135. package/dist/MultiWiggleRendering.js +164 -0
  136. package/dist/MultiWiggleRendering.js.map +1 -0
  137. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  138. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +153 -0
  139. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  140. package/dist/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  141. package/dist/MultiXYPlotRenderer/configSchema.js +31 -0
  142. package/dist/MultiXYPlotRenderer/configSchema.js.map +1 -0
  143. package/dist/MultiXYPlotRenderer/index.d.ts +3 -0
  144. package/dist/MultiXYPlotRenderer/index.js +19 -0
  145. package/dist/MultiXYPlotRenderer/index.js.map +1 -0
  146. package/dist/QuantitativeTrack/index.d.ts +3 -0
  147. package/dist/QuantitativeTrack/index.js +19 -0
  148. package/dist/QuantitativeTrack/index.js.map +1 -0
  149. package/dist/Tooltip.d.ts +20 -0
  150. package/dist/Tooltip.js +124 -0
  151. package/dist/Tooltip.js.map +1 -0
  152. package/dist/WiggleBaseRenderer.d.ts +11 -12
  153. package/dist/WiggleBaseRenderer.js +132 -129
  154. package/dist/WiggleBaseRenderer.js.map +1 -0
  155. package/dist/WiggleRPC/rpcMethods.d.ts +17 -1
  156. package/dist/WiggleRPC/rpcMethods.js +258 -289
  157. package/dist/WiggleRPC/rpcMethods.js.map +1 -0
  158. package/dist/WiggleRendering.d.ts +1 -1
  159. package/dist/WiggleRendering.js +103 -102
  160. package/dist/WiggleRendering.js.map +1 -0
  161. package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +4 -1
  162. package/dist/XYPlotRenderer/XYPlotRenderer.js +147 -194
  163. package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  164. package/dist/XYPlotRenderer/configSchema.d.ts +2 -0
  165. package/dist/XYPlotRenderer/configSchema.js +31 -0
  166. package/dist/XYPlotRenderer/configSchema.js.map +1 -0
  167. package/dist/XYPlotRenderer/index.d.ts +7 -3
  168. package/dist/XYPlotRenderer/index.js +21 -32
  169. package/dist/XYPlotRenderer/index.js.map +1 -0
  170. package/dist/configSchema.js +42 -74
  171. package/dist/configSchema.js.map +1 -0
  172. package/dist/drawxy.d.ts +50 -0
  173. package/dist/drawxy.js +411 -0
  174. package/dist/drawxy.js.map +1 -0
  175. package/dist/index.d.ts +194 -85
  176. package/dist/index.js +139 -247
  177. package/dist/index.js.map +1 -0
  178. package/dist/util.d.ts +34 -1
  179. package/dist/util.js +270 -143
  180. package/dist/util.js.map +1 -0
  181. package/esm/BigWigAdapter/BigWigAdapter.d.ts +25 -0
  182. package/esm/BigWigAdapter/BigWigAdapter.js +81 -0
  183. package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -0
  184. package/esm/BigWigAdapter/configSchema.d.ts +2 -0
  185. package/esm/BigWigAdapter/configSchema.js +16 -0
  186. package/esm/BigWigAdapter/configSchema.js.map +1 -0
  187. package/esm/BigWigAdapter/index.d.ts +3 -0
  188. package/esm/BigWigAdapter/index.js +15 -0
  189. package/esm/BigWigAdapter/index.js.map +1 -0
  190. package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +9 -0
  191. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js +26 -0
  192. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -0
  193. package/esm/CreateMultiWiggleExtension/index.d.ts +2 -0
  194. package/esm/CreateMultiWiggleExtension/index.js +51 -0
  195. package/esm/CreateMultiWiggleExtension/index.js.map +1 -0
  196. package/esm/DensityRenderer/DensityRenderer.d.ts +6 -0
  197. package/esm/DensityRenderer/DensityRenderer.js +8 -0
  198. package/esm/DensityRenderer/DensityRenderer.js.map +1 -0
  199. package/esm/DensityRenderer/configSchema.d.ts +2 -0
  200. package/esm/DensityRenderer/configSchema.js +5 -0
  201. package/esm/DensityRenderer/configSchema.js.map +1 -0
  202. package/esm/DensityRenderer/index.d.ts +3 -0
  203. package/esm/DensityRenderer/index.js +12 -0
  204. package/esm/DensityRenderer/index.js.map +1 -0
  205. package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +6 -0
  206. package/esm/LinePlotRenderer/LinePlotRenderer.js +13 -0
  207. package/esm/LinePlotRenderer/LinePlotRenderer.js.map +1 -0
  208. package/esm/LinePlotRenderer/configSchema.d.ts +2 -0
  209. package/esm/LinePlotRenderer/configSchema.js +11 -0
  210. package/esm/LinePlotRenderer/configSchema.js.map +1 -0
  211. package/esm/LinePlotRenderer/index.d.ts +3 -0
  212. package/esm/LinePlotRenderer/index.js +12 -0
  213. package/esm/LinePlotRenderer/index.js.map +1 -0
  214. package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +14 -0
  215. package/esm/LinearWiggleDisplay/components/SetColorDialog.js +48 -0
  216. package/esm/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  217. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  218. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  219. package/esm/LinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  220. package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +19 -0
  221. package/esm/LinearWiggleDisplay/components/Tooltip.js +34 -0
  222. package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -0
  223. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +8 -0
  224. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js +29 -0
  225. package/esm/LinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  226. package/esm/LinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  227. package/esm/LinearWiggleDisplay/components/YScaleBar.js +9 -0
  228. package/esm/LinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  229. package/esm/LinearWiggleDisplay/index.d.ts +7 -0
  230. package/esm/LinearWiggleDisplay/index.js +21 -0
  231. package/esm/LinearWiggleDisplay/index.js.map +1 -0
  232. package/esm/LinearWiggleDisplay/models/configSchema.d.ts +2 -0
  233. package/esm/LinearWiggleDisplay/models/configSchema.js +64 -0
  234. package/esm/LinearWiggleDisplay/models/configSchema.js.map +1 -0
  235. package/esm/LinearWiggleDisplay/models/model.d.ts +309 -0
  236. package/esm/LinearWiggleDisplay/models/model.js +449 -0
  237. package/esm/LinearWiggleDisplay/models/model.js.map +1 -0
  238. package/esm/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  239. package/esm/MultiDensityRenderer/MultiDensityRenderer.js +36 -0
  240. package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  241. package/esm/MultiDensityRenderer/configSchema.d.ts +2 -0
  242. package/esm/MultiDensityRenderer/configSchema.js +5 -0
  243. package/esm/MultiDensityRenderer/configSchema.js.map +1 -0
  244. package/esm/MultiDensityRenderer/index.d.ts +3 -0
  245. package/esm/MultiDensityRenderer/index.js +12 -0
  246. package/esm/MultiDensityRenderer/index.js.map +1 -0
  247. package/esm/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  248. package/esm/MultiLineRenderer/MultiLineRenderer.js +25 -0
  249. package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  250. package/esm/MultiLineRenderer/configSchema.d.ts +2 -0
  251. package/esm/MultiLineRenderer/configSchema.js +18 -0
  252. package/esm/MultiLineRenderer/configSchema.js.map +1 -0
  253. package/esm/MultiLineRenderer/index.d.ts +3 -0
  254. package/esm/MultiLineRenderer/index.js +12 -0
  255. package/esm/MultiLineRenderer/index.js.map +1 -0
  256. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  257. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +162 -0
  258. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  259. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  260. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  261. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  262. package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  263. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js +43 -0
  264. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  265. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  266. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +99 -0
  267. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  268. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  269. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js +9 -0
  270. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  271. package/esm/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  272. package/esm/MultiLinearWiggleDisplay/components/util.js +31 -0
  273. package/esm/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  274. package/esm/MultiLinearWiggleDisplay/index.d.ts +3 -0
  275. package/esm/MultiLinearWiggleDisplay/index.js +18 -0
  276. package/esm/MultiLinearWiggleDisplay/index.js.map +1 -0
  277. package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  278. package/esm/MultiLinearWiggleDisplay/models/configSchema.js +74 -0
  279. package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  280. package/esm/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  281. package/esm/MultiLinearWiggleDisplay/models/model.js +570 -0
  282. package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  283. package/esm/MultiQuantitativeTrack/index.d.ts +3 -0
  284. package/esm/MultiQuantitativeTrack/index.js +14 -0
  285. package/esm/MultiQuantitativeTrack/index.js.map +1 -0
  286. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  287. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +33 -0
  288. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  289. package/esm/MultiRowLineRenderer/configSchema.d.ts +2 -0
  290. package/esm/MultiRowLineRenderer/configSchema.js +18 -0
  291. package/esm/MultiRowLineRenderer/configSchema.js.map +1 -0
  292. package/esm/MultiRowLineRenderer/index.d.ts +3 -0
  293. package/esm/MultiRowLineRenderer/index.js +12 -0
  294. package/esm/MultiRowLineRenderer/index.js.map +1 -0
  295. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  296. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +39 -0
  297. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  298. package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  299. package/esm/MultiRowXYPlotRenderer/configSchema.js +26 -0
  300. package/esm/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  301. package/esm/MultiRowXYPlotRenderer/index.d.ts +3 -0
  302. package/esm/MultiRowXYPlotRenderer/index.js +12 -0
  303. package/esm/MultiRowXYPlotRenderer/index.js.map +1 -0
  304. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  305. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +87 -0
  306. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  307. package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -0
  308. package/esm/MultiWiggleAdapter/configSchema.js +12 -0
  309. package/esm/MultiWiggleAdapter/configSchema.js.map +1 -0
  310. package/esm/MultiWiggleAdapter/index.d.ts +3 -0
  311. package/esm/MultiWiggleAdapter/index.js +15 -0
  312. package/esm/MultiWiggleAdapter/index.js.map +1 -0
  313. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  314. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +87 -0
  315. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  316. package/esm/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  317. package/esm/MultiWiggleAddTrackWidget/index.js +12 -0
  318. package/esm/MultiWiggleAddTrackWidget/index.js.map +1 -0
  319. package/esm/MultiWiggleRendering.d.ts +21 -0
  320. package/esm/MultiWiggleRendering.js +75 -0
  321. package/esm/MultiWiggleRendering.js.map +1 -0
  322. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  323. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +28 -0
  324. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  325. package/esm/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  326. package/esm/MultiXYPlotRenderer/configSchema.js +26 -0
  327. package/esm/MultiXYPlotRenderer/configSchema.js.map +1 -0
  328. package/esm/MultiXYPlotRenderer/index.d.ts +3 -0
  329. package/esm/MultiXYPlotRenderer/index.js +12 -0
  330. package/esm/MultiXYPlotRenderer/index.js.map +1 -0
  331. package/esm/QuantitativeTrack/index.d.ts +3 -0
  332. package/esm/QuantitativeTrack/index.js +14 -0
  333. package/esm/QuantitativeTrack/index.js.map +1 -0
  334. package/esm/Tooltip.d.ts +20 -0
  335. package/esm/Tooltip.js +71 -0
  336. package/esm/Tooltip.js.map +1 -0
  337. package/esm/WiggleBaseRenderer.d.ts +54 -0
  338. package/esm/WiggleBaseRenderer.js +36 -0
  339. package/esm/WiggleBaseRenderer.js.map +1 -0
  340. package/esm/WiggleRPC/rpcMethods.d.ts +47 -0
  341. package/esm/WiggleRPC/rpcMethods.js +112 -0
  342. package/esm/WiggleRPC/rpcMethods.js.map +1 -0
  343. package/esm/WiggleRendering.d.ts +16 -0
  344. package/esm/WiggleRendering.js +36 -0
  345. package/esm/WiggleRendering.js.map +1 -0
  346. package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +7 -0
  347. package/esm/XYPlotRenderer/XYPlotRenderer.js +26 -0
  348. package/esm/XYPlotRenderer/XYPlotRenderer.js.map +1 -0
  349. package/esm/XYPlotRenderer/configSchema.d.ts +2 -0
  350. package/esm/XYPlotRenderer/configSchema.js +26 -0
  351. package/esm/XYPlotRenderer/configSchema.js.map +1 -0
  352. package/esm/XYPlotRenderer/index.d.ts +7 -0
  353. package/esm/XYPlotRenderer/index.js +13 -0
  354. package/esm/XYPlotRenderer/index.js.map +1 -0
  355. package/esm/configSchema.d.ts +2 -0
  356. package/esm/configSchema.js +41 -0
  357. package/esm/configSchema.js.map +1 -0
  358. package/esm/drawxy.d.ts +50 -0
  359. package/esm/drawxy.js +286 -0
  360. package/esm/drawxy.js.map +1 -0
  361. package/esm/index.d.ts +975 -0
  362. package/esm/index.js +90 -0
  363. package/esm/index.js.map +1 -0
  364. package/esm/util.d.ts +74 -0
  365. package/esm/util.js +231 -0
  366. package/esm/util.js.map +1 -0
  367. package/package.json +32 -18
  368. package/src/BigWigAdapter/BigWigAdapter.ts +53 -35
  369. package/src/BigWigAdapter/__snapshots__/BigWigAdapter.test.ts.snap +10 -10
  370. package/src/BigWigAdapter/configSchema.ts +5 -0
  371. package/src/BigWigAdapter/index.ts +19 -1
  372. package/src/CreateMultiWiggleExtension/ConfirmDialog.tsx +66 -0
  373. package/src/CreateMultiWiggleExtension/index.ts +57 -0
  374. package/src/DensityRenderer/DensityRenderer.test.js +8 -2
  375. package/src/DensityRenderer/DensityRenderer.ts +14 -0
  376. package/src/DensityRenderer/__snapshots__/DensityRenderer.test.js.snap +8 -0
  377. package/src/{LinePlotRenderer/index.js → DensityRenderer/configSchema.ts} +5 -5
  378. package/src/DensityRenderer/index.ts +14 -53
  379. package/src/LinePlotRenderer/LinePlotRenderer.ts +19 -0
  380. package/src/LinePlotRenderer/configSchema.ts +16 -0
  381. package/src/LinePlotRenderer/index.ts +16 -0
  382. package/src/LinearWiggleDisplay/components/SetColorDialog.tsx +26 -31
  383. package/src/LinearWiggleDisplay/components/SetMinMaxDialog.tsx +13 -11
  384. package/src/LinearWiggleDisplay/components/Tooltip.tsx +6 -121
  385. package/src/LinearWiggleDisplay/components/WiggleDisplayComponent.tsx +9 -4
  386. package/src/LinearWiggleDisplay/index.ts +24 -3
  387. package/src/LinearWiggleDisplay/models/model.tsx +139 -224
  388. package/src/MultiDensityRenderer/MultiDensityRenderer.ts +39 -0
  389. package/src/MultiDensityRenderer/configSchema.ts +10 -0
  390. package/src/MultiDensityRenderer/index.ts +16 -0
  391. package/src/MultiLineRenderer/MultiLineRenderer.ts +29 -0
  392. package/src/MultiLineRenderer/configSchema.ts +24 -0
  393. package/src/MultiLineRenderer/index.ts +17 -0
  394. package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +322 -0
  395. package/src/MultiLinearWiggleDisplay/components/SetMinMaxDialog.tsx +113 -0
  396. package/src/MultiLinearWiggleDisplay/components/Tooltip.tsx +76 -0
  397. package/src/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.tsx +261 -0
  398. package/src/MultiLinearWiggleDisplay/components/YScaleBar.tsx +25 -0
  399. package/src/MultiLinearWiggleDisplay/components/declare.d.ts +1 -0
  400. package/src/MultiLinearWiggleDisplay/components/util.test.ts +69 -0
  401. package/src/MultiLinearWiggleDisplay/components/util.ts +33 -0
  402. package/src/MultiLinearWiggleDisplay/index.ts +20 -0
  403. package/src/MultiLinearWiggleDisplay/models/configSchema.ts +94 -0
  404. package/src/MultiLinearWiggleDisplay/models/model.tsx +721 -0
  405. package/src/MultiQuantitativeTrack/index.ts +26 -0
  406. package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +36 -0
  407. package/src/MultiRowLineRenderer/configSchema.ts +25 -0
  408. package/src/MultiRowLineRenderer/index.ts +16 -0
  409. package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +43 -0
  410. package/src/MultiRowXYPlotRenderer/configSchema.ts +33 -0
  411. package/src/MultiRowXYPlotRenderer/index.ts +16 -0
  412. package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +120 -0
  413. package/src/MultiWiggleAdapter/configSchema.ts +16 -0
  414. package/src/MultiWiggleAdapter/index.ts +20 -0
  415. package/src/MultiWiggleAdapter/test_data/volvox.bw +0 -0
  416. package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +130 -0
  417. package/src/MultiWiggleAddTrackWidget/index.ts +17 -0
  418. package/src/MultiWiggleRendering.tsx +125 -0
  419. package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +32 -0
  420. package/src/MultiXYPlotRenderer/configSchema.ts +31 -0
  421. package/src/MultiXYPlotRenderer/index.ts +17 -0
  422. package/src/QuantitativeTrack/index.ts +26 -0
  423. package/src/Tooltip.tsx +123 -0
  424. package/src/WiggleBaseRenderer.tsx +17 -11
  425. package/src/WiggleRPC/rpcMethods.ts +68 -17
  426. package/src/WiggleRendering.tsx +12 -18
  427. package/src/XYPlotRenderer/XYPlotRenderer.test.js +3 -1
  428. package/src/XYPlotRenderer/XYPlotRenderer.ts +19 -124
  429. package/src/XYPlotRenderer/__snapshots__/XYPlotRenderer.test.js.snap +8 -0
  430. package/src/XYPlotRenderer/configSchema.ts +32 -0
  431. package/src/XYPlotRenderer/index.ts +16 -10
  432. package/src/__snapshots__/WiggleRendering.test.js.snap +0 -2
  433. package/src/configSchema.ts +0 -28
  434. package/src/declare.d.ts +0 -1
  435. package/src/drawxy.ts +387 -0
  436. package/src/index.ts +75 -129
  437. package/src/util.ts +174 -0
  438. package/dist/BigWigAdapter/BigWigAdapter.test.js +0 -157
  439. package/dist/DensityRenderer/DensityRenderer.test.js +0 -88
  440. package/dist/WiggleRendering.test.js +0 -52
  441. package/dist/XYPlotRenderer/XYPlotRenderer.test.js +0 -87
  442. package/dist/declare.d.js +0 -1
  443. package/dist/index.test.js +0 -24
  444. package/dist/util.test.js +0 -66
  445. package/src/LinePlotRenderer/LinePlotRenderer.js +0 -91
  446. package/src/LinePlotRenderer/configSchema.js +0 -68
@@ -0,0 +1,31 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+ import { types } from 'mobx-state-tree'
3
+ import ConfigSchema from '../configSchema'
4
+
5
+ const configSchema = ConfigurationSchema(
6
+ 'MultiXYPlotRenderer',
7
+ {
8
+ filled: {
9
+ type: 'boolean',
10
+ defaultValue: true,
11
+ },
12
+ displayCrossHatches: {
13
+ type: 'boolean',
14
+ description: 'choose to draw cross hatches (sideways lines)',
15
+ defaultValue: false,
16
+ },
17
+ summaryScoreMode: {
18
+ type: 'stringEnum',
19
+ model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),
20
+ description:
21
+ 'choose whether to use max/min/average or whiskers which combines all three into the same rendering',
22
+ defaultValue: 'avg',
23
+ },
24
+ minSize: {
25
+ type: 'number',
26
+ defaultValue: 0,
27
+ },
28
+ },
29
+ { baseConfiguration: ConfigSchema, explicitlyTyped: true },
30
+ )
31
+ export default configSchema
@@ -0,0 +1,17 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+
3
+ import ReactComponent from '../MultiWiggleRendering'
4
+ import MultiXYPlotRenderer from './MultiXYPlotRenderer'
5
+ import configSchema from './configSchema'
6
+
7
+ export default (pluginManager: PluginManager) => {
8
+ pluginManager.addRendererType(
9
+ () =>
10
+ new MultiXYPlotRenderer({
11
+ name: 'MultiXYPlotRenderer',
12
+ ReactComponent,
13
+ configSchema,
14
+ pluginManager,
15
+ }),
16
+ )
17
+ }
@@ -0,0 +1,26 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+ import {
3
+ createBaseTrackConfig,
4
+ createBaseTrackModel,
5
+ } from '@jbrowse/core/pluggableElementTypes/models'
6
+ import TrackType from '@jbrowse/core/pluggableElementTypes/TrackType'
7
+ import PluginManager from '@jbrowse/core/PluginManager'
8
+
9
+ export default (pluginManager: PluginManager) => {
10
+ pluginManager.addTrackType(() => {
11
+ const configSchema = ConfigurationSchema(
12
+ 'QuantitativeTrack',
13
+ {},
14
+ { baseConfiguration: createBaseTrackConfig(pluginManager) },
15
+ )
16
+ return new TrackType({
17
+ name: 'QuantitativeTrack',
18
+ configSchema,
19
+ stateModel: createBaseTrackModel(
20
+ pluginManager,
21
+ 'QuantitativeTrack',
22
+ configSchema,
23
+ ),
24
+ })
25
+ })
26
+ }
@@ -0,0 +1,123 @@
1
+ import React, { useMemo, useState } from 'react'
2
+ import { observer } from 'mobx-react'
3
+ import { alpha, Portal } from '@mui/material'
4
+ import { makeStyles } from 'tss-react/mui'
5
+ import { Feature } from '@jbrowse/core/util'
6
+
7
+ // locals
8
+ import { YSCALEBAR_LABEL_OFFSET, round } from './util'
9
+ import { usePopper } from 'react-popper'
10
+
11
+ const useStyles = makeStyles()(theme => ({
12
+ // these styles come from
13
+ // https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/Tooltip/Tooltip.js
14
+ tooltip: {
15
+ position: 'absolute',
16
+ pointerEvents: 'none',
17
+ backgroundColor: alpha(theme.palette.grey[700], 0.9),
18
+ borderRadius: theme.shape.borderRadius,
19
+ color: theme.palette.common.white,
20
+ fontFamily: theme.typography.fontFamily,
21
+ padding: '4px 8px',
22
+ fontSize: theme.typography.pxToRem(12),
23
+ lineHeight: `${round(14 / 10)}em`,
24
+ maxWidth: 300,
25
+ wordWrap: 'break-word',
26
+ },
27
+
28
+ hoverVertical: {
29
+ background: '#333',
30
+ border: 'none',
31
+ width: 1,
32
+ height: '100%',
33
+ top: YSCALEBAR_LABEL_OFFSET,
34
+ cursor: 'default',
35
+ position: 'absolute',
36
+ pointerEvents: 'none',
37
+ },
38
+ }))
39
+
40
+ type Coord = [number, number]
41
+
42
+ // React.forwardRef component for the tooltip, the ref is used for measuring
43
+ // the size of the tooltip
44
+ export type TooltipContentsComponent = React.ForwardRefExoticComponent<
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ { feature: Feature; model: any } & React.RefAttributes<HTMLDivElement>
47
+ >
48
+
49
+ function Tooltip({
50
+ model,
51
+ height,
52
+ clientMouseCoord,
53
+ offsetMouseCoord,
54
+ clientRect,
55
+ TooltipContents,
56
+ useClientY,
57
+ }: {
58
+ model: { featureUnderMouse: Feature }
59
+ useClientY?: boolean
60
+ height: number
61
+ clientMouseCoord: Coord
62
+ offsetMouseCoord: Coord
63
+ clientRect?: DOMRect
64
+ TooltipContents: TooltipContentsComponent
65
+ }) {
66
+ const { featureUnderMouse } = model
67
+ const [width, setWidth] = useState(0)
68
+ const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null)
69
+ const { classes } = useStyles()
70
+
71
+ // must be memoized a la https://github.com/popperjs/react-popper/issues/391
72
+ const virtElement = useMemo(
73
+ () => ({
74
+ getBoundingClientRect: () => {
75
+ const x = clientMouseCoord[0] + width / 2 + 20
76
+ const y = useClientY ? clientMouseCoord[1] : clientRect?.top || 0
77
+ return {
78
+ top: y,
79
+ left: x,
80
+ bottom: y,
81
+ right: x,
82
+ width: 0,
83
+ height: 0,
84
+ x,
85
+ y,
86
+ toJSON() {},
87
+ }
88
+ },
89
+ }),
90
+ [clientRect?.top, clientMouseCoord, width, useClientY],
91
+ )
92
+ const { styles, attributes } = usePopper(virtElement, anchorEl)
93
+
94
+ return featureUnderMouse ? (
95
+ <>
96
+ <Portal>
97
+ <div
98
+ ref={setAnchorEl}
99
+ className={classes.tooltip}
100
+ // zIndex needed to go over widget drawer
101
+ style={{ ...styles.popper, zIndex: 100000 }}
102
+ {...attributes.popper}
103
+ >
104
+ <TooltipContents
105
+ ref={elt => setWidth(elt?.getBoundingClientRect().width || 0)}
106
+ model={model}
107
+ feature={featureUnderMouse}
108
+ />
109
+ </div>
110
+ </Portal>
111
+
112
+ <div
113
+ className={classes.hoverVertical}
114
+ style={{
115
+ left: offsetMouseCoord[0],
116
+ height: height - YSCALEBAR_LABEL_OFFSET * 2,
117
+ }}
118
+ />
119
+ </>
120
+ ) : null
121
+ }
122
+
123
+ export default observer(Tooltip)
@@ -1,4 +1,3 @@
1
- import { Feature } from '@jbrowse/core/util/simpleFeature'
2
1
  import FeatureRendererType, {
3
2
  RenderArgs as FeatureRenderArgs,
4
3
  RenderArgsSerialized,
@@ -7,9 +6,9 @@ import FeatureRendererType, {
7
6
  ResultsSerialized,
8
7
  ResultsDeserialized,
9
8
  } from '@jbrowse/core/pluggableElementTypes/renderers/FeatureRendererType'
10
- import { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'
11
- import { ThemeOptions } from '@material-ui/core'
12
- import { ScaleOpts } from './util'
9
+ import { renderToAbstractCanvas, Feature } from '@jbrowse/core/util'
10
+ import { ThemeOptions } from '@mui/material'
11
+ import { ScaleOpts, Source } from './util'
13
12
 
14
13
  export interface RenderArgs extends FeatureRenderArgs {
15
14
  scaleOpts: ScaleOpts
@@ -22,7 +21,7 @@ export interface RenderArgsDeserialized extends FeatureRenderArgsDeserialized {
22
21
  scaleOpts: ScaleOpts
23
22
  displayCrossHatches: boolean
24
23
  ticks: { values: number[] }
25
- theme: ThemeOptions
24
+ themeOptions: ThemeOptions
26
25
  }
27
26
 
28
27
  export interface RenderArgsDeserializedWithFeatures
@@ -30,6 +29,11 @@ export interface RenderArgsDeserializedWithFeatures
30
29
  features: Map<string, Feature>
31
30
  }
32
31
 
32
+ export interface MultiRenderArgsDeserialized
33
+ extends RenderArgsDeserializedWithFeatures {
34
+ sources: Source[]
35
+ }
36
+
33
37
  export type {
34
38
  RenderArgsSerialized,
35
39
  RenderResults,
@@ -46,11 +50,12 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
46
50
  const [region] = regions
47
51
  const width = (region.end - region.start) / bpPerPx
48
52
 
49
- const res = await renderToAbstractCanvas(
53
+ // @ts-ignore
54
+ const { reducedFeatures, ...rest } = await renderToAbstractCanvas(
50
55
  width,
51
56
  height,
52
57
  renderProps,
53
- (ctx: CanvasRenderingContext2D) =>
58
+ ctx =>
54
59
  this.draw(ctx, {
55
60
  ...renderProps,
56
61
  features,
@@ -59,7 +64,7 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
59
64
 
60
65
  const results = await super.render({
61
66
  ...renderProps,
62
- ...res,
67
+ ...rest,
63
68
  features,
64
69
  height,
65
70
  width,
@@ -67,8 +72,9 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
67
72
 
68
73
  return {
69
74
  ...results,
70
- ...res,
71
- features,
75
+ ...rest,
76
+ // @ts-ignore
77
+ features: reducedFeatures || results.features,
72
78
  containsNoTransferables: true,
73
79
  height,
74
80
  width,
@@ -82,5 +88,5 @@ export default abstract class WiggleBaseRenderer extends FeatureRendererType {
82
88
  abstract draw<T extends RenderArgsDeserializedWithFeatures>(
83
89
  ctx: CanvasRenderingContext2D,
84
90
  props: T,
85
- ): void
91
+ ): Promise<Record<string, unknown> | void>
86
92
  }
@@ -1,11 +1,10 @@
1
- import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
2
1
  import RpcMethodType from '@jbrowse/core/pluggableElementTypes/RpcMethodType'
2
+ import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
3
+ import { getAdapter } from '@jbrowse/core/data_adapters/dataAdapterCache'
3
4
  import { RenderArgs } from '@jbrowse/core/rpc/coreRpcMethods'
4
- import { renameRegionsIfNeeded } from '@jbrowse/core/util'
5
- import { Region } from '@jbrowse/core/util/types'
5
+ import { renameRegionsIfNeeded, Region } from '@jbrowse/core/util'
6
6
  import { RemoteAbortSignal } from '@jbrowse/core/rpc/remoteAbortSignals'
7
7
  import { BaseFeatureDataAdapter } from '@jbrowse/core/data_adapters/BaseAdapter'
8
- import SerializableFilterChain from '@jbrowse/core/pluggableElementTypes/renderers/util/serializableFilterChain'
9
8
  import { FeatureStats } from '@jbrowse/core/util/stats'
10
9
 
11
10
  export class WiggleGetGlobalStats extends RpcMethodType {
@@ -33,16 +32,13 @@ export class WiggleGetGlobalStats extends RpcMethodType {
33
32
  },
34
33
  rpcDriverClassName: string,
35
34
  ): Promise<FeatureStats> {
35
+ const pm = this.pluginManager
36
36
  const deserializedArgs = await this.deserializeArguments(
37
37
  args,
38
38
  rpcDriverClassName,
39
39
  )
40
40
  const { adapterConfig, sessionId } = deserializedArgs
41
- const { dataAdapter } = await getAdapter(
42
- this.pluginManager,
43
- sessionId,
44
- adapterConfig,
45
- )
41
+ const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
46
42
 
47
43
  // @ts-ignore
48
44
  return dataAdapter.getGlobalStats(deserializedArgs)
@@ -69,15 +65,15 @@ export class WiggleGetMultiRegionStats extends RpcMethodType {
69
65
  args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },
70
66
  rpcDriverClassName: string,
71
67
  ) {
72
- const assemblyManager =
73
- this.pluginManager.rootModel?.session?.assemblyManager
68
+ const pm = this.pluginManager
69
+ const assemblyManager = pm.rootModel?.session?.assemblyManager
74
70
  if (!assemblyManager) {
75
71
  return args
76
72
  }
77
73
 
78
74
  const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
79
75
  ...args,
80
- filters: args.filters && args.filters.toJSON().filters,
76
+ filters: args.filters?.toJSON().filters,
81
77
  })
82
78
 
83
79
  return super.serializeArguments(renamedArgs, rpcDriverClassName)
@@ -94,16 +90,13 @@ export class WiggleGetMultiRegionStats extends RpcMethodType {
94
90
  },
95
91
  rpcDriverClassName: string,
96
92
  ) {
93
+ const pm = this.pluginManager
97
94
  const deserializedArgs = await this.deserializeArguments(
98
95
  args,
99
96
  rpcDriverClassName,
100
97
  )
101
98
  const { regions, adapterConfig, sessionId } = deserializedArgs
102
- const { dataAdapter } = await getAdapter(
103
- this.pluginManager,
104
- sessionId,
105
- adapterConfig,
106
- )
99
+ const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
107
100
 
108
101
  if (dataAdapter instanceof BaseFeatureDataAdapter) {
109
102
  return dataAdapter.getMultiRegionStats(regions, deserializedArgs)
@@ -111,3 +104,61 @@ export class WiggleGetMultiRegionStats extends RpcMethodType {
111
104
  throw new Error('Data adapter not found')
112
105
  }
113
106
  }
107
+
108
+ export class MultiWiggleGetSources extends RpcMethodType {
109
+ name = 'MultiWiggleGetSources'
110
+
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ async deserializeArguments(args: any, rpcDriverClassName: string) {
113
+ const l = await super.deserializeArguments(args, rpcDriverClassName)
114
+ return {
115
+ ...l,
116
+ filters: args.filters
117
+ ? new SerializableFilterChain({
118
+ filters: args.filters,
119
+ })
120
+ : undefined,
121
+ }
122
+ }
123
+
124
+ async serializeArguments(
125
+ args: RenderArgs & { signal?: AbortSignal; statusCallback?: Function },
126
+ rpcDriverClassName: string,
127
+ ) {
128
+ const pm = this.pluginManager
129
+ const assemblyManager = pm.rootModel?.session?.assemblyManager
130
+ if (!assemblyManager) {
131
+ return args
132
+ }
133
+
134
+ const renamedArgs = await renameRegionsIfNeeded(assemblyManager, {
135
+ ...args,
136
+ filters: args.filters?.toJSON().filters,
137
+ })
138
+
139
+ return super.serializeArguments(renamedArgs, rpcDriverClassName)
140
+ }
141
+
142
+ async execute(
143
+ args: {
144
+ adapterConfig: {}
145
+ signal?: RemoteAbortSignal
146
+ sessionId: string
147
+ headers?: Record<string, string>
148
+ regions: Region[]
149
+ bpPerPx: number
150
+ },
151
+ rpcDriverClassName: string,
152
+ ) {
153
+ const pm = this.pluginManager
154
+ const deserializedArgs = await this.deserializeArguments(
155
+ args,
156
+ rpcDriverClassName,
157
+ )
158
+ const { regions, adapterConfig, sessionId } = deserializedArgs
159
+ const { dataAdapter } = await getAdapter(pm, sessionId, adapterConfig)
160
+
161
+ // @ts-ignore
162
+ return dataAdapter.getSources(regions, deserializedArgs)
163
+ }
164
+ }
@@ -2,7 +2,7 @@ import { observer } from 'mobx-react'
2
2
  import React, { useRef } from 'react'
3
3
 
4
4
  import { Region } from '@jbrowse/core/util/types'
5
- import { Feature } from '@jbrowse/core/util/simpleFeature'
5
+ import { Feature } from '@jbrowse/core/util'
6
6
  import { PrerenderedCanvas } from '@jbrowse/core/ui'
7
7
 
8
8
  function WiggleRendering(props: {
@@ -40,7 +40,11 @@ function WiggleRendering(props: {
40
40
  const clientBp = region.start + bpPerPx * px
41
41
  let featureUnderMouse
42
42
  for (const feature of features.values()) {
43
- if (clientBp <= feature.get('end') && clientBp >= feature.get('start')) {
43
+ // bpPerPx added to the end to accomodate "reduced features" (one feature per px)
44
+ if (
45
+ clientBp <= feature.get('end') + bpPerPx &&
46
+ clientBp >= feature.get('start')
47
+ ) {
44
48
  featureUnderMouse = feature
45
49
  break
46
50
  }
@@ -51,23 +55,13 @@ function WiggleRendering(props: {
51
55
  <div
52
56
  ref={ref}
53
57
  data-testid="wiggle-rendering-test"
54
- onMouseMove={event => {
55
- const featureUnderMouse = getFeatureUnderMouse(event.clientX)
56
- onMouseMove(
57
- event,
58
- featureUnderMouse ? featureUnderMouse.id() : undefined,
59
- )
60
- }}
61
- onClick={event => {
62
- const featureUnderMouse = getFeatureUnderMouse(event.clientX)
63
- onFeatureClick(
64
- event,
65
- featureUnderMouse ? featureUnderMouse.id() : undefined,
66
- )
67
- }}
58
+ onMouseMove={event =>
59
+ onMouseMove(event, getFeatureUnderMouse(event.clientX)?.id())
60
+ }
61
+ onClick={event =>
62
+ onFeatureClick(event, getFeatureUnderMouse(event.clientX)?.id())
63
+ }
68
64
  onMouseLeave={event => onMouseLeave(event)}
69
- role="presentation"
70
- className="WiggleRendering"
71
65
  style={{
72
66
  overflow: 'visible',
73
67
  position: 'relative',
@@ -1,6 +1,8 @@
1
1
  import SimpleFeature from '@jbrowse/core/util/simpleFeature'
2
2
  import { renderToAbstractCanvas } from '@jbrowse/core/util/offscreenCanvasUtils'
3
- import XYPlotRenderer, { configSchema, ReactComponent } from '.'
3
+ import configSchema from './configSchema'
4
+ import XYPlotRenderer from './XYPlotRenderer'
5
+ import ReactComponent from '../WiggleRendering'
4
6
 
5
7
  import { Image, createCanvas } from 'canvas'
6
8
 
@@ -1,142 +1,37 @@
1
1
  import { readConfObject } from '@jbrowse/core/configuration'
2
- import { featureSpanPx } from '@jbrowse/core/util'
3
- import Color from 'color'
4
- import { Feature } from '@jbrowse/core/util/simpleFeature'
5
- import { getOrigin, getScale } from '../util'
2
+ import { Feature } from '@jbrowse/core/util'
3
+ import { drawXY } from '../drawxy'
6
4
  import WiggleBaseRenderer, {
7
5
  RenderArgsDeserializedWithFeatures,
8
6
  } from '../WiggleBaseRenderer'
9
- import { YSCALEBAR_LABEL_OFFSET } from '../LinearWiggleDisplay/models/model'
7
+ import { YSCALEBAR_LABEL_OFFSET } from '../util'
10
8
 
11
9
  export default class XYPlotRenderer extends WiggleBaseRenderer {
12
- draw(
10
+ async draw(
13
11
  ctx: CanvasRenderingContext2D,
14
12
  props: RenderArgsDeserializedWithFeatures,
15
13
  ) {
16
- const {
17
- features,
18
- bpPerPx,
19
- regions,
20
- scaleOpts,
21
- height: unadjustedHeight,
22
- config,
23
- ticks,
24
- displayCrossHatches,
25
- } = props
26
- const [region] = regions
27
- const width = (region.end - region.start) / bpPerPx
14
+ const { features, config } = props
28
15
 
29
16
  // the adjusted height takes into account YSCALEBAR_LABEL_OFFSET from the
30
17
  // wiggle display, and makes the height of the actual drawn area add
31
18
  // "padding" to the top and bottom of the display
32
- const offset = YSCALEBAR_LABEL_OFFSET
33
- const height = unadjustedHeight - offset * 2
34
-
35
19
  const pivotValue = readConfObject(config, 'bicolorPivotValue')
36
20
  const negColor = readConfObject(config, 'negColor')
37
21
  const posColor = readConfObject(config, 'posColor')
38
- const filled = readConfObject(config, 'filled')
39
- const clipColor = readConfObject(config, 'clipColor')
40
- const highlightColor = readConfObject(config, 'highlightColor')
41
- const summaryScoreMode = readConfObject(config, 'summaryScoreMode')
42
-
43
- const scale = getScale({ ...scaleOpts, range: [0, height] })
44
- const originY = getOrigin(scaleOpts.scaleType)
45
- const [niceMin, niceMax] = scale.domain()
46
-
47
- const toY = (n: number) => height - (scale(n) || 0) + offset
48
- const toHeight = (n: number) => toY(originY) - toY(n)
49
-
50
- const colorCallback =
51
- readConfObject(config, 'color') === '#f0f'
52
- ? (_: Feature, score: number) =>
53
- score < pivotValue ? negColor : posColor
54
- : (feature: Feature, _score: number) =>
55
- readConfObject(config, 'color', { feature })
56
-
57
- const crossingOrigin = niceMin < pivotValue && niceMax > pivotValue
58
- for (const feature of features.values()) {
59
- const [leftPx, rightPx] = featureSpanPx(feature, region, bpPerPx)
60
- let score = feature.get('score')
61
- const maxr = feature.get('maxScore')
62
- const minr = feature.get('minScore')
63
-
64
- const lowClipping = score < niceMin
65
- const highClipping = score > niceMax
66
- const w = rightPx - leftPx + 0.4 // fudge factor for subpixel rendering
67
-
68
- const summary = feature.get('summary')
69
-
70
- if (summaryScoreMode === 'max') {
71
- score = summary ? maxr : score
72
- ctx.fillStyle = colorCallback(feature, score)
73
- ctx.fillRect(leftPx, toY(score), w, filled ? toHeight(score) : 1)
74
- } else if (summaryScoreMode === 'min') {
75
- score = summary ? minr : score
76
- ctx.fillStyle = colorCallback(feature, score)
77
- ctx.fillRect(leftPx, toY(score), w, filled ? toHeight(score) : 1)
78
- } else if (summaryScoreMode === 'whiskers') {
79
- const c = colorCallback(feature, score)
80
- if (summary) {
81
- ctx.fillStyle = crossingOrigin
82
- ? colorCallback(feature, maxr)
83
- : Color(c).lighten(0.6).toString()
84
- ctx.fillRect(
85
- leftPx,
86
- toY(maxr),
87
- w,
88
- filled ? toHeight(maxr) - toHeight(score) : 1,
89
- )
90
- }
91
-
92
- // normal
93
- ctx.fillStyle =
94
- crossingOrigin && summary
95
- ? Color(colorCallback(feature, maxr)).mix(
96
- Color(colorCallback(feature, minr)),
97
- )
98
- : c
99
- ctx.fillRect(
100
- leftPx,
101
- toY(score),
102
- w,
103
- filled ? toHeight(score) - (summary ? toHeight(minr) : 0) : 1,
104
- )
105
-
106
- // min
107
- if (summary) {
108
- ctx.fillStyle = crossingOrigin
109
- ? colorCallback(feature, minr)
110
- : Color(c).darken(0.6).toString()
111
- ctx.fillRect(leftPx, toY(minr), w, filled ? toHeight(minr) : 1)
112
- }
113
- } else {
114
- ctx.fillStyle = colorCallback(feature, score)
115
- ctx.fillRect(leftPx, toY(score), w, filled ? toHeight(score) : 1)
116
- }
117
-
118
- if (highClipping) {
119
- ctx.fillStyle = clipColor
120
- ctx.fillRect(leftPx, 0, w, 4)
121
- } else if (lowClipping && scaleOpts.scaleType !== 'log') {
122
- ctx.fillStyle = clipColor
123
- ctx.fillRect(leftPx, unadjustedHeight - 4, w, 4)
124
- }
125
- if (feature.get('highlighted')) {
126
- ctx.fillStyle = highlightColor
127
- ctx.fillRect(leftPx, 0, w, height)
128
- }
129
- }
130
-
131
- if (displayCrossHatches) {
132
- ctx.lineWidth = 1
133
- ctx.strokeStyle = 'rgba(200,200,200,0.8)'
134
- ticks.values.forEach(tick => {
135
- ctx.beginPath()
136
- ctx.moveTo(0, Math.round(toY(tick)))
137
- ctx.lineTo(width, Math.round(toY(tick)))
138
- ctx.stroke()
139
- })
140
- }
22
+ const Color = await import('color').then(f => f.default)
23
+
24
+ return drawXY(ctx, {
25
+ ...props,
26
+ colorCallback:
27
+ readConfObject(config, 'color') === '#f0f'
28
+ ? (_: Feature, score: number) =>
29
+ score < pivotValue ? negColor : posColor
30
+ : (feature: Feature, _score: number) =>
31
+ readConfObject(config, 'color', { feature }),
32
+ offset: YSCALEBAR_LABEL_OFFSET,
33
+ features: [...features.values()],
34
+ Color,
35
+ })
141
36
  }
142
37
  }
@@ -3,5 +3,13 @@
3
3
  exports[`several features 1`] = `
4
4
  Object {
5
5
  "imageData": Any<Object>,
6
+ "reducedFeatures": Array [
7
+ Object {
8
+ "end": 200,
9
+ "score": 2,
10
+ "start": 101,
11
+ "uniqueId": "t2",
12
+ },
13
+ ],
6
14
  }
7
15
  `;
@@ -0,0 +1,32 @@
1
+ import { ConfigurationSchema } from '@jbrowse/core/configuration'
2
+ import ConfigSchema from '../configSchema'
3
+ import { types } from 'mobx-state-tree'
4
+
5
+ const configSchema = ConfigurationSchema(
6
+ 'XYPlotRenderer',
7
+ {
8
+ filled: {
9
+ type: 'boolean',
10
+ defaultValue: true,
11
+ },
12
+ displayCrossHatches: {
13
+ type: 'boolean',
14
+ description: 'choose to draw cross hatches (sideways lines)',
15
+ defaultValue: false,
16
+ },
17
+ summaryScoreMode: {
18
+ type: 'stringEnum',
19
+ model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),
20
+ description:
21
+ 'choose whether to use max/min/average or whiskers which combines all three into the same rendering',
22
+ defaultValue: 'whiskers',
23
+ },
24
+ minSize: {
25
+ type: 'number',
26
+ defaultValue: 0,
27
+ },
28
+ },
29
+ { baseConfiguration: ConfigSchema, explicitlyTyped: true },
30
+ )
31
+
32
+ export default configSchema