@jbrowse/plugin-wiggle 2.0.1 → 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 (414) hide show
  1. package/dist/BigWigAdapter/BigWigAdapter.d.ts +8 -7
  2. package/dist/BigWigAdapter/BigWigAdapter.js +59 -29
  3. package/dist/BigWigAdapter/BigWigAdapter.js.map +1 -1
  4. package/dist/BigWigAdapter/configSchema.js +5 -0
  5. package/dist/BigWigAdapter/configSchema.js.map +1 -1
  6. package/dist/BigWigAdapter/index.d.ts +3 -1
  7. package/dist/BigWigAdapter/index.js +39 -3
  8. package/dist/BigWigAdapter/index.js.map +1 -1
  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 +12 -149
  23. package/dist/DensityRenderer/index.js.map +1 -1
  24. package/dist/LinePlotRenderer/LinePlotRenderer.d.ts +4 -2
  25. package/dist/LinePlotRenderer/LinePlotRenderer.js +4 -103
  26. package/dist/LinePlotRenderer/LinePlotRenderer.js.map +1 -1
  27. package/dist/LinePlotRenderer/configSchema.d.ts +2 -0
  28. package/dist/LinePlotRenderer/configSchema.js +16 -0
  29. package/dist/LinePlotRenderer/configSchema.js.map +1 -0
  30. package/dist/LinePlotRenderer/index.d.ts +3 -3
  31. package/dist/LinePlotRenderer/index.js +13 -14
  32. package/dist/LinePlotRenderer/index.js.map +1 -1
  33. package/dist/LinearWiggleDisplay/components/SetColorDialog.d.ts +6 -2
  34. package/dist/LinearWiggleDisplay/components/SetColorDialog.js +8 -16
  35. package/dist/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
  36. package/dist/LinearWiggleDisplay/components/Tooltip.d.ts +6 -11
  37. package/dist/LinearWiggleDisplay/components/Tooltip.js +11 -122
  38. package/dist/LinearWiggleDisplay/components/Tooltip.js.map +1 -1
  39. package/dist/LinearWiggleDisplay/index.d.ts +7 -3
  40. package/dist/LinearWiggleDisplay/index.js +23 -8
  41. package/dist/LinearWiggleDisplay/index.js.map +1 -1
  42. package/dist/LinearWiggleDisplay/models/model.d.ts +24 -5
  43. package/dist/LinearWiggleDisplay/models/model.js +79 -126
  44. package/dist/LinearWiggleDisplay/models/model.js.map +1 -1
  45. package/dist/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  46. package/dist/MultiDensityRenderer/MultiDensityRenderer.js +135 -0
  47. package/dist/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  48. package/dist/MultiDensityRenderer/configSchema.d.ts +2 -0
  49. package/dist/MultiDensityRenderer/configSchema.js +10 -0
  50. package/dist/MultiDensityRenderer/configSchema.js.map +1 -0
  51. package/dist/MultiDensityRenderer/index.d.ts +3 -0
  52. package/dist/MultiDensityRenderer/index.js +19 -0
  53. package/dist/MultiDensityRenderer/index.js.map +1 -0
  54. package/dist/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  55. package/dist/MultiLineRenderer/MultiLineRenderer.js +124 -0
  56. package/dist/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  57. package/dist/MultiLineRenderer/configSchema.d.ts +2 -0
  58. package/dist/MultiLineRenderer/configSchema.js +23 -0
  59. package/dist/MultiLineRenderer/configSchema.js.map +1 -0
  60. package/dist/MultiLineRenderer/index.d.ts +3 -0
  61. package/dist/MultiLineRenderer/index.js +19 -0
  62. package/dist/MultiLineRenderer/index.js.map +1 -0
  63. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  64. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js +239 -0
  65. package/dist/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  66. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  67. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +91 -0
  68. package/dist/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  69. package/dist/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  70. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js +78 -0
  71. package/dist/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  72. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  73. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +144 -0
  74. package/dist/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  75. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  76. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js +26 -0
  77. package/dist/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  78. package/dist/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  79. package/dist/MultiLinearWiggleDisplay/components/util.js +38 -0
  80. package/dist/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  81. package/dist/MultiLinearWiggleDisplay/index.d.ts +3 -0
  82. package/dist/MultiLinearWiggleDisplay/index.js +23 -0
  83. package/dist/MultiLinearWiggleDisplay/index.js.map +1 -0
  84. package/dist/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  85. package/dist/MultiLinearWiggleDisplay/models/configSchema.js +77 -0
  86. package/dist/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  87. package/dist/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  88. package/dist/MultiLinearWiggleDisplay/models/model.js +675 -0
  89. package/dist/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  90. package/dist/MultiQuantitativeTrack/index.d.ts +3 -0
  91. package/dist/MultiQuantitativeTrack/index.js +19 -0
  92. package/dist/MultiQuantitativeTrack/index.js.map +1 -0
  93. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  94. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js +131 -0
  95. package/dist/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  96. package/dist/MultiRowLineRenderer/configSchema.d.ts +2 -0
  97. package/dist/MultiRowLineRenderer/configSchema.js +23 -0
  98. package/dist/MultiRowLineRenderer/configSchema.js.map +1 -0
  99. package/dist/MultiRowLineRenderer/index.d.ts +3 -0
  100. package/dist/MultiRowLineRenderer/index.js +19 -0
  101. package/dist/MultiRowLineRenderer/index.js.map +1 -0
  102. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  103. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +164 -0
  104. package/dist/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  105. package/dist/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  106. package/dist/MultiRowXYPlotRenderer/configSchema.js +31 -0
  107. package/dist/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  108. package/dist/MultiRowXYPlotRenderer/index.d.ts +3 -0
  109. package/dist/MultiRowXYPlotRenderer/index.js +19 -0
  110. package/dist/MultiRowXYPlotRenderer/index.js.map +1 -0
  111. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  112. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js +244 -0
  113. package/dist/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  114. package/dist/MultiWiggleAdapter/configSchema.d.ts +2 -0
  115. package/dist/MultiWiggleAdapter/configSchema.js +14 -0
  116. package/dist/MultiWiggleAdapter/configSchema.js.map +1 -0
  117. package/dist/MultiWiggleAdapter/index.d.ts +3 -0
  118. package/dist/MultiWiggleAdapter/index.js +47 -0
  119. package/dist/MultiWiggleAdapter/index.js.map +1 -0
  120. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  121. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +139 -0
  122. package/dist/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  123. package/dist/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  124. package/dist/MultiWiggleAddTrackWidget/index.js +19 -0
  125. package/dist/MultiWiggleAddTrackWidget/index.js.map +1 -0
  126. package/dist/MultiWiggleRendering.d.ts +21 -0
  127. package/dist/MultiWiggleRendering.js +164 -0
  128. package/dist/MultiWiggleRendering.js.map +1 -0
  129. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  130. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js +153 -0
  131. package/dist/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  132. package/dist/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  133. package/dist/MultiXYPlotRenderer/configSchema.js +31 -0
  134. package/dist/MultiXYPlotRenderer/configSchema.js.map +1 -0
  135. package/dist/MultiXYPlotRenderer/index.d.ts +3 -0
  136. package/dist/MultiXYPlotRenderer/index.js +19 -0
  137. package/dist/MultiXYPlotRenderer/index.js.map +1 -0
  138. package/dist/QuantitativeTrack/index.d.ts +3 -0
  139. package/dist/QuantitativeTrack/index.js +19 -0
  140. package/dist/QuantitativeTrack/index.js.map +1 -0
  141. package/dist/Tooltip.d.ts +20 -0
  142. package/dist/Tooltip.js +124 -0
  143. package/dist/Tooltip.js.map +1 -0
  144. package/dist/WiggleBaseRenderer.d.ts +9 -10
  145. package/dist/WiggleBaseRenderer.js +23 -10
  146. package/dist/WiggleBaseRenderer.js.map +1 -1
  147. package/dist/WiggleRPC/rpcMethods.d.ts +17 -1
  148. package/dist/WiggleRPC/rpcMethods.js +91 -16
  149. package/dist/WiggleRPC/rpcMethods.js.map +1 -1
  150. package/dist/WiggleRendering.d.ts +1 -1
  151. package/dist/WiggleRendering.js +4 -8
  152. package/dist/WiggleRendering.js.map +1 -1
  153. package/dist/XYPlotRenderer/XYPlotRenderer.d.ts +4 -1
  154. package/dist/XYPlotRenderer/XYPlotRenderer.js +23 -126
  155. package/dist/XYPlotRenderer/XYPlotRenderer.js.map +1 -1
  156. package/dist/XYPlotRenderer/configSchema.d.ts +2 -0
  157. package/dist/XYPlotRenderer/configSchema.js +31 -0
  158. package/dist/XYPlotRenderer/configSchema.js.map +1 -0
  159. package/dist/XYPlotRenderer/index.d.ts +7 -3
  160. package/dist/XYPlotRenderer/index.js +17 -25
  161. package/dist/XYPlotRenderer/index.js.map +1 -1
  162. package/dist/configSchema.js +0 -5
  163. package/dist/configSchema.js.map +1 -1
  164. package/dist/drawxy.d.ts +50 -0
  165. package/dist/drawxy.js +411 -0
  166. package/dist/drawxy.js.map +1 -0
  167. package/dist/index.d.ts +79 -21
  168. package/dist/index.js +56 -89
  169. package/dist/index.js.map +1 -1
  170. package/dist/util.d.ts +34 -1
  171. package/dist/util.js +159 -1
  172. package/dist/util.js.map +1 -1
  173. package/esm/BigWigAdapter/BigWigAdapter.d.ts +8 -7
  174. package/esm/BigWigAdapter/BigWigAdapter.js +37 -18
  175. package/esm/BigWigAdapter/BigWigAdapter.js.map +1 -1
  176. package/esm/BigWigAdapter/configSchema.js +5 -0
  177. package/esm/BigWigAdapter/configSchema.js.map +1 -1
  178. package/esm/BigWigAdapter/index.d.ts +3 -1
  179. package/esm/BigWigAdapter/index.js +14 -1
  180. package/esm/BigWigAdapter/index.js.map +1 -1
  181. package/esm/CreateMultiWiggleExtension/ConfirmDialog.d.ts +9 -0
  182. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js +26 -0
  183. package/esm/CreateMultiWiggleExtension/ConfirmDialog.js.map +1 -0
  184. package/esm/CreateMultiWiggleExtension/index.d.ts +2 -0
  185. package/esm/CreateMultiWiggleExtension/index.js +51 -0
  186. package/esm/CreateMultiWiggleExtension/index.js.map +1 -0
  187. package/esm/DensityRenderer/DensityRenderer.d.ts +6 -0
  188. package/esm/DensityRenderer/DensityRenderer.js +8 -0
  189. package/esm/DensityRenderer/DensityRenderer.js.map +1 -0
  190. package/esm/DensityRenderer/configSchema.d.ts +2 -0
  191. package/esm/DensityRenderer/configSchema.js +5 -0
  192. package/esm/DensityRenderer/configSchema.js.map +1 -0
  193. package/esm/DensityRenderer/index.d.ts +3 -6
  194. package/esm/DensityRenderer/index.js +11 -38
  195. package/esm/DensityRenderer/index.js.map +1 -1
  196. package/esm/LinePlotRenderer/LinePlotRenderer.d.ts +4 -2
  197. package/esm/LinePlotRenderer/LinePlotRenderer.js +7 -65
  198. package/esm/LinePlotRenderer/LinePlotRenderer.js.map +1 -1
  199. package/esm/LinePlotRenderer/configSchema.d.ts +2 -0
  200. package/esm/LinePlotRenderer/configSchema.js +11 -0
  201. package/esm/LinePlotRenderer/configSchema.js.map +1 -0
  202. package/esm/LinePlotRenderer/index.d.ts +3 -3
  203. package/esm/LinePlotRenderer/index.js +11 -11
  204. package/esm/LinePlotRenderer/index.js.map +1 -1
  205. package/esm/LinearWiggleDisplay/components/SetColorDialog.d.ts +6 -2
  206. package/esm/LinearWiggleDisplay/components/SetColorDialog.js +9 -16
  207. package/esm/LinearWiggleDisplay/components/SetColorDialog.js.map +1 -1
  208. package/esm/LinearWiggleDisplay/components/Tooltip.d.ts +6 -11
  209. package/esm/LinearWiggleDisplay/components/Tooltip.js +3 -76
  210. package/esm/LinearWiggleDisplay/components/Tooltip.js.map +1 -1
  211. package/esm/LinearWiggleDisplay/index.d.ts +7 -3
  212. package/esm/LinearWiggleDisplay/index.js +20 -3
  213. package/esm/LinearWiggleDisplay/index.js.map +1 -1
  214. package/esm/LinearWiggleDisplay/models/model.d.ts +24 -5
  215. package/esm/LinearWiggleDisplay/models/model.js +87 -133
  216. package/esm/LinearWiggleDisplay/models/model.js.map +1 -1
  217. package/esm/MultiDensityRenderer/MultiDensityRenderer.d.ts +7 -0
  218. package/esm/MultiDensityRenderer/MultiDensityRenderer.js +36 -0
  219. package/esm/MultiDensityRenderer/MultiDensityRenderer.js.map +1 -0
  220. package/esm/MultiDensityRenderer/configSchema.d.ts +2 -0
  221. package/esm/MultiDensityRenderer/configSchema.js +5 -0
  222. package/esm/MultiDensityRenderer/configSchema.js.map +1 -0
  223. package/esm/MultiDensityRenderer/index.d.ts +3 -0
  224. package/esm/MultiDensityRenderer/index.js +12 -0
  225. package/esm/MultiDensityRenderer/index.js.map +1 -0
  226. package/esm/MultiLineRenderer/MultiLineRenderer.d.ts +7 -0
  227. package/esm/MultiLineRenderer/MultiLineRenderer.js +25 -0
  228. package/esm/MultiLineRenderer/MultiLineRenderer.js.map +1 -0
  229. package/esm/MultiLineRenderer/configSchema.d.ts +2 -0
  230. package/esm/MultiLineRenderer/configSchema.js +18 -0
  231. package/esm/MultiLineRenderer/configSchema.js.map +1 -0
  232. package/esm/MultiLineRenderer/index.d.ts +3 -0
  233. package/esm/MultiLineRenderer/index.js +12 -0
  234. package/esm/MultiLineRenderer/index.js.map +1 -0
  235. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.d.ts +10 -0
  236. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js +162 -0
  237. package/esm/MultiLinearWiggleDisplay/components/SetColorDialog.js.map +1 -0
  238. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.d.ts +11 -0
  239. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js +46 -0
  240. package/esm/MultiLinearWiggleDisplay/components/SetMinMaxDialog.js.map +1 -0
  241. package/esm/MultiLinearWiggleDisplay/components/Tooltip.d.ts +25 -0
  242. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js +43 -0
  243. package/esm/MultiLinearWiggleDisplay/components/Tooltip.js.map +1 -0
  244. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.d.ts +13 -0
  245. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js +99 -0
  246. package/esm/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.js.map +1 -0
  247. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.d.ts +7 -0
  248. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js +9 -0
  249. package/esm/MultiLinearWiggleDisplay/components/YScaleBar.js.map +1 -0
  250. package/esm/MultiLinearWiggleDisplay/components/util.d.ts +10 -0
  251. package/esm/MultiLinearWiggleDisplay/components/util.js +31 -0
  252. package/esm/MultiLinearWiggleDisplay/components/util.js.map +1 -0
  253. package/esm/MultiLinearWiggleDisplay/index.d.ts +3 -0
  254. package/esm/MultiLinearWiggleDisplay/index.js +18 -0
  255. package/esm/MultiLinearWiggleDisplay/index.js.map +1 -0
  256. package/esm/MultiLinearWiggleDisplay/models/configSchema.d.ts +2 -0
  257. package/esm/MultiLinearWiggleDisplay/models/configSchema.js +74 -0
  258. package/esm/MultiLinearWiggleDisplay/models/configSchema.js.map +1 -0
  259. package/esm/MultiLinearWiggleDisplay/models/model.d.ts +339 -0
  260. package/esm/MultiLinearWiggleDisplay/models/model.js +570 -0
  261. package/esm/MultiLinearWiggleDisplay/models/model.js.map +1 -0
  262. package/esm/MultiQuantitativeTrack/index.d.ts +3 -0
  263. package/esm/MultiQuantitativeTrack/index.js +14 -0
  264. package/esm/MultiQuantitativeTrack/index.js.map +1 -0
  265. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.d.ts +7 -0
  266. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js +33 -0
  267. package/esm/MultiRowLineRenderer/MultiRowLineRenderer.js.map +1 -0
  268. package/esm/MultiRowLineRenderer/configSchema.d.ts +2 -0
  269. package/esm/MultiRowLineRenderer/configSchema.js +18 -0
  270. package/esm/MultiRowLineRenderer/configSchema.js.map +1 -0
  271. package/esm/MultiRowLineRenderer/index.d.ts +3 -0
  272. package/esm/MultiRowLineRenderer/index.js +12 -0
  273. package/esm/MultiRowLineRenderer/index.js.map +1 -0
  274. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.d.ts +7 -0
  275. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js +39 -0
  276. package/esm/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.js.map +1 -0
  277. package/esm/MultiRowXYPlotRenderer/configSchema.d.ts +2 -0
  278. package/esm/MultiRowXYPlotRenderer/configSchema.js +26 -0
  279. package/esm/MultiRowXYPlotRenderer/configSchema.js.map +1 -0
  280. package/esm/MultiRowXYPlotRenderer/index.d.ts +3 -0
  281. package/esm/MultiRowXYPlotRenderer/index.js +12 -0
  282. package/esm/MultiRowXYPlotRenderer/index.js.map +1 -0
  283. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.d.ts +28 -0
  284. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js +87 -0
  285. package/esm/MultiWiggleAdapter/MultiWiggleAdapter.js.map +1 -0
  286. package/esm/MultiWiggleAdapter/configSchema.d.ts +2 -0
  287. package/esm/MultiWiggleAdapter/configSchema.js +12 -0
  288. package/esm/MultiWiggleAdapter/configSchema.js.map +1 -0
  289. package/esm/MultiWiggleAdapter/index.d.ts +3 -0
  290. package/esm/MultiWiggleAdapter/index.js +15 -0
  291. package/esm/MultiWiggleAdapter/index.js.map +1 -0
  292. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.d.ts +5 -0
  293. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js +87 -0
  294. package/esm/MultiWiggleAddTrackWidget/AddTrackWorkflow.js.map +1 -0
  295. package/esm/MultiWiggleAddTrackWidget/index.d.ts +3 -0
  296. package/esm/MultiWiggleAddTrackWidget/index.js +12 -0
  297. package/esm/MultiWiggleAddTrackWidget/index.js.map +1 -0
  298. package/esm/MultiWiggleRendering.d.ts +21 -0
  299. package/esm/MultiWiggleRendering.js +75 -0
  300. package/esm/MultiWiggleRendering.js.map +1 -0
  301. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.d.ts +7 -0
  302. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js +28 -0
  303. package/esm/MultiXYPlotRenderer/MultiXYPlotRenderer.js.map +1 -0
  304. package/esm/MultiXYPlotRenderer/configSchema.d.ts +2 -0
  305. package/esm/MultiXYPlotRenderer/configSchema.js +26 -0
  306. package/esm/MultiXYPlotRenderer/configSchema.js.map +1 -0
  307. package/esm/MultiXYPlotRenderer/index.d.ts +3 -0
  308. package/esm/MultiXYPlotRenderer/index.js +12 -0
  309. package/esm/MultiXYPlotRenderer/index.js.map +1 -0
  310. package/esm/QuantitativeTrack/index.d.ts +3 -0
  311. package/esm/QuantitativeTrack/index.js +14 -0
  312. package/esm/QuantitativeTrack/index.js.map +1 -0
  313. package/esm/Tooltip.d.ts +20 -0
  314. package/esm/Tooltip.js +71 -0
  315. package/esm/Tooltip.js.map +1 -0
  316. package/esm/WiggleBaseRenderer.d.ts +9 -10
  317. package/esm/WiggleBaseRenderer.js +7 -5
  318. package/esm/WiggleBaseRenderer.js.map +1 -1
  319. package/esm/WiggleRPC/rpcMethods.d.ts +17 -1
  320. package/esm/WiggleRPC/rpcMethods.js +49 -7
  321. package/esm/WiggleRPC/rpcMethods.js.map +1 -1
  322. package/esm/WiggleRendering.d.ts +1 -1
  323. package/esm/WiggleRendering.js +4 -8
  324. package/esm/WiggleRendering.js.map +1 -1
  325. package/esm/XYPlotRenderer/XYPlotRenderer.d.ts +4 -1
  326. package/esm/XYPlotRenderer/XYPlotRenderer.js +16 -99
  327. package/esm/XYPlotRenderer/XYPlotRenderer.js.map +1 -1
  328. package/esm/XYPlotRenderer/configSchema.d.ts +2 -0
  329. package/esm/XYPlotRenderer/configSchema.js +26 -0
  330. package/esm/XYPlotRenderer/configSchema.js.map +1 -0
  331. package/esm/XYPlotRenderer/index.d.ts +7 -3
  332. package/esm/XYPlotRenderer/index.js +12 -22
  333. package/esm/XYPlotRenderer/index.js.map +1 -1
  334. package/esm/configSchema.js +0 -5
  335. package/esm/configSchema.js.map +1 -1
  336. package/esm/drawxy.d.ts +50 -0
  337. package/esm/drawxy.js +286 -0
  338. package/esm/drawxy.js.map +1 -0
  339. package/esm/index.d.ts +79 -21
  340. package/esm/index.js +49 -74
  341. package/esm/index.js.map +1 -1
  342. package/esm/util.d.ts +34 -1
  343. package/esm/util.js +108 -0
  344. package/esm/util.js.map +1 -1
  345. package/package.json +11 -5
  346. package/src/BigWigAdapter/BigWigAdapter.ts +53 -35
  347. package/src/BigWigAdapter/__snapshots__/BigWigAdapter.test.ts.snap +10 -10
  348. package/src/BigWigAdapter/configSchema.ts +5 -0
  349. package/src/BigWigAdapter/index.ts +19 -1
  350. package/src/CreateMultiWiggleExtension/ConfirmDialog.tsx +66 -0
  351. package/src/CreateMultiWiggleExtension/index.ts +57 -0
  352. package/src/DensityRenderer/DensityRenderer.test.js +8 -2
  353. package/src/DensityRenderer/DensityRenderer.ts +14 -0
  354. package/src/DensityRenderer/__snapshots__/DensityRenderer.test.js.snap +8 -0
  355. package/src/DensityRenderer/configSchema.ts +11 -0
  356. package/src/DensityRenderer/index.ts +14 -53
  357. package/src/LinePlotRenderer/LinePlotRenderer.ts +19 -0
  358. package/src/LinePlotRenderer/{index.js → configSchema.ts} +3 -4
  359. package/src/LinePlotRenderer/index.ts +16 -0
  360. package/src/LinearWiggleDisplay/components/SetColorDialog.tsx +17 -19
  361. package/src/LinearWiggleDisplay/components/Tooltip.tsx +6 -122
  362. package/src/LinearWiggleDisplay/index.ts +24 -3
  363. package/src/LinearWiggleDisplay/models/model.tsx +98 -174
  364. package/src/MultiDensityRenderer/MultiDensityRenderer.ts +39 -0
  365. package/src/MultiDensityRenderer/configSchema.ts +10 -0
  366. package/src/MultiDensityRenderer/index.ts +16 -0
  367. package/src/MultiLineRenderer/MultiLineRenderer.ts +29 -0
  368. package/src/MultiLineRenderer/configSchema.ts +24 -0
  369. package/src/MultiLineRenderer/index.ts +17 -0
  370. package/src/MultiLinearWiggleDisplay/components/SetColorDialog.tsx +322 -0
  371. package/src/MultiLinearWiggleDisplay/components/SetMinMaxDialog.tsx +113 -0
  372. package/src/MultiLinearWiggleDisplay/components/Tooltip.tsx +76 -0
  373. package/src/MultiLinearWiggleDisplay/components/WiggleDisplayComponent.tsx +261 -0
  374. package/src/MultiLinearWiggleDisplay/components/YScaleBar.tsx +25 -0
  375. package/src/MultiLinearWiggleDisplay/components/declare.d.ts +1 -0
  376. package/src/MultiLinearWiggleDisplay/components/util.test.ts +69 -0
  377. package/src/MultiLinearWiggleDisplay/components/util.ts +33 -0
  378. package/src/MultiLinearWiggleDisplay/index.ts +20 -0
  379. package/src/MultiLinearWiggleDisplay/models/configSchema.ts +94 -0
  380. package/src/MultiLinearWiggleDisplay/models/model.tsx +721 -0
  381. package/src/MultiQuantitativeTrack/index.ts +26 -0
  382. package/src/MultiRowLineRenderer/MultiRowLineRenderer.ts +36 -0
  383. package/src/MultiRowLineRenderer/configSchema.ts +25 -0
  384. package/src/MultiRowLineRenderer/index.ts +16 -0
  385. package/src/MultiRowXYPlotRenderer/MultiRowXYPlotRenderer.ts +43 -0
  386. package/src/MultiRowXYPlotRenderer/configSchema.ts +33 -0
  387. package/src/MultiRowXYPlotRenderer/index.ts +16 -0
  388. package/src/MultiWiggleAdapter/MultiWiggleAdapter.ts +120 -0
  389. package/src/MultiWiggleAdapter/configSchema.ts +16 -0
  390. package/src/MultiWiggleAdapter/index.ts +20 -0
  391. package/src/MultiWiggleAdapter/test_data/volvox.bw +0 -0
  392. package/src/MultiWiggleAddTrackWidget/AddTrackWorkflow.tsx +130 -0
  393. package/src/MultiWiggleAddTrackWidget/index.ts +17 -0
  394. package/src/MultiWiggleRendering.tsx +125 -0
  395. package/src/MultiXYPlotRenderer/MultiXYPlotRenderer.ts +32 -0
  396. package/src/MultiXYPlotRenderer/configSchema.ts +31 -0
  397. package/src/MultiXYPlotRenderer/index.ts +17 -0
  398. package/src/QuantitativeTrack/index.ts +26 -0
  399. package/src/Tooltip.tsx +123 -0
  400. package/src/WiggleBaseRenderer.tsx +15 -9
  401. package/src/WiggleRPC/rpcMethods.ts +68 -17
  402. package/src/WiggleRendering.tsx +12 -18
  403. package/src/XYPlotRenderer/XYPlotRenderer.test.js +3 -1
  404. package/src/XYPlotRenderer/XYPlotRenderer.ts +19 -171
  405. package/src/XYPlotRenderer/__snapshots__/XYPlotRenderer.test.js.snap +8 -0
  406. package/src/XYPlotRenderer/configSchema.ts +32 -0
  407. package/src/XYPlotRenderer/index.ts +16 -27
  408. package/src/__snapshots__/WiggleRendering.test.js.snap +0 -2
  409. package/src/configSchema.ts +0 -5
  410. package/src/declare.d.ts +0 -1
  411. package/src/drawxy.ts +387 -0
  412. package/src/index.ts +75 -129
  413. package/src/util.ts +174 -0
  414. package/src/LinePlotRenderer/LinePlotRenderer.js +0 -91
