@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,24 @@
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
+ 'MultiLineRenderer',
7
+ {
8
+ displayCrossHatches: {
9
+ type: 'boolean',
10
+ description: 'choose to draw cross hatches (sideways lines)',
11
+ defaultValue: false,
12
+ },
13
+
14
+ summaryScoreMode: {
15
+ type: 'stringEnum',
16
+ model: types.enumeration('Score type', ['max', 'min', 'avg', 'whiskers']),
17
+ description:
18
+ 'choose whether to use max/min/average or whiskers which combines all three into the same rendering',
19
+ defaultValue: 'avg',
20
+ },
21
+ },
22
+ { baseConfiguration: ConfigSchema, explicitlyTyped: true },
23
+ )
24
+ export default configSchema
@@ -0,0 +1,17 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager'
2
+
3
+ import ReactComponent from '../MultiWiggleRendering'
4
+ import MultiLineRenderer from './MultiLineRenderer'
5
+ import configSchema from './configSchema'
6
+
7
+ export default (pluginManager: PluginManager) => {
8
+ pluginManager.addRendererType(
9
+ () =>
10
+ new MultiLineRenderer({
11
+ name: 'MultiLineRenderer',
12
+ ReactComponent,
13
+ configSchema,
14
+ pluginManager,
15
+ }),
16
+ )
17
+ }
@@ -0,0 +1,322 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ Button,
4
+ Dialog,
5
+ DialogContent,
6
+ DialogActions,
7
+ DialogTitle,
8
+ IconButton,
9
+ Paper,
10
+ PaperProps,
11
+ } from '@mui/material'
12
+ import { makeStyles } from 'tss-react/mui'
13
+ import {
14
+ getStr,
15
+ isUriLocation,
16
+ measureGridWidth,
17
+ useLocalStorage,
18
+ } from '@jbrowse/core/util'
19
+ import { DataGrid, GridCellParams } from '@mui/x-data-grid'
20
+ import Draggable from 'react-draggable'
21
+ import clone from 'clone'
22
+
23
+ // locals
24
+ import ColorPicker, { ColorPopover } from '@jbrowse/core/ui/ColorPicker'
25
+ import { UriLink } from '@jbrowse/core/BaseFeatureWidget/BaseFeatureDetail'
26
+ import { moveUp, moveDown } from './util'
27
+ import { Source } from '../../util'
28
+
29
+ // icons
30
+ import CloseIcon from '@mui/icons-material/Close'
31
+ import KeyboardDoubleArrowUpIcon from '@mui/icons-material/KeyboardDoubleArrowUp'
32
+ import KeyboardDoubleArrowDownIcon from '@mui/icons-material/KeyboardDoubleArrowDown'
33
+ import KeyboardArrowDownIcon from '@mui/icons-material/KeyboardArrowDown'
34
+ import KeyboardArrowUpIcon from '@mui/icons-material/KeyboardArrowUp'
35
+
36
+ const useStyles = makeStyles()(theme => ({
37
+ closeButton: {
38
+ position: 'absolute',
39
+ right: theme.spacing(1),
40
+ top: theme.spacing(1),
41
+ color: theme.palette.grey[500],
42
+ },
43
+ content: {
44
+ minWidth: 800,
45
+ },
46
+ }))
47
+
48
+ // draggable dialog demo https://mui.com/material-ui/react-dialog/#draggable-dialog
49
+ function PaperComponent(props: PaperProps) {
50
+ return (
51
+ <Draggable
52
+ handle="#draggable-dialog-title"
53
+ cancel={'[class*="MuiDialogContent-root"]'}
54
+ >
55
+ <Paper {...props} />
56
+ </Draggable>
57
+ )
58
+ }
59
+ export default function SetColorDialog({
60
+ model,
61
+ handleClose,
62
+ }: {
63
+ model: {
64
+ sources: Source[]
65
+ setLayout: (s: Source[]) => void
66
+ clearLayout: () => void
67
+ }
68
+ handleClose: () => void
69
+ }) {
70
+ const { classes } = useStyles()
71
+ const { sources } = model
72
+ const [currLayout, setCurrLayout] = useState(clone(sources || []))
73
+ const [showTipsTmp, setShowTips] = useLocalStorage(
74
+ 'multiwiggle-showTips',
75
+ 'true',
76
+ )
77
+ const showTips = showTipsTmp === 'true'
78
+ return (
79
+ <Dialog
80
+ PaperComponent={PaperComponent}
81
+ open
82
+ onClose={handleClose}
83
+ maxWidth="xl"
84
+ aria-labelledby="draggable-dialog-title" // this area is important for the draggable functionality
85
+ >
86
+ <DialogTitle style={{ cursor: 'move' }} id="draggable-dialog-title">
87
+ Multi-wiggle color/arrangement editor{' '}
88
+ <IconButton className={classes.closeButton} onClick={handleClose}>
89
+ <CloseIcon />
90
+ </IconButton>
91
+ </DialogTitle>
92
+ <DialogContent className={classes.content}>
93
+ <Button
94
+ variant="contained"
95
+ style={{ float: 'right' }}
96
+ onClick={() => setShowTips(showTips ? 'false' : 'true')}
97
+ >
98
+ {showTips ? 'Hide tips' : 'Show tips'}
99
+ </Button>
100
+ <br />
101
+ {showTips ? (
102
+ <>
103
+ Helpful tips
104
+ <ul>
105
+ <li>You can select rows in the table with the checkboxes</li>
106
+ <li>
107
+ Multi-select is enabled with shift-click and control-click
108
+ </li>
109
+ <li>
110
+ The "Move selected items up/down" can re-arrange subtracks
111
+ </li>
112
+ <li>
113
+ Sorting the data grid itself can also re-arrange subtracks
114
+ </li>
115
+ <li>Changes are applied when you hit Submit</li>
116
+ <li>
117
+ You can click and drag the dialog box to move it on the screen
118
+ </li>
119
+ <li>
120
+ Columns in the table can be hidden using a vertical '...' menu
121
+ on the right side of each column
122
+ </li>
123
+ </ul>
124
+ </>
125
+ ) : null}
126
+ <SourcesGrid
127
+ rows={currLayout}
128
+ onChange={setCurrLayout}
129
+ showTips={showTips}
130
+ />
131
+ </DialogContent>
132
+ <DialogActions>
133
+ <Button
134
+ variant="contained"
135
+ type="submit"
136
+ color="inherit"
137
+ onClick={() => {
138
+ model.clearLayout()
139
+ setCurrLayout(model.sources)
140
+ }}
141
+ >
142
+ Clear custom settings
143
+ </Button>
144
+ <Button
145
+ variant="contained"
146
+ color="secondary"
147
+ onClick={() => {
148
+ handleClose()
149
+ setCurrLayout([...model.sources])
150
+ }}
151
+ >
152
+ Cancel
153
+ </Button>
154
+ <Button
155
+ variant="contained"
156
+ color="primary"
157
+ type="submit"
158
+ onClick={() => {
159
+ model.setLayout(currLayout)
160
+ handleClose()
161
+ }}
162
+ >
163
+ Submit
164
+ </Button>
165
+ </DialogActions>
166
+ </Dialog>
167
+ )
168
+ }
169
+
170
+ function SourcesGrid({
171
+ rows,
172
+ onChange,
173
+ showTips,
174
+ }: {
175
+ rows: Source[]
176
+ onChange: (arg: Source[]) => void
177
+ showTips: boolean
178
+ }) {
179
+ const [anchorEl, setAnchorEl] = useState<HTMLElement | null>(null)
180
+ const [selected, setSelected] = useState([] as string[])
181
+
182
+ // @ts-ignore
183
+ const { name: _name, color: _color, baseUri: _baseUri, ...rest } = rows[0]
184
+
185
+ // similar to BaseFeatureDetail data-grid for auto-measuring columns
186
+ const columns = [
187
+ {
188
+ field: 'color',
189
+ headerName: 'Color',
190
+ renderCell: (params: GridCellParams) => {
191
+ const { value, id } = params
192
+ return (
193
+ <ColorPicker
194
+ color={value || 'blue'}
195
+ onChange={c => {
196
+ const elt = rows.find(f => f.name === id)
197
+ if (elt) {
198
+ elt.color = c
199
+ }
200
+ onChange([...rows])
201
+ }}
202
+ />
203
+ )
204
+ },
205
+ },
206
+ {
207
+ field: 'name',
208
+ sortingOrder: [null],
209
+ headerName: 'Name',
210
+ width: measureGridWidth(rows.map(r => r.name)),
211
+ },
212
+ ...Object.keys(rest).map(val => ({
213
+ field: val,
214
+ sortingOrder: [null],
215
+ renderCell: (params: GridCellParams) => {
216
+ const { value } = params
217
+ return isUriLocation(value) ? <UriLink value={value} /> : getStr(value)
218
+ },
219
+ // @ts-ignore
220
+ width: measureGridWidth(rows.map(r => r[val])),
221
+ })),
222
+ ]
223
+
224
+ // this helps keep track of the selection, even though it is not used
225
+ // anywhere except inside the picker
226
+ const [widgetColor, setWidgetColor] = useState('blue')
227
+ const [currSort, setCurrSort] = useState<{
228
+ idx: number
229
+ field: string | null
230
+ }>({ idx: 0, field: null })
231
+
232
+ return (
233
+ <div>
234
+ <Button
235
+ disabled={!selected.length}
236
+ onClick={event => setAnchorEl(event.currentTarget)}
237
+ >
238
+ Change color of selected items
239
+ </Button>
240
+ <Button
241
+ onClick={() => onChange(moveUp([...rows], selected))}
242
+ disabled={!selected.length}
243
+ >
244
+ <KeyboardArrowUpIcon />
245
+ {showTips ? 'Move selected items up' : null}
246
+ </Button>
247
+ <Button
248
+ onClick={() => onChange(moveDown([...rows], selected))}
249
+ disabled={!selected.length}
250
+ >
251
+ <KeyboardArrowDownIcon />
252
+ {showTips ? 'Move selected items down' : null}
253
+ </Button>
254
+ <Button
255
+ onClick={() => onChange(moveUp([...rows], selected, rows.length))}
256
+ disabled={!selected.length}
257
+ >
258
+ <KeyboardDoubleArrowUpIcon />
259
+ {showTips ? 'Move selected items to top' : null}
260
+ </Button>
261
+ <Button
262
+ onClick={() => onChange(moveDown([...rows], selected, rows.length))}
263
+ disabled={!selected.length}
264
+ >
265
+ <KeyboardDoubleArrowDownIcon />
266
+ {showTips ? 'Move selected items to bottom' : null}
267
+ </Button>
268
+ <ColorPopover
269
+ anchorEl={anchorEl}
270
+ color={widgetColor}
271
+ onChange={c => {
272
+ setWidgetColor(c)
273
+ selected.forEach(id => {
274
+ const elt = rows.find(f => f.name === id)
275
+ if (elt) {
276
+ elt.color = c
277
+ }
278
+ })
279
+
280
+ onChange([...rows])
281
+ }}
282
+ onClose={() => setAnchorEl(null)}
283
+ />
284
+ <div style={{ height: 400, width: '100%' }}>
285
+ <DataGrid
286
+ getRowId={row => row.name}
287
+ checkboxSelection
288
+ disableSelectionOnClick
289
+ onSelectionModelChange={arg => setSelected(arg as string[])}
290
+ rows={rows}
291
+ rowHeight={25}
292
+ headerHeight={33}
293
+ columns={columns}
294
+ sortModel={
295
+ [
296
+ /* we control the sort as a controlled component using onSortModelChange */
297
+ ]
298
+ }
299
+ onSortModelChange={args => {
300
+ const sort = args[0]
301
+ const idx = (currSort.idx + 1) % 2
302
+ const field = sort?.field || currSort.field
303
+ setCurrSort({ idx, field })
304
+ onChange(
305
+ field
306
+ ? [...rows].sort((a, b) => {
307
+ // @ts-ignore
308
+ const aa = getStr(a[field])
309
+ // @ts-ignore
310
+ const bb = getStr(b[field])
311
+ return idx === 1
312
+ ? aa.localeCompare(bb)
313
+ : bb.localeCompare(aa)
314
+ })
315
+ : rows,
316
+ )
317
+ }}
318
+ />
319
+ </div>
320
+ </div>
321
+ )
322
+ }
@@ -0,0 +1,113 @@
1
+ import React, { useState } from 'react'
2
+ import {
3
+ Button,
4
+ Dialog,
5
+ DialogContent,
6
+ DialogTitle,
7
+ IconButton,
8
+ TextField,
9
+ Typography,
10
+ } from '@mui/material'
11
+ import { makeStyles } from 'tss-react/mui'
12
+ import CloseIcon from '@mui/icons-material/Close'
13
+
14
+ const useStyles = makeStyles()(theme => ({
15
+ root: {},
16
+ closeButton: {
17
+ position: 'absolute',
18
+ right: theme.spacing(1),
19
+ top: theme.spacing(1),
20
+ color: theme.palette.grey[500],
21
+ },
22
+ }))
23
+
24
+ export default function SetMinMaxDlg(props: {
25
+ model: {
26
+ minScore: number
27
+ maxScore: number
28
+ scaleType: string
29
+ setMinScore: Function
30
+ setMaxScore: Function
31
+ }
32
+ handleClose: () => void
33
+ }) {
34
+ const { classes } = useStyles()
35
+ const { model, handleClose } = props
36
+ const { minScore, maxScore, scaleType } = model
37
+
38
+ const [min, setMin] = useState(
39
+ `${minScore !== Number.MIN_VALUE ? minScore : ''}`,
40
+ )
41
+ const [max, setMax] = useState(
42
+ `${maxScore !== Number.MAX_VALUE ? maxScore : ''}`,
43
+ )
44
+
45
+ const ok =
46
+ min !== '' && max !== '' && !Number.isNaN(+min) && !Number.isNaN(+max)
47
+ ? +max > +min
48
+ : true
49
+
50
+ const logOk =
51
+ scaleType === 'log' && min !== '' && !Number.isNaN(+min) ? +min > 0 : true
52
+
53
+ return (
54
+ <Dialog open onClose={handleClose}>
55
+ <DialogTitle>
56
+ Set min/max score for track
57
+ <IconButton className={classes.closeButton} onClick={handleClose}>
58
+ <CloseIcon />
59
+ </IconButton>
60
+ </DialogTitle>
61
+ <DialogContent style={{ overflowX: 'hidden' }}>
62
+ <div className={classes.root}>
63
+ <Typography>Enter min/max score: </Typography>
64
+ {!ok ? (
65
+ <Typography color="error">
66
+ Max is greater than or equal to min
67
+ </Typography>
68
+ ) : null}
69
+
70
+ {!logOk ? (
71
+ <Typography color="error">
72
+ Min score should be greater than 0 for log scale
73
+ </Typography>
74
+ ) : null}
75
+
76
+ <TextField
77
+ value={min}
78
+ onChange={event => {
79
+ setMin(event.target.value)
80
+ }}
81
+ placeholder="Enter min score"
82
+ />
83
+ <TextField
84
+ value={max}
85
+ onChange={event => {
86
+ setMax(event.target.value)
87
+ }}
88
+ placeholder="Enter max score"
89
+ />
90
+
91
+ <Button
92
+ variant="contained"
93
+ color="primary"
94
+ type="submit"
95
+ style={{ marginLeft: 20 }}
96
+ disabled={!ok}
97
+ onClick={() => {
98
+ model.setMinScore(
99
+ min !== '' && !Number.isNaN(+min) ? +min : undefined,
100
+ )
101
+ model.setMaxScore(
102
+ max !== '' && !Number.isNaN(+max) ? +max : undefined,
103
+ )
104
+ handleClose()
105
+ }}
106
+ >
107
+ Submit
108
+ </Button>
109
+ </div>
110
+ </DialogContent>
111
+ </Dialog>
112
+ )
113
+ }
@@ -0,0 +1,76 @@
1
+ import React from 'react'
2
+ import { observer } from 'mobx-react'
3
+ import { Feature } from '@jbrowse/core/util'
4
+
5
+ // locals
6
+ import { Source, toP } from '../../util'
7
+ import Tooltip, { TooltipContentsComponent } from '../../Tooltip'
8
+
9
+ const en = (n: number) => n.toLocaleString('en-US')
10
+
11
+ const TooltipContents = React.forwardRef<
12
+ HTMLDivElement,
13
+ { model: { sources: Source[] }; feature: Feature }
14
+ >(({ model, feature }, ref) => {
15
+ const start = feature.get('start')
16
+ const end = feature.get('end')
17
+ const refName = feature.get('refName')
18
+ const coord = start === end ? en(start) : `${en(start)}..${en(end)}`
19
+ const sources = feature.get('sources') as Record<string, { score: number }>
20
+ const source = feature.get('source')
21
+ const summary = feature.get('summary')
22
+ const obj = Object.fromEntries(model.sources.map(ent => [ent.name, ent]))
23
+
24
+ return (
25
+ <div ref={ref}>
26
+ {[refName, coord].filter(f => !!f).join(':')}
27
+ <br />
28
+ {sources ? (
29
+ <table>
30
+ <thead>
31
+ <tr>
32
+ <th>color</th>
33
+ <th>source</th>
34
+ <th>score</th>
35
+ </tr>
36
+ </thead>
37
+ <tbody>
38
+ {Object.entries(sources).map(([source, data]) => (
39
+ <tr key={source}>
40
+ <td style={{ background: obj[source]?.color }}> </td>
41
+ <td>{source}</td>
42
+ <td>{toP(data.score)}</td>
43
+ </tr>
44
+ ))}
45
+ </tbody>
46
+ </table>
47
+ ) : (
48
+ <span>
49
+ {source}{' '}
50
+ {summary
51
+ ? `min:${toP(feature.get('minScore'))} avg:${toP(
52
+ feature.get('score'),
53
+ )} max:${toP(feature.get('maxScore'))}`
54
+ : toP(feature.get('score'))}
55
+ </span>
56
+ )}
57
+ </div>
58
+ )
59
+ })
60
+
61
+ type Coord = [number, number]
62
+
63
+ const WiggleTooltip = observer(
64
+ (props: {
65
+ model: { featureUnderMouse: Feature; sources: Source[]; rowHeight: number }
66
+ height: number
67
+ offsetMouseCoord: Coord
68
+ clientMouseCoord: Coord
69
+ clientRect?: DOMRect
70
+ TooltipContents?: TooltipContentsComponent
71
+ }) => {
72
+ return <Tooltip useClientY TooltipContents={TooltipContents} {...props} />
73
+ },
74
+ )
75
+ export default WiggleTooltip
76
+ export { Tooltip }