@sjcrh/proteinpaint-client 2.198.0 → 2.200.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 (1066) hide show
  1. package/dist/2dmaf-RRV3ORZR.js +1373 -0
  2. package/dist/AIProjectAdmin-DKLEFCGX.js +958 -0
  3. package/dist/AppHeader-WQ2F7HZY.js +835 -0
  4. package/dist/BoxPlot-5JQCYENZ.js +1218 -0
  5. package/dist/BoxPlot-5JQCYENZ.js.map +7 -0
  6. package/dist/CorrelationVolcano-HR6IP2SZ.js +619 -0
  7. package/dist/DE-DAW6ZKM7.js +95 -0
  8. package/dist/DEinput-XCR4VMR3.js +409 -0
  9. package/dist/DEinput-XCR4VMR3.js.map +7 -0
  10. package/dist/DifferentialAnalysis-SETJAZEN.js +243 -0
  11. package/dist/DifferentialAnalysis-SETJAZEN.js.map +7 -0
  12. package/dist/Disco-QEBEVQS2.js +3392 -0
  13. package/dist/Disco.UI-OYVL7UBI.js +248 -0
  14. package/dist/Disco.UI-OYVL7UBI.js.map +7 -0
  15. package/dist/DmrPlot-CWBQDZL7.js +642 -0
  16. package/dist/GB-5PYCR4SV.js +1396 -0
  17. package/dist/GB-5PYCR4SV.js.map +7 -0
  18. package/dist/GSEA-6UKMI6GY.js +846 -0
  19. package/dist/GeneExpInput-2N62XM7Z.js +367 -0
  20. package/dist/GeneExpInput-2N62XM7Z.js.map +7 -0
  21. package/dist/Geomap-ANMR32HE.js +89 -0
  22. package/dist/HicApp-WHPUPHEM.js +2250 -0
  23. package/dist/IDCViewer-FWXRE4AX.js +10817 -0
  24. package/dist/IDCViewer-FWXRE4AX.js.map +7 -0
  25. package/dist/NumBinaryEditor-VG5KOGDA.js +271 -0
  26. package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js +286 -0
  27. package/dist/NumContEditor-J52RON3G.js +109 -0
  28. package/dist/NumContEditor.unit.spec-5GTWUJEL.js +169 -0
  29. package/dist/NumCustomBinEditor-GM2OJMOX.js +38 -0
  30. package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js +284 -0
  31. package/dist/NumDiscreteEditor-2CAKT3Y4.js +179 -0
  32. package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js +202 -0
  33. package/dist/NumRegularBinEditor-CZYITY5L.js +38 -0
  34. package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js +227 -0
  35. package/dist/NumSplineEditor-TWRL5AQQ.js +198 -0
  36. package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js +199 -0
  37. package/dist/NumericDensity-JSOFOEH2.js +38 -0
  38. package/dist/NumericDensity.unit.spec-REUKHMKK.js +221 -0
  39. package/dist/NumericHandler-UZOGKPKB.js +39 -0
  40. package/dist/NumericHandler.unit.spec-X2DAED4O.js +219 -0
  41. package/dist/ProteomeInput-GBVCLNS7.js +394 -0
  42. package/dist/ProteomeInput-GBVCLNS7.js.map +7 -0
  43. package/dist/RunChart2-N4JPWNVV.js +758 -0
  44. package/dist/RunChart2-N4JPWNVV.js.map +7 -0
  45. package/dist/SC-RCZT5BRP.js +1112 -0
  46. package/dist/SC-RCZT5BRP.js.map +7 -0
  47. package/dist/Volcano-2BQ6SYHO.js +1404 -0
  48. package/dist/Volcano-2BQ6SYHO.js.map +7 -0
  49. package/dist/WSIViewer-UDA4WIRT.js +48562 -0
  50. package/dist/WsiSamplesPlot-DYSFMD22.js +165 -0
  51. package/dist/adSandbox-5BUDCAER.js +38 -0
  52. package/dist/animatedBubbleChart-N6MBJ4X3.js +553 -0
  53. package/dist/animatedBubbleChart-N6MBJ4X3.js.map +7 -0
  54. package/dist/app-O64TGDFH.js +37 -0
  55. package/dist/app-Y2STUISK.js +49 -0
  56. package/dist/app.js +23 -23
  57. package/dist/bam-2EOABVGT.js +859 -0
  58. package/dist/bam-2EOABVGT.js.map +7 -0
  59. package/dist/barchart-UHCTYRMJ.js +47 -0
  60. package/dist/barchart.data-LSK2P2PR.js +21 -0
  61. package/dist/barchart.events-Y4H2GADS.js +47 -0
  62. package/dist/barchart.integration.spec-BFGZFECA.js +2243 -0
  63. package/dist/barchart.integration.spec-BFGZFECA.js.map +7 -0
  64. package/dist/barchart2-VIZKZRMP.js +314 -0
  65. package/dist/bars.renderer-54UCFLJS.js +12 -0
  66. package/dist/block-BGSSF6XP.js +6255 -0
  67. package/dist/block.init-H7RKUIHG.js +38 -0
  68. package/dist/block.mds.expressionrank-MA3HGT7S.js +359 -0
  69. package/dist/block.mds.geneboxplot-CWT5DM5T.js +828 -0
  70. package/dist/block.mds.junction-P4I7O73X.js +1545 -0
  71. package/dist/block.mds.svcnv-NSPEY43S.js +6801 -0
  72. package/dist/block.svg-DP4G3LNQ.js +164 -0
  73. package/dist/block.tk.aicheck-EBLTOWKZ.js +283 -0
  74. package/dist/block.tk.ase-X7WKQOFS.js +365 -0
  75. package/dist/block.tk.bam-OIP3TS3N.js +1906 -0
  76. package/dist/block.tk.bedgraphdot-2DDF55J3.js +384 -0
  77. package/dist/block.tk.bigwig.ui-S2SMAEXM.js +211 -0
  78. package/dist/block.tk.bigwig.ui-S2SMAEXM.js.map +7 -0
  79. package/dist/block.tk.hicstraw-4OIG4TBZ.js +823 -0
  80. package/dist/block.tk.junction-52OWEQUN.js +2364 -0
  81. package/dist/block.tk.junction.textmatrixui-64YOSZLW.js +199 -0
  82. package/dist/block.tk.ld-3AMNHBDY.js +99 -0
  83. package/dist/block.tk.menu-4724DJXL.js +1029 -0
  84. package/dist/block.tk.pgv-2SIOPWYI.js +944 -0
  85. package/dist/brainImaging-D43CQQN6.js +423 -0
  86. package/dist/brainImaging-D43CQQN6.js.map +7 -0
  87. package/dist/brainRegions-HJ2VGL3L.js +221 -0
  88. package/dist/bubbleHeatmap-IL44M4QZ.js +383 -0
  89. package/dist/bubbleHeatmap-IL44M4QZ.js.map +7 -0
  90. package/dist/cellTypeBubbleHeatmap-NQP7RCZO.js +283 -0
  91. package/dist/cellTypeBubbleHeatmap-NQP7RCZO.js.map +7 -0
  92. package/dist/chunk-26APRXD3.js +254 -0
  93. package/dist/chunk-2GLA2SWU.js +160 -0
  94. package/dist/chunk-2GLA2SWU.js.map +7 -0
  95. package/dist/chunk-2KXLYFAO.js +4085 -0
  96. package/dist/chunk-3BGFM7Q4.js +1275 -0
  97. package/dist/chunk-3SHZTAGF.js +193 -0
  98. package/dist/chunk-3SHZTAGF.js.map +7 -0
  99. package/dist/chunk-46X6AQ7Z.js +123 -0
  100. package/dist/chunk-46X6AQ7Z.js.map +7 -0
  101. package/dist/chunk-4FQYRDZS.js +276 -0
  102. package/dist/chunk-4FQYRDZS.js.map +7 -0
  103. package/dist/chunk-4HZN6PMU.js +129 -0
  104. package/dist/chunk-4KRGCOTL.js +479 -0
  105. package/dist/chunk-4KRGCOTL.js.map +7 -0
  106. package/dist/chunk-4WF3XDQP.js +220 -0
  107. package/dist/chunk-4WF3XDQP.js.map +7 -0
  108. package/dist/chunk-5DMVORBB.js +98 -0
  109. package/dist/chunk-5QMBB4SK.js +1245 -0
  110. package/dist/chunk-5R63Q5KH.js +1628 -0
  111. package/dist/chunk-5RVA43MN.js +274 -0
  112. package/dist/chunk-5RVA43MN.js.map +7 -0
  113. package/dist/chunk-5T3MOOEJ.js +379 -0
  114. package/dist/chunk-5T3MOOEJ.js.map +7 -0
  115. package/dist/chunk-5T3ZDRTS.js +70 -0
  116. package/dist/chunk-5T3ZDRTS.js.map +7 -0
  117. package/dist/chunk-5ZTVJSYI.js +834 -0
  118. package/dist/chunk-5ZTVJSYI.js.map +7 -0
  119. package/dist/chunk-6JYQGZ3Y.js +446 -0
  120. package/dist/chunk-6OUBUUC2.js +626 -0
  121. package/dist/chunk-6OUBUUC2.js.map +7 -0
  122. package/dist/chunk-6PNPHACF.js +1652 -0
  123. package/dist/chunk-6PNPHACF.js.map +7 -0
  124. package/dist/chunk-6QCYT6G2.js +467 -0
  125. package/dist/chunk-7JRDJNLR.js +263 -0
  126. package/dist/chunk-7JRDJNLR.js.map +7 -0
  127. package/dist/chunk-7PIHRWGG.js +102 -0
  128. package/dist/chunk-7PIHRWGG.js.map +7 -0
  129. package/dist/chunk-7PJNKPQB.js +275 -0
  130. package/dist/chunk-7PJNKPQB.js.map +7 -0
  131. package/dist/chunk-AGLAYNXP.js +170 -0
  132. package/dist/chunk-AGLAYNXP.js.map +7 -0
  133. package/dist/chunk-B4ESQLPB.js +140 -0
  134. package/dist/chunk-B7VDZ6VF.js +399 -0
  135. package/dist/chunk-B7VDZ6VF.js.map +7 -0
  136. package/dist/chunk-BGTBRAJ6.js +50 -0
  137. package/dist/chunk-BGTBRAJ6.js.map +7 -0
  138. package/dist/chunk-BNAO6N5X.js +2899 -0
  139. package/dist/chunk-BNAO6N5X.js.map +7 -0
  140. package/dist/chunk-BQHPJY2M.js +347 -0
  141. package/dist/chunk-BQHPJY2M.js.map +7 -0
  142. package/dist/chunk-BZTWTH4Y.js +87 -0
  143. package/dist/chunk-BZTWTH4Y.js.map +7 -0
  144. package/dist/chunk-CY4RQ5L6.js +1710 -0
  145. package/dist/chunk-CY4RQ5L6.js.map +7 -0
  146. package/dist/chunk-D565DNJD.js +236 -0
  147. package/dist/chunk-D565DNJD.js.map +7 -0
  148. package/dist/chunk-DH3LAQKT.js +384 -0
  149. package/dist/chunk-DH3LAQKT.js.map +7 -0
  150. package/dist/chunk-E3VF4RHJ.js +381 -0
  151. package/dist/chunk-EGPNRSPF.js +292 -0
  152. package/dist/chunk-FACITNG5.js +142 -0
  153. package/dist/chunk-GNS6CQMA.js +119 -0
  154. package/dist/chunk-GNS6CQMA.js.map +7 -0
  155. package/dist/chunk-H3N4KYKL.js +2327 -0
  156. package/dist/chunk-H3VWJH4U.js +14 -0
  157. package/dist/chunk-HEVKBSN6.js +222 -0
  158. package/dist/chunk-HQUYAZQY.js +514 -0
  159. package/dist/chunk-IUBBQPO2.js +146 -0
  160. package/dist/chunk-IUBBQPO2.js.map +7 -0
  161. package/dist/chunk-J4USU73L.js +26 -0
  162. package/dist/chunk-JH73IL4C.js +135 -0
  163. package/dist/chunk-JVPWIVDT.js +1812 -0
  164. package/dist/chunk-JVPWIVDT.js.map +7 -0
  165. package/dist/chunk-KU7YH7MV.js +217 -0
  166. package/dist/chunk-KZILNGAV.js +187 -0
  167. package/dist/chunk-KZILNGAV.js.map +7 -0
  168. package/dist/chunk-M66VDGSH.js +272 -0
  169. package/dist/chunk-MJN6RDXB.js +302 -0
  170. package/dist/chunk-MPNEZ6EL.js +31 -0
  171. package/dist/chunk-MPSLUEI4.js +314 -0
  172. package/dist/chunk-NIXFCC7X.js +368 -0
  173. package/dist/chunk-NODQZTWK.js +276 -0
  174. package/dist/chunk-NRYHIWBS.js +1942 -0
  175. package/dist/chunk-NRYHIWBS.js.map +7 -0
  176. package/dist/chunk-NUWJ4RN7.js +465 -0
  177. package/dist/chunk-NUWJ4RN7.js.map +7 -0
  178. package/dist/chunk-NVTJ5AUT.js +1102 -0
  179. package/dist/chunk-NZRMHM76.js +158 -0
  180. package/dist/chunk-NZRMHM76.js.map +7 -0
  181. package/dist/chunk-OOWXMY7U.js +55 -0
  182. package/dist/chunk-OTTMHVYH.js +787 -0
  183. package/dist/chunk-Q5RDQNIT.js +777 -0
  184. package/dist/chunk-QDX2XUNF.js +58 -0
  185. package/dist/chunk-QYXCHZ6U.js +4282 -0
  186. package/dist/chunk-QYXCHZ6U.js.map +7 -0
  187. package/dist/chunk-R6NM2HSH.js +556 -0
  188. package/dist/chunk-R6NM2HSH.js.map +7 -0
  189. package/dist/chunk-RJOY6A74.js +56 -0
  190. package/dist/chunk-RJOY6A74.js.map +7 -0
  191. package/dist/chunk-ROMW4AK2.js +102 -0
  192. package/dist/chunk-RR5U35N7.js +230 -0
  193. package/dist/chunk-RVKADD4L.js +148 -0
  194. package/dist/chunk-S5ZCK44Z.js +54 -0
  195. package/dist/chunk-SNRIVNQ3.js +176 -0
  196. package/dist/chunk-STI7BO3P.js +2681 -0
  197. package/dist/chunk-STI7BO3P.js.map +7 -0
  198. package/dist/chunk-TAM7UCAI.js +263 -0
  199. package/dist/chunk-TDKMBQSM.js +5070 -0
  200. package/dist/chunk-TDKMBQSM.js.map +7 -0
  201. package/dist/chunk-TKW5TW4Z.js +21449 -0
  202. package/dist/chunk-TKW5TW4Z.js.map +7 -0
  203. package/dist/chunk-TQTYW66I.js +2784 -0
  204. package/dist/chunk-TQTYW66I.js.map +7 -0
  205. package/dist/chunk-U3NTH4CS.js +54 -0
  206. package/dist/chunk-U3NTH4CS.js.map +7 -0
  207. package/dist/chunk-UEGQVQD6.js +34 -0
  208. package/dist/chunk-UEGQVQD6.js.map +7 -0
  209. package/dist/chunk-UJELJXJG.js +2110 -0
  210. package/dist/chunk-ULESDMUT.js +480 -0
  211. package/dist/chunk-UUKSL7QC.js +134 -0
  212. package/dist/chunk-UUKSL7QC.js.map +7 -0
  213. package/dist/chunk-VUPWQCDR.js +194 -0
  214. package/dist/chunk-VUPWQCDR.js.map +7 -0
  215. package/dist/chunk-W76X6W73.js +100 -0
  216. package/dist/chunk-W7OS7BNM.js +203 -0
  217. package/dist/chunk-WPHUM5S5.js +98 -0
  218. package/dist/chunk-WPHUM5S5.js.map +7 -0
  219. package/dist/chunk-WTTD6DUL.js +6364 -0
  220. package/dist/chunk-WXPFMVU6.js +299 -0
  221. package/dist/chunk-XNWUI5VL.js +37 -0
  222. package/dist/chunk-XNWUI5VL.js.map +7 -0
  223. package/dist/chunk-YBLTSYQV.js +216 -0
  224. package/dist/chunk-Z7VDFWIP.js +126 -0
  225. package/dist/chunk-Z7VDFWIP.js.map +7 -0
  226. package/dist/chunk-ZEKIUYN3.js +448 -0
  227. package/dist/chunk-ZEKIUYN3.js.map +7 -0
  228. package/dist/cohort-OWLNJZVH.js +75 -0
  229. package/dist/cohort-OWLNJZVH.js.map +7 -0
  230. package/dist/condition-L2IXP6WH.js +332 -0
  231. package/dist/controls-2S5QVWUC.js +39 -0
  232. package/dist/controls.config-3AJKR4ZZ.js +39 -0
  233. package/dist/correlation-DXTAWSLU.js +102 -0
  234. package/dist/cuminc-WQB6FHVS.js +1148 -0
  235. package/dist/cuminc-WQB6FHVS.js.map +7 -0
  236. package/dist/cuminc.integration.spec-WAYRLHUH.js +678 -0
  237. package/dist/customdata.inputui-7WH2NJGB.js +289 -0
  238. package/dist/dataDownload-HM4UYOBO.js +330 -0
  239. package/dist/dataDownload.integration.spec-F5CO4BWA.js +193 -0
  240. package/dist/databrowser.ui-E2YOG3L4.js +432 -0
  241. package/dist/databrowser.ui-E2YOG3L4.js.map +7 -0
  242. package/dist/dictionary-EEPTFDYD.js +118 -0
  243. package/dist/dnaMethylation-N3WNK6XA.js +38 -0
  244. package/dist/dnaMethylation.integration.spec-AIYRTFMR.js +203 -0
  245. package/dist/dnaMethylation.integration.spec-AIYRTFMR.js.map +7 -0
  246. package/dist/dofetch-YKYPEJTQ.js +51 -0
  247. package/dist/e2pca-JEZIGVB2.js +350 -0
  248. package/dist/ep-5FMH2MLV.js +1256 -0
  249. package/dist/expclust.gdc.spec-FR26VSUA.js +307 -0
  250. package/dist/facet-5YYY3MUN.js +521 -0
  251. package/dist/facet-5YYY3MUN.js.map +7 -0
  252. package/dist/gb-WGEVO7L2.js +88 -0
  253. package/dist/geneExpClustering-DHE6XJHV.js +249 -0
  254. package/dist/geneExpClustering-DHE6XJHV.js.map +7 -0
  255. package/dist/geneExpression-5NWQXMJ3.js +313 -0
  256. package/dist/geneExpression-VWUMM2LU.js +38 -0
  257. package/dist/geneExpression.unit.spec-HBU3WTZ4.js +102 -0
  258. package/dist/geneExpression.unit.spec-HBU3WTZ4.js.map +7 -0
  259. package/dist/geneORA-3VWFWDYI.js +278 -0
  260. package/dist/geneRanking-PKDVD5OD.js +553 -0
  261. package/dist/geneVariant-IFIJQXH4.js +39 -0
  262. package/dist/geneVariant-WZSOG4GI.js +41 -0
  263. package/dist/geneVariant.integration.spec-6KQMWVHR.js +198 -0
  264. package/dist/genefusion.ui-C4NTALL3.js +308 -0
  265. package/dist/genefusion.ui-C4NTALL3.js.map +7 -0
  266. package/dist/geneset-RJAULSKC.js +208 -0
  267. package/dist/genomeBrowser.spec-42OTTMGO.js +281 -0
  268. package/dist/grin2-26O6YDDY.js +75 -0
  269. package/dist/grin2-FT5BQJMB.js +1143 -0
  270. package/dist/hierCluster-GJPPMFNR.js +59 -0
  271. package/dist/hierCluster-HMJF3PBE.js +63 -0
  272. package/dist/hierCluster.config-TAS7XKTU.js +40 -0
  273. package/dist/hierCluster.integration.spec-RLHQKX65.js +488 -0
  274. package/dist/hierCluster.integration.spec-RLHQKX65.js.map +7 -0
  275. package/dist/hierCluster.interactivity-IKTAJ6CU.js +54 -0
  276. package/dist/hierCluster.renderers-I6WFZRNW.js +21 -0
  277. package/dist/imagePlot-N4OXNMVA.js +163 -0
  278. package/dist/importPlot-VMYXDP66.js +8 -0
  279. package/dist/isoformExpression-2KV64KMN.js +40 -0
  280. package/dist/isoformExpression.unit.spec-RG2VWEMG.js +242 -0
  281. package/dist/isoformExpression.unit.spec-RG2VWEMG.js.map +7 -0
  282. package/dist/junction-VO4IGMW2.js +41 -0
  283. package/dist/junction.customTerm-EFMHHVWA.js +18 -0
  284. package/dist/junction.unit.spec-NB24MR2B.js +187 -0
  285. package/dist/junction.unit.spec-NB24MR2B.js.map +7 -0
  286. package/dist/launch.adhoc-R3MO3VXK.js +42 -0
  287. package/dist/leftlabel.sample-SI6KMULD.js +263 -0
  288. package/dist/leftlabel.sample-SI6KMULD.js.map +7 -0
  289. package/dist/legacyDataset-4BXYHQTS.js +119 -0
  290. package/dist/lollipop-XIVE4ANX.js +171 -0
  291. package/dist/maf-WRHD4OJF.js +459 -0
  292. package/dist/maftimeline-IE6YKV7Y.js +593 -0
  293. package/dist/matrix-ALBCAZP5.js +58 -0
  294. package/dist/matrix-W72XRUZD.js +63 -0
  295. package/dist/matrix.cells-DEEUWC74.js +28 -0
  296. package/dist/matrix.config-JYXQOXDT.js +41 -0
  297. package/dist/matrix.data-ENXNM6RP.js +25 -0
  298. package/dist/matrix.groups-EXSNNESB.js +27 -0
  299. package/dist/matrix.integration.spec-BW6U6PIW.js +3072 -0
  300. package/dist/matrix.interactivity-G6AL566T.js +42 -0
  301. package/dist/matrix.layout-UBUPIJ3R.js +44 -0
  302. package/dist/matrix.legend-S3P4F2DG.js +22 -0
  303. package/dist/matrix.renderers-IXFGXHJQ.js +38 -0
  304. package/dist/matrix.serieses-THHXUAPM.js +21 -0
  305. package/dist/matrix.sort-WJV6LIZI.js +27 -0
  306. package/dist/matrix.sort.unit.spec-LGMIL2LR.js +472 -0
  307. package/dist/matrix.sorterUi-VXVCOKEZ.js +18 -0
  308. package/dist/matrix.sorterUi.unit.spec-CWSEJ62U.js +342 -0
  309. package/dist/mavb-SXGKASQ5.js +732 -0
  310. package/dist/mds.fimo-EDOT3TDN.js +518 -0
  311. package/dist/mds.samplescatterplot-IXHNABKB.js +1550 -0
  312. package/dist/mds.survivalplot-KTTMHHII.js +483 -0
  313. package/dist/numericDictTermCluster-H4JSPW22.js +65 -0
  314. package/dist/oncomatrix-O4EMNUOT.js +295 -0
  315. package/dist/oncomatrix.spec-BME6CQWF.js +448 -0
  316. package/dist/plot.2dvaf-FDM4KXGT.js +377 -0
  317. package/dist/plot.app-UNUXG7ND.js +41 -0
  318. package/dist/plot.barplot-R333TMG2.js +102 -0
  319. package/dist/plot.boxplot-KQTYGUN3.js +152 -0
  320. package/dist/plot.brainImaging-YBYMHCEG.js +51 -0
  321. package/dist/plot.disco-CMDKRSOM.js +102 -0
  322. package/dist/plot.dzi-YAZA6RQS.js +33 -0
  323. package/dist/plot.ssgq-YKCOEXZP.js +139 -0
  324. package/dist/plot.vaf2cov-3TLMTFZS.js +259 -0
  325. package/dist/plot.wsi-7ADVYTQS.js +36 -0
  326. package/dist/polar2-O5SHVLP4.js +237 -0
  327. package/dist/polar2-O5SHVLP4.js.map +7 -0
  328. package/dist/profileForms-RLB6SMPQ.js +940 -0
  329. package/dist/profileForms-RLB6SMPQ.js.map +7 -0
  330. package/dist/profilePlot-AP52VLLO.js +54 -0
  331. package/dist/proteinView-S7WDBMQU.js +1568 -0
  332. package/dist/proteinView-S7WDBMQU.js.map +7 -0
  333. package/dist/proteomeCohortCompare-ERVUM7RO.js +799 -0
  334. package/dist/proteomeCohortCompare-ERVUM7RO.js.map +7 -0
  335. package/dist/pseudbulk.unit.spec-VSH7IM3R.js +91 -0
  336. package/dist/pseudbulk.unit.spec-VSH7IM3R.js.map +7 -0
  337. package/dist/pseudobulk-7UKRLKQI.js +40 -0
  338. package/dist/qualitative-2D7MC4V5.js +43 -0
  339. package/dist/radar2-ELVGQFZE.js +332 -0
  340. package/dist/radar2-ELVGQFZE.js.map +7 -0
  341. package/dist/radarFacility2-SDAZHGNG.js +340 -0
  342. package/dist/radarFacility2-SDAZHGNG.js.map +7 -0
  343. package/dist/regression-CE54AQMY.js +56 -0
  344. package/dist/regression.inputs-SMC5CNPY.js +48 -0
  345. package/dist/regression.inputs.term-XS54IQC2.js +48 -0
  346. package/dist/regression.inputs.values.table-LNPM3MX5.js +45 -0
  347. package/dist/regression.integration.spec-6QSMYPWJ.js +784 -0
  348. package/dist/regression.results-25ZRRDEE.js +40 -0
  349. package/dist/regression.spec-EDWHFRPY.js +708 -0
  350. package/dist/render-SEB6GFXQ.js +38 -0
  351. package/dist/report-U6L3KBYG.js +222 -0
  352. package/dist/sampleView-QAAJ26KT.js +48 -0
  353. package/dist/samplelst-KYRXJSZN.js +111 -0
  354. package/dist/samplematrix-STLF2QA5.js +2198 -0
  355. package/dist/sc-HL6YSMDX.js +86 -0
  356. package/dist/scatter-BSGDMOC2.js +851 -0
  357. package/dist/selectGenomeWithTklst-4NHQDTE6.js +134 -0
  358. package/dist/singleCellCellType-3E2IU42J.js +38 -0
  359. package/dist/singleCellCellType.unit.spec-MC7ZRSMW.js +159 -0
  360. package/dist/singleCellCellType.unit.spec-MC7ZRSMW.js.map +7 -0
  361. package/dist/singleCellGeneExpression-53UUGYTK.js +38 -0
  362. package/dist/singleCellGeneExpression.unit.spec-QSLTXHFE.js +153 -0
  363. package/dist/singleCellGeneExpression.unit.spec-QSLTXHFE.js.map +7 -0
  364. package/dist/singleCellPlot-JDSARDRV.js +54 -0
  365. package/dist/singlecell-IJR7BJYT.js +1572 -0
  366. package/dist/singlecell-OK6GJFWL.js +86 -0
  367. package/dist/snp-H4KJEEOE.js +38 -0
  368. package/dist/snp.unit.spec-2Y4A3XYI.js +176 -0
  369. package/dist/snplocus-4GG6VTWX.js +208 -0
  370. package/dist/spliceevent.a53ss.diagram-JZNRC5UC.js +151 -0
  371. package/dist/spliceevent.exonskip.diagram-H54N7ZKY.js +283 -0
  372. package/dist/spliceevent.noeventdiagram-II753XAK.js +460 -0
  373. package/dist/ssGSEA-JPJ3C4JI.js +38 -0
  374. package/dist/ssGSEA.unit.spec-45F5OCDK.js +88 -0
  375. package/dist/studyCatalog-O3VGIKDM.js +358 -0
  376. package/dist/studyCatalog-O3VGIKDM.js.map +7 -0
  377. package/dist/summarizeCnvGeneexp-55DNXHXA.js +163 -0
  378. package/dist/summarizeGeneexpSurvival-VLO4DC5M.js +110 -0
  379. package/dist/summarizeGeneexpSurvival-VLO4DC5M.js.map +7 -0
  380. package/dist/summarizeMutationCnv-QX7BADYL.js +164 -0
  381. package/dist/summarizeMutationDiagnosis-MHFM7RX6.js +40 -0
  382. package/dist/summarizeMutationSurvival-G4KHSUBN.js +99 -0
  383. package/dist/summary-PJYRCQNY.js +49 -0
  384. package/dist/summary.integration.spec-KPKROD6L.js +414 -0
  385. package/dist/summaryInput-TOAL53EP.js +231 -0
  386. package/dist/summaryInput-TOAL53EP.js.map +7 -0
  387. package/dist/sunburst-IGIV2RBE.js +284 -0
  388. package/dist/survival-DINCIWW7.js +58 -0
  389. package/dist/survival-RKV5BPDK.js +1239 -0
  390. package/dist/survival-RKV5BPDK.js.map +7 -0
  391. package/dist/survival.integration.spec-7ZYBBZKT.js +958 -0
  392. package/dist/survival.integration.spec-7ZYBBZKT.js.map +7 -0
  393. package/dist/svgraph-EUEZWGVR.js +1387 -0
  394. package/dist/svmr-B24LODSC.js +3842 -0
  395. package/dist/table-XSJJ3UZV.js +200 -0
  396. package/dist/termCollection-IAB3425K.js +38 -0
  397. package/dist/termCollection-LGEGHZSJ.js +257 -0
  398. package/dist/termCollection-LGEGHZSJ.js.map +7 -0
  399. package/dist/termCollection.unit.spec-4TIRHC44.js +304 -0
  400. package/dist/termCollection.unit.spec-4TIRHC44.js.map +7 -0
  401. package/dist/termCollectionFractionSelection-35YKAOUY.js +47 -0
  402. package/dist/termCollectionFractionSelection.unit.spec-SUFEIKJZ.js +193 -0
  403. package/dist/termCollectionFractionSelection.unit.spec-SUFEIKJZ.js.map +7 -0
  404. package/dist/tk-25EJJDRK.js +46 -0
  405. package/dist/tk-4E3XJ7CO.js +1127 -0
  406. package/dist/tk-4E3XJ7CO.js.map +7 -0
  407. package/dist/tp.ui-VGA62NFM.js +1459 -0
  408. package/dist/tvs.cohort-F7OJI2MH.js +26 -0
  409. package/dist/tvs.cohort-F7OJI2MH.js.map +7 -0
  410. package/dist/tvs.density-G56327WY.js +19 -0
  411. package/dist/tvs.dt-DFW36WKO.js +39 -0
  412. package/dist/tvs.dtcnv.categorical-ZP33EO3A.js +40 -0
  413. package/dist/tvs.dtcnv.continuous-FJTMQF4J.js +72 -0
  414. package/dist/tvs.dtfusion-FTDQWNKM.js +40 -0
  415. package/dist/tvs.dtitd-W5VEECJ2.js +40 -0
  416. package/dist/tvs.dtsnvindel-UOXSLCDZ.js +40 -0
  417. package/dist/tvs.dtsv-HWCPRVBO.js +40 -0
  418. package/dist/tvs.numeric-7TGKWQYU.js +22 -0
  419. package/dist/tvs.samplelst-OWD22ITS.js +104 -0
  420. package/dist/tvs.termCollection-27BWABYK.js +129 -0
  421. package/dist/tvs.termCollection-27BWABYK.js.map +7 -0
  422. package/dist/violin-2IAVZGFF.js +46 -0
  423. package/dist/violin.integration.spec-JVODKUCL.js +1425 -0
  424. package/dist/violin.integration.spec-JVODKUCL.js.map +7 -0
  425. package/dist/violin.interactivity-STOCZMVN.js +38 -0
  426. package/dist/violin.renderer-MKDTJ3EX.js +40 -0
  427. package/dist/violin.renderer-MKDTJ3EX.js.map +7 -0
  428. package/dist/vocabulary-4IHU6DNN.js +41 -0
  429. package/dist/vocabulary-4IHU6DNN.js.map +7 -0
  430. package/package.json +3 -6
  431. package/dist/2dmaf-R3PFZNRN.js +0 -1373
  432. package/dist/AIProjectAdmin-DM3KG6SR.js +0 -958
  433. package/dist/AppHeader-6DZQ6YZX.js +0 -835
  434. package/dist/BoxPlot-76NINVX4.js +0 -1217
  435. package/dist/BoxPlot-76NINVX4.js.map +0 -7
  436. package/dist/CorrelationVolcano-U5UMJNH5.js +0 -619
  437. package/dist/DE-AXNYWIQK.js +0 -95
  438. package/dist/DEinput-JH6YY6LS.js +0 -301
  439. package/dist/DEinput-JH6YY6LS.js.map +0 -7
  440. package/dist/DifferentialAnalysis-25P4CGIY.js +0 -242
  441. package/dist/DifferentialAnalysis-25P4CGIY.js.map +0 -7
  442. package/dist/Disco-NVMLF3BK.js +0 -3392
  443. package/dist/Disco.UI-C7CZINUQ.js +0 -249
  444. package/dist/Disco.UI-C7CZINUQ.js.map +0 -7
  445. package/dist/DmrPlot-WROR4ENM.js +0 -642
  446. package/dist/GB-JUABODPH.js +0 -1394
  447. package/dist/GB-JUABODPH.js.map +0 -7
  448. package/dist/GSEA-Y5R2THIJ.js +0 -846
  449. package/dist/GeneExpInput-JDU6EI7K.js +0 -367
  450. package/dist/GeneExpInput-JDU6EI7K.js.map +0 -7
  451. package/dist/Geomap-J763OK2F.js +0 -89
  452. package/dist/HicApp-UNIJLH4B.js +0 -2250
  453. package/dist/IDCViewer-KVPCIUDW.js +0 -10803
  454. package/dist/IDCViewer-KVPCIUDW.js.map +0 -7
  455. package/dist/NumBinaryEditor-WMN2GGO4.js +0 -271
  456. package/dist/NumBinaryEditor.unit.spec-TAMXV6SE.js +0 -286
  457. package/dist/NumContEditor-XYIOJY4E.js +0 -109
  458. package/dist/NumContEditor.unit.spec-WDZ75BHO.js +0 -169
  459. package/dist/NumCustomBinEditor-5SY3C4TY.js +0 -38
  460. package/dist/NumCustomBinEditor.unit.spec-XHTAIXR3.js +0 -284
  461. package/dist/NumDiscreteEditor-NRDRX4FD.js +0 -179
  462. package/dist/NumDiscreteEditor.unit.spec-2CJW7OAT.js +0 -202
  463. package/dist/NumRegularBinEditor-DUDVTNDC.js +0 -38
  464. package/dist/NumRegularBinEditor.unit.spec-H3GNQHMN.js +0 -227
  465. package/dist/NumSplineEditor-7Q4AC7KH.js +0 -198
  466. package/dist/NumSplineEditor.unit.spec-YRZK5PH5.js +0 -199
  467. package/dist/NumericDensity-NTNWUESG.js +0 -38
  468. package/dist/NumericDensity.unit.spec-5I5U6T6P.js +0 -221
  469. package/dist/NumericHandler-MEW2KMPX.js +0 -39
  470. package/dist/NumericHandler.unit.spec-JFX4BPRG.js +0 -219
  471. package/dist/ProteomeInput-K2ZHR2U6.js +0 -395
  472. package/dist/ProteomeInput-K2ZHR2U6.js.map +0 -7
  473. package/dist/RunChart2-BEBDU7RC.js +0 -758
  474. package/dist/RunChart2-BEBDU7RC.js.map +0 -7
  475. package/dist/SC-XCBFJVUJ.js +0 -1120
  476. package/dist/SC-XCBFJVUJ.js.map +0 -7
  477. package/dist/Volcano-4Y4TP3UX.js +0 -1385
  478. package/dist/Volcano-4Y4TP3UX.js.map +0 -7
  479. package/dist/WSIViewer-ZLQU62PD.js +0 -48562
  480. package/dist/WsiSamplesPlot-JMBSITOM.js +0 -165
  481. package/dist/adSandbox-664IRCRL.js +0 -38
  482. package/dist/animatedBubbleChart-TX7NW34K.js +0 -555
  483. package/dist/animatedBubbleChart-TX7NW34K.js.map +0 -7
  484. package/dist/app-63WJ3BMP.js +0 -37
  485. package/dist/app-77FIZHCG.js +0 -49
  486. package/dist/bam-IETNVAYD.js +0 -860
  487. package/dist/bam-IETNVAYD.js.map +0 -7
  488. package/dist/barchart-YUVXJNH4.js +0 -47
  489. package/dist/barchart.data-P4EIQXGE.js +0 -22
  490. package/dist/barchart.events-JPVCLTIG.js +0 -47
  491. package/dist/barchart.integration.spec-ZH7DEQI2.js +0 -2196
  492. package/dist/barchart.integration.spec-ZH7DEQI2.js.map +0 -7
  493. package/dist/barchart2-XO2FG76J.js +0 -314
  494. package/dist/bars.renderer-AUIWUJDH.js +0 -12
  495. package/dist/block-NBTCOT3H.js +0 -6255
  496. package/dist/block.init-X7Y2EEVR.js +0 -38
  497. package/dist/block.mds.expressionrank-BIAOZIZ3.js +0 -359
  498. package/dist/block.mds.geneboxplot-CNICDVLK.js +0 -828
  499. package/dist/block.mds.junction-PQXCTSUI.js +0 -1545
  500. package/dist/block.mds.svcnv-32KMVTCT.js +0 -6801
  501. package/dist/block.svg-LRTOYQK2.js +0 -164
  502. package/dist/block.tk.aicheck-HDV7ZIUD.js +0 -283
  503. package/dist/block.tk.ase-JIDWKMYI.js +0 -365
  504. package/dist/block.tk.bam-5X3OS5HB.js +0 -1906
  505. package/dist/block.tk.bedgraphdot-T7JX7YQL.js +0 -384
  506. package/dist/block.tk.bigwig.ui-OSAYEBAE.js +0 -212
  507. package/dist/block.tk.bigwig.ui-OSAYEBAE.js.map +0 -7
  508. package/dist/block.tk.hicstraw-DEY3VQFK.js +0 -823
  509. package/dist/block.tk.junction-7UAFEZSJ.js +0 -2364
  510. package/dist/block.tk.junction.textmatrixui-27LHS33U.js +0 -199
  511. package/dist/block.tk.ld-DF2PI7OO.js +0 -99
  512. package/dist/block.tk.menu-L2D5KBIV.js +0 -1029
  513. package/dist/block.tk.pgv-QO56SKBV.js +0 -944
  514. package/dist/brainImaging-NIPQWFWO.js +0 -423
  515. package/dist/brainImaging-NIPQWFWO.js.map +0 -7
  516. package/dist/brainRegions-ZNZ2WHSU.js +0 -221
  517. package/dist/bubbleHeatmap-ERWNEKZB.js +0 -383
  518. package/dist/bubbleHeatmap-ERWNEKZB.js.map +0 -7
  519. package/dist/chunk-2GYWFQML.js +0 -299
  520. package/dist/chunk-2HYJ4GDH.js +0 -50
  521. package/dist/chunk-2HYJ4GDH.js.map +0 -7
  522. package/dist/chunk-2MG6XE6R.js +0 -272
  523. package/dist/chunk-2MG6XE6R.js.map +0 -7
  524. package/dist/chunk-2X6W4E3W.js +0 -1507
  525. package/dist/chunk-2X6W4E3W.js.map +0 -7
  526. package/dist/chunk-33K5PA52.js +0 -54
  527. package/dist/chunk-37XDBPOP.js +0 -26
  528. package/dist/chunk-3EWB3246.js +0 -58
  529. package/dist/chunk-3RSKOPIY.js +0 -100
  530. package/dist/chunk-3XVVN66M.js +0 -4085
  531. package/dist/chunk-4DPVT4NE.js +0 -1102
  532. package/dist/chunk-4IH7DORZ.js +0 -98
  533. package/dist/chunk-4QNBFIIR.js +0 -399
  534. package/dist/chunk-4QNBFIIR.js.map +0 -7
  535. package/dist/chunk-4STKL6SR.js +0 -217
  536. package/dist/chunk-4TZIVSL5.js +0 -34
  537. package/dist/chunk-4TZIVSL5.js.map +0 -7
  538. package/dist/chunk-5ABGFJSP.js +0 -467
  539. package/dist/chunk-5AZNP47R.js +0 -302
  540. package/dist/chunk-5RL2OHXX.js +0 -5070
  541. package/dist/chunk-5RL2OHXX.js.map +0 -7
  542. package/dist/chunk-5VOPABBA.js +0 -20941
  543. package/dist/chunk-5VOPABBA.js.map +0 -7
  544. package/dist/chunk-6BB43SIB.js +0 -102
  545. package/dist/chunk-6BB43SIB.js.map +0 -7
  546. package/dist/chunk-7IYJZZQI.js +0 -167
  547. package/dist/chunk-7IYJZZQI.js.map +0 -7
  548. package/dist/chunk-7OHRR2IE.js +0 -276
  549. package/dist/chunk-ARBHWDMY.js +0 -226
  550. package/dist/chunk-ARBHWDMY.js.map +0 -7
  551. package/dist/chunk-ASATD4T7.js +0 -14
  552. package/dist/chunk-AZ47Q7BX.js +0 -1223
  553. package/dist/chunk-AZ47Q7BX.js.map +0 -7
  554. package/dist/chunk-B5B3LZB3.js +0 -236
  555. package/dist/chunk-B5B3LZB3.js.map +0 -7
  556. package/dist/chunk-BHGISFCA.js +0 -2681
  557. package/dist/chunk-BHGISFCA.js.map +0 -7
  558. package/dist/chunk-BMBOZ64T.js +0 -2786
  559. package/dist/chunk-BMBOZ64T.js.map +0 -7
  560. package/dist/chunk-BOZJHPJP.js +0 -216
  561. package/dist/chunk-CDD7LYJM.js +0 -194
  562. package/dist/chunk-CDD7LYJM.js.map +0 -7
  563. package/dist/chunk-CTQ3IUCA.js +0 -2327
  564. package/dist/chunk-D7TID3HR.js +0 -158
  565. package/dist/chunk-D7TID3HR.js.map +0 -7
  566. package/dist/chunk-DBKNWR4J.js +0 -1561
  567. package/dist/chunk-DBKNWR4J.js.map +0 -7
  568. package/dist/chunk-E55LLYRX.js +0 -55
  569. package/dist/chunk-ESEQBXTM.js +0 -121
  570. package/dist/chunk-ESEQBXTM.js.map +0 -7
  571. package/dist/chunk-ESGXULRH.js +0 -386
  572. package/dist/chunk-ESGXULRH.js.map +0 -7
  573. package/dist/chunk-EZ4LZ6ZT.js +0 -117
  574. package/dist/chunk-EZ4LZ6ZT.js.map +0 -7
  575. package/dist/chunk-F3SJTVP5.js +0 -4284
  576. package/dist/chunk-F3SJTVP5.js.map +0 -7
  577. package/dist/chunk-F5IXNJO7.js +0 -222
  578. package/dist/chunk-FJYECRHW.js +0 -448
  579. package/dist/chunk-FJYECRHW.js.map +0 -7
  580. package/dist/chunk-FPNRUQOU.js +0 -833
  581. package/dist/chunk-FPNRUQOU.js.map +0 -7
  582. package/dist/chunk-G5S4R77D.js +0 -1942
  583. package/dist/chunk-G5S4R77D.js.map +0 -7
  584. package/dist/chunk-G764NXQN.js +0 -170
  585. package/dist/chunk-G764NXQN.js.map +0 -7
  586. package/dist/chunk-GAPI4MML.js +0 -148
  587. package/dist/chunk-HBW42TDT.js +0 -132
  588. package/dist/chunk-HBW42TDT.js.map +0 -7
  589. package/dist/chunk-HLUZOZXJ.js +0 -272
  590. package/dist/chunk-HOKIK2FR.js +0 -375
  591. package/dist/chunk-HOKIK2FR.js.map +0 -7
  592. package/dist/chunk-I6WR4CG7.js +0 -323
  593. package/dist/chunk-I6WR4CG7.js.map +0 -7
  594. package/dist/chunk-K5XPMCKP.js +0 -135
  595. package/dist/chunk-KI5KI3ZJ.js +0 -276
  596. package/dist/chunk-KI5KI3ZJ.js.map +0 -7
  597. package/dist/chunk-KLGL6XZD.js +0 -129
  598. package/dist/chunk-KYBIQBXE.js +0 -1628
  599. package/dist/chunk-L7IRWUKT.js +0 -480
  600. package/dist/chunk-LFCYMSVA.js +0 -314
  601. package/dist/chunk-LX6G7HJJ.js +0 -617
  602. package/dist/chunk-LX6G7HJJ.js.map +0 -7
  603. package/dist/chunk-M2G5R4WB.js +0 -142
  604. package/dist/chunk-M4TTGGT4.js +0 -102
  605. package/dist/chunk-M4TTGGT4.js.map +0 -7
  606. package/dist/chunk-M6EF3WVV.js +0 -1825
  607. package/dist/chunk-M6EF3WVV.js.map +0 -7
  608. package/dist/chunk-M6KHT3MM.js +0 -146
  609. package/dist/chunk-M6KHT3MM.js.map +0 -7
  610. package/dist/chunk-MCZFHWIR.js +0 -230
  611. package/dist/chunk-MFQACKYU.js +0 -448
  612. package/dist/chunk-MFQACKYU.js.map +0 -7
  613. package/dist/chunk-MVGAGTM3.js +0 -343
  614. package/dist/chunk-MVGAGTM3.js.map +0 -7
  615. package/dist/chunk-NELOT3NJ.js +0 -119
  616. package/dist/chunk-NELOT3NJ.js.map +0 -7
  617. package/dist/chunk-NRKMXULC.js +0 -54
  618. package/dist/chunk-NRKMXULC.js.map +0 -7
  619. package/dist/chunk-NSTL4MY2.js +0 -2110
  620. package/dist/chunk-NYRZNRG5.js +0 -177
  621. package/dist/chunk-NYRZNRG5.js.map +0 -7
  622. package/dist/chunk-OMR2DT66.js +0 -776
  623. package/dist/chunk-ONPKE6DC.js +0 -368
  624. package/dist/chunk-OXVLWQ6M.js +0 -556
  625. package/dist/chunk-OXVLWQ6M.js.map +0 -7
  626. package/dist/chunk-PFRWS4CR.js +0 -203
  627. package/dist/chunk-PJKQUXEN.js +0 -1275
  628. package/dist/chunk-Q2L44HK3.js +0 -6364
  629. package/dist/chunk-QNHT74XC.js +0 -1245
  630. package/dist/chunk-RKO6BL5N.js +0 -446
  631. package/dist/chunk-T25QNZHB.js +0 -254
  632. package/dist/chunk-U7TBYVIQ.js +0 -31
  633. package/dist/chunk-UGRQXBL4.js +0 -381
  634. package/dist/chunk-USFSHSCJ.js +0 -477
  635. package/dist/chunk-USFSHSCJ.js.map +0 -7
  636. package/dist/chunk-VJ6UFVGC.js +0 -2833
  637. package/dist/chunk-VJ6UFVGC.js.map +0 -7
  638. package/dist/chunk-W3WPPOXH.js +0 -292
  639. package/dist/chunk-WFCSOTBO.js +0 -263
  640. package/dist/chunk-WHP4AKDM.js +0 -185
  641. package/dist/chunk-WHP4AKDM.js.map +0 -7
  642. package/dist/chunk-WZ2L57MB.js +0 -102
  643. package/dist/chunk-XPY6AWXO.js +0 -787
  644. package/dist/chunk-Y4UAKFWC.js +0 -37
  645. package/dist/chunk-Y4UAKFWC.js.map +0 -7
  646. package/dist/chunk-YQBS2ZCK.js +0 -514
  647. package/dist/chunk-Z5U6HOE4.js +0 -190
  648. package/dist/chunk-Z5U6HOE4.js.map +0 -7
  649. package/dist/chunk-ZNEJUKJW.js +0 -140
  650. package/dist/chunk-ZTHM2TKP.js +0 -176
  651. package/dist/condition-2PASYSUC.js +0 -332
  652. package/dist/controls-5IMJ6K5L.js +0 -41
  653. package/dist/controls.config-P5PG2DHW.js +0 -39
  654. package/dist/correlation-U3EDLNHR.js +0 -102
  655. package/dist/cuminc-2HUFEROK.js +0 -1149
  656. package/dist/cuminc-2HUFEROK.js.map +0 -7
  657. package/dist/cuminc.integration.spec-WFWAPTDA.js +0 -678
  658. package/dist/customdata.inputui-ZHWNEPFH.js +0 -289
  659. package/dist/dataDownload-VBSJBKMP.js +0 -330
  660. package/dist/dataDownload.integration.spec-LUFSETOP.js +0 -193
  661. package/dist/databrowser.ui-6H2KMSTJ.js +0 -433
  662. package/dist/databrowser.ui-6H2KMSTJ.js.map +0 -7
  663. package/dist/dictionary-V37LXFIP.js +0 -118
  664. package/dist/dnaMethylation-OIZMHMLK.js +0 -38
  665. package/dist/dnaMethylation.integration.spec-CWPTJ74H.js +0 -203
  666. package/dist/dnaMethylation.integration.spec-CWPTJ74H.js.map +0 -7
  667. package/dist/dofetch-IWPZQB5N.js +0 -51
  668. package/dist/e2pca-7SLIAGYW.js +0 -350
  669. package/dist/ep-7L6KF6K4.js +0 -1256
  670. package/dist/expclust.gdc.spec-JT452Q3G.js +0 -307
  671. package/dist/facet-CXOUU5AS.js +0 -521
  672. package/dist/facet-CXOUU5AS.js.map +0 -7
  673. package/dist/forms2-VPNCLQOY.js +0 -539
  674. package/dist/forms2-VPNCLQOY.js.map +0 -7
  675. package/dist/gb-P4VRXRED.js +0 -88
  676. package/dist/geneExpClustering-FQTCKRJJ.js +0 -249
  677. package/dist/geneExpClustering-FQTCKRJJ.js.map +0 -7
  678. package/dist/geneExpression-BHO5326K.js +0 -313
  679. package/dist/geneExpression-ZMERB64E.js +0 -38
  680. package/dist/geneExpression.unit.spec-CNVHZWNG.js +0 -102
  681. package/dist/geneExpression.unit.spec-CNVHZWNG.js.map +0 -7
  682. package/dist/geneORA-FXVUCXGX.js +0 -278
  683. package/dist/geneRanking-SFK4UBKQ.js +0 -553
  684. package/dist/geneVariant-IYEHB4H7.js +0 -41
  685. package/dist/geneVariant-LIRRLUFR.js +0 -39
  686. package/dist/geneVariant.integration.spec-Y2NPNTYX.js +0 -198
  687. package/dist/genefusion.ui-L3HIJM3N.js +0 -309
  688. package/dist/genefusion.ui-L3HIJM3N.js.map +0 -7
  689. package/dist/geneset-A6VUFX63.js +0 -208
  690. package/dist/genomeBrowser.spec-CB4HHHBN.js +0 -281
  691. package/dist/grin2-FKBIMH5N.js +0 -75
  692. package/dist/grin2-V36KLEBU.js +0 -1143
  693. package/dist/hierCluster-QFPRMHVA.js +0 -63
  694. package/dist/hierCluster-YWC3XYPV.js +0 -59
  695. package/dist/hierCluster.config-F7YYZNM3.js +0 -40
  696. package/dist/hierCluster.integration.spec-AF4L3YT6.js +0 -488
  697. package/dist/hierCluster.integration.spec-AF4L3YT6.js.map +0 -7
  698. package/dist/hierCluster.interactivity-RPY74PK6.js +0 -54
  699. package/dist/hierCluster.renderers-LOKHZ3V2.js +0 -21
  700. package/dist/imagePlot-BBEXA754.js +0 -163
  701. package/dist/importPlot-7QGANZGK.js +0 -8
  702. package/dist/isoformExpression-4SLLCVFD.js +0 -40
  703. package/dist/isoformExpression.unit.spec-GEL4JJ64.js +0 -208
  704. package/dist/isoformExpression.unit.spec-GEL4JJ64.js.map +0 -7
  705. package/dist/launch.adhoc-LWLBQJS5.js +0 -42
  706. package/dist/leftlabel.sample-RTEZOIH2.js +0 -264
  707. package/dist/leftlabel.sample-RTEZOIH2.js.map +0 -7
  708. package/dist/legacyDataset-VLD7ZYWI.js +0 -119
  709. package/dist/lollipop-XKQK5QZU.js +0 -171
  710. package/dist/maf-AZQPPWDO.js +0 -459
  711. package/dist/maftimeline-7MSVYKQU.js +0 -593
  712. package/dist/matrix-BGLWC25D.js +0 -58
  713. package/dist/matrix-IQR5SRMK.js +0 -63
  714. package/dist/matrix.cells-5C57NWOY.js +0 -28
  715. package/dist/matrix.config-2DQXAN2E.js +0 -41
  716. package/dist/matrix.data-ADCGF5H6.js +0 -25
  717. package/dist/matrix.groups-V4ITQ5F7.js +0 -27
  718. package/dist/matrix.integration.spec-IBNOO2WP.js +0 -3072
  719. package/dist/matrix.interactivity-JNELJFOV.js +0 -42
  720. package/dist/matrix.layout-WBVIV6GR.js +0 -44
  721. package/dist/matrix.legend-YHOWPK77.js +0 -22
  722. package/dist/matrix.renderers-5BGVRR3M.js +0 -38
  723. package/dist/matrix.serieses-2GZJOASZ.js +0 -21
  724. package/dist/matrix.sort-WKIWPJKP.js +0 -27
  725. package/dist/matrix.sort.unit.spec-L2E4D4AS.js +0 -472
  726. package/dist/matrix.sorterUi-TEJWWJ64.js +0 -18
  727. package/dist/matrix.sorterUi.unit.spec-SHP7C4P7.js +0 -342
  728. package/dist/mavb-4MXNYUEO.js +0 -732
  729. package/dist/mds.fimo-WHIJIBOI.js +0 -518
  730. package/dist/mds.samplescatterplot-BRJ6NG2D.js +0 -1550
  731. package/dist/mds.survivalplot-OPCMB5PB.js +0 -483
  732. package/dist/numericDictTermCluster-7MIFOP2K.js +0 -65
  733. package/dist/oncomatrix-BGG6BEUI.js +0 -295
  734. package/dist/oncomatrix.spec-LYQ4L4F3.js +0 -448
  735. package/dist/plot.2dvaf-6WVCP2ZI.js +0 -377
  736. package/dist/plot.app-MLBP6WFP.js +0 -41
  737. package/dist/plot.barplot-JEPRZSCU.js +0 -102
  738. package/dist/plot.boxplot-GNFW42VM.js +0 -152
  739. package/dist/plot.brainImaging-5ACNSD45.js +0 -51
  740. package/dist/plot.disco-Q2V2KKIH.js +0 -102
  741. package/dist/plot.dzi-KVT6S7K7.js +0 -33
  742. package/dist/plot.ssgq-4N3KFJQ2.js +0 -139
  743. package/dist/plot.vaf2cov-ITRG5U43.js +0 -259
  744. package/dist/plot.wsi-26YZNU4V.js +0 -36
  745. package/dist/polar2-J7GVUK4X.js +0 -231
  746. package/dist/polar2-J7GVUK4X.js.map +0 -7
  747. package/dist/profileForms-VXV2JLXU.js +0 -446
  748. package/dist/profileForms-VXV2JLXU.js.map +0 -7
  749. package/dist/profilePlot-ZZYZK4SY.js +0 -54
  750. package/dist/proteinView-7KN532D3.js +0 -1568
  751. package/dist/proteinView-7KN532D3.js.map +0 -7
  752. package/dist/qualitative-MLRVLIAU.js +0 -43
  753. package/dist/radar2-WM2ZBOH3.js +0 -326
  754. package/dist/radar2-WM2ZBOH3.js.map +0 -7
  755. package/dist/radarFacility2-3SBR2JJ3.js +0 -334
  756. package/dist/radarFacility2-3SBR2JJ3.js.map +0 -7
  757. package/dist/regression-WMRPQJW2.js +0 -56
  758. package/dist/regression.inputs-VWZKSYNY.js +0 -48
  759. package/dist/regression.inputs.term-OWE6GWHM.js +0 -48
  760. package/dist/regression.inputs.values.table-4INNZQI2.js +0 -45
  761. package/dist/regression.integration.spec-XKQ2JOOT.js +0 -784
  762. package/dist/regression.results-VZBYMBYC.js +0 -40
  763. package/dist/regression.spec-DU3UTDCJ.js +0 -708
  764. package/dist/render-N5FOF247.js +0 -38
  765. package/dist/report-DW3OHB67.js +0 -222
  766. package/dist/sampleScatter.spec-REFSK2V4.js +0 -202
  767. package/dist/sampleScatter.spec-REFSK2V4.js.map +0 -7
  768. package/dist/sampleView-ICOT2R6O.js +0 -48
  769. package/dist/samplelst-TJEVASYG.js +0 -111
  770. package/dist/samplematrix-6DAWCXQ3.js +0 -2198
  771. package/dist/sc-53LNOB7N.js +0 -86
  772. package/dist/scatter-DKYSS4DL.js +0 -851
  773. package/dist/selectGenomeWithTklst-WTX66TV3.js +0 -134
  774. package/dist/singleCellCellType-D2CN2BHQ.js +0 -38
  775. package/dist/singleCellCellType.unit.spec-LADUCI4R.js +0 -160
  776. package/dist/singleCellCellType.unit.spec-LADUCI4R.js.map +0 -7
  777. package/dist/singleCellGeneExpression-YR2ZT34W.js +0 -38
  778. package/dist/singleCellGeneExpression.unit.spec-BM63M432.js +0 -153
  779. package/dist/singleCellGeneExpression.unit.spec-BM63M432.js.map +0 -7
  780. package/dist/singleCellPlot-3ICIOILE.js +0 -54
  781. package/dist/singlecell-6ZUFA3BQ.js +0 -86
  782. package/dist/singlecell-KX7W4U57.js +0 -1572
  783. package/dist/snp-VIURB7L3.js +0 -38
  784. package/dist/snp.unit.spec-ACZNZUNS.js +0 -176
  785. package/dist/snplocus-3LW4ZUZR.js +0 -208
  786. package/dist/spliceevent.a53ss.diagram-AKTZGWNM.js +0 -151
  787. package/dist/spliceevent.exonskip.diagram-XZHXB77R.js +0 -283
  788. package/dist/spliceevent.noeventdiagram-YTXWWNTJ.js +0 -460
  789. package/dist/ssGSEA-THW4WFMI.js +0 -38
  790. package/dist/ssGSEA.unit.spec-HTRGQI2K.js +0 -88
  791. package/dist/summarizeCnvGeneexp-RFYC3H2Z.js +0 -163
  792. package/dist/summarizeGeneexpSurvival-DQBZUTQ6.js +0 -114
  793. package/dist/summarizeGeneexpSurvival-DQBZUTQ6.js.map +0 -7
  794. package/dist/summarizeMutationCnv-7AYEMHAI.js +0 -164
  795. package/dist/summarizeMutationDiagnosis-AKFJDSAF.js +0 -40
  796. package/dist/summarizeMutationSurvival-QJHZRQBZ.js +0 -99
  797. package/dist/summary-A5P7AYK4.js +0 -49
  798. package/dist/summary.integration.spec-HQISXGNL.js +0 -414
  799. package/dist/summaryInput-HP675QOQ.js +0 -235
  800. package/dist/summaryInput-HP675QOQ.js.map +0 -7
  801. package/dist/sunburst-65LSYRXX.js +0 -284
  802. package/dist/survival-QNEI6YVK.js +0 -46
  803. package/dist/survival-UI74VXSM.js +0 -58
  804. package/dist/survival.integration.spec-X5N3JQXS.js +0 -915
  805. package/dist/survival.integration.spec-X5N3JQXS.js.map +0 -7
  806. package/dist/svgraph-PSX2NER3.js +0 -1387
  807. package/dist/svmr-QDQ33EFX.js +0 -3842
  808. package/dist/table-LWAI27UO.js +0 -200
  809. package/dist/termCollection-3JHR74FG.js +0 -179
  810. package/dist/termCollection-3JHR74FG.js.map +0 -7
  811. package/dist/termCollection-CDF5LYUG.js +0 -38
  812. package/dist/termCollection.unit.spec-HOJKYWHF.js +0 -208
  813. package/dist/termCollection.unit.spec-HOJKYWHF.js.map +0 -7
  814. package/dist/tk-GL4QCL4K.js +0 -1019
  815. package/dist/tk-GL4QCL4K.js.map +0 -7
  816. package/dist/tk-OEQFO73V.js +0 -46
  817. package/dist/toggleButtons-YK7TIFF2.js +0 -9
  818. package/dist/tp.ui-SHNERDGC.js +0 -1459
  819. package/dist/tvs.density-3XJ6DBGO.js +0 -18
  820. package/dist/tvs.dt-CZDC4TSR.js +0 -39
  821. package/dist/tvs.dtcnv.categorical-OPBDHZGB.js +0 -40
  822. package/dist/tvs.dtcnv.continuous-AR6P4EP3.js +0 -72
  823. package/dist/tvs.dtfusion-2YQ7N6FQ.js +0 -40
  824. package/dist/tvs.dtitd-ATCHW735.js +0 -40
  825. package/dist/tvs.dtsnvindel-WHHWAATJ.js +0 -40
  826. package/dist/tvs.dtsv-3UMCW65O.js +0 -40
  827. package/dist/tvs.numeric-TOEPASWN.js +0 -21
  828. package/dist/tvs.samplelst-M7XKXRTZ.js +0 -104
  829. package/dist/tvs.termCollection-WT4WZMYR.js +0 -159
  830. package/dist/tvs.termCollection-WT4WZMYR.js.map +0 -7
  831. package/dist/violin-2YGXTBDS.js +0 -46
  832. package/dist/violin.integration.spec-YWNHVAGS.js +0 -1425
  833. package/dist/violin.integration.spec-YWNHVAGS.js.map +0 -7
  834. package/dist/violin.interactivity-J6BE2UQL.js +0 -38
  835. package/dist/violin.renderer-3GRUWP2U.js +0 -40
  836. package/dist/vocabulary-2INCVPYJ.js +0 -41
  837. /package/dist/{2dmaf-R3PFZNRN.js.map → 2dmaf-RRV3ORZR.js.map} +0 -0
  838. /package/dist/{AIProjectAdmin-DM3KG6SR.js.map → AIProjectAdmin-DKLEFCGX.js.map} +0 -0
  839. /package/dist/{AppHeader-6DZQ6YZX.js.map → AppHeader-WQ2F7HZY.js.map} +0 -0
  840. /package/dist/{CorrelationVolcano-U5UMJNH5.js.map → CorrelationVolcano-HR6IP2SZ.js.map} +0 -0
  841. /package/dist/{DE-AXNYWIQK.js.map → DE-DAW6ZKM7.js.map} +0 -0
  842. /package/dist/{Disco-NVMLF3BK.js.map → Disco-QEBEVQS2.js.map} +0 -0
  843. /package/dist/{DmrPlot-WROR4ENM.js.map → DmrPlot-CWBQDZL7.js.map} +0 -0
  844. /package/dist/{GSEA-Y5R2THIJ.js.map → GSEA-6UKMI6GY.js.map} +0 -0
  845. /package/dist/{Geomap-J763OK2F.js.map → Geomap-ANMR32HE.js.map} +0 -0
  846. /package/dist/{HicApp-UNIJLH4B.js.map → HicApp-WHPUPHEM.js.map} +0 -0
  847. /package/dist/{NumBinaryEditor-WMN2GGO4.js.map → NumBinaryEditor-VG5KOGDA.js.map} +0 -0
  848. /package/dist/{NumBinaryEditor.unit.spec-TAMXV6SE.js.map → NumBinaryEditor.unit.spec-UCGFZS3P.js.map} +0 -0
  849. /package/dist/{NumContEditor-XYIOJY4E.js.map → NumContEditor-J52RON3G.js.map} +0 -0
  850. /package/dist/{NumContEditor.unit.spec-WDZ75BHO.js.map → NumContEditor.unit.spec-5GTWUJEL.js.map} +0 -0
  851. /package/dist/{NumCustomBinEditor-5SY3C4TY.js.map → NumCustomBinEditor-GM2OJMOX.js.map} +0 -0
  852. /package/dist/{NumCustomBinEditor.unit.spec-XHTAIXR3.js.map → NumCustomBinEditor.unit.spec-3PGJ25J4.js.map} +0 -0
  853. /package/dist/{NumDiscreteEditor-NRDRX4FD.js.map → NumDiscreteEditor-2CAKT3Y4.js.map} +0 -0
  854. /package/dist/{NumDiscreteEditor.unit.spec-2CJW7OAT.js.map → NumDiscreteEditor.unit.spec-XCWSJTRT.js.map} +0 -0
  855. /package/dist/{NumRegularBinEditor-DUDVTNDC.js.map → NumRegularBinEditor-CZYITY5L.js.map} +0 -0
  856. /package/dist/{NumRegularBinEditor.unit.spec-H3GNQHMN.js.map → NumRegularBinEditor.unit.spec-OUBZ5XB3.js.map} +0 -0
  857. /package/dist/{NumSplineEditor-7Q4AC7KH.js.map → NumSplineEditor-TWRL5AQQ.js.map} +0 -0
  858. /package/dist/{NumSplineEditor.unit.spec-YRZK5PH5.js.map → NumSplineEditor.unit.spec-5P6NQZ3N.js.map} +0 -0
  859. /package/dist/{NumericDensity-NTNWUESG.js.map → NumericDensity-JSOFOEH2.js.map} +0 -0
  860. /package/dist/{NumericDensity.unit.spec-5I5U6T6P.js.map → NumericDensity.unit.spec-REUKHMKK.js.map} +0 -0
  861. /package/dist/{NumericHandler-MEW2KMPX.js.map → NumericHandler-UZOGKPKB.js.map} +0 -0
  862. /package/dist/{NumericHandler.unit.spec-JFX4BPRG.js.map → NumericHandler.unit.spec-X2DAED4O.js.map} +0 -0
  863. /package/dist/{WSIViewer-ZLQU62PD.js.map → WSIViewer-UDA4WIRT.js.map} +0 -0
  864. /package/dist/{WsiSamplesPlot-JMBSITOM.js.map → WsiSamplesPlot-DYSFMD22.js.map} +0 -0
  865. /package/dist/{adSandbox-664IRCRL.js.map → adSandbox-5BUDCAER.js.map} +0 -0
  866. /package/dist/{app-63WJ3BMP.js.map → app-O64TGDFH.js.map} +0 -0
  867. /package/dist/{app-77FIZHCG.js.map → app-Y2STUISK.js.map} +0 -0
  868. /package/dist/{barchart-YUVXJNH4.js.map → barchart-UHCTYRMJ.js.map} +0 -0
  869. /package/dist/{barchart.data-P4EIQXGE.js.map → barchart.data-LSK2P2PR.js.map} +0 -0
  870. /package/dist/{barchart.events-JPVCLTIG.js.map → barchart.events-Y4H2GADS.js.map} +0 -0
  871. /package/dist/{barchart2-XO2FG76J.js.map → barchart2-VIZKZRMP.js.map} +0 -0
  872. /package/dist/{bars.renderer-AUIWUJDH.js.map → bars.renderer-54UCFLJS.js.map} +0 -0
  873. /package/dist/{block-NBTCOT3H.js.map → block-BGSSF6XP.js.map} +0 -0
  874. /package/dist/{block.init-X7Y2EEVR.js.map → block.init-H7RKUIHG.js.map} +0 -0
  875. /package/dist/{block.mds.expressionrank-BIAOZIZ3.js.map → block.mds.expressionrank-MA3HGT7S.js.map} +0 -0
  876. /package/dist/{block.mds.geneboxplot-CNICDVLK.js.map → block.mds.geneboxplot-CWT5DM5T.js.map} +0 -0
  877. /package/dist/{block.mds.junction-PQXCTSUI.js.map → block.mds.junction-P4I7O73X.js.map} +0 -0
  878. /package/dist/{block.mds.svcnv-32KMVTCT.js.map → block.mds.svcnv-NSPEY43S.js.map} +0 -0
  879. /package/dist/{block.svg-LRTOYQK2.js.map → block.svg-DP4G3LNQ.js.map} +0 -0
  880. /package/dist/{block.tk.aicheck-HDV7ZIUD.js.map → block.tk.aicheck-EBLTOWKZ.js.map} +0 -0
  881. /package/dist/{block.tk.ase-JIDWKMYI.js.map → block.tk.ase-X7WKQOFS.js.map} +0 -0
  882. /package/dist/{block.tk.bam-5X3OS5HB.js.map → block.tk.bam-OIP3TS3N.js.map} +0 -0
  883. /package/dist/{block.tk.bedgraphdot-T7JX7YQL.js.map → block.tk.bedgraphdot-2DDF55J3.js.map} +0 -0
  884. /package/dist/{block.tk.hicstraw-DEY3VQFK.js.map → block.tk.hicstraw-4OIG4TBZ.js.map} +0 -0
  885. /package/dist/{block.tk.junction-7UAFEZSJ.js.map → block.tk.junction-52OWEQUN.js.map} +0 -0
  886. /package/dist/{block.tk.junction.textmatrixui-27LHS33U.js.map → block.tk.junction.textmatrixui-64YOSZLW.js.map} +0 -0
  887. /package/dist/{block.tk.ld-DF2PI7OO.js.map → block.tk.ld-3AMNHBDY.js.map} +0 -0
  888. /package/dist/{block.tk.menu-L2D5KBIV.js.map → block.tk.menu-4724DJXL.js.map} +0 -0
  889. /package/dist/{block.tk.pgv-QO56SKBV.js.map → block.tk.pgv-2SIOPWYI.js.map} +0 -0
  890. /package/dist/{brainRegions-ZNZ2WHSU.js.map → brainRegions-HJ2VGL3L.js.map} +0 -0
  891. /package/dist/{chunk-T25QNZHB.js.map → chunk-26APRXD3.js.map} +0 -0
  892. /package/dist/{chunk-3XVVN66M.js.map → chunk-2KXLYFAO.js.map} +0 -0
  893. /package/dist/{chunk-PJKQUXEN.js.map → chunk-3BGFM7Q4.js.map} +0 -0
  894. /package/dist/{chunk-KLGL6XZD.js.map → chunk-4HZN6PMU.js.map} +0 -0
  895. /package/dist/{chunk-4IH7DORZ.js.map → chunk-5DMVORBB.js.map} +0 -0
  896. /package/dist/{chunk-QNHT74XC.js.map → chunk-5QMBB4SK.js.map} +0 -0
  897. /package/dist/{chunk-KYBIQBXE.js.map → chunk-5R63Q5KH.js.map} +0 -0
  898. /package/dist/{chunk-RKO6BL5N.js.map → chunk-6JYQGZ3Y.js.map} +0 -0
  899. /package/dist/{chunk-5ABGFJSP.js.map → chunk-6QCYT6G2.js.map} +0 -0
  900. /package/dist/{chunk-ZNEJUKJW.js.map → chunk-B4ESQLPB.js.map} +0 -0
  901. /package/dist/{chunk-UGRQXBL4.js.map → chunk-E3VF4RHJ.js.map} +0 -0
  902. /package/dist/{chunk-W3WPPOXH.js.map → chunk-EGPNRSPF.js.map} +0 -0
  903. /package/dist/{chunk-M2G5R4WB.js.map → chunk-FACITNG5.js.map} +0 -0
  904. /package/dist/{chunk-CTQ3IUCA.js.map → chunk-H3N4KYKL.js.map} +0 -0
  905. /package/dist/{chunk-ASATD4T7.js.map → chunk-H3VWJH4U.js.map} +0 -0
  906. /package/dist/{chunk-F5IXNJO7.js.map → chunk-HEVKBSN6.js.map} +0 -0
  907. /package/dist/{chunk-YQBS2ZCK.js.map → chunk-HQUYAZQY.js.map} +0 -0
  908. /package/dist/{chunk-37XDBPOP.js.map → chunk-J4USU73L.js.map} +0 -0
  909. /package/dist/{chunk-K5XPMCKP.js.map → chunk-JH73IL4C.js.map} +0 -0
  910. /package/dist/{chunk-4STKL6SR.js.map → chunk-KU7YH7MV.js.map} +0 -0
  911. /package/dist/{chunk-HLUZOZXJ.js.map → chunk-M66VDGSH.js.map} +0 -0
  912. /package/dist/{chunk-5AZNP47R.js.map → chunk-MJN6RDXB.js.map} +0 -0
  913. /package/dist/{chunk-U7TBYVIQ.js.map → chunk-MPNEZ6EL.js.map} +0 -0
  914. /package/dist/{chunk-LFCYMSVA.js.map → chunk-MPSLUEI4.js.map} +0 -0
  915. /package/dist/{chunk-ONPKE6DC.js.map → chunk-NIXFCC7X.js.map} +0 -0
  916. /package/dist/{chunk-7OHRR2IE.js.map → chunk-NODQZTWK.js.map} +0 -0
  917. /package/dist/{chunk-4DPVT4NE.js.map → chunk-NVTJ5AUT.js.map} +0 -0
  918. /package/dist/{chunk-E55LLYRX.js.map → chunk-OOWXMY7U.js.map} +0 -0
  919. /package/dist/{chunk-XPY6AWXO.js.map → chunk-OTTMHVYH.js.map} +0 -0
  920. /package/dist/{chunk-OMR2DT66.js.map → chunk-Q5RDQNIT.js.map} +0 -0
  921. /package/dist/{chunk-3EWB3246.js.map → chunk-QDX2XUNF.js.map} +0 -0
  922. /package/dist/{chunk-WZ2L57MB.js.map → chunk-ROMW4AK2.js.map} +0 -0
  923. /package/dist/{chunk-MCZFHWIR.js.map → chunk-RR5U35N7.js.map} +0 -0
  924. /package/dist/{chunk-GAPI4MML.js.map → chunk-RVKADD4L.js.map} +0 -0
  925. /package/dist/{chunk-33K5PA52.js.map → chunk-S5ZCK44Z.js.map} +0 -0
  926. /package/dist/{chunk-ZTHM2TKP.js.map → chunk-SNRIVNQ3.js.map} +0 -0
  927. /package/dist/{chunk-WFCSOTBO.js.map → chunk-TAM7UCAI.js.map} +0 -0
  928. /package/dist/{chunk-NSTL4MY2.js.map → chunk-UJELJXJG.js.map} +0 -0
  929. /package/dist/{chunk-L7IRWUKT.js.map → chunk-ULESDMUT.js.map} +0 -0
  930. /package/dist/{chunk-3RSKOPIY.js.map → chunk-W76X6W73.js.map} +0 -0
  931. /package/dist/{chunk-PFRWS4CR.js.map → chunk-W7OS7BNM.js.map} +0 -0
  932. /package/dist/{chunk-Q2L44HK3.js.map → chunk-WTTD6DUL.js.map} +0 -0
  933. /package/dist/{chunk-2GYWFQML.js.map → chunk-WXPFMVU6.js.map} +0 -0
  934. /package/dist/{chunk-BOZJHPJP.js.map → chunk-YBLTSYQV.js.map} +0 -0
  935. /package/dist/{condition-2PASYSUC.js.map → condition-L2IXP6WH.js.map} +0 -0
  936. /package/dist/{controls-5IMJ6K5L.js.map → controls-2S5QVWUC.js.map} +0 -0
  937. /package/dist/{controls.config-P5PG2DHW.js.map → controls.config-3AJKR4ZZ.js.map} +0 -0
  938. /package/dist/{correlation-U3EDLNHR.js.map → correlation-DXTAWSLU.js.map} +0 -0
  939. /package/dist/{cuminc.integration.spec-WFWAPTDA.js.map → cuminc.integration.spec-WAYRLHUH.js.map} +0 -0
  940. /package/dist/{customdata.inputui-ZHWNEPFH.js.map → customdata.inputui-7WH2NJGB.js.map} +0 -0
  941. /package/dist/{dataDownload-VBSJBKMP.js.map → dataDownload-HM4UYOBO.js.map} +0 -0
  942. /package/dist/{dataDownload.integration.spec-LUFSETOP.js.map → dataDownload.integration.spec-F5CO4BWA.js.map} +0 -0
  943. /package/dist/{dictionary-V37LXFIP.js.map → dictionary-EEPTFDYD.js.map} +0 -0
  944. /package/dist/{dnaMethylation-OIZMHMLK.js.map → dnaMethylation-N3WNK6XA.js.map} +0 -0
  945. /package/dist/{dofetch-IWPZQB5N.js.map → dofetch-YKYPEJTQ.js.map} +0 -0
  946. /package/dist/{e2pca-7SLIAGYW.js.map → e2pca-JEZIGVB2.js.map} +0 -0
  947. /package/dist/{ep-7L6KF6K4.js.map → ep-5FMH2MLV.js.map} +0 -0
  948. /package/dist/{expclust.gdc.spec-JT452Q3G.js.map → expclust.gdc.spec-FR26VSUA.js.map} +0 -0
  949. /package/dist/{gb-P4VRXRED.js.map → gb-WGEVO7L2.js.map} +0 -0
  950. /package/dist/{geneExpression-BHO5326K.js.map → geneExpression-5NWQXMJ3.js.map} +0 -0
  951. /package/dist/{geneExpression-ZMERB64E.js.map → geneExpression-VWUMM2LU.js.map} +0 -0
  952. /package/dist/{geneORA-FXVUCXGX.js.map → geneORA-3VWFWDYI.js.map} +0 -0
  953. /package/dist/{geneRanking-SFK4UBKQ.js.map → geneRanking-PKDVD5OD.js.map} +0 -0
  954. /package/dist/{geneVariant-IYEHB4H7.js.map → geneVariant-IFIJQXH4.js.map} +0 -0
  955. /package/dist/{geneVariant-LIRRLUFR.js.map → geneVariant-WZSOG4GI.js.map} +0 -0
  956. /package/dist/{geneVariant.integration.spec-Y2NPNTYX.js.map → geneVariant.integration.spec-6KQMWVHR.js.map} +0 -0
  957. /package/dist/{geneset-A6VUFX63.js.map → geneset-RJAULSKC.js.map} +0 -0
  958. /package/dist/{genomeBrowser.spec-CB4HHHBN.js.map → genomeBrowser.spec-42OTTMGO.js.map} +0 -0
  959. /package/dist/{grin2-FKBIMH5N.js.map → grin2-26O6YDDY.js.map} +0 -0
  960. /package/dist/{grin2-V36KLEBU.js.map → grin2-FT5BQJMB.js.map} +0 -0
  961. /package/dist/{hierCluster-QFPRMHVA.js.map → hierCluster-GJPPMFNR.js.map} +0 -0
  962. /package/dist/{hierCluster-YWC3XYPV.js.map → hierCluster-HMJF3PBE.js.map} +0 -0
  963. /package/dist/{hierCluster.config-F7YYZNM3.js.map → hierCluster.config-TAS7XKTU.js.map} +0 -0
  964. /package/dist/{hierCluster.interactivity-RPY74PK6.js.map → hierCluster.interactivity-IKTAJ6CU.js.map} +0 -0
  965. /package/dist/{hierCluster.renderers-LOKHZ3V2.js.map → hierCluster.renderers-I6WFZRNW.js.map} +0 -0
  966. /package/dist/{imagePlot-BBEXA754.js.map → imagePlot-N4OXNMVA.js.map} +0 -0
  967. /package/dist/{importPlot-7QGANZGK.js.map → importPlot-VMYXDP66.js.map} +0 -0
  968. /package/dist/{isoformExpression-4SLLCVFD.js.map → isoformExpression-2KV64KMN.js.map} +0 -0
  969. /package/dist/{launch.adhoc-LWLBQJS5.js.map → junction-VO4IGMW2.js.map} +0 -0
  970. /package/dist/{matrix-BGLWC25D.js.map → junction.customTerm-EFMHHVWA.js.map} +0 -0
  971. /package/dist/{matrix-IQR5SRMK.js.map → launch.adhoc-R3MO3VXK.js.map} +0 -0
  972. /package/dist/{legacyDataset-VLD7ZYWI.js.map → legacyDataset-4BXYHQTS.js.map} +0 -0
  973. /package/dist/{lollipop-XKQK5QZU.js.map → lollipop-XIVE4ANX.js.map} +0 -0
  974. /package/dist/{maf-AZQPPWDO.js.map → maf-WRHD4OJF.js.map} +0 -0
  975. /package/dist/{maftimeline-7MSVYKQU.js.map → maftimeline-IE6YKV7Y.js.map} +0 -0
  976. /package/dist/{matrix.cells-5C57NWOY.js.map → matrix-ALBCAZP5.js.map} +0 -0
  977. /package/dist/{matrix.config-2DQXAN2E.js.map → matrix-W72XRUZD.js.map} +0 -0
  978. /package/dist/{matrix.data-ADCGF5H6.js.map → matrix.cells-DEEUWC74.js.map} +0 -0
  979. /package/dist/{matrix.groups-V4ITQ5F7.js.map → matrix.config-JYXQOXDT.js.map} +0 -0
  980. /package/dist/{matrix.interactivity-JNELJFOV.js.map → matrix.data-ENXNM6RP.js.map} +0 -0
  981. /package/dist/{matrix.layout-WBVIV6GR.js.map → matrix.groups-EXSNNESB.js.map} +0 -0
  982. /package/dist/{matrix.integration.spec-IBNOO2WP.js.map → matrix.integration.spec-BW6U6PIW.js.map} +0 -0
  983. /package/dist/{matrix.legend-YHOWPK77.js.map → matrix.interactivity-G6AL566T.js.map} +0 -0
  984. /package/dist/{matrix.renderers-5BGVRR3M.js.map → matrix.layout-UBUPIJ3R.js.map} +0 -0
  985. /package/dist/{matrix.serieses-2GZJOASZ.js.map → matrix.legend-S3P4F2DG.js.map} +0 -0
  986. /package/dist/{matrix.sort-WKIWPJKP.js.map → matrix.renderers-IXFGXHJQ.js.map} +0 -0
  987. /package/dist/{matrix.sorterUi-TEJWWJ64.js.map → matrix.serieses-THHXUAPM.js.map} +0 -0
  988. /package/dist/{plot.app-MLBP6WFP.js.map → matrix.sort-WJV6LIZI.js.map} +0 -0
  989. /package/dist/{matrix.sort.unit.spec-L2E4D4AS.js.map → matrix.sort.unit.spec-LGMIL2LR.js.map} +0 -0
  990. /package/dist/{profilePlot-ZZYZK4SY.js.map → matrix.sorterUi-VXVCOKEZ.js.map} +0 -0
  991. /package/dist/{matrix.sorterUi.unit.spec-SHP7C4P7.js.map → matrix.sorterUi.unit.spec-CWSEJ62U.js.map} +0 -0
  992. /package/dist/{mavb-4MXNYUEO.js.map → mavb-SXGKASQ5.js.map} +0 -0
  993. /package/dist/{mds.fimo-WHIJIBOI.js.map → mds.fimo-EDOT3TDN.js.map} +0 -0
  994. /package/dist/{mds.samplescatterplot-BRJ6NG2D.js.map → mds.samplescatterplot-IXHNABKB.js.map} +0 -0
  995. /package/dist/{mds.survivalplot-OPCMB5PB.js.map → mds.survivalplot-KTTMHHII.js.map} +0 -0
  996. /package/dist/{numericDictTermCluster-7MIFOP2K.js.map → numericDictTermCluster-H4JSPW22.js.map} +0 -0
  997. /package/dist/{oncomatrix-BGG6BEUI.js.map → oncomatrix-O4EMNUOT.js.map} +0 -0
  998. /package/dist/{oncomatrix.spec-LYQ4L4F3.js.map → oncomatrix.spec-BME6CQWF.js.map} +0 -0
  999. /package/dist/{plot.2dvaf-6WVCP2ZI.js.map → plot.2dvaf-FDM4KXGT.js.map} +0 -0
  1000. /package/dist/{qualitative-MLRVLIAU.js.map → plot.app-UNUXG7ND.js.map} +0 -0
  1001. /package/dist/{plot.barplot-JEPRZSCU.js.map → plot.barplot-R333TMG2.js.map} +0 -0
  1002. /package/dist/{plot.boxplot-GNFW42VM.js.map → plot.boxplot-KQTYGUN3.js.map} +0 -0
  1003. /package/dist/{plot.brainImaging-5ACNSD45.js.map → plot.brainImaging-YBYMHCEG.js.map} +0 -0
  1004. /package/dist/{plot.disco-Q2V2KKIH.js.map → plot.disco-CMDKRSOM.js.map} +0 -0
  1005. /package/dist/{plot.dzi-KVT6S7K7.js.map → plot.dzi-YAZA6RQS.js.map} +0 -0
  1006. /package/dist/{plot.ssgq-4N3KFJQ2.js.map → plot.ssgq-YKCOEXZP.js.map} +0 -0
  1007. /package/dist/{plot.vaf2cov-ITRG5U43.js.map → plot.vaf2cov-3TLMTFZS.js.map} +0 -0
  1008. /package/dist/{plot.wsi-26YZNU4V.js.map → plot.wsi-7ADVYTQS.js.map} +0 -0
  1009. /package/dist/{regression-WMRPQJW2.js.map → profilePlot-AP52VLLO.js.map} +0 -0
  1010. /package/dist/{regression.inputs-VWZKSYNY.js.map → pseudobulk-7UKRLKQI.js.map} +0 -0
  1011. /package/dist/{regression.inputs.term-OWE6GWHM.js.map → qualitative-2D7MC4V5.js.map} +0 -0
  1012. /package/dist/{regression.inputs.values.table-4INNZQI2.js.map → regression-CE54AQMY.js.map} +0 -0
  1013. /package/dist/{regression.results-VZBYMBYC.js.map → regression.inputs-SMC5CNPY.js.map} +0 -0
  1014. /package/dist/{render-N5FOF247.js.map → regression.inputs.term-XS54IQC2.js.map} +0 -0
  1015. /package/dist/{sampleView-ICOT2R6O.js.map → regression.inputs.values.table-LNPM3MX5.js.map} +0 -0
  1016. /package/dist/{regression.integration.spec-XKQ2JOOT.js.map → regression.integration.spec-6QSMYPWJ.js.map} +0 -0
  1017. /package/dist/{singleCellCellType-D2CN2BHQ.js.map → regression.results-25ZRRDEE.js.map} +0 -0
  1018. /package/dist/{regression.spec-DU3UTDCJ.js.map → regression.spec-EDWHFRPY.js.map} +0 -0
  1019. /package/dist/{singleCellGeneExpression-YR2ZT34W.js.map → render-SEB6GFXQ.js.map} +0 -0
  1020. /package/dist/{report-DW3OHB67.js.map → report-U6L3KBYG.js.map} +0 -0
  1021. /package/dist/{singleCellPlot-3ICIOILE.js.map → sampleView-QAAJ26KT.js.map} +0 -0
  1022. /package/dist/{samplelst-TJEVASYG.js.map → samplelst-KYRXJSZN.js.map} +0 -0
  1023. /package/dist/{samplematrix-6DAWCXQ3.js.map → samplematrix-STLF2QA5.js.map} +0 -0
  1024. /package/dist/{sc-53LNOB7N.js.map → sc-HL6YSMDX.js.map} +0 -0
  1025. /package/dist/{scatter-DKYSS4DL.js.map → scatter-BSGDMOC2.js.map} +0 -0
  1026. /package/dist/{selectGenomeWithTklst-WTX66TV3.js.map → selectGenomeWithTklst-4NHQDTE6.js.map} +0 -0
  1027. /package/dist/{snp-VIURB7L3.js.map → singleCellCellType-3E2IU42J.js.map} +0 -0
  1028. /package/dist/{ssGSEA-THW4WFMI.js.map → singleCellGeneExpression-53UUGYTK.js.map} +0 -0
  1029. /package/dist/{summarizeMutationDiagnosis-AKFJDSAF.js.map → singleCellPlot-JDSARDRV.js.map} +0 -0
  1030. /package/dist/{singlecell-KX7W4U57.js.map → singlecell-IJR7BJYT.js.map} +0 -0
  1031. /package/dist/{singlecell-6ZUFA3BQ.js.map → singlecell-OK6GJFWL.js.map} +0 -0
  1032. /package/dist/{summary-A5P7AYK4.js.map → snp-H4KJEEOE.js.map} +0 -0
  1033. /package/dist/{snp.unit.spec-ACZNZUNS.js.map → snp.unit.spec-2Y4A3XYI.js.map} +0 -0
  1034. /package/dist/{snplocus-3LW4ZUZR.js.map → snplocus-4GG6VTWX.js.map} +0 -0
  1035. /package/dist/{spliceevent.a53ss.diagram-AKTZGWNM.js.map → spliceevent.a53ss.diagram-JZNRC5UC.js.map} +0 -0
  1036. /package/dist/{spliceevent.exonskip.diagram-XZHXB77R.js.map → spliceevent.exonskip.diagram-H54N7ZKY.js.map} +0 -0
  1037. /package/dist/{spliceevent.noeventdiagram-YTXWWNTJ.js.map → spliceevent.noeventdiagram-II753XAK.js.map} +0 -0
  1038. /package/dist/{survival-QNEI6YVK.js.map → ssGSEA-JPJ3C4JI.js.map} +0 -0
  1039. /package/dist/{ssGSEA.unit.spec-HTRGQI2K.js.map → ssGSEA.unit.spec-45F5OCDK.js.map} +0 -0
  1040. /package/dist/{summarizeCnvGeneexp-RFYC3H2Z.js.map → summarizeCnvGeneexp-55DNXHXA.js.map} +0 -0
  1041. /package/dist/{summarizeMutationCnv-7AYEMHAI.js.map → summarizeMutationCnv-QX7BADYL.js.map} +0 -0
  1042. /package/dist/{termCollection-CDF5LYUG.js.map → summarizeMutationDiagnosis-MHFM7RX6.js.map} +0 -0
  1043. /package/dist/{summarizeMutationSurvival-QJHZRQBZ.js.map → summarizeMutationSurvival-G4KHSUBN.js.map} +0 -0
  1044. /package/dist/{tk-OEQFO73V.js.map → summary-PJYRCQNY.js.map} +0 -0
  1045. /package/dist/{summary.integration.spec-HQISXGNL.js.map → summary.integration.spec-KPKROD6L.js.map} +0 -0
  1046. /package/dist/{sunburst-65LSYRXX.js.map → sunburst-IGIV2RBE.js.map} +0 -0
  1047. /package/dist/{survival-UI74VXSM.js.map → survival-DINCIWW7.js.map} +0 -0
  1048. /package/dist/{svgraph-PSX2NER3.js.map → svgraph-EUEZWGVR.js.map} +0 -0
  1049. /package/dist/{svmr-QDQ33EFX.js.map → svmr-B24LODSC.js.map} +0 -0
  1050. /package/dist/{table-LWAI27UO.js.map → table-XSJJ3UZV.js.map} +0 -0
  1051. /package/dist/{toggleButtons-YK7TIFF2.js.map → termCollection-IAB3425K.js.map} +0 -0
  1052. /package/dist/{tvs.density-3XJ6DBGO.js.map → termCollectionFractionSelection-35YKAOUY.js.map} +0 -0
  1053. /package/dist/{tvs.dt-CZDC4TSR.js.map → tk-25EJJDRK.js.map} +0 -0
  1054. /package/dist/{tp.ui-SHNERDGC.js.map → tp.ui-VGA62NFM.js.map} +0 -0
  1055. /package/dist/{tvs.numeric-TOEPASWN.js.map → tvs.density-G56327WY.js.map} +0 -0
  1056. /package/dist/{violin-2YGXTBDS.js.map → tvs.dt-DFW36WKO.js.map} +0 -0
  1057. /package/dist/{tvs.dtcnv.categorical-OPBDHZGB.js.map → tvs.dtcnv.categorical-ZP33EO3A.js.map} +0 -0
  1058. /package/dist/{tvs.dtcnv.continuous-AR6P4EP3.js.map → tvs.dtcnv.continuous-FJTMQF4J.js.map} +0 -0
  1059. /package/dist/{tvs.dtfusion-2YQ7N6FQ.js.map → tvs.dtfusion-FTDQWNKM.js.map} +0 -0
  1060. /package/dist/{tvs.dtitd-ATCHW735.js.map → tvs.dtitd-W5VEECJ2.js.map} +0 -0
  1061. /package/dist/{tvs.dtsnvindel-WHHWAATJ.js.map → tvs.dtsnvindel-UOXSLCDZ.js.map} +0 -0
  1062. /package/dist/{tvs.dtsv-3UMCW65O.js.map → tvs.dtsv-HWCPRVBO.js.map} +0 -0
  1063. /package/dist/{violin.interactivity-J6BE2UQL.js.map → tvs.numeric-7TGKWQYU.js.map} +0 -0
  1064. /package/dist/{tvs.samplelst-M7XKXRTZ.js.map → tvs.samplelst-OWD22ITS.js.map} +0 -0
  1065. /package/dist/{violin.renderer-3GRUWP2U.js.map → violin-2IAVZGFF.js.map} +0 -0
  1066. /package/dist/{vocabulary-2INCVPYJ.js.map → violin.interactivity-STOCZMVN.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/gb/model/Model.ts", "../plots/gb/trackLst.ts", "../plots/gb/interactions/Interactions.ts", "../plots/gb/view/TabsRenderer.ts", "../plots/gb/view/GeneSearchRenderer.ts", "../plots/gb/view/View.ts", "../plots/gb/GB.ts"],
4
+ "sourcesContent": ["import { dofetch3 } from '#common/dofetch'\n\nexport class Model {\n\tstate: any\n\tapp: any\n\tconstructor(state, app) {\n\t\tthis.state = state\n\t\tthis.app = app\n\t}\n\n\tasync preComputeData() {\n\t\t// precompute variant data that will be displayed on track\n\n\t\tif (\n\t\t\t!this.state.config.geneSearchResult ||\n\t\t\t!this.state.config.snvindel?.shown ||\n\t\t\t!this.state.config.snvindel?.details\n\t\t)\n\t\t\treturn\n\n\t\t// state.config.snvindel.details{} contains analysis details, cohorts, and compute methods\n\t\t// send to backend to compute and get results back\n\n\t\tconst body = {\n\t\t\tgenome: this.app.opts.state.vocab.genome,\n\t\t\tdslabel: this.app.opts.state.vocab.dslabel,\n\t\t\tfor: 'mds3variantData',\n\t\t\tchr: this.state.config.geneSearchResult.chr,\n\t\t\tstart: this.state.config.geneSearchResult.start,\n\t\t\tstop: this.state.config.geneSearchResult.stop,\n\t\t\tdetails: this.state.config.snvindel.details,\n\t\t\tfilter: this.state.filter,\n\t\t\tfilter0: this.state.filter0,\n\t\t\tvariantFilter: this.state.config.variantFilter?.filter\n\t\t}\n\n\t\t// using dofetch prevents the app from working with custom dataset; may change to vocab method later\n\n\t\tconst data = await dofetch3('termdb', { body })\n\t\tif (data.error) throw data.error\n\n\t\treturn data\n\t}\n}\n", "export function sanitizeTrackLstConfig(config) {\n\tif (!config.trackLst?.facets) return\n\tfor (const facet of config.trackLst.facets) delete facet.tracks\n}\n", "import type { MassAppApi } from '#mass/types/mass'\nimport { getNormalRoot } from '#filter'\nimport { sanitizeTrackLstConfig } from '../trackLst.ts'\n\nexport class Interactions {\n\tapp: MassAppApi\n\tdom: any\n\tid: string\n\tfacetTrackNames = new Set<string>()\n\tconstructor(app: MassAppApi, dom: any, id: string) {\n\t\tthis.app = app\n\t\tthis.dom = dom\n\t\tthis.id = id\n\t}\n\n\tsetFacetTrackNames(names: Set<string>) {\n\t\tthis.facetTrackNames = names\n\t}\n\n\tonCoordinateChange = (rglst, blockInstance?) => {\n\t\tif (!rglst?.length) return\n\t\tconst config: any = {\n\t\t\tgeneSearchResult: { chr: rglst[0].chr, start: rglst[0].start, stop: rglst[0].stop }\n\t\t}\n\t\tconst block = getBlockState(blockInstance, rglst)\n\t\tif (block) config.block = block\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig\n\t\t})\n\t}\n\n\tonGeneSearch = (result, blockIsProteinMode) => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: {\n\t\t\t\tgeneSearchResult: result,\n\t\t\t\tblockIsProteinMode,\n\t\t\t\tblock: { rglst: [] }\n\t\t\t}\n\t\t})\n\t}\n\n\t// copied from \"GB.ts\", should try to inherit it instead\n\tgetState(appState) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tif (!config) throw `No plot with id='${this.id}' found`\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilter: getNormalRoot(appState.termfilter.filter),\n\t\t\tvocab: appState.vocab\n\t\t}\n\t}\n\n\tmaySaveTrackUpdatesToState = blockInstance => {\n\t\t/* following changes will be saved in state:\n\t\t- when a mds3 subtk is created/updated, its tk.filterObj should be saved to state so it can be recovered from session\n\t\t- a facet track is removed by user via block ui */\n\t\tif (!blockInstance) return\n\t\t// since maySaveTrackUpdatesToState() is used as callback in block.js,\n\t\t// this.state.config will become stale; therefore need to regenerate\n\t\t// live plot state\n\t\tconst state = this.getState(this.app.getState())\n\t\tconst config = structuredClone(state.config)\n\t\tsanitizeTrackLstConfig(config)\n\t\tconfig.subMds3Tks = []\n\t\tfor (const t of blockInstance.tklst) {\n\t\t\tif (t.type == 'mds3' && t.filterObj) {\n\t\t\t\tconst mclassHiddenValues = t.legend?.mclass?.hiddenvalues\n\t\t\t\tif (!t.subtk) {\n\t\t\t\t\t// \"main\" track\n\t\t\t\t\tif (mclassHiddenValues) {\n\t\t\t\t\t\t// track has hidden mclass values, store in config root\n\t\t\t\t\t\tconfig.mclassHiddenValues = [...mclassHiddenValues]\n\t\t\t\t\t}\n\t\t\t\t\t// do not add this track to subMds3Tks[], as it would cause an issue of auto-creating unwanted subtk on global filter change\n\t\t\t\t\tcontinue\n\t\t\t\t} else {\n\t\t\t\t\t// sub track\n\t\t\t\t\tconst subtk: any = { filterObj: t.filterObj }\n\t\t\t\t\tif (mclassHiddenValues) {\n\t\t\t\t\t\t// track has hidden mclass values, store in subtk obj\n\t\t\t\t\t\tsubtk.mclassHiddenValues = [...mclassHiddenValues]\n\t\t\t\t\t}\n\t\t\t\t\tconfig.subMds3Tks.push(subtk)\n\t\t\t\t\t// filter0?\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tlet facetActiveTracksChanged = false\n\t\tif (config.trackLst?.activeTracks && this.facetTrackNames.size) {\n\t\t\t// active facet tracks are inuse; if user deletes such tracks from block ui, remove from activeTracks\n\t\t\tconst newLst = config.trackLst.activeTracks.filter(n => blockInstance.tklst.find(i => i.name == n))\n\t\t\t// if user re-adds a facet track from block ui (e.g. block.tk.menu), add it back to activeTracks\n\t\t\tfor (const t of blockInstance.tklst) {\n\t\t\t\tif (t.name && this.facetTrackNames.has(t.name) && !newLst.includes(t.name)) {\n\t\t\t\t\tnewLst.push(t.name)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (\n\t\t\t\tnewLst.length != config.trackLst.activeTracks.length ||\n\t\t\t\tnewLst.some(n => !config.trackLst.activeTracks.includes(n))\n\t\t\t) {\n\t\t\t\tfacetActiveTracksChanged = true\n\t\t\t}\n\t\t\tconfig.trackLst.activeTracks = newLst\n\t\t}\n\t\tif (facetActiveTracksChanged) {\n\t\t\t// a facet track was added or removed via block ui (e.g. block.tk.menu);\n\t\t\t// must dispatch so the facet table ui re-renders to reflect the change\n\t\t\tthis.app.dispatch({\n\t\t\t\ttype: 'plot_edit',\n\t\t\t\tid: this.id,\n\t\t\t\tconfig\n\t\t\t})\n\t\t} else {\n\t\t\tthis.app.save({\n\t\t\t\ttype: 'plot_edit',\n\t\t\t\tid: this.id,\n\t\t\t\tconfig\n\t\t\t})\n\t\t}\n\t}\n\n\tlaunchFacet = config => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig\n\t\t})\n\t}\n\n\tlaunchVariantTrack = toDisplay => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { snvindel: { shown: toDisplay } }\n\t\t})\n\t}\n\n\tlaunchLdTrack = tracks => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { ld: { tracks } }\n\t\t})\n\t}\n\n\tlaunchJunctionTrack = shown => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { junction: { shown } }\n\t\t})\n\t}\n\n\tlaunchGroupsFilter = groups => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { snvindel: { details: { groups } } }\n\t\t})\n\t}\n\n\tlaunchSnvIndelDetails = details => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { snvindel: { details } }\n\t\t})\n\t}\n\n\tlaunchVariantFilter = filter => {\n\t\tthis.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { variantFilter: { filter } }\n\t\t})\n\t}\n}\n\nexport function getBlockState(blockInstance, rglst) {\n\tconst blockRglst = cloneRglst(blockInstance?.rglst || rglst)\n\tif (!blockRglst?.length) return null\n\tconst block: any = { rglst: blockRglst }\n\tfor (const key of ['startidx', 'stopidx', 'regionspace', 'gmmode']) {\n\t\tconst value = blockInstance?.[key]\n\t\tif (value !== undefined) block[key] = value\n\t}\n\tif (blockInstance?.coord?.reverse !== undefined) block.coordReverse = blockInstance.coord.reverse\n\treturn block\n}\n\nfunction cloneRglst(rglst) {\n\tif (!Array.isArray(rglst)) return null\n\treturn rglst.map(r => {\n\t\tconst r2: any = {\n\t\t\tchr: r.chr,\n\t\t\tstart: r.start,\n\t\t\tstop: r.stop\n\t\t}\n\t\tfor (const key of ['bstart', 'bstop', 'width', 'reverse', 'name']) {\n\t\t\tif (r[key] !== undefined) r2[key] = r[key]\n\t\t}\n\t\treturn r2\n\t})\n}\n\nexport function mayUpdateGroupTestMethodsIdx(state, d) {\n\tif (d.groups.length != 2) return // not two groups, no need to update test method\n\t// depending on types of two groups, may need to update test method\n\tconst [g1, g2] = d.groups\n\tif (g1.type == 'info' || g2.type == 'info' || (g1.type == 'population' && g2.type == 'population')) {\n\t\t// if any group is INFO, or both are population, can only allow value difference and not fisher test\n\t\tconst i = state.config.snvindel.details.groupTestMethods.findIndex(i => i.name == 'Allele frequency difference')\n\t\tif (i == -1) throw 'Allele frequency difference not found'\n\t\td.groupTestMethodsIdx = i\n\t} else {\n\t\t// otherwise, do not change existing method idx\n\t}\n}\n", "import { Tabs, make_one_checkbox, renderTable } from '#dom'\nimport { filterInit } from '#filter'\nimport { mayUpdateGroupTestMethodsIdx } from '../interactions/Interactions.ts'\nimport { appInit } from '#termdb/app'\n\nexport class TabsRenderer {\n\tstate: any\n\tdom: any\n\topts: any\n\tinteractions: any\n\ttabs: any\n\tfilterUI: any\n\tfacetData: any[]\n\tconstructor(state, dom, opts, interactions, facetData: any[] = []) {\n\t\tthis.state = state\n\t\tthis.dom = dom\n\t\tthis.opts = opts\n\t\tthis.interactions = interactions\n\t\tthis.filterUI = {}\n\t\tthis.facetData = facetData\n\t}\n\n\tasync main() {\n\t\t// Preserve the currently active tab label before clearing\n\t\tlet previousActiveTabLabel: string | null = null\n\t\tconst existingActiveButton = this.dom.tabsDiv.select('button.sjpp-active')\n\t\tif (!existingActiveButton.empty()) {\n\t\t\tpreviousActiveTabLabel = existingActiveButton.datum()?.label ?? null\n\t\t}\n\n\t\tthis.dom.tabsDiv.selectAll('*').remove()\n\t\tthis.getTabs()\n\n\t\t// Restore the active tab if it still exists in the new tabs array\n\t\tif (previousActiveTabLabel) {\n\t\t\tconst matchingTab = this.tabs.find(tab => tab.label === previousActiveTabLabel)\n\t\t\tif (matchingTab) {\n\t\t\t\t// Clear active state from all tabs first\n\t\t\t\tthis.tabs.forEach(tab => (tab.active = false))\n\t\t\t\t// Set the preserved tab as active\n\t\t\t\tmatchingTab.active = true\n\t\t\t}\n\t\t}\n\n\t\tawait this.mayRenderTabs()\n\t}\n\n\tgetTabs() {\n\t\tconst tabs: any[] = []\n\t\t/* based on ds configuration and data/query type availability, \n get list of tabs corresponding to different functionalities of the genome browser\n due to constrain of how tab works, must generate tab array first, call `new Tabs` to initiate holder for each tab\n then render contents into each holder for each tab\n thus has to duplicate the logic for computing tabs\n */\n\n\t\tif (this.state.config.trackLst?.facets) {\n\t\t\t// one tab for each facet table\n\t\t\t// quick fix to hardcode showing facet table as first tab. allow customization later\n\t\t\tconst activeTracks = this.state.config.trackLst.activeTracks\n\t\t\tfor (const facet of this.facetData) {\n\t\t\t\tconst shown = facet.tracks?.some(t => activeTracks.includes(t.name))\n\t\t\t\ttabs.push({ label: facet.name || 'Facet Table', active: shown })\n\t\t\t}\n\t\t}\n\n\t\tif (this.state.config.snvindel) {\n\t\t\tconst shown = this.state.config.snvindel.shown\n\t\t\t// has snvindel. some logic to decide if show tab for it\n\t\t\tif (this.state.config.snvindel.details) {\n\t\t\t\t// has details for data precomputing, must show tab in order to generate contents\n\t\t\t\ttabs.push({ label: 'Mutation', active: shown })\n\n\t\t\t\tif (this.state.config.variantFilter) {\n\t\t\t\t\t// for now, this filter only works with snvindel.details\n\t\t\t\t\ttabs.push({ label: 'Variant Filter' })\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// no computing detail.\n\t\t\t\tif (this.state.config.trackLst || this.state.config.junction) {\n\t\t\t\t\t// When other track types are available, show a mutation tab to toggle the mds3 track.\n\t\t\t\t\ttabs.push({ label: 'Mutation', active: shown })\n\t\t\t\t} else {\n\t\t\t\t\t// do not add tab, to avoid showing a lone snvindel tab\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state.config.junction) {\n\t\t\ttabs.push({ label: 'Splice junction', active: this.state.config.junction.shown })\n\t\t}\n\t\tif (this.state.config.ld) {\n\t\t\tconst shown = this.state.config.ld.tracks.some(t => t.shown)\n\t\t\ttabs.push({ label: 'LD Map', active: shown })\n\t\t}\n\t\tthis.tabs = tabs\n\t}\n\n\tasync mayRenderTabs() {\n\t\tconst tabs = this.tabs\n\t\tif (!tabs?.length) return\n\t\t// has some tabs! initiate the tab ui, then at <div> of each tab, render contents\n\t\tconst toggles = new Tabs({\n\t\t\tholder: this.dom.tabsDiv.append('div').style('border-bottom', 'solid 1px #ccc').style('padding-bottom', '20px'),\n\t\t\ttabs,\n\t\t\thideOnDblClick: true\n\t\t})\n\t\ttoggles.main()\n\n\t\t////////////////////////////////////\n\t\t//\n\t\t// must repeat tab-computing logic in exact order above!! otherwise out of sync\n\t\t// after filling contents for each tab, advance index value of tabsIdx\n\t\t//\n\t\t////////////////////////////////////\n\t\tlet tabsIdx = 0\n\n\t\tif (this.state.config.trackLst?.facets) {\n\t\t\t// (above) quick fix to hardcode showing facet table as first tab. allow customization later\n\t\t\tfor (const facet of this.facetData) {\n\t\t\t\tconst div = tabs[tabsIdx++].contentHolder.append('div')\n\t\t\t\tthis.renderFacetTable(facet, div)\n\t\t\t}\n\t\t}\n\n\t\tif (this.state.config.snvindel) {\n\t\t\tif (this.state.config.snvindel.details) {\n\t\t\t\tconst div = tabs[tabsIdx++].contentHolder.append('div')\n\t\t\t\t// hardcode to 2 groups used by this.state.config.snvindel.details.groups[]\n\t\t\t\tthis.dom.group1div = div.append('div').attr('class', 'sjpp-gb-group1')\n\t\t\t\tthis.dom.group2div = div.append('div').attr('class', 'sjpp-gb-group2')\n\t\t\t\tthis.dom.testMethodDiv = div.append('div').style('margin-top', '3px')\n\t\t\t\tawait this.mayRenderGroups()\n\n\t\t\t\tif (this.state.config.variantFilter) {\n\t\t\t\t\t// the whole holder has white-space=nowrap (likely from sjpp-output-sandbox-content)\n\t\t\t\t\t// must set white-space=normal to let INFO filter wrap and not to extend beyond holder\n\t\t\t\t\tthis.dom.variantFilterHolder = tabs[tabsIdx++].contentHolder.append('div').style('white-space', 'normal')\n\t\t\t\t\tthis.mayRenderVariantFilter()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (this.state.config.trackLst || this.state.config.junction) {\n\t\t\t\t\t// snvindel show/hide toggling\n\t\t\t\t\tconst div = tabs[tabsIdx++].contentHolder.append('div')\n\t\t\t\t\tmake_one_checkbox({\n\t\t\t\t\t\tlabeltext: 'Show mutation track',\n\t\t\t\t\t\tchecked: this.state.config.snvindel.shown,\n\t\t\t\t\t\tholder: div,\n\t\t\t\t\t\tcallback: this.interactions.launchVariantTrack\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state.config.junction) {\n\t\t\tconst div = tabs[tabsIdx++].contentHolder.append('div')\n\t\t\tmake_one_checkbox({\n\t\t\t\tlabeltext: 'Show splice junction track',\n\t\t\t\tchecked: this.state.config.junction.shown,\n\t\t\t\tholder: div,\n\t\t\t\tcallback: this.interactions.launchJunctionTrack\n\t\t\t})\n\t\t}\n\t\tif (this.state.config.ld) {\n\t\t\t/* tricky: duplicate ld.tracks[] and scope it here, to pass to dispatch\n somehow, this doesn't work for dispatch\n config: {\n ld: {\n tracks: {\n [i]: {shown}\n }\n }\n }\n */\n\t\t\tconst tracks = structuredClone(this.state.config.ld.tracks)\n\n\t\t\tconst div = tabs[tabsIdx++].contentHolder.append('div')\n\t\t\tdiv.append('div').text('Show/hide linkage disequilibrium map from an ancestry:').style('opacity', 0.5)\n\t\t\tfor (const [i, t] of tracks.entries()) {\n\t\t\t\tmake_one_checkbox({\n\t\t\t\t\tlabeltext: t.name,\n\t\t\t\t\tchecked: t.shown,\n\t\t\t\t\tholder: div,\n\t\t\t\t\tcallback: checked => {\n\t\t\t\t\t\ttracks[i].shown = checked\n\t\t\t\t\t\tthis.interactions.launchLdTrack(tracks)\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\t}\n\n\trenderFacetTable(facet, div) {\n\t\t/* facet.tracks[] each is {name/assay/sample}\n layout a table with assay for columns, sample for rows, cells are tracks\n */\n\t\tif (!facet.tracks?.length) {\n\t\t\tdiv.append('div').style('opacity', 0.7).style('margin', '8px 0px').text('No tracks match the current filter.')\n\t\t\treturn\n\t\t}\n\t\tconst assayset = new Set<string>(),\n\t\t\tsampleset = new Set<string>()\n\t\tfor (const t of facet.tracks) {\n\t\t\tif (t.assay) assayset.add(t.assay)\n\t\t\tif (t.sample) sampleset.add(t.sample)\n\t\t}\n\n\t\tconst sampleLst = [...sampleset]\n\t\tconst assayLst = [...assayset] // TODO facet hardcodes assay order\n\n\t\t// TODO click on row/column header to batch operate\n\n\t\tconst facetTwLst: any[] = []\n\t\tfor (const tw of [this.state.config.facetTw1, this.state.config.facetTw2, this.state.config.facetTw3]) {\n\t\t\tif (!tw) break\n\t\t\tfacetTwLst.push(tw)\n\t\t}\n\t\tconst columns: any = [{ label: 'Sample', headerTestId: 'sjpp-gb-facettable-sample-columnheader' }] // TODO use ds sample type\n\t\tfor (const tw of facetTwLst) {\n\t\t\tcolumns.push({\n\t\t\t\tlabel: tw.term?.name || tw.term?.id || tw.id,\n\t\t\t\theaderTestId: 'sjpp-gb-facettable-tw-columnheader',\n\t\t\t\tfillCell: (td, si) => {\n\t\t\t\t\tconst sample = sampleLst[si]\n\t\t\t\t\tconst annotation = facet.samples?.[sample]?.[tw.$id]\n\t\t\t\t\tif (annotation !== undefined) td.text(annotation)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tfor (const assay of assayLst) {\n\t\t\tcolumns.push({\n\t\t\t\tlabel: assay,\n\t\t\t\theaderTestId: 'sjpp-gb-facettable-assay-columnheader',\n\t\t\t\tlabelVertical: true,\n\t\t\t\tfillCell: (td, si) => {\n\t\t\t\t\t// \"si\" index of sample/rows[]; find tracks belonging to this assay+sample combo\n\t\t\t\t\tconst tklst = facet.tracks.filter(i => i.assay == assay && i.sample == sampleLst[si])\n\t\t\t\t\tif (tklst.length == 0) return // no tracks for this combo\n\t\t\t\t\t// has track(s) for this combo; render <div> in table cell; click to launch tracks\n\t\t\t\t\t// Count how many tracks are currently shown\n\t\t\t\t\tconst shownCount = tklst.filter(tk => this.state.config.trackLst.activeTracks.includes(tk.name)).length\n\t\t\t\t\tconst displayText = shownCount ? `${shownCount}/${tklst.length}` : `${tklst.length}`\n\t\t\t\t\ttd.append('div')\n\t\t\t\t\t\t.attr('class', 'sja_clbtext')\n\t\t\t\t\t\t.style('text-align', 'center')\n\t\t\t\t\t\t.text(displayText)\n\t\t\t\t\t\t.on('click', event => {\n\t\t\t\t\t\t\tthis.clickFacetCell(event, tklst)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tconst rows: any[] = []\n\t\tfor (const sample of sampleLst) {\n\t\t\t// 1st column is sample name\n\t\t\t// TODO may link sample to sampleview\n\t\t\tconst row: any[] = [{ value: sample }]\n\t\t\tfor (let i = 0; i < facetTwLst.length; i++) {\n\t\t\t\trow.push({})\n\t\t\t}\n\t\t\t// one blank cell for each assay\n\t\t\tfor (let i = 0; i < assayLst.length; i++) {\n\t\t\t\trow.push({})\n\t\t\t}\n\t\t\trows.push(row)\n\t\t}\n\t\trenderTable({\n\t\t\tcolumns,\n\t\t\trows,\n\t\t\tdiv\n\t\t})\n\t}\n\n\tclickFacetCell(event, tklst) {\n\t\tthis.dom.tip.clear().showunder(event.target)\n\t\tconst activeTracks = this.getLatestActiveTracks() || this.state.config.trackLst.activeTracks\n\t\tconst table = this.dom.tip.d.append('table').style('margin', '5px 5px 5px 2px')\n\t\tfor (const tk of tklst) {\n\t\t\tconst tr = table.append('tr')\n\t\t\tconst td1 = tr\n\t\t\t\t.append('td')\n\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t.text(activeTracks.includes(tk.name) ? 'SHOWN' : '')\n\t\t\ttr.append('td')\n\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t.text(tk.name)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tconst currentActiveTracks = this.getLatestActiveTracks() || activeTracks\n\t\t\t\t\tlet newActiveTracks, newRemoveTracks\n\t\t\t\t\tif (currentActiveTracks.includes(tk.name)) {\n\t\t\t\t\t\ttd1.text('')\n\t\t\t\t\t\tnewActiveTracks = structuredClone(currentActiveTracks).filter(n => n != tk.name)\n\t\t\t\t\t\tnewRemoveTracks = [tk.name]\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttd1.text('SHOWN')\n\t\t\t\t\t\tnewActiveTracks = [...new Set([...currentActiveTracks, tk.name])]\n\t\t\t\t\t\tnewRemoveTracks = []\n\t\t\t\t\t}\n\t\t\t\t\tconst config = {\n\t\t\t\t\t\ttrackLst: {\n\t\t\t\t\t\t\tactiveTracks: newActiveTracks,\n\t\t\t\t\t\t\tremoveTracks: newRemoveTracks\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.interactions.launchFacet(config)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tgetLatestActiveTracks() {\n\t\tconst config = this.interactions.app.getState().plots.find(p => p.id === this.interactions.id)\n\t\treturn config?.trackLst?.activeTracks\n\t}\n\n\tasync mayRenderGroups() {\n\t\tconst groups = this.state.config.snvindel.details.groups\n\t\tif (!groups) return\n\n\t\t// is equipped with comparison groups, render group ui\n\t\tawait this.render1group(0)\n\t\tawait this.render1group(1)\n\n\t\tif (this.state.config.snvindel.details.groupTestMethods) {\n\t\t\t// render the test method\n\t\t\tthis.renderTestMethod()\n\t\t}\n\t}\n\n\tmayRenderVariantFilter() {\n\t\tif (this.state.config.variantFilter) {\n\t\t\tthis.dom.variantFilterHolder.selectAll('*').remove()\n\t\t\tfilterInit({\n\t\t\t\tjoinWith: this.state.config.variantFilter.opts.joinWith,\n\t\t\t\temptyLabel: '+Add Filter',\n\t\t\t\tholder: this.dom.variantFilterHolder,\n\t\t\t\tvocab: { terms: this.state.config.variantFilter.terms },\n\t\t\t\tcallback: filter => this.interactions.launchVariantFilter(filter)\n\t\t\t}).main(this.state.config.variantFilter.filter)\n\t\t}\n\t}\n\n\t/*\n\trender ui contents of one group, both arguments are provided to be convenient for ad-hoc update\n\n\tgroupIdx: array index of self.state.config.snvindel.details.groups[]\n\t\tdetermines which <div> to render to at self.dom.group1/2div\n\tgroup{}: element of same array\n\t*/\n\tasync render1group(groupIdx) {\n\t\tconst group = this.state.config.snvindel.details.groups[groupIdx]\n\t\tconst div = groupIdx == 0 ? this.dom.group1div : this.dom.group2div\n\n\t\tlet canReuse = false\n\t\tif (group?.type == 'filter' && this.filterUI[groupIdx]) {\n\t\t\t// will reuse an existing filterUI[${groupIdx}] and div\n\t\t\tcanReuse = true\n\t\t} else {\n\t\t\tdelete this.filterUI[groupIdx] // ok to delete even if not existing\n\t\t\tdiv.selectAll('*').remove()\n\t\t}\n\n\t\tif (!group) {\n\t\t\t// group does not exist in groups[] based on array index, e.g. when there's just 1 group and groups[1] is undefined\n\t\t\t// add a prompt in place of header button\n\t\t\tthis.makePrompt2addNewGroup(groupIdx, div)\n\t\t\treturn\n\t\t}\n\n\t\t// the group exists; first show the group header button\n\t\tif (!canReuse) this.makeGroupHeaderButton(groupIdx, div)\n\n\t\tif (group.type == 'info') return this.render1group_info(groupIdx, group, div)\n\t\tif (group.type == 'population') return this.render1group_population(groupIdx, group, div)\n\t\tif (group.type == 'filter') return await this.render1group_filter(groupIdx, group, div)\n\t\tthrow 'render1group: unknown group type'\n\t}\n\n\tmakePrompt2addNewGroup(groupIdx, div) {\n\t\t// the prompt <div> is created in group2div\n\t\tdiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.text('Create Group 2')\n\t\t\t.attr('class', 'sja_clbtext')\n\t\t\t.style('margin', '10px')\n\t\t\t.on('click', event => {\n\t\t\t\tthis.dom.tip.showunder(event.target).clear()\n\t\t\t\tthis.launchMenu_createGroup(groupIdx, this.dom.tip.d)\n\t\t\t})\n\t}\n\n\tmakeGroupHeaderButton(groupIdx, div) {\n\t\tdiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.text('Group ' + (groupIdx + 1))\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.style('margin-right', '10px')\n\t\t\t.on('click', event => {\n\t\t\t\tthis.dom.tip.showunder(event.target).clear()\n\t\t\t\tif (groupIdx == 0) {\n\t\t\t\t\t// this is 1st group, directly launch menu to change group, but do not allow to delete\n\t\t\t\t\tthis.launchMenu_createGroup(0, this.dom.tip.d)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.text('Change')\n\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t.style('border-radius', '0px')\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tthis.launchMenu_createGroup(1, this.dom.tip.clear().d)\n\t\t\t\t\t})\n\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.text('Delete')\n\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t.style('border-radius', '0px')\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t// ui is not reactive\n\t\t\t\t\t\tdiv.selectAll('*').remove()\n\t\t\t\t\t\tmakePrompt2addNewGroup(self, 1, div)\n\t\t\t\t\t\t*/\n\n\t\t\t\t\t\tconst groups = [this.state.config.snvindel.details.groups[0]] // only keep first group\n\t\t\t\t\t\tthis.interactions.launchGroupsFilter(groups)\n\t\t\t\t\t})\n\t\t\t})\n\t}\n\n\trender1group_info(groupIdx, group, div) {\n\t\t// this group is an INFO field\n\t\tlet name = group.infoKey\n\t\tif (this.state.config.variantFilter?.terms) {\n\t\t\tconst f = this.state.config.variantFilter.terms.find(i => i.id == group.infoKey)\n\t\t\tif (f && f.name) name = f.name\n\t\t}\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.text(name)\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.on('click', event => {\n\t\t\t\tif (this.state.config.variantFilter.terms.length <= 1) {\n\t\t\t\t\t// only 1, no other option to switch to\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// multiple options, allow to replace\n\t\t\t\tthis.dom.tip\n\t\t\t\t\t.clear()\n\t\t\t\t\t.showunder(event.target)\n\t\t\t\t\t.d.append('div')\n\t\t\t\t\t.text('Replace with:')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.style('font-size', '.8em')\n\t\t\t\tfor (const f of this.state.config.variantFilter.terms) {\n\t\t\t\t\tif (f.type != 'integer' && f.type != 'float') continue // only allow numeric fields\n\t\t\t\t\tif (f.id == group.infoKey) continue // same one\n\n\t\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.text(f.name)\n\t\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\t/////////////////////////////////\n\t\t\t\t\t\t\t// create a new group using this info field\n\t\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t\tconst groups = structuredClone(this.state.config.snvindel.details.groups)\n\t\t\t\t\t\t\tgroups[groupIdx].infoKey = f.id\n\t\t\t\t\t\t\tgroups[groupIdx].type = 'info'\n\t\t\t\t\t\t\tthis.interactions.launchGroupsFilter(groups)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.text('PER-VARIANT NUMERICAL VALUES')\n\t\t\t.style('font-size', '.7em')\n\t\t\t.style('opacity', 0.6)\n\t\t\t.style('margin-left', '10px')\n\t}\n\n\trender1group_population(groupIdx, group, div) {\n\t\t// this group is a predefined population\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.text(group.label)\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.on('click', event => {\n\t\t\t\tif (this.state.config.snvindel.populations.length <= 1) {\n\t\t\t\t\t// only 1, no other option to switch to\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// multiple options, allow to replace\n\t\t\t\tthis.dom.tip\n\t\t\t\t\t.clear()\n\t\t\t\t\t.showunder(event.target)\n\t\t\t\t\t.d.append('div')\n\t\t\t\t\t.text('Replace with:')\n\t\t\t\t\t.style('margin', '10px')\n\t\t\t\t\t.style('font-size', '.8em')\n\n\t\t\t\tfor (const p of this.state.config.snvindel.populations) {\n\t\t\t\t\tif (p.key == group.key) continue\n\t\t\t\t\tthis.dom.tip.d\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.text(p.label)\n\t\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t\tconst groups = structuredClone(this.state.config.snvindel.details.groups)\n\t\t\t\t\t\t\tgroups[groupIdx] = structuredClone(p)\n\t\t\t\t\t\t\tgroups[groupIdx].type = 'population'\n\t\t\t\t\t\t\tthis.interactions.launchGroupsFilter(groups)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.text(`POPULATION${group.adjust_race ? ', RACE ADJUSTED' : ''}`)\n\t\t\t.style('font-size', '.7em')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.style('opacity', 0.6)\n\n\t\tif (this.state.config.snvindel.details.groups[groupIdx == 1 ? 0 : 1]?.type == 'filter') {\n\t\t\t/*\n\t\t\t!!poor fix!!\n\t\t\tonly render the text when the other group is \"filter\",\n\t\t\tso that when the other group is no longer type=filter, the admix text will disappear from this group\n\t\t\tthis is because self._partialData is *sticky* and is never deleted, due to the way parent passing it to child\n\t\t\tand assume that pop2average must be from comparison between 2 groups of filter-vs-population\n\t\t\te.g. when info-vs-population, despite the _partialData is still there, must not render it\n\t\t\t*/\n\t\t\tdiv\n\t\t\t\t.append('span')\n\t\t\t\t.attr('class', 'sja_clbtext')\n\t\t\t\t.attr('id', 'sjpp-gb-pop2avg')\n\t\t\t\t.style('display', 'none') // hidden for now, will display once pop2average data becomes available (see View.ts)\n\t\t\t\t.style('margin-left', '20px')\n\t\t\t\t.text(`Group ${groupIdx == 1 ? 1 : 2} average admixture:`)\n\t\t\t\t.on('click', event => {\n\t\t\t\t\tthis.dom.tip.clear().showunder(event.target).d.append('div').style('margin', '10px').style('width', '500px')\n\t\t\t\t\t\t.html(`These are average admixture coefficients based on current Group ${groupIdx == 1 ? 1 : 2} samples.\n\t\t\t\t\tThey are used to adjust variant allele counts of matching ancestries from <span class=sja_menuoption style=\"padding:2px 5px\">${\n\t\t\t\t\t\tgroup.label\n\t\t\t\t\t}</span>,\n\t\t\t\t\tso that the adjusted allele counts can be compared against Group ${groupIdx == 1 ? 1 : 2} allele counts.\n\t\t\t\t\tThis allows to account for ancestry composition difference between the two groups.\n\t\t\t\t\t`)\n\t\t\t\t})\n\t\t\t\t.append('span')\n\t\t\t\t.attr('id', 'sjpp-gb-pop2avg-values') // will fill with values once pop2average data becomes available (see View.ts)\n\t\t}\n\t}\n\n\tasync render1group_filter(groupIdx, group, div) {\n\t\t/*\n\t\tthis group is based on a termdb-filter\n\t\twhen initiating the filter ui, must join group's filter with mass global filter and submit the joined filter to main()\n\t\tthis allows tvs edit to show correct number of samples\n\t\t*/\n\t\tif (!this.filterUI[groupIdx]) {\n\t\t\tthis.filterUI[groupIdx] = await filterInit({\n\t\t\t\tholder: div,\n\t\t\t\tvocab: this.state.vocab,\n\t\t\t\temptyLabel: 'Entire cohort',\n\t\t\t\ttermdbConfig: this.opts.vocabApi.termdbConfig,\n\t\t\t\tcallback: f => {\n\t\t\t\t\tconst groups = JSON.parse(JSON.stringify(this.state.config.snvindel.details.groups))\n\t\t\t\t\tgroups[groupIdx].filter = f\n\t\t\t\t\tthis.interactions.launchGroupsFilter(groups)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.filterUI[groupIdx].main(this.getJoinedFilter(group))\n\n\t\t// placeholder for sample count\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.attr('class', 'sjpp-gb-filter-count')\n\t\t\t.style('display', 'none')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.style('opacity', 0.5)\n\t\t\t.style('font-size', '.9em')\n\t}\n\n\tgetJoinedFilter(group) {\n\t\t// clone the global filter; group filter will be joined into it\n\t\tconst joinedFilter = structuredClone(this.state.filter || { type: 'tvslst', in: true, join: '', lst: [] })\n\t\tconst gf = structuredClone(group.filter)\n\t\t// tag group filter for it to be rendered in filter ui\n\t\t// rest of state.filter will remain invisible\n\t\tgf.tag = 'filterUiRoot'\n\t\tjoinedFilter.lst.push(gf)\n\t\tjoinedFilter.join = 'and'\n\t\treturn joinedFilter\n\t}\n\n\t// show vertical toggle options: filter/population/info\n\t// when any is selected, create a new group object and set to snvindel.details.groups[groupIdx]\n\tlaunchMenu_createGroup(groupIdx, div) {\n\t\tconst opt: any = {\n\t\t\tholder: div.append('div').style('margin', '5px'),\n\t\t\ttabs: this.state.config.snvindel.details.groupTypes.map(i => {\n\t\t\t\treturn { label: i.name }\n\t\t\t}),\n\t\t\ttabsPosition: 'vertical',\n\t\t\tlinePosition: 'right'\n\t\t}\n\t\tnew Tabs(opt).main()\n\t\tfor (const [idx, groupType] of this.state.config.snvindel.details.groupTypes.entries()) {\n\t\t\t// { type:str, name:str }\n\t\t\tconst tab = opt.tabs[idx]\n\t\t\ttab.contentHolder.style('margin', '10px')\n\t\t\tif (groupType.type == 'info') {\n\t\t\t\tif (!this.state.config.variantFilter?.terms)\n\t\t\t\t\tthrow 'looking for snvindel info fields but self.state.config.variantFilter.terms[] missing'\n\t\t\t\tfor (const f of this.state.config.variantFilter.terms) {\n\t\t\t\t\tif (f.type != 'integer' && f.type != 'float') continue // only allow numeric fields\n\t\t\t\t\ttab.contentHolder\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.text(f.name)\n\t\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\t/////////////////////////////////\n\t\t\t\t\t\t\t// create a new group using this info field\n\t\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t\tconst newGroup = {\n\t\t\t\t\t\t\t\ttype: 'info',\n\t\t\t\t\t\t\t\tinfoKey: f.id\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst details = this.makeNewDetail(newGroup, groupIdx)\n\t\t\t\t\t\t\tmayUpdateGroupTestMethodsIdx(this.state, details)\n\t\t\t\t\t\t\tthis.interactions.launchSnvIndelDetails(details)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (groupType.type == 'population') {\n\t\t\t\tif (!this.state.config.snvindel.populations) throw 'state.config.snvindel.populations missing'\n\t\t\t\tfor (const p of this.state.config.snvindel.populations) {\n\t\t\t\t\t// {key,label, allowto_adjust_race, adjust_race}\n\t\t\t\t\ttab.contentHolder\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.text(p.label)\n\t\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\t/////////////////////////////////\n\t\t\t\t\t\t\t// create a new group using this population\n\t\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t\tconst newGroup = {\n\t\t\t\t\t\t\t\ttype: 'population',\n\t\t\t\t\t\t\t\tkey: p.key,\n\t\t\t\t\t\t\t\tlabel: p.label,\n\t\t\t\t\t\t\t\tallowto_adjust_race: p.allowto_adjust_race,\n\t\t\t\t\t\t\t\tadjust_race: p.adjust_race\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst details = this.makeNewDetail(newGroup, groupIdx)\n\t\t\t\t\t\t\tmayUpdateGroupTestMethodsIdx(this.state, details)\n\t\t\t\t\t\t\tthis.interactions.launchSnvIndelDetails(details)\n\t\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tif (groupType.type == 'filter') {\n\t\t\t\tconst arg = {\n\t\t\t\t\tholder: tab.contentHolder,\n\t\t\t\t\tvocabApi: this.opts.vocabApi,\n\t\t\t\t\tstate: {\n\t\t\t\t\t\tactiveCohort: this.state.activeCohort,\n\t\t\t\t\t\ttermfilter: { filter: this.state.filter }\n\t\t\t\t\t},\n\t\t\t\t\ttree: {\n\t\t\t\t\t\tclick_term2select_tvs: tvs => {\n\t\t\t\t\t\t\t/////////////////////////////////\n\t\t\t\t\t\t\t// create a new group using this tvs\n\t\t\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t\t\t\tconst newGroup = {\n\t\t\t\t\t\t\t\ttype: 'filter',\n\t\t\t\t\t\t\t\tfilter: {\n\t\t\t\t\t\t\t\t\tin: true,\n\t\t\t\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\t\t\t\tlst: [{ type: 'tvs', tvs }]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tconst details = this.makeNewDetail(newGroup, groupIdx)\n\t\t\t\t\t\t\tmayUpdateGroupTestMethodsIdx(this.state, details)\n\t\t\t\t\t\t\tthis.interactions.launchSnvIndelDetails(details)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tappInit(arg)\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tthrow 'unknown group type'\n\t\t}\n\t}\n\n\tmakeNewDetail(newGroup, groupIdx) {\n\t\tconst newDetail = {\n\t\t\tgroups: JSON.parse(JSON.stringify(this.state.config.snvindel.details.groups))\n\t\t}\n\t\tnewDetail.groups[groupIdx] = newGroup\n\t\treturn newDetail\n\t}\n\n\trenderTestMethod() {\n\t\tconst div = this.dom.testMethodDiv\n\t\tdiv.selectAll('*').remove()\n\n\t\tconst [g1, g2] = this.state.config.snvindel.details.groups\n\t\tif (!g2) {\n\t\t\t// only 1 group, do not show ui as test method is not configurable\n\t\t\treturn\n\t\t}\n\n\t\tdiv.append('span').text('TEST METHOD').style('font-size', '.8em').style('opacity', 0.6)\n\n\t\tif (g1.type != 'filter' && g2.type != 'filter') {\n\t\t\t// neither group is filter, test method can only be value diff and also not configurable\n\t\t\tdiv.append('span').style('padding-left', '10px').text('Value difference').style('opacity', 0.6)\n\t\t\treturn\n\t\t}\n\n\t\tconst select = div\n\t\t\t.append('select')\n\t\t\t.style('margin-left', '10px')\n\t\t\t.on('change', () => {\n\t\t\t\tconst details = { groupTestMethodsIdx: select.property('selectedIndex') }\n\t\t\t\tthis.interactions.launchSnvIndelDetails(details)\n\t\t\t})\n\t\tfor (const m of this.state.config.snvindel.details.groupTestMethods) {\n\t\t\tselect.append('option').text(m.name)\n\t\t}\n\t\tselect.property('selectedIndex', this.state.config.snvindel.details.groupTestMethodsIdx)\n\t}\n}\n", "import { addGeneSearchbox, Menu } from '#dom'\n\nexport class GeneSearchRenderer {\n\tstate: any\n\tholder: any\n\topts: any\n\tinteractions: any\n\tconstructor(state, holder, opts, interactions) {\n\t\tthis.state = state\n\t\tthis.holder = holder\n\t\tthis.opts = opts\n\t\tthis.interactions = interactions\n\t}\n\n\tmain() {\n\t\tthis.renderGeneSearch()\n\t}\n\n\trenderGeneSearch() {\n\t\tconst gbRestrictMode = this.opts.vocabApi.termdbConfig.queries.gbRestrictMode\n\t\tthis.holder.selectAll('*').remove()\n\t\tconst row = this.holder.append('div')\n\t\trow.append('span').html('Search')\n\t\tconst arg: any = {\n\t\t\ttip: new Menu({ padding: '0px' }),\n\t\t\tgenome: this.opts.genome,\n\t\t\trow,\n\t\t\tcallback: async () => {\n\t\t\t\t// found a hit {chr,start,stop,geneSymbol}\n\t\t\t\tif (result.geneSymbol && !gbRestrictMode) {\n\t\t\t\t\t// user found a gene and no restricted mode from ds, ask user if to use either protein/genomic mode\n\n\t\t\t\t\t// on repeated gene search, detect if btndiv is present, and remove, avoiding showing duplicate buttons\n\t\t\t\t\tthis.holder.select('.sjpp_gbmodebtndiv').remove()\n\t\t\t\t\t// create new div and buttons\n\t\t\t\t\tconst btndiv = this.holder.append('div').attr('class', 'sjpp_gbmodebtndiv').style('margin-top', '10px')\n\t\t\t\t\tbtndiv\n\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t.style('margin-right', '10px')\n\t\t\t\t\t\t.text('Protein view of ' + result.geneSymbol)\n\t\t\t\t\t\t.on('click', async () => {\n\t\t\t\t\t\t\tawait this.interactions.onGeneSearch(result, true)\n\t\t\t\t\t\t})\n\t\t\t\t\tbtndiv\n\t\t\t\t\t\t.append('button')\n\t\t\t\t\t\t.text('Genomic view of ' + result.geneSymbol)\n\t\t\t\t\t\t.on('click', async () => {\n\t\t\t\t\t\t\tawait this.interactions.onGeneSearch(result, false)\n\t\t\t\t\t\t})\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\t// only one possibility of gb mode and it can be auto determined\n\t\t\t\tawait this.interactions.onGeneSearch(result, gbRestrictMode == 'protein')\n\t\t\t}\n\t\t}\n\n\t\tswitch (gbRestrictMode) {\n\t\t\tcase undefined:\n\t\t\t\t// not set. allowed\n\t\t\t\tbreak\n\t\t\tcase 'genomic':\n\t\t\t\t// gb can only be block mode, add default coord to arg\n\t\t\t\targ.defaultCoord = this.opts.vocabApi.termdbConfig.queries.defaultCoord\n\t\t\t\tbreak\n\t\t\tcase 'protein':\n\t\t\t\t// gb can only be protein mode, only allow searching gene\n\t\t\t\targ.searchOnly = 'gene'\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\tthrow 'unknown gbRestrictMode'\n\t\t}\n\n\t\tconst result = addGeneSearchbox(arg)\n\t}\n}\n", "import { first_genetrack_tolist } from '#common/1stGenetk'\nimport { filterJoin } from '#filter'\nimport { TabsRenderer } from './TabsRenderer.ts'\nimport { GeneSearchRenderer } from './GeneSearchRenderer.ts'\n\nexport class View {\n\tstate: any\n\tblockInstance: any\n\tdata: any\n\tdom: any\n\topts: any\n\tinteractions: any\n\tfacetData: any[]\n\tconstructor(state, blockInstance, data, dom, opts, interactions, facetData: any[] = []) {\n\t\tthis.state = state\n\t\tthis.blockInstance = blockInstance\n\t\tthis.data = data\n\t\tthis.dom = dom\n\t\tthis.opts = opts\n\t\tthis.interactions = interactions\n\t\tthis.facetData = facetData\n\t}\n\n\tasync main() {\n\t\tconst tabs = new TabsRenderer(this.state, this.dom, this.opts, this.interactions, this.facetData)\n\t\tawait tabs.main()\n\t\tconst geneSearch = new GeneSearchRenderer(this.state, this.dom.geneSearchDiv, this.opts, this.interactions)\n\t\tgeneSearch.main()\n\t\tif (this.state.config.geneSearchResult) {\n\t\t\t// valid gene search result\n\t\t\t// launch block\n\t\t\tthis.dom.geneSearchDiv.style('display', 'none')\n\t\t\tconst tklst = await this.generateTracks()\n\t\t\tawait this.launchBlockWithTracks(tklst)\n\t\t}\n\t}\n\n\tasync generateTracks() {\n\t\t// handle multiple possibilities of generating genome browser tracks\n\n\t\tconst tklst: any = [] // list of tracks to be shown in block\n\n\t\tif (this.state.config.snvindel?.shown || this.state.config.svfusion?.shown) {\n\t\t\t// show mds3 tk driven by snvindel and/or svfusion (svfusion-only datasets rely on config.svfusion, set in GB.ts)\n\t\t\tif (this.data) {\n\t\t\t\t// variant data has been precomputed\n\t\t\t\t// TODO move computing logic to official mds3 tk and avoid tricky workaround using custom tk\n\t\t\t\tif (this.blockInstance) {\n\t\t\t\t\t// block already launched, update variant data on tk and rerender\n\t\t\t\t\tthis.updateCustomMds3tk()\n\t\t\t\t} else {\n\t\t\t\t\t// block not present, launch custom mds3 tk to display variant data\n\t\t\t\t\tconst tk = await this.launchCustomMds3tk()\n\t\t\t\t\tif (tk) {\n\t\t\t\t\t\t// tricky! will not return obj when block is already shown, since it updates data for existing tk obj\n\t\t\t\t\t\ttklst.push(tk)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// official mds3 tk without precomputed tk data\n\t\t\t\tconst tk: any = {\n\t\t\t\t\ttype: 'mds3',\n\t\t\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t\t\tallow2selectSamples: this.opts.allow2selectSamples,\n\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\t// on closing subtk, the filterObj corresponding to the subtk will be \"removed\" from subMds3Tks[], by regenerating the array\n\t\t\t\t\t\tthis.interactions.maySaveTrackUpdatesToState(this.blockInstance)\n\t\t\t\t\t},\n\t\t\t\t\tcallbackOnRender: () => {\n\t\t\t\t\t\t// will allow legend filtering changes to be saved to state\n\t\t\t\t\t\tthis.interactions.maySaveTrackUpdatesToState(this.blockInstance)\n\t\t\t\t\t},\n\t\t\t\t\t// for showing disco etc as ad-hoc sandbox, persistently in the mass plotDiv, rather than a menu\n\t\t\t\t\tnewChartHolder: this.opts.plotDiv\n\t\t\t\t}\n\t\t\t\t// any cohort filter for this tk\n\t\t\t\t{\n\t\t\t\t\tconst lst: any = []\n\t\t\t\t\t// register both global filter and local filter to pass to mds3 data queries\n\t\t\t\t\tif (this.state.filter?.lst?.length) lst.push(this.state.filter)\n\t\t\t\t\tif (this.state.config.snvindel?.filter) lst.push(this.state.config.snvindel.filter)\n\t\t\t\t\tif (lst.length == 1) {\n\t\t\t\t\t\ttk.filterObj = structuredClone(lst[0])\n\t\t\t\t\t} else if (lst.length > 1) {\n\t\t\t\t\t\ttk.filterObj = filterJoin(lst)\n\t\t\t\t\t}\n\t\t\t\t\t// TODO this will cause mds3 tk to show a leftlabel to indicate the filtering, which should be hidden\n\t\t\t\t}\n\t\t\t\tif (this.state.filter0) tk.filter0 = this.state.filter0\n\t\t\t\tif (this.state.config.mclassHiddenValues) {\n\t\t\t\t\ttk.legend = { mclass: { hiddenvalues: new Set(this.state.config.mclassHiddenValues) } }\n\t\t\t\t}\n\t\t\t\ttklst.push(tk)\n\n\t\t\t\tif (this.state.config?.subMds3Tks) {\n\t\t\t\t\tfor (const subtk of this.state.config.subMds3Tks) {\n\t\t\t\t\t\t// for every element, create a new subtk\n\t\t\t\t\t\tconst t2: any = {\n\t\t\t\t\t\t\ttype: 'mds3',\n\t\t\t\t\t\t\tsubtk: true,\n\t\t\t\t\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\t\t\t// on closing subtk, the filterObj corresponding to the subtk will be \"removed\" from subMds3Tks[], by regenerating the array\n\t\t\t\t\t\t\t\tthis.interactions.maySaveTrackUpdatesToState(this.blockInstance)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tcallbackOnRender: () => {\n\t\t\t\t\t\t\t\t// will allow legend filtering changes to be saved to state\n\t\t\t\t\t\t\t\tthis.interactions.maySaveTrackUpdatesToState(this.blockInstance)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t// for showing disco etc as ad-hoc sandbox, persistently in the mass plotDiv, rather than a menu\n\t\t\t\t\t\t\tnewChartHolder: this.opts.plotDiv\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.state.filter?.lst?.length) {\n\t\t\t\t\t\t\t// join sub filter with global\n\t\t\t\t\t\t\tt2.filterObj = filterJoin([this.state.filter, subtk.filterObj])\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// no global. only sub\n\t\t\t\t\t\t\tt2.filterObj = structuredClone(subtk.filterObj)\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.state.filter0) t2.filter0 = this.state.filter0\n\t\t\t\t\t\tif (subtk.mclassHiddenValues) {\n\t\t\t\t\t\t\tt2.legend = { mclass: { hiddenvalues: new Set(subtk.mclassHiddenValues) } }\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttklst.push(t2)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state.config?.trackLst?.activeTracks?.length) {\n\t\t\t// include active facet tracks\n\t\t\tfor (const n of this.state.config.trackLst.activeTracks) {\n\t\t\t\tfor (const f of this.facetData) {\n\t\t\t\t\tfor (const t of f.tracks || []) {\n\t\t\t\t\t\tif (t.name == n) tklst.push(t)\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.state.config.junction?.shown) {\n\t\t\tconst tk: any = {\n\t\t\t\ttype: 'j2',\n\t\t\t\t// Explicitly identifies this shared track as being hosted by the mass genome-browser plot.\n\t\t\t\tmassApp: this.opts.app,\n\t\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t\tvocabApi: this.opts.vocabApi,\n\t\t\t\ttermdbConfig: this.opts.vocabApi?.termdbConfig,\n\t\t\t\tfilter0: this.state.filter0,\n\t\t\t\thiddentypes: this.state.config.junction.hiddentypes,\n\t\t\t\treadcountCutoff: this.state.config.junction.readcountCutoff\n\t\t\t}\n\t\t\tif (this.state.filter?.lst?.length) tk.filter = structuredClone(this.state.filter)\n\t\t\ttklst.push(tk)\n\t\t}\n\t\tif (this.state.config.ld?.tracks) {\n\t\t\tfor (const t of this.state.config.ld.tracks) {\n\t\t\t\tif (t.shown) tklst.push(t)\n\t\t\t}\n\t\t}\n\t\treturn tklst\n\t}\n\n\tasync launchCustomMds3tk() {\n\t\tthis.mayGetSampleCounts()\n\n\t\tconst nm = {\n\t\t\t// numeric mode object; to fill in based on snvindel.details{}\n\t\t\ttype: 'numeric',\n\t\t\tinuse: true,\n\t\t\tbyAttribute: 'nm_axis_value'\n\t\t}\n\t\tfurbishViewModeWithSnvindelComputeDetails(this, nm)\n\t\tconst tk = {\n\t\t\ttype: 'mds3',\n\t\t\t// despite having custom data, still provide dslabel for the mds3 tk to function as an official dataset\n\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\tname: 'Variants',\n\t\t\tcustom_variants: this.data.mlst,\n\t\t\tskewerModes: [nm],\n\t\t\tfilter0: this.state.filter0\n\t\t}\n\t\treturn tk\n\t}\n\n\tupdateCustomMds3tk() {\n\t\tif (!this.blockInstance) throw 'blockInstance is missing'\n\t\tthis.mayGetSampleCounts()\n\n\t\tconst t2 = this.blockInstance.tklst.find(i => i.type == 'mds3')\n\t\tt2.custom_variants = this.data.mlst\n\n\t\t// details.groups[] may have changed. update label and tooltip callback etc, of tk numeric axis view mode object\n\t\tfurbishViewModeWithSnvindelComputeDetails(\n\t\t\tthis,\n\t\t\tt2.skewer.viewModes.find(i => i.type == 'numeric')\n\t\t)\n\n\t\tt2.load()\n\t}\n\n\tmayGetSampleCounts() {\n\t\tconst data = this.data\n\t\tthis.mayRenderSampleCount('group1', data.totalSampleCount_group1)\n\t\tthis.mayRenderSampleCount('group2', data.totalSampleCount_group2)\n\t\tthis.mayRenderPop2Avg(data.pop2average)\n\t}\n\n\tmayRenderSampleCount(group, count) {\n\t\tif (!Number.isInteger(count)) return\n\t\tthis.dom.tabsDiv\n\t\t\t.select(`.sjpp-gb-${group}`)\n\t\t\t.select('.sjpp-gb-filter-count')\n\t\t\t.style('display', 'inline')\n\t\t\t.text('n=' + count)\n\t}\n\n\tmayRenderPop2Avg(pop2average) {\n\t\tif (!pop2average) return\n\t\tconst span = this.dom.tabsDiv.select('#sjpp-gb-pop2avg')\n\t\tconst lst: any = []\n\t\tfor (const k in pop2average) {\n\t\t\tconst value = pop2average[k]\n\t\t\tif (!Number.isFinite(value)) continue // if there are no samples involved in current view, admix value is null\n\t\t\tlst.push(`${k}=${value.toFixed(2)}`)\n\t\t}\n\t\tif (lst.length) {\n\t\t\t// has valid admix values to display\n\t\t\tspan.style('display', 'inline')\n\t\t\tspan.select('#sjpp-gb-pop2avg-values').text(` ${lst.join(', ')}`)\n\t\t} else {\n\t\t\tspan.style('display', 'none')\n\t\t}\n\t}\n\n\t/* tricky logic */\n\tasync launchBlockWithTracks(tklst) {\n\t\tif (!this.opts.vocabApi?.termdbConfig?.gbRecreateBlock && this.blockInstance) {\n\t\t\t/* block instance is present\n this should be updating tracks in this block, by adding new ones listed in tklst[],\n and deleting old ones via a tricky method\n */\n\t\t\tfor (const tk of tklst) {\n\t\t\t\tlet tki // index of this tk in block\n\t\t\t\tif (tk.dslabel) {\n\t\t\t\t\t// Official tracks from the same dataset can have different types (e.g. mds3 and j2).\n\t\t\t\t\ttki = this.blockInstance.tklst.findIndex(i => i.dslabel == tk.dslabel && i.type == tk.type)\n\t\t\t\t} else if (tk.name) {\n\t\t\t\t\t// identify tk by name\n\t\t\t\t\ttki = this.blockInstance.tklst.findIndex(i => i.name == tk.name)\n\t\t\t\t} else {\n\t\t\t\t\tthrow 'tk missing dslabel & name'\n\t\t\t\t}\n\t\t\t\tif (tki == -1) {\n\t\t\t\t\t// this tk is not in block, add to block\n\t\t\t\t\tconst t = this.blockInstance.block_addtk_template(tk)\n\t\t\t\t\tthis.blockInstance.tk_load(t)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state.config.trackLst?.removeTracks) {\n\t\t\t\t// facet table marks these tracks for removal. they are all identified by tk.name\n\t\t\t\tfor (const n of this.state.config.trackLst.removeTracks) {\n\t\t\t\t\tconst i = this.blockInstance.tklst.findIndex(i => i.name == n)\n\t\t\t\t\tif (i != -1) this.blockInstance.tk_remove(i)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state.config.ld?.tracks) {\n\t\t\t\tfor (const t of this.state.config.ld.tracks) {\n\t\t\t\t\tconst i = this.blockInstance.tklst.findIndex(i => i.name == t.name)\n\t\t\t\t\tif (!t.shown && i != -1) this.blockInstance.tk_remove(i)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (this.state.config.junction && !this.state.config.junction.shown) {\n\t\t\t\tconst i = this.blockInstance.tklst.findIndex(t => t.type == 'j2' && t.dslabel == this.state.vocab.dslabel)\n\t\t\t\tif (i != -1) this.blockInstance.tk_remove(i)\n\t\t\t}\n\t\t\t// tricky! if snvindel.shown is false, means user has toggled it off. thus find all mds3 tk and remove them\n\t\t\tif (this.state.config.snvindel && !this.state.config.snvindel.shown) {\n\t\t\t\tlet found = true\n\t\t\t\twhile (found) {\n\t\t\t\t\tfound = false\n\t\t\t\t\tfor (const [i, tk] of this.blockInstance.tklst.entries()) {\n\t\t\t\t\t\tif (tk.type == 'mds3') {\n\t\t\t\t\t\t\tthis.blockInstance.tk_remove(i)\n\t\t\t\t\t\t\tfound = true\n\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn\n\t\t}\n\n\t\t// is GDC, MMRF, and/or no block instance, create new block\n\n\t\tthis.dom.blockHolder.selectAll('*').remove()\n\t\tconst arg: any = {\n\t\t\tholder: this.dom.blockHolder,\n\t\t\tgenome: this.opts.genome, // genome obj\n\t\t\tnobox: true,\n\t\t\ttklst,\n\t\t\tdebugmode: this.opts.debug,\n\t\t\tonAddRemoveTk: () => {\n\t\t\t\tthis.interactions.maySaveTrackUpdatesToState(this.blockInstance)\n\t\t\t},\n\t\t\tfilter0: this.state.filter0\n\t\t}\n\n\t\tconst interactions = this.interactions\n\t\targ.onCoordinateChange = function (rglst) {\n\t\t\tinteractions.onCoordinateChange(rglst, this)\n\t\t}\n\n\t\tif (this.state.config.blockIsProteinMode) {\n\t\t\t// must be in protein mode and requires gene symbol\n\t\t\tif (!this.state.config.geneSearchResult.geneSymbol) throw 'blockIsProteinMode=true but geneSymbol missing'\n\t\t\t// dataset config wants to default to gene view, and gene symbol is available\n\t\t\t// call block.init to launch gene view\n\t\t\targ.query = this.state.config.geneSearchResult.geneSymbol\n\t\t\tconst _ = await import('#src/block.init')\n\t\t\tawait _.default(arg)\n\t\t\tthis.blockInstance = arg.__blockInstance\n\n\t\t\t// update sandbox header with gene name\n\t\t\tif (this.opts.header) this.opts.header.text(arg.query)\n\t\t\treturn\n\t\t}\n\t\t// must be in genomic mode and requires coord\n\t\tif (this.state.config.block?.rglst?.length) {\n\t\t\targ.rglst = this.state.config.block.rglst\n\t\t} else {\n\t\t\tif (!this.state.config.geneSearchResult.chr) throw 'blockIsProteinMode=false but chr missing'\n\t\t\targ.chr = this.state.config.geneSearchResult.chr\n\t\t\targ.start = this.state.config.geneSearchResult.start\n\t\t\targ.stop = this.state.config.geneSearchResult.stop\n\t\t}\n\t\tfirst_genetrack_tolist(this.opts.genome, arg.tklst)\n\n\t\tconst _ = await import('#src/block')\n\t\tthis.blockInstance = new _.Block(arg)\n\t}\n}\n\n/* given group configuration, determine: numeric track axis label\n- viewmode.label as axis label of numeric mode\n- viewmode.tooltipPrintValue()\n*/\nfunction furbishViewModeWithSnvindelComputeDetails(self, viewmode) {\n\tdelete viewmode.tooltipPrintValue\n\n\tconst [g1, g2] = self.state.config.snvindel.details.groups\n\tif (g1 && g2) {\n\t\tif (g1.type == 'info' || g2.type == 'info') {\n\t\t\t// either group is info field. value type can only be value difference\n\t\t\tviewmode.label = 'Value difference'\n\t\t\treturn\n\t\t}\n\t\t// none of the group is info field. each group should derive AF and there can be different ways of comparing it from two groups\n\t\tconst testMethod =\n\t\t\tself.state.config.snvindel.details.groupTestMethods[self.state.config.snvindel.details.groupTestMethodsIdx]\n\t\tviewmode.label = testMethod.axisLabel || testMethod.name\n\t\tif (testMethod.name == 'Allele frequency difference') {\n\t\t\t// callback returns value separated by ' = ', which allows this to be also displayed in itemtable.js\n\t\t\tviewmode.tooltipPrintValue = m => [{ k: 'AF diff', v: m.nm_axis_value }]\n\t\t} else if (testMethod.name == \"Fisher's exact test\") {\n\t\t\tviewmode.tooltipPrintValue = m => [{ k: 'p-value', v: m.p_value }]\n\t\t}\n\t\treturn\n\t}\n\n\t// only 1 group\n\tif (g1.type == 'info') {\n\t\tconst f = self.state.config.variantFilter?.terms?.find(i => i.id == g1.infoKey)\n\t\tviewmode.label = f?.name || g1.infoKey\n\t\tviewmode.tooltipPrintValue = m => [{ k: viewmode.label, v: m.info[g1.infoKey] }]\n\t\treturn\n\t}\n\tif (g1.type == 'filter') {\n\t\tviewmode.label = 'Allele frequency'\n\t\tviewmode.tooltipPrintValue = m => [{ k: 'Allele frequency', v: m.nm_axis_value }]\n\t\treturn\n\t}\n\tif (g1.type == 'population') {\n\t\tviewmode.label = 'Allele frequency'\n\t\tviewmode.tooltipPrintValue = m => [{ k: 'Allele frequency', v: m.nm_axis_value }]\n\t\treturn\n\t}\n\tthrow 'unknown type of the only group'\n}\n", "import { PlotBase } from '../PlotBase.ts'\nimport { getCompInit, type ComponentApi, type RxComponent } from '#rx'\nimport { Menu, sayerror } from '#dom'\nimport { getCombinedTermFilter, getNormalRoot, filterJoin } from '#filter'\nimport { fillTermWrapper } from '#termsetting'\nimport { controlsInit } from '#plots/controls.js'\nimport { Model } from './model/Model.ts'\nimport { View } from './view/View.ts'\nimport { Interactions, mayUpdateGroupTestMethodsIdx } from './interactions/Interactions.ts'\nimport { sanitizeTrackLstConfig } from './trackLst.ts'\n\nclass TdbGenomeBrowser extends PlotBase implements RxComponent {\n\tstatic type = 'genomeBrowser'\n\n\t// expected RxComponentInner props, some are already declared/set in PlotBase\n\ttype: string\n\tparentId?: string\n\tdom!: {\n\t\t[index: string]: any\n\t}\n\tcomponents: {\n\t\t[name: string]: ComponentApi | { [name: string]: ComponentApi }\n\t} = {}\n\tinteractions: any\n\tblockInstance: any\n\t_prevFilterSig?: string\n\tconfigTermKeys = ['facetTw1', 'facetTw2', 'facetTw3']\n\n\tconstructor(opts, api) {\n\t\tsuper(opts, api)\n\t\tthis.type = TdbGenomeBrowser.type\n\t\tthis.dom = this.getDom()\n\t}\n\n\tgetDom() {\n\t\tconst holder = this.opts.holder.append('div')\n\t\tif (this.opts.header) {\n\t\t\t/** Plot may not launch in a sandbox (such as in GDC), hence no header. */\n\t\t\tthis.opts.header\n\t\t\t\t.append('div')\n\t\t\t\t.style('opacity', 0.6)\n\t\t\t\t.style('padding-left', '10px')\n\t\t\t\t.style('font-size', '0.75em')\n\t\t\t\t.text('GENOME BROWSER')\n\t\t}\n\t\tconst body = holder.append('div').style('display', 'flex').style('align-items', 'flex-start').style('gap', '12px')\n\t\tconst controlsDiv = body.append('div').style('flex', '0 0 auto')\n\t\tconst mainDiv = body\n\t\t\t.append('div')\n\t\t\t.style('flex', '1 1 auto')\n\t\t\t.style('min-width', 0)\n\t\t\t.style('margin', '15px 0px 0px 25px')\n\t\tconst errDiv = mainDiv.append('div').style('display', 'none').style('margin', '10px')\n\t\tconst dom = {\n\t\t\ttip: new Menu(),\n\t\t\tholder,\n\t\t\terrDiv,\n\t\t\tcontrols: controlsDiv.append('div'),\n\t\t\ttabsDiv: mainDiv.append('div'),\n\t\t\tgeneSearchDiv: mainDiv.append('div').style('margin', '20px 0px'),\n\t\t\tblockHolder: mainDiv.append('div')\n\t\t}\n\t\treturn dom\n\t}\n\n\tasync init() {\n\t\tthis.interactions = new Interactions(this.app, this.dom, this.id)\n\t\tawait this.setControls()\n\t}\n\n\tasync setControls() {\n\t\tconst state = this.getState(this.app.getState())\n\t\tif (!state.config.trackLst) return\n\t\tthis.dom.holder.attr('class', 'pp-termdb-plot-viz').style('display', 'inline-block').style('min-width', '300px')\n\t\tthis.components = {\n\t\t\tcontrols: await controlsInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tid: this.id,\n\t\t\t\tholder: this.dom.controls.style('display', 'inline-block'),\n\t\t\t\ttitle: 'Genome Browser',\n\t\t\t\tinputs: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'term',\n\t\t\t\t\t\tconfigKey: 'facetTw1',\n\t\t\t\t\t\tchartType: 'genomeBrowser',\n\t\t\t\t\t\tusecase: { target: 'genomeBrowser', detail: 'facetTw1' },\n\t\t\t\t\t\ttitle: 'Add column',\n\t\t\t\t\t\tlabel: 'Add column',\n\t\t\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\t\t\tprocessConfig: config => {\n\t\t\t\t\t\t\tif (!config.facetTw1) {\n\t\t\t\t\t\t\t\tconfig.facetTw2 = null\n\t\t\t\t\t\t\t\tconfig.facetTw3 = null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'term',\n\t\t\t\t\t\tconfigKey: 'facetTw2',\n\t\t\t\t\t\tchartType: 'genomeBrowser',\n\t\t\t\t\t\tusecase: { target: 'genomeBrowser', detail: 'facetTw2' },\n\t\t\t\t\t\ttitle: 'Add column',\n\t\t\t\t\t\tlabel: 'Add column',\n\t\t\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\t\t\tgetDisplayStyle: plot => (getGbConfig(plot).facetTw1 ? 'table-row' : 'none'),\n\t\t\t\t\t\tprocessConfig: config => {\n\t\t\t\t\t\t\tif (!config.facetTw2) config.facetTw3 = null\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: 'term',\n\t\t\t\t\t\tconfigKey: 'facetTw3',\n\t\t\t\t\t\tchartType: 'genomeBrowser',\n\t\t\t\t\t\tusecase: { target: 'genomeBrowser', detail: 'facetTw3' },\n\t\t\t\t\t\ttitle: 'Add column',\n\t\t\t\t\t\tlabel: 'Add column',\n\t\t\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\t\t\tgetDisplayStyle: plot => (getGbConfig(plot).facetTw2 ? 'table-row' : 'none')\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t})\n\t\t}\n\t}\n\n\tgetState(appState) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tif (!config) throw `No plot with id='${this.id}' found`\n\t\tconst parentConfig = appState.plots.find(p => p.id === this.parentId)\n\t\tconst termfilter = getCombinedTermFilter(appState, config.filter || parentConfig?.filter)\n\t\treturn {\n\t\t\tconfig,\n\t\t\tfilter: getNormalRoot(termfilter.filter),\n\t\t\tfilter0: termfilter.filter0,\n\t\t\tvocab: appState.vocab\n\t\t}\n\t}\n\n\tasync main() {\n\t\tthis.dom.holder.style('opacity', 0.5).style('pointer-events', 'none')\n\t\tthis.dom.errDiv.style('display', 'none')\n\t\tconst state = this.getState(this.app.getState())\n\t\tif (state.config.chartType != this.type) return\n\t\tconst opts = this.getOpts()\n\n\t\t// ---- force UI/track refresh when effective filters changed ----\n\t\t// include:\n\t\t// - global/local combined filter (state.filter)\n\t\t// - filter0 mass filter\n\t\t// - snvindel local filter (used by mds3 filterObj merge in View.generateTracks)\n\t\tconst mergedTkFilter =\n\t\t\tstate.filter && state.config.snvindel?.filter\n\t\t\t\t? filterJoin([state.filter, state.config.snvindel.filter])\n\t\t\t\t: state.filter || state.config.snvindel?.filter || null\n\n\t\tconst filterSig = JSON.stringify({\n\t\t\tfilter: mergedTkFilter || null,\n\t\t\tfilter0: state.filter0 || null\n\t\t})\n\n\t\tif (this._prevFilterSig && this._prevFilterSig !== filterSig && this.blockInstance) {\n\t\t\t// clear stale block so View.main() launches a fresh block+tracks from latest filters\n\t\t\t// this guarantees mds3 main/sub tracks re-materialize with updated filterObj/filter0\n\t\t\tthis.dom.blockHolder.selectAll('*').remove()\n\t\t\tthis.blockInstance = null\n\t\t}\n\t\tthis._prevFilterSig = filterSig\n\n\t\ttry {\n\t\t\tconst model = new Model(state, this.app)\n\t\t\tconst [data, facetData] = await Promise.all([model.preComputeData(), this.getFacetData(state)])\n\t\t\tthis.interactions.setFacetTrackNames(getFacetTrackNames(facetData))\n\t\t\tconst view = new View(state, this.blockInstance, data, this.dom, opts, this.interactions, facetData)\n\t\t\tawait view.main()\n\t\t\tthis.blockInstance = view.blockInstance\n\t\t} catch (e: any) {\n\t\t\tthis.dom.errDiv.style('display', 'block')\n\t\t\tsayerror(this.dom.errDiv, 'Error: ' + (e.message || e))\n\t\t\tif (e.stack) console.log(e.stack)\n\t\t}\n\t\tthis.dom.holder.style('opacity', 1).style('pointer-events', 'auto')\n\t}\n\n\tasync getFacetData(state) {\n\t\tif (!state.config.trackLst?.facets?.length) return []\n\n\t\tconst headers = await this.app.vocabApi.mayGetAuthHeaders('termdb')\n\t\treturn await Promise.all(\n\t\t\tstate.config.trackLst.facets.map(async facet => {\n\t\t\t\tconst body: any = {\n\t\t\t\t\tgenome: this.app.vocabApi.vocab.genome,\n\t\t\t\t\tdslabel: this.app.vocabApi.vocab.dslabel,\n\t\t\t\t\tfacetname: facet.name,\n\t\t\t\t\ttwLst: getFacetTwLst(state.config)\n\t\t\t\t}\n\t\t\t\tif (state.filter?.lst?.length) body.filter = state.filter\n\t\t\t\tconst data = await this.app.vocabApi.dofetch3(\n\t\t\t\t\t'termdb/facet',\n\t\t\t\t\t{ headers, body },\n\t\t\t\t\tthis.app.vocabApi.opts.fetchOpts\n\t\t\t\t)\n\t\t\t\tif (data.error) throw data.error\n\t\t\t\treturn {\n\t\t\t\t\t...facet,\n\t\t\t\t\ttracks: data.tracks || [],\n\t\t\t\t\tsamples: data.samples\n\t\t\t\t}\n\t\t\t})\n\t\t)\n\t}\n\n\t// get options for view instance\n\tgetOpts() {\n\t\tconst opts = {\n\t\t\tapp: this.app,\n\t\t\tgenome: this.app.opts.genome,\n\t\t\tvocabApi: this.app.vocabApi,\n\t\t\tdebug: this.app.opts.debug,\n\t\t\tplotDiv: this.opts.plotDiv,\n\t\t\theader: this.opts.header,\n\t\t\tallow2selectSamples: this.opts.allow2selectSamples\n\t\t}\n\t\treturn opts\n\t}\n}\n\nfunction getFacetTrackNames(facets) {\n\tconst names = new Set<string>()\n\tfor (const facet of facets || []) {\n\t\tfor (const track of facet.tracks || []) {\n\t\t\tif (track.name) names.add(track.name)\n\t\t}\n\t}\n\treturn names\n}\n\nexport const genomeBrowserInit = getCompInit(TdbGenomeBrowser)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = genomeBrowserInit\n\nexport async function getPlotConfig(opts, app, activeCohort) {\n\ttry {\n\t\t// request default queries config from dataset, and allows opts to override\n\t\tconst c = await getDefaultConfig(app.vocabApi, opts, activeCohort)\n\t\treturn c\n\t} catch (e) {\n\t\tthrow `${e} [genomeBrowser getPlotConfig()]`\n\t}\n}\n\n/* compute default config\nvocabApi\noverride? {}\n optional custom state to override default\nactiveCohort\n\tindex of active cohort (-1/0/1)\n*/\nasync function getDefaultConfig(vocabApi, override, activeCohort) {\n\tconst config = Object.assign(\n\t\t// clone for modifying\n\t\tstructuredClone({\n\t\t\tsnvindel: vocabApi.termdbConfig.queries.snvindel,\n\t\t\tjunction: vocabApi.termdbConfig.queries.junction,\n\t\t\ttrackLst: vocabApi.termdbConfig.queries.trackLst,\n\t\t\tld: vocabApi.termdbConfig.queries.ld\n\t\t}),\n\t\toverride || {}\n\t)\n\tsanitizeTrackLstConfig(config)\n\tcomputeBlockModeFlag(config, vocabApi)\n\n\tif (config.snvindel) {\n\t\t// presence of snvindel will generate the \"mds3\" tk, here setup associated config\n\t\t// request default variant filter (vcf INFO), required for snvindel\n\t\tif (!config.variantFilter) {\n\t\t\tconst vf = await vocabApi.get_variantFilter()\n\t\t\tif (vf?.filter) {\n\t\t\t\tconfig.variantFilter = vf\n\t\t\t}\n\t\t}\n\t\tif (config.snvindel.details) {\n\t\t\t// test method may be inconsistent with group configuration (e.g. no fisher for INFO fields), update test method here\n\t\t\t// 1st arg is a fake \"self\"\n\t\t\tmayUpdateGroupTestMethodsIdx({ config }, config.snvindel.details)\n\t\t\t// a type=filter group may use filterByCohort. in such case, modify default state to assign proper filter based on current cohort\n\t\t\tconst gf = config.snvindel.details.groups.find(i => i.type == 'filter')\n\t\t\tif (gf?.filterByCohort) {\n\t\t\t\tif (!Number.isInteger(activeCohort)) throw 'filterByCohort but activeCohort not integer'\n\t\t\t\t// modify and assign\n\t\t\t\tgf.filter = gf.filterByCohort[vocabApi.termdbConfig.selectCohort.values[activeCohort].keys.join(',')]\n\t\t\t\tif (!gf.filter) throw 'unknown filter by current cohort name'\n\t\t\t\tdelete gf.filterByCohort\n\t\t\t}\n\t\t}\n\n\t\tif (typeof config.snvindel.shown != 'boolean') {\n\t\t\t// create missing tracker property with default value to determine if to show/hide snvindel mds3 tk\n\t\t\tif (config.trackLst) {\n\t\t\t\t// also has track lst/facet\n\t\t\t\t// hardcoded! hide snvindel by default! definitely change it later!\n\t\t\t\tconfig.snvindel.shown = false\n\t\t\t} else {\n\t\t\t\t// no tklst/facet\n\t\t\t\tconfig.snvindel.shown = true\n\t\t\t}\n\t\t}\n\t} else if (vocabApi.termdbConfig.queries.svfusion) {\n\t\t/* dataset has svfusion but no snvindel query;\n\t\tset up config.svfusion so generateTracks() creates the mds3 lollipop tk to show fusion/sv events.\n\t\t(without this, the GB plot only generates the mds3 tk from config.snvindel) */\n\t\tconfig.svfusion = Object.assign(structuredClone(vocabApi.termdbConfig.queries.svfusion), config.svfusion || {})\n\t\tif (typeof config.svfusion.shown != 'boolean') config.svfusion.shown = true\n\t}\n\n\tif (config.junction && typeof config.junction.shown != 'boolean') config.junction.shown = true\n\n\tif (config.trackLst) {\n\t\tif (!config.trackLst.facets) throw 'trackLst.facets[] missing'\n\t\tif (!config.trackLst.activeTracks) config.trackLst.activeTracks = []\n\t\tconst facetTwLst = [config.facetTw1, config.facetTw2, config.facetTw3].some(Boolean)\n\t\t\t? [config.facetTw1, config.facetTw2, config.facetTw3]\n\t\t\t: config.trackLst.facetTwLst || []\n\t\tfor (const [i, tw] of facetTwLst.slice(0, 3).entries()) {\n\t\t\tif (!tw) continue\n\t\t\tconst key = `facetTw${i + 1}`\n\t\t\tconfig[key] = await fillTermWrapper(tw, vocabApi)\n\t\t}\n\t\tdelete config.trackLst.facetTwLst\n\t\tconfig.settings = config.settings || {}\n\t\tconfig.settings.controls = config.settings.controls || {}\n\t}\n\treturn config\n}\n\nfunction getGbConfig(plotOrState) {\n\treturn plotOrState?.config || plotOrState || {}\n}\n\nexport function getFacetTwLst(config) {\n\tconst facetTwLst: any[] = []\n\tfor (const tw of [config.facetTw1, config.facetTw2, config.facetTw3]) {\n\t\tif (!tw) break\n\t\tfacetTwLst.push(tw)\n\t}\n\treturn facetTwLst\n}\n\nexport function computeBlockModeFlag(config, vocabApi?) {\n\t// steps follow the order of priority\n\tif (typeof config.blockIsProteinMode == 'boolean') {\n\t\t// state has predefined mode, do not modify\n\t\treturn\n\t}\n\t// lack of mode e.g. from urlparam shorthand state. compute default value\n\tswitch (vocabApi.termdbConfig.queries.gbRestrictMode) {\n\t\tcase undefined:\n\t\t\t// ds doesn't restrict mode; when user searched gene, assume it should be in genomic mode\n\t\t\tif (config.geneSearchResult?.geneSymbol) {\n\t\t\t\tconfig.blockIsProteinMode = true\n\t\t\t} else {\n\t\t\t\tconfig.blockIsProteinMode = false\n\t\t\t}\n\t\t\tbreak\n\t\tcase 'protein':\n\t\t\t// ds only allow protein mode\n\t\t\tconfig.blockIsProteinMode = true\n\t\t\tbreak\n\t\tcase 'genomic':\n\t\t\t// ds only allow genomic mode\n\t\t\tconfig.blockIsProteinMode = false\n\t\t\tbreak\n\t\tdefault:\n\t\t\tthrow 'unknown gbRestrictMode'\n\t}\n}\n\n/*\ncalled in mass/charts.js, to render the menu upon clicking the chart button in the charts tray\n\tholder: the holder in the tooltip\n\tchartsInstance: MassCharts instance\n*/\nexport function makeChartBtnMenu(_holder, chartsInstance) {\n\tconst chart = { config: { chartType: 'genomeBrowser' } }\n\tchartsInstance.prepPlot(chart)\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["i", "i", "_"]
7
+ }