@@ -0,0 +1,721 @@
1
+ import React, { lazy } from 'react'
2
+ import { addDisposer, getEnv, isAlive, types, Instance } from 'mobx-state-tree'
3
+ import { autorun, when } from 'mobx'
4
+ import { axisPropsFromTickScale } from 'react-d3-axis-mod'
5
+ import deepEqual from 'fast-deep-equal'
6
+
7
+ // jbrowse imports
8
+ import {
9
+ ConfigurationReference,
10
+ AnyConfigurationSchemaType,
11
+ getConf,
12
+ readConfObject,
13
+ } from '@jbrowse/core/configuration'
14
+ import {
15
+ getSession,
16
+ getContainingView,
17
+ isSelectionContainer,
18
+ Feature,
19
+ } from '@jbrowse/core/util'
20
+ import { getRpcSessionId } from '@jbrowse/core/util/tracks'
21
+ import { set1 as colors } from '@jbrowse/core/ui/colors'
22
+ import PluginManager from '@jbrowse/core/PluginManager'
23
+ import {
24
+ BaseLinearDisplay,
25
+ LinearGenomeViewModel,
26
+ } from '@jbrowse/plugin-linear-genome-view'
27
+
28
+ // locals
29
+ import {
30
+ getNiceDomain,
31
+ getScale,
32
+ getStats,
33
+ statsAutorun,
34
+ YSCALEBAR_LABEL_OFFSET,
35
+ } from '../../util'
36
+
37
+ import Tooltip from '../components/Tooltip'
38
+ import { StatBars } from '../components/WiggleDisplayComponent'
39
+
40
+ const randomColor = () =>
41
+ '#000000'.replace(/0/g, () => (~~(Math.random() * 16)).toString(16))
42
+
43
+ // lazt components
44
+ const SetMinMaxDlg = lazy(() => import('../components/SetMinMaxDialog'))
45
+ const SetColorDlg = lazy(() => import('../components/SetColorDialog'))
46
+
47
+ // using a map because it preserves order
48
+ const rendererTypes = new Map([
49
+ ['xyplot', 'MultiXYPlotRenderer'],
50
+ ['multirowxy', 'MultiRowXYPlotRenderer'],
51
+ ['multirowdensity', 'MultiDensityRenderer'],
52
+ ['multiline', 'MultiLineRenderer'],
53
+ ['multirowline', 'MultiRowLineRenderer'],
54
+ ])
55
+
56
+ type LGV = LinearGenomeViewModel
57
+
58
+ interface Source {
59
+ name: string
60
+ color?: string
61
+ group?: string
62
+ }
63
+
64
+ const stateModelFactory = (
65
+ pluginManager: PluginManager,
66
+ configSchema: AnyConfigurationSchemaType,
67
+ ) =>
68
+ types
69
+ .compose(
70
+ 'MultiLinearWiggleDisplay',
71
+ BaseLinearDisplay,
72
+ types.model({
73
+ type: types.literal('MultiLinearWiggleDisplay'),
74
+ configuration: ConfigurationReference(configSchema),
75
+ selectedRendering: types.optional(types.string, ''),
76
+ resolution: types.optional(types.number, 1),
77
+ fill: types.maybe(types.boolean),
78
+ minSize: types.maybe(types.number),
79
+ height: 200,
80
+ color: types.maybe(types.string),
81
+ posColor: types.maybe(types.string),
82
+ negColor: types.maybe(types.string),
83
+ summaryScoreMode: types.maybe(types.string),
84
+ rendererTypeNameState: types.maybe(types.string),
85
+ scale: types.maybe(types.string),
86
+ autoscale: types.maybe(types.string),
87
+ displayCrossHatches: types.maybe(types.boolean),
88
+ layout: types.optional(types.frozen<Source[]>(), []),
89
+ constraints: types.optional(
90
+ types.model({
91
+ max: types.maybe(types.number),
92
+ min: types.maybe(types.number),
93
+ }),
94
+ {},
95
+ ),
96
+ }),
97
+ )
98
+ .volatile(() => ({
99
+ statsReady: false,
100
+ message: undefined as undefined | string,
101
+ stats: { scoreMin: 0, scoreMax: 50 },
102
+ statsRegion: undefined as string | undefined,
103
+ statsFetchInProgress: undefined as undefined | AbortController,
104
+ featureUnderMouseVolatile: undefined as Feature | undefined,
105
+ sourcesVolatile: undefined as Source[] | undefined,
106
+ }))
107
+ .actions(self => ({
108
+ setLayout(layout: Source[]) {
109
+ self.layout = layout
110
+ },
111
+ clearLayout() {
112
+ self.layout = []
113
+ },
114
+ updateStats(stats: { scoreMin: number; scoreMax: number }) {
115
+ const { scoreMin, scoreMax } = stats
116
+ const EPSILON = 0.000001
117
+ if (
118
+ Math.abs(self.stats.scoreMax - scoreMax) > EPSILON ||
119
+ Math.abs(self.stats.scoreMin - scoreMin) > EPSILON
120
+ ) {
121
+ self.stats = { scoreMin, scoreMax }
122
+ self.statsReady = true
123
+ }
124
+ },
125
+ setSources(sources: Source[]) {
126
+ if (!deepEqual(sources, self.sourcesVolatile)) {
127
+ self.sourcesVolatile = sources
128
+ }
129
+ },
130
+ setColor(color: string) {
131
+ self.color = color
132
+ },
133
+ setPosColor(color: string) {
134
+ self.posColor = color
135
+ },
136
+ setNegColor(color: string) {
137
+ self.negColor = color
138
+ },
139
+
140
+ setLoading(aborter: AbortController) {
141
+ const { statsFetchInProgress: statsFetch } = self
142
+ if (statsFetch !== undefined && !statsFetch.signal.aborted) {
143
+ statsFetch.abort()
144
+ }
145
+ self.statsFetchInProgress = aborter
146
+ },
147
+
148
+ // this overrides the BaseLinearDisplayModel to avoid popping up a
149
+ // feature detail display, but still sets the feature selection on the
150
+ // model so listeners can detect a click
151
+ selectFeature(feature: Feature) {
152
+ const session = getSession(self)
153
+ if (isSelectionContainer(session)) {
154
+ session.setSelection(feature)
155
+ }
156
+ },
157
+
158
+ setFeatureUnderMouse(f?: Feature) {
159
+ self.featureUnderMouseVolatile = f
160
+ },
161
+ setResolution(res: number) {
162
+ self.resolution = res
163
+ },
164
+
165
+ setFill(fill: number) {
166
+ if (fill === 0) {
167
+ self.fill = true
168
+ self.minSize = 0
169
+ } else if (fill === 1) {
170
+ self.fill = false
171
+ self.minSize = 1
172
+ } else if (fill === 2) {
173
+ self.fill = false
174
+ self.minSize = 2
175
+ }
176
+ },
177
+
178
+ toggleLogScale() {
179
+ if (self.scale !== 'log') {
180
+ self.scale = 'log'
181
+ } else {
182
+ self.scale = 'linear'
183
+ }
184
+ },
185
+
186
+ setScaleType(scale?: string) {
187
+ self.scale = scale
188
+ },
189
+
190
+ setSummaryScoreMode(val: string) {
191
+ self.summaryScoreMode = val
192
+ },
193
+
194
+ setAutoscale(val: string) {
195
+ self.autoscale = val
196
+ },
197
+
198
+ setMaxScore(val?: number) {
199
+ self.constraints.max = val
200
+ },
201
+
202
+ setRendererType(val: string) {
203
+ self.rendererTypeNameState = val
204
+ },
205
+
206
+ setMinScore(val?: number) {
207
+ self.constraints.min = val
208
+ },
209
+
210
+ toggleCrossHatches() {
211
+ self.displayCrossHatches = !self.displayCrossHatches
212
+ },
213
+
214
+ setCrossHatches(cross: boolean) {
215
+ self.displayCrossHatches = cross
216
+ },
217
+ }))
218
+ .views(self => ({
219
+ get featureUnderMouse() {
220
+ return self.featureUnderMouseVolatile
221
+ },
222
+ get TooltipComponent() {
223
+ return Tooltip as unknown as React.FC
224
+ },
225
+
226
+ get adapterTypeName() {
227
+ return self.adapterConfig.type
228
+ },
229
+ get rendererTypeNameSimple() {
230
+ return self.rendererTypeNameState || getConf(self, 'defaultRendering')
231
+ },
232
+ get rendererTypeName() {
233
+ const name = this.rendererTypeNameSimple
234
+ const rendererType = rendererTypes.get(name)
235
+ if (!rendererType) {
236
+ throw new Error(`unknown renderer ${name}`)
237
+ }
238
+ return rendererType
239
+ },
240
+
241
+ // subclasses can define these, as snpcoverage track does
242
+ get filters() {
243
+ return undefined
244
+ },
245
+
246
+ get scaleType() {
247
+ return self.scale ?? (getConf(self, 'scaleType') as string)
248
+ },
249
+
250
+ get maxScore() {
251
+ return self.constraints.max ?? (getConf(self, 'maxScore') as number)
252
+ },
253
+
254
+ get minScore() {
255
+ return self.constraints.min ?? (getConf(self, 'minScore') as number)
256
+ },
257
+ }))
258
+ .views(self => ({
259
+ get rendererConfig() {
260
+ const configBlob =
261
+ getConf(self, ['renderers', self.rendererTypeName]) || {}
262
+
263
+ const {
264
+ color,
265
+ displayCrossHatches,
266
+ fill,
267
+ minSize,
268
+ negColor,
269
+ posColor,
270
+ summaryScoreMode,
271
+ scaleType,
272
+ } = self
273
+
274
+ return self.rendererType.configSchema.create(
275
+ {
276
+ ...configBlob,
277
+ ...(scaleType ? { scaleType } : {}),
278
+ ...(fill !== undefined ? { filled: fill } : {}),
279
+ ...(displayCrossHatches !== undefined
280
+ ? { displayCrossHatches }
281
+ : {}),
282
+ ...(summaryScoreMode !== undefined ? { summaryScoreMode } : {}),
283
+ ...(color !== undefined ? { color } : {}),
284
+ ...(negColor !== undefined ? { negColor } : {}),
285
+ ...(posColor !== undefined ? { posColor } : {}),
286
+ ...(minSize !== undefined ? { minSize } : {}),
287
+ },
288
+ getEnv(self),
289
+ )
290
+ },
291
+ }))
292
+ .views(self => ({
293
+ // everything except density gets a numerical scalebar
294
+ get needsScalebar() {
295
+ return (
296
+ self.rendererTypeName === 'MultiXYPlotRenderer' ||
297
+ self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
298
+ self.rendererTypeName === 'MultiLineRenderer' ||
299
+ self.rendererTypeName === 'MultiRowLineRenderer'
300
+ )
301
+ },
302
+
303
+ get needsFullHeightScalebar() {
304
+ return (
305
+ self.rendererTypeName === 'MultiXYPlotRenderer' ||
306
+ self.rendererTypeName === 'MultiLineRenderer'
307
+ )
308
+ },
309
+
310
+ get isMultiRow() {
311
+ return (
312
+ self.rendererTypeName === 'MultiRowXYPlotRenderer' ||
313
+ self.rendererTypeName === 'MultiRowLineRenderer' ||
314
+ self.rendererTypeName === 'MultiDensityRenderer'
315
+ )
316
+ },
317
+
318
+ // can be used to give it a "color scale" like a R heatmap, not
319
+ // implemented like this yet but flag can be used for this
320
+ get needsCustomLegend() {
321
+ return self.rendererTypeName === 'MultiDensityRenderer'
322
+ },
323
+
324
+ get canHaveFill() {
325
+ return (
326
+ self.rendererTypeName === 'MultiXYPlotRenderer' ||
327
+ self.rendererTypeName === 'MultiRowXYPlotRenderer'
328
+ )
329
+ },
330
+
331
+ // the multirowxy and multiline don't need to use colors on the legend
332
+ // boxes since their track is drawn with the color. sort of a stylistic choice
333
+ get renderColorBoxes() {
334
+ return !(
335
+ self.rendererTypeName === 'MultiRowLineRenderer' ||
336
+ self.rendererTypeName === 'MultiRowXYPlotRenderer'
337
+ )
338
+ },
339
+
340
+ // positions multi-row below the tracklabel even if using overlap
341
+ // tracklabels for everything else
342
+ get prefersOffset() {
343
+ return this.isMultiRow
344
+ },
345
+
346
+ get sources() {
347
+ const sources = Object.fromEntries(
348
+ self.sourcesVolatile?.map(s => [s.name, s]) || [],
349
+ )
350
+ const iter = self.layout.length ? self.layout : self.sourcesVolatile
351
+ return iter
352
+ ?.map(s => ({
353
+ ...sources[s.name],
354
+ ...s,
355
+ }))
356
+ .map((s, i) => ({
357
+ ...s,
358
+ color:
359
+ s.color ||
360
+ (!this.isMultiRow ? colors[i] || randomColor() : 'blue'),
361
+ }))
362
+ },
363
+ }))
364
+
365
+ .views(self => {
366
+ let oldDomain: [number, number] = [0, 0]
367
+ return {
368
+ get filled(): boolean {
369
+ const { fill, rendererConfig } = self
370
+ return fill ?? readConfObject(rendererConfig, 'filled')
371
+ },
372
+ get summaryScoreModeSetting(): string {
373
+ const { summaryScoreMode: scoreMode, rendererConfig } = self
374
+ return scoreMode ?? readConfObject(rendererConfig, 'summaryScoreMode')
375
+ },
376
+ get domain() {
377
+ const { stats, scaleType, minScore, maxScore } = self
378
+ const { scoreMin, scoreMax } = stats
379
+
380
+ const ret = getNiceDomain({
381
+ domain: [scoreMin, scoreMax],
382
+ bounds: [minScore, maxScore],
383
+ scaleType,
384
+ })
385
+
386
+ // avoid weird scalebar if log value and empty region displayed
387
+ if (scaleType === 'log' && ret[1] === Number.MIN_VALUE) {
388
+ return [0, Number.MIN_VALUE]
389
+ }
390
+
391
+ // avoid returning a new object if it matches the old value
392
+ if (!deepEqual(oldDomain, ret)) {
393
+ oldDomain = ret
394
+ }
395
+
396
+ return oldDomain
397
+ },
398
+
399
+ get scaleOpts() {
400
+ const { scaleType, stats } = self
401
+ return {
402
+ autoscaleType: this.autoscaleType,
403
+ domain: this.domain,
404
+ stats,
405
+ scaleType,
406
+ inverted: getConf(self, 'inverted'),
407
+ }
408
+ },
409
+
410
+ get autoscaleType() {
411
+ return self.autoscale ?? (getConf(self, 'autoscale') as string)
412
+ },
413
+
414
+ get displayCrossHatchesSetting() {
415
+ const { displayCrossHatches, rendererConfig } = self
416
+ return (
417
+ displayCrossHatches ??
418
+ (readConfObject(rendererConfig, 'displayCrossHatches') as boolean)
419
+ )
420
+ },
421
+ get rowHeight() {
422
+ const { sources, height, isMultiRow } = self
423
+ return isMultiRow ? height / (sources?.length || 1) : height
424
+ },
425
+
426
+ get rowHeightTooSmallForScalebar() {
427
+ return this.rowHeight < 70
428
+ },
429
+
430
+ get useMinimalTicks() {
431
+ return (
432
+ getConf(self, 'minimalTicks') || this.rowHeightTooSmallForScalebar
433
+ )
434
+ },
435
+ }
436
+ })
437
+ .views(self => ({
438
+ get ticks() {
439
+ const { scaleType, domain, isMultiRow, rowHeight, useMinimalTicks } =
440
+ self
441
+
442
+ const offset = isMultiRow ? 0 : YSCALEBAR_LABEL_OFFSET
443
+ const ticks = axisPropsFromTickScale(
444
+ getScale({
445
+ scaleType,
446
+ domain,
447
+ range: [rowHeight - offset, offset],
448
+ inverted: getConf(self, 'inverted') as boolean,
449
+ }),
450
+ 4,
451
+ )
452
+ return useMinimalTicks ? { ...ticks, values: domain } : ticks
453
+ },
454
+
455
+ get colors() {
456
+ return [
457
+ 'red',
458
+ 'blue',
459
+ 'green',
460
+ 'orange',
461
+ 'purple',
462
+ 'cyan',
463
+ 'pink',
464
+ 'darkblue',
465
+ 'darkred',
466
+ 'pink',
467
+ ]
468
+ },
469
+
470
+ get adapterCapabilities() {
471
+ const { adapterTypeName } = self
472
+ return pluginManager.getAdapterType(adapterTypeName).adapterCapabilities
473
+ },
474
+ }))
475
+ .views(self => {
476
+ const { renderProps: superRenderProps } = self
477
+ return {
478
+ renderProps() {
479
+ const superProps = superRenderProps()
480
+ const {
481
+ displayCrossHatches,
482
+ filters,
483
+ height,
484
+ resolution,
485
+ rpcDriverName,
486
+ scaleOpts,
487
+ sources,
488
+ statsReady,
489
+ ticks,
490
+ rendererConfig: config,
491
+ } = self
492
+ return {
493
+ ...superProps,
494
+ notReady: superProps.notReady || !sources || !statsReady,
495
+ displayModel: self,
496
+ config,
497
+ displayCrossHatches,
498
+ filters,
499
+ height,
500
+ resolution,
501
+ rpcDriverName,
502
+ scaleOpts,
503
+ sources,
504
+ ticks,
505
+ onMouseMove: (_: unknown, f: Feature) =>
506
+ self.setFeatureUnderMouse(f),
507
+ onMouseLeave: () => self.setFeatureUnderMouse(undefined),
508
+ }
509
+ },
510
+
511
+ get hasResolution() {
512
+ return self.adapterCapabilities.includes('hasResolution')
513
+ },
514
+
515
+ get hasGlobalStats() {
516
+ return self.adapterCapabilities.includes('hasGlobalStats')
517
+ },
518
+
519
+ get fillSetting() {
520
+ if (self.filled) {
521
+ return 0
522
+ } else if (!self.filled && self.minSize === 1) {
523
+ return 1
524
+ } else {
525
+ return 2
526
+ }
527
+ },
528
+ }
529
+ })
530
+ .views(self => {
531
+ const { trackMenuItems: superTrackMenuItems } = self
532
+ const hasRenderings = getConf(self, 'defaultRendering')
533
+ return {
534
+ trackMenuItems() {
535
+ return [
536
+ ...superTrackMenuItems(),
537
+ ...(self.hasResolution
538
+ ? [
539
+ {
540
+ label: 'Resolution',
541
+ subMenu: [
542
+ {
543
+ label: 'Finer resolution',
544
+ onClick: () => self.setResolution(self.resolution * 5),
545
+ },
546
+ {
547
+ label: 'Coarser resolution',
548
+ onClick: () => self.setResolution(self.resolution / 5),
549
+ },
550
+ ],
551
+ },
552
+ {
553
+ label: 'Summary score mode',
554
+ subMenu: ['min', 'max', 'avg', 'whiskers'].map(elt => ({
555
+ label: elt,
556
+ type: 'radio',
557
+ checked: self.summaryScoreModeSetting === elt,
558
+ onClick: () => self.setSummaryScoreMode(elt),
559
+ })),
560
+ },
561
+ ]
562
+ : []),
563
+ ...(self.canHaveFill
564
+ ? [
565
+ {
566
+ label: 'Fill mode',
567
+ subMenu: ['filled', 'no fill', 'no fill w/ emphasis'].map(
568
+ (elt, idx) => ({
569
+ label: elt,
570
+ type: 'radio',
571
+ checked: self.fillSetting === idx,
572
+ onClick: () => self.setFill(idx),
573
+ }),
574
+ ),
575
+ },
576
+ ]
577
+ : []),
578
+ {
579
+ label:
580
+ self.scaleType === 'log' ? 'Set linear scale' : 'Set log scale',
581
+ onClick: () => self.toggleLogScale(),
582
+ },
583
+ ...(self.needsScalebar
584
+ ? [
585
+ {
586
+ type: 'checkbox',
587
+ label: 'Draw cross hatches',
588
+ checked: self.displayCrossHatchesSetting,
589
+ onClick: () => self.toggleCrossHatches(),
590
+ },
591
+ ]
592
+ : []),
593
+ ...(hasRenderings
594
+ ? [
595
+ {
596
+ label: 'Renderer type',
597
+ subMenu: [
598
+ 'xyplot',
599
+ 'multirowxy',
600
+ 'multirowdensity',
601
+ 'multiline',
602
+ 'multirowline',
603
+ ].map(key => ({
604
+ label: key,
605
+ type: 'radio',
606
+ checked: self.rendererTypeNameSimple === key,
607
+ onClick: () => self.setRendererType(key),
608
+ })),
609
+ },
610
+ ]
611
+ : []),
612
+
613
+ {
614
+ label: 'Autoscale type',
615
+ subMenu: [
616
+ ['local', 'Local'],
617
+ ...(self.hasGlobalStats
618
+ ? [
619
+ ['global', 'Global'],
620
+ ['globalsd', 'Global ± 3σ'],
621
+ ]
622
+ : []),
623
+ ['localsd', 'Local ± 3σ'],
624
+ ].map(([val, label]) => {
625
+ return {
626
+ label,
627
+ type: 'radio',
628
+ checked: self.autoscaleType === val,
629
+ onClick: () => self.setAutoscale(val),
630
+ }
631
+ }),
632
+ },
633
+ {
634
+ label: 'Set min/max score...',
635
+ onClick: () => {
636
+ const session = getSession(self)
637
+ session.queueDialog(handleClose => [
638
+ SetMinMaxDlg,
639
+ { model: self, handleClose },
640
+ ])
641
+ },
642
+ },
643
+ {
644
+ label: 'Edit colors/arrangement...',
645
+ onClick: () => {
646
+ getSession(self).queueDialog(handleClose => [
647
+ SetColorDlg,
648
+ { model: self, handleClose },
649
+ ])
650
+ },
651
+ },
652
+ ]
653
+ },
654
+ }
655
+ })
656
+ .actions(self => {
657
+ const { reload: superReload, renderSvg: superRenderSvg } = self
658
+
659
+ type ExportSvgOpts = Parameters<typeof superRenderSvg>[0]
660
+
661
+ return {
662
+ // re-runs stats and refresh whole display on reload
663
+ async reload() {
664
+ self.setError()
665
+ const aborter = new AbortController()
666
+ let stats
667
+ try {
668
+ self.setLoading(aborter)
669
+ stats = await getStats(self, {
670
+ signal: aborter.signal,
671
+ ...self.renderProps(),
672
+ })
673
+ if (isAlive(self)) {
674
+ self.updateStats(stats)
675
+ superReload()
676
+ }
677
+ } catch (e) {
678
+ self.setError(e)
679
+ }
680
+ },
681
+ afterAttach() {
682
+ statsAutorun(self)
683
+ addDisposer(
684
+ self,
685
+ autorun(async () => {
686
+ const { rpcManager } = getSession(self)
687
+ const { adapterConfig } = self
688
+ const sessionId = getRpcSessionId(self)
689
+ const sources = (await rpcManager.call(
690
+ sessionId,
691
+ 'MultiWiggleGetSources',
692
+ {
693
+ sessionId,
694
+ adapterConfig,
695
+ },
696
+ )) as Source[]
697
+ if (isAlive(self)) {
698
+ self.setSources(sources)
699
+ }
700
+ }),
701
+ )
702
+ },
703
+ async renderSvg(opts: ExportSvgOpts) {
704
+ await when(() => self.statsReady && !!self.regionCannotBeRenderedText)
705
+ const { offsetPx } = getContainingView(self) as LGV
706
+ return (
707
+ <>
708
+ <g id="snpcov">{await superRenderSvg(opts)}</g>
709
+ <g transform={`translate(${Math.max(-offsetPx, 0)})`}>
710
+ <StatBars model={self} orientation="left" exportSVG />
711
+ </g>
712
+ </>
713
+ )
714
+ },
715
+ }
716
+ })
717
+
718
+ export type WiggleDisplayStateModel = ReturnType<typeof stateModelFactory>
719
+ export type WiggleDisplayModel = Instance<WiggleDisplayStateModel>
720
+
721
+ export default stateModelFactory