@sjcrh/proteinpaint-client 2.204.0 → 2.205.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 (924) hide show
  1. package/dist/2dmaf-ZQ7ACPAD.js +1367 -0
  2. package/dist/AggMatrixInput-EACGUIQA.js +277 -0
  3. package/dist/AggregateMatrix-TC5DTSYN.js +41 -0
  4. package/dist/AppHeader-PHI6US5B.js +830 -0
  5. package/dist/BoxPlot-QWKK3IJ7.js +1211 -0
  6. package/dist/CorrelationVolcano-QJJN7FVP.js +614 -0
  7. package/dist/Cuminc-6F2C5C4E.js +1219 -0
  8. package/dist/DE-HRJH6ZQL.js +89 -0
  9. package/dist/DE-HRJH6ZQL.js.map +7 -0
  10. package/dist/DEinput-T3MPAYPH.js +499 -0
  11. package/dist/DEinput-T3MPAYPH.js.map +7 -0
  12. package/dist/DM-PEG4ED2X.js +90 -0
  13. package/dist/DM-PEG4ED2X.js.map +7 -0
  14. package/dist/DifferentialAnalysis-XGXHWGPI.js +237 -0
  15. package/dist/Disco-7SRTTB3X.js +3389 -0
  16. package/dist/Disco.UI-CKKZ5MMK.js +243 -0
  17. package/dist/DmrPlot-N4CT4J2I.js +637 -0
  18. package/dist/GB-NVCLPRWN.js +1391 -0
  19. package/dist/GSEA-UZUNJG7Z.js +851 -0
  20. package/dist/GeneExpInput-3MDN2CAW.js +362 -0
  21. package/dist/Geomap-ZUF2PE5A.js +84 -0
  22. package/dist/HicApp-OIJT5TFU.js +2245 -0
  23. package/dist/IDCViewer-ZSH2E57L.js +10812 -0
  24. package/dist/NumBinaryEditor-74ZPGT7L.js +279 -0
  25. package/dist/NumBinaryEditor.unit.spec-T2I66SO5.js +312 -0
  26. package/dist/NumContEditor-M2GARZXM.js +105 -0
  27. package/dist/NumContEditor.unit.spec-G2QBBNH7.js +164 -0
  28. package/dist/NumCustomBinEditor-P44G67KS.js +33 -0
  29. package/dist/NumCustomBinEditor.unit.spec-AZHJN3V6.js +397 -0
  30. package/dist/NumDiscreteEditor-VOZ63LZY.js +170 -0
  31. package/dist/NumDiscreteEditor.unit.spec-CFSVPNBA.js +233 -0
  32. package/dist/NumRegularBinEditor-I6GJQR7W.js +33 -0
  33. package/dist/NumRegularBinEditor.unit.spec-IDJE7H6S.js +278 -0
  34. package/dist/NumSplineEditor-BCGWE52A.js +210 -0
  35. package/dist/NumSplineEditor.unit.spec-YQAL7L2E.js +224 -0
  36. package/dist/NumericDensity-P25W63RV.js +33 -0
  37. package/dist/NumericDensity.unit.spec-N7CQ5W5L.js +418 -0
  38. package/dist/NumericHandler-R7JWIFEO.js +34 -0
  39. package/dist/NumericHandler.unit.spec-LMGIAGZJ.js +214 -0
  40. package/dist/ProteomeInput-PRYKKF5E.js +388 -0
  41. package/dist/Regression-PSHH7ZXN.js +1416 -0
  42. package/dist/RunChart2-KJ2UWVCE.js +749 -0
  43. package/dist/SC-R6ZIJZ6F.js +1107 -0
  44. package/dist/Violin-GTQAUJ7B.js +1082 -0
  45. package/dist/Volcano-NER64J7W.js +1649 -0
  46. package/dist/Volcano-NER64J7W.js.map +7 -0
  47. package/dist/Wsi-GXNGL7O6.js +431 -0
  48. package/dist/adSandbox-SXSHVG4P.js +33 -0
  49. package/dist/animatedBubbleChart-Q4NEETEH.js +547 -0
  50. package/dist/app-MX4PL2QO.js +42 -0
  51. package/dist/app-R5CTEVAC.js +32 -0
  52. package/dist/app.js +14 -14
  53. package/dist/bam-45N3FEEM.js +876 -0
  54. package/dist/barchart-YCTKQJQX.js +42 -0
  55. package/dist/barchart2-252GS3CA.js +309 -0
  56. package/dist/block-CR75JHV3.js +6249 -0
  57. package/dist/block.init-U3JMED2E.js +33 -0
  58. package/dist/block.mds.expressionrank-TAN3BDPS.js +354 -0
  59. package/dist/block.mds.geneboxplot-EN344GEP.js +823 -0
  60. package/dist/block.mds.junction-RFVVJUTR.js +1539 -0
  61. package/dist/block.mds.svcnv-SSUMXEWD.js +6796 -0
  62. package/dist/block.svg-LRPGNFFI.js +159 -0
  63. package/dist/block.tk.aicheck-YY23FT2G.js +278 -0
  64. package/dist/block.tk.ase-JCGPFKFT.js +360 -0
  65. package/dist/block.tk.bam-NZDC4H7Y.js +1901 -0
  66. package/dist/block.tk.bedgraphdot-NCNZPZH6.js +379 -0
  67. package/dist/block.tk.bigwig.ui-Z7G6ZITU.js +206 -0
  68. package/dist/block.tk.hicstraw-VVDP4UF5.js +818 -0
  69. package/dist/block.tk.junction-L4YBPAHM.js +2358 -0
  70. package/dist/block.tk.junction.textmatrixui-6CMKKUB5.js +194 -0
  71. package/dist/block.tk.ld-VCP2R5UO.js +94 -0
  72. package/dist/block.tk.menu-ZJYGMEDX.js +1024 -0
  73. package/dist/block.tk.pgv-M5WNUIVS.js +938 -0
  74. package/dist/brainImaging-JGECJHZO.js +515 -0
  75. package/dist/brainRegions-NTEAXNZJ.js +234 -0
  76. package/dist/brainRegions-NTEAXNZJ.js.map +7 -0
  77. package/dist/bubbleHeatmap-7DQNWBQ2.js +378 -0
  78. package/dist/cellTypeBubbleHeatmap-LAE7U3RF.js +278 -0
  79. package/dist/chunk-2AQT3ZWL.js +626 -0
  80. package/dist/chunk-2GLNPB5J.js +203 -0
  81. package/dist/chunk-2O4CS3EZ.js +274 -0
  82. package/dist/chunk-2Z4ZSINZ.js +323 -0
  83. package/dist/chunk-2Z4ZSINZ.js.map +7 -0
  84. package/dist/chunk-3MFFZRH3.js +6360 -0
  85. package/dist/chunk-3PHXBY3Z.js +1275 -0
  86. package/dist/chunk-3PHXBY3Z.js.map +7 -0
  87. package/dist/chunk-4AQQ3BXD.js +70 -0
  88. package/dist/chunk-4PPZYVWZ.js +281 -0
  89. package/dist/chunk-4WEA7HHH.js +26 -0
  90. package/dist/chunk-57NYHASA.js +38 -0
  91. package/dist/chunk-5AAAH4OZ.js +141 -0
  92. package/dist/chunk-5BCNVZIW.js +480 -0
  93. package/dist/chunk-6JBQLOJW.js +1339 -0
  94. package/dist/chunk-756KZF5Y.js +158 -0
  95. package/dist/chunk-ABTO5QSB.js +276 -0
  96. package/dist/chunk-ALEZQQOK.js +299 -0
  97. package/dist/chunk-APK7TUJX.js +102 -0
  98. package/dist/chunk-AQAFURQM.js +59 -0
  99. package/dist/chunk-CZ5QLVWK.js +49 -0
  100. package/dist/chunk-D2MZT7CC.js +176 -0
  101. package/dist/chunk-DE3F7FAP.js +34 -0
  102. package/dist/chunk-DF3IMIR2.js +464 -0
  103. package/dist/chunk-E4WIMTK4.js +446 -0
  104. package/dist/chunk-E7TJXNIL.js +42 -0
  105. package/dist/chunk-G3JNTWCX.js +103 -0
  106. package/dist/chunk-GN2IIC6U.js +160 -0
  107. package/dist/chunk-GRI74AXV.js +294 -0
  108. package/dist/chunk-IAE3KWN5.js +550 -0
  109. package/dist/chunk-IB4NE4SI.js +397 -0
  110. package/dist/chunk-IK2BO37K.js +1608 -0
  111. package/dist/chunk-IK2BO37K.js.map +7 -0
  112. package/dist/chunk-IS4VLUEX.js +382 -0
  113. package/dist/chunk-J2DICGKC.js +194 -0
  114. package/dist/chunk-J7JDCNLU.js +24141 -0
  115. package/dist/chunk-J7JDCNLU.js.map +7 -0
  116. package/dist/chunk-JBUEQ4E6.js +263 -0
  117. package/dist/chunk-JIDJBM2R.js +2676 -0
  118. package/dist/chunk-JNVWSFNC.js +54 -0
  119. package/dist/chunk-JYOIO5UY.js +2133 -0
  120. package/dist/chunk-JYOIO5UY.js.map +7 -0
  121. package/dist/chunk-KAFDQKN7.js +1720 -0
  122. package/dist/chunk-L743GRJE.js +783 -0
  123. package/dist/chunk-L743GRJE.js.map +7 -0
  124. package/dist/chunk-LGOTIL62.js +54 -0
  125. package/dist/chunk-LHP7RXET.js +243 -0
  126. package/dist/chunk-LK2GHBUH.js +123 -0
  127. package/dist/chunk-MAVDQAZE.js +518 -0
  128. package/dist/chunk-MKT4OJ3G.js +102 -0
  129. package/dist/chunk-N635HDJ4.js +178 -0
  130. package/dist/chunk-N635HDJ4.js.map +7 -0
  131. package/dist/chunk-NFAE6VNU.js +2327 -0
  132. package/dist/chunk-NG7K5KYO.js +56 -0
  133. package/dist/chunk-NXVUL3EY.js +2853 -0
  134. package/dist/chunk-NXVUL3EY.js.map +7 -0
  135. package/dist/chunk-ODMLC5FN.js +55 -0
  136. package/dist/chunk-OJ4TDGPQ.js +339 -0
  137. package/dist/chunk-OXLBPSJ6.js +379 -0
  138. package/dist/chunk-P5GRGXH4.js +98 -0
  139. package/dist/chunk-POWG4MPT.js +31 -0
  140. package/dist/chunk-Q25DABNW.js +217 -0
  141. package/dist/chunk-QHJGWCH3.js +4311 -0
  142. package/dist/chunk-QHJGWCH3.js.map +7 -0
  143. package/dist/chunk-R5OIIFSF.js +197 -0
  144. package/dist/chunk-RJFCT67B.js +2784 -0
  145. package/dist/chunk-RN4BOWRH.js +402 -0
  146. package/dist/chunk-RZFJ6K77.js +302 -0
  147. package/dist/chunk-S5UN4VIQ.js +272 -0
  148. package/dist/chunk-SDMNZJ7X.js +50 -0
  149. package/dist/chunk-SWZAHJYP.js +170 -0
  150. package/dist/chunk-SY63UUF7.js +562 -0
  151. package/dist/chunk-T46FA72N.js +119 -0
  152. package/dist/chunk-TBPVP3KZ.js +1986 -0
  153. package/dist/chunk-TBPVP3KZ.js.map +7 -0
  154. package/dist/chunk-VIBK253J.js +134 -0
  155. package/dist/chunk-WTAPOH2W.js +22699 -0
  156. package/dist/chunk-WTAPOH2W.js.map +7 -0
  157. package/dist/chunk-XKL2D2NN.js +240 -0
  158. package/dist/chunk-XXJT7DSL.js +677 -0
  159. package/dist/chunk-YHA3AYAM.js +5071 -0
  160. package/dist/chunk-YN5NY3D3.js +339 -0
  161. package/dist/chunk-YX6FIREB.js +14 -0
  162. package/dist/chunk-ZXU4ALLZ.js +129 -0
  163. package/dist/cohort-75FUW3UO.js +70 -0
  164. package/dist/condition-VW43Q6ZE.js +327 -0
  165. package/dist/controls-HOP2AFHD.js +34 -0
  166. package/dist/controls.config-CMIFSKQE.js +34 -0
  167. package/dist/correlation-PN7BS5OR.js +95 -0
  168. package/dist/customdata.inputui-ZBZX63PS.js +284 -0
  169. package/dist/dataDownload-LGA4LAUF.js +329 -0
  170. package/dist/databrowser.ui-IQRDVL66.js +425 -0
  171. package/dist/dictionary-BPWD77LJ.js +113 -0
  172. package/dist/dnaMethylation-A3XPPBBB.js +33 -0
  173. package/dist/dnaMethylation.integration.spec-554ITDQC.js +198 -0
  174. package/dist/dofetch-FQ42AX7C.js +48 -0
  175. package/dist/e2pca-F3GWG7WZ.js +344 -0
  176. package/dist/ep-QAVN472H.js +1249 -0
  177. package/dist/expclust.gdc.spec-DQNX7FTL.js +302 -0
  178. package/dist/facet-DH7OOZTJ.js +519 -0
  179. package/dist/gb-OCXOLAMD.js +81 -0
  180. package/dist/geneExpClustering-DWYRZGTS.js +244 -0
  181. package/dist/geneExpression-2NKSKZR6.js +33 -0
  182. package/dist/geneExpression-BGFR3KQE.js +310 -0
  183. package/dist/geneExpression.unit.spec-63EKKMET.js +99 -0
  184. package/dist/geneORA-BED6XL4D.js +273 -0
  185. package/dist/geneRanking-UB5RCQNP.js +548 -0
  186. package/dist/geneVariant-WJEONTTY.js +286 -0
  187. package/dist/geneVariant-Y4C2FPJK.js +36 -0
  188. package/dist/geneVariant.integration.spec-VFYLC47N.js +388 -0
  189. package/dist/genefusion.ui-P3NBIMLE.js +303 -0
  190. package/dist/geneset-O22RQAED.js +203 -0
  191. package/dist/genomeBrowser.spec-MM7WZUGI.js +276 -0
  192. package/dist/grin2-3YBIRKUT.js +70 -0
  193. package/dist/grin2-O637DNDS.js +1137 -0
  194. package/dist/hierCluster-3X3BQVNE.js +59 -0
  195. package/dist/hierCluster-7P7M75TU.js +55 -0
  196. package/dist/hierCluster.config-XFUOLLDK.js +36 -0
  197. package/dist/hierCluster.integration.spec-HKYGSDDG.js +483 -0
  198. package/dist/hierCluster.interactivity-JUZSWCM7.js +49 -0
  199. package/dist/hierCluster.renderers-NGPPAYFM.js +19 -0
  200. package/dist/imagePlot-LKGAFJO7.js +156 -0
  201. package/dist/importPlot-SRWQA2FH.js +8 -0
  202. package/dist/isoformExpression-RYIZQIVX.js +35 -0
  203. package/dist/isoformExpression.unit.spec-DP4ECITF.js +237 -0
  204. package/dist/junction-D7QQ3YSG.js +36 -0
  205. package/dist/junction.customTerm-ZEVNCVU7.js +16 -0
  206. package/dist/junction.unit.spec-6MAKIB3R.js +182 -0
  207. package/dist/launch.adhoc-FAHRZFYG.js +37 -0
  208. package/dist/leftlabel.sample-PDZLWLJ4.js +258 -0
  209. package/dist/lollipop-VWGJUHNX.js +166 -0
  210. package/dist/maf-W52H44WK.js +455 -0
  211. package/dist/maftimeline-5JV3HZLE.js +587 -0
  212. package/dist/matrix-CEVGKXSK.js +54 -0
  213. package/dist/matrix-EXNYXYLK.js +59 -0
  214. package/dist/matrix.cells-DVPWSLJW.js +26 -0
  215. package/dist/matrix.config-RLSTWDXC.js +37 -0
  216. package/dist/matrix.data-Z6GUACVZ.js +23 -0
  217. package/dist/matrix.groups-3ZSTUWRK.js +26 -0
  218. package/dist/matrix.integration.spec-4U2R3UB2.js +3160 -0
  219. package/dist/matrix.interactivity-DJZFQ7DN.js +37 -0
  220. package/dist/matrix.layout-RQJ6VB4P.js +39 -0
  221. package/dist/matrix.legend-YQ36NWKW.js +20 -0
  222. package/dist/matrix.renderers-MWDFI6HW.js +34 -0
  223. package/dist/matrix.serieses-LTC4RLYD.js +19 -0
  224. package/dist/matrix.sort-5VFYLABY.js +26 -0
  225. package/dist/matrix.sort.unit.spec-2RUEKUT4.js +468 -0
  226. package/dist/matrix.sorterUi-EEMYZLPI.js +16 -0
  227. package/dist/matrix.sorterUi.unit.spec-ZXGSPRFZ.js +338 -0
  228. package/dist/matrix.unit.spec-HTF6UV4L.js +150 -0
  229. package/dist/mavb-GGQRDCO6.js +727 -0
  230. package/dist/mds.fimo-YKV5OIYV.js +513 -0
  231. package/dist/mds.samplescatterplot-RQOEW2AW.js +1545 -0
  232. package/dist/mds.survivalplot-TN636DED.js +477 -0
  233. package/dist/multivalue-MDQY64EH.js +83 -0
  234. package/dist/numericDictTermCluster-E73TJCLI.js +63 -0
  235. package/dist/oncomatrix-AENXQMLL.js +290 -0
  236. package/dist/oncomatrix.spec-UD6U462U.js +443 -0
  237. package/dist/plot.2dvaf-XMRV6KEG.js +372 -0
  238. package/dist/plot.app-A6JKLYQQ.js +36 -0
  239. package/dist/plot.barplot-UIX7LVWR.js +97 -0
  240. package/dist/plot.boxplot-DIFWVLMA.js +146 -0
  241. package/dist/plot.brainImaging-ZRPVE2UK.js +51 -0
  242. package/dist/plot.disco-I56MT3PC.js +99 -0
  243. package/dist/plot.ssgq-FCKFSZTV.js +134 -0
  244. package/dist/plot.vaf2cov-E5C7RJ7Z.js +253 -0
  245. package/dist/polar2-SKVBB4FD.js +232 -0
  246. package/dist/profileForms-5B3MTUNP.js +941 -0
  247. package/dist/profilePlot-MCYCGEWT.js +49 -0
  248. package/dist/proteinView-5X55JWVL.js +1562 -0
  249. package/dist/proteomeCohortCompare-WZBMBLFD.js +780 -0
  250. package/dist/pseudbulk.unit.spec-Q4YTIPH7.js +86 -0
  251. package/dist/pseudobulk-3UIWCCCQ.js +35 -0
  252. package/dist/qualitative-6TJRXZFV.js +38 -0
  253. package/dist/radar2-6X4XW5IZ.js +327 -0
  254. package/dist/radarFacility2-UVPXWPV5.js +335 -0
  255. package/dist/rememberedGvQ.unit.spec-GVRFRVSO.js +211 -0
  256. package/dist/render-G7V6R4PV.js +33 -0
  257. package/dist/report-O7D46EKQ.js +217 -0
  258. package/dist/sampleView-6Y3OOOMW.js +43 -0
  259. package/dist/samplelst-JRVC4GYC.js +106 -0
  260. package/dist/samplematrix-VP5RQVRH.js +2193 -0
  261. package/dist/sc-BPHVEP6N.js +81 -0
  262. package/dist/scatter-2YYRZCSW.js +88 -0
  263. package/dist/scatter-Y4BIG2PW.js +880 -0
  264. package/dist/selectGenomeWithTklst-2BVZU5SW.js +129 -0
  265. package/dist/singleCellCellType-XBGCSIQT.js +33 -0
  266. package/dist/singleCellCellType.unit.spec-T4GFRLVZ.js +154 -0
  267. package/dist/singleCellGeneExpression-5ZPWLSVW.js +33 -0
  268. package/dist/singleCellGeneExpression.unit.spec-4O5UBUDU.js +148 -0
  269. package/dist/singleCellPlot-CZLQBGVU.js +49 -0
  270. package/dist/singlecell-IIUYX7OG.js +1566 -0
  271. package/dist/singlecell-O3P5BLWT.js +81 -0
  272. package/dist/snp-ZCYBF3ZQ.js +33 -0
  273. package/dist/snp.unit.spec-TAGD2DRL.js +171 -0
  274. package/dist/snplocus-TL25OOPE.js +203 -0
  275. package/dist/spliceevent.a53ss.diagram-I7J4PQZT.js +146 -0
  276. package/dist/spliceevent.exonskip.diagram-SB4454HB.js +278 -0
  277. package/dist/spliceevent.noeventdiagram-FOSDNYLH.js +455 -0
  278. package/dist/ssGSEA-WANB2X5L.js +33 -0
  279. package/dist/ssGSEA.unit.spec-4XXWU4XV.js +83 -0
  280. package/dist/stattable-FNTJLVNB.js +117 -0
  281. package/dist/studyCatalog-7KEOFLO2.js +378 -0
  282. package/dist/summarizeCnvGeneexp-P4AFZMKD.js +158 -0
  283. package/dist/summarizeGeneexpSurvival-YL2J7F4R.js +105 -0
  284. package/dist/summarizeMutationCnv-BHBHST5F.js +159 -0
  285. package/dist/summarizeMutationDiagnosis-Z7ZHTV27.js +35 -0
  286. package/dist/summarizeMutationSurvival-PZ4TYHT7.js +99 -0
  287. package/dist/summary-ZMNPO65S.js +42 -0
  288. package/dist/summary.integration.spec-DPJR2ZBE.js +409 -0
  289. package/dist/summaryInput-6JUFJZ5P.js +242 -0
  290. package/dist/sunburst-OWAUI3HC.js +278 -0
  291. package/dist/survival-6JPKG3VA.js +53 -0
  292. package/dist/survival-7EXICNK7.js +1248 -0
  293. package/dist/survival-7EXICNK7.js.map +7 -0
  294. package/dist/survival.integration.spec-A6NUJLL6.js +613 -0
  295. package/dist/svgraph-34IKFHUS.js +1382 -0
  296. package/dist/svmr-4XNPSVVQ.js +3837 -0
  297. package/dist/table-LPZATFLC.js +197 -0
  298. package/dist/termCollection-DYY5FXU5.js +252 -0
  299. package/dist/termCollection-WOAUFFIC.js +33 -0
  300. package/dist/termCollection.unit.spec-WTICTZ7H.js +299 -0
  301. package/dist/termCollectionFractionSelection-K5HPDEFP.js +42 -0
  302. package/dist/termCollectionFractionSelection.unit.spec-D7DG2HOI.js +188 -0
  303. package/dist/tk-DD2LWVGM.js +1121 -0
  304. package/dist/tk-NV7NBLT6.js +41 -0
  305. package/dist/tp.ui-B5J3UUVB.js +1454 -0
  306. package/dist/tvs.dt-XLKQT64T.js +34 -0
  307. package/dist/tvs.dtcnv.categorical-XIC3RH2D.js +35 -0
  308. package/dist/tvs.dtcnv.continuous-OA2K4LHF.js +67 -0
  309. package/dist/tvs.dtfusion-ZGNKALZB.js +35 -0
  310. package/dist/tvs.dtitd-6QSG4E34.js +35 -0
  311. package/dist/tvs.dtsnvindel-5CXXOGPH.js +35 -0
  312. package/dist/tvs.dtsv-QYYEYUD3.js +35 -0
  313. package/dist/tvs.samplelst-X77ODFFR.js +98 -0
  314. package/dist/tvs.termCollection-VXROWAPS.js +124 -0
  315. package/dist/vocabulary-DKWYTZRC.js +36 -0
  316. package/dist/wsi.direct-C3HQEC2V.js +8184 -0
  317. package/dist/wsi.direct-C3HQEC2V.js.map +7 -0
  318. package/package.json +3 -3
  319. package/dist/2dmaf-JIY57FG6.js +0 -1367
  320. package/dist/AIProjectAdmin-DGTBIE6E.js +0 -952
  321. package/dist/AIProjectAdmin-DGTBIE6E.js.map +0 -7
  322. package/dist/AggMatrixInput-FH6WRTLP.js +0 -277
  323. package/dist/AggregateMatrix-MGEX5AVF.js +0 -41
  324. package/dist/AppHeader-FFOQFH55.js +0 -830
  325. package/dist/BoxPlot-KCY4JVRX.js +0 -1211
  326. package/dist/CorrelationVolcano-E5URKQSM.js +0 -614
  327. package/dist/Cuminc-CBPMCKIC.js +0 -1219
  328. package/dist/DE-VANPWKZI.js +0 -88
  329. package/dist/DE-VANPWKZI.js.map +0 -7
  330. package/dist/DEinput-MONPHDB2.js +0 -405
  331. package/dist/DEinput-MONPHDB2.js.map +0 -7
  332. package/dist/DifferentialAnalysis-XRBS4PZI.js +0 -237
  333. package/dist/Disco-V2VJIDWG.js +0 -3389
  334. package/dist/Disco.UI-OEF5JXBU.js +0 -243
  335. package/dist/DmrPlot-KZUWJWBD.js +0 -637
  336. package/dist/GB-IYTEMMU7.js +0 -1391
  337. package/dist/GSEA-QB62B5KB.js +0 -851
  338. package/dist/GeneExpInput-CXX7SXMQ.js +0 -362
  339. package/dist/Geomap-QNHSCN4N.js +0 -84
  340. package/dist/HicApp-UIULZYYJ.js +0 -2245
  341. package/dist/IDCViewer-B2JENGZZ.js +0 -10812
  342. package/dist/NumBinaryEditor-JOU2J23M.js +0 -279
  343. package/dist/NumBinaryEditor.unit.spec-UXZBBVWL.js +0 -312
  344. package/dist/NumContEditor-BJGP4PVS.js +0 -105
  345. package/dist/NumContEditor.unit.spec-HEXOYIXC.js +0 -164
  346. package/dist/NumCustomBinEditor-HDRTVWNK.js +0 -33
  347. package/dist/NumCustomBinEditor.unit.spec-MN6QZ3ZB.js +0 -397
  348. package/dist/NumDiscreteEditor-JUBR45IJ.js +0 -170
  349. package/dist/NumDiscreteEditor.unit.spec-SDK2LR5B.js +0 -233
  350. package/dist/NumRegularBinEditor-AQPRZ3MI.js +0 -33
  351. package/dist/NumRegularBinEditor.unit.spec-GM3SFB2N.js +0 -278
  352. package/dist/NumSplineEditor-LYLROEGE.js +0 -210
  353. package/dist/NumSplineEditor.unit.spec-3Q2HP6IB.js +0 -224
  354. package/dist/NumericDensity-3ZCDZORO.js +0 -33
  355. package/dist/NumericDensity.unit.spec-MNIAR2PR.js +0 -418
  356. package/dist/NumericHandler-MUNEB5IS.js +0 -34
  357. package/dist/NumericHandler.unit.spec-KPWG2T27.js +0 -214
  358. package/dist/ProteomeInput-NEUHQ2G4.js +0 -388
  359. package/dist/Regression-C75T5LOY.js +0 -1416
  360. package/dist/RunChart2-CMQ2BBSJ.js +0 -749
  361. package/dist/SC-HYK26DXI.js +0 -1107
  362. package/dist/Violin-J5Z3NKMU.js +0 -1082
  363. package/dist/Volcano-VZGOJFM7.js +0 -1573
  364. package/dist/Volcano-VZGOJFM7.js.map +0 -7
  365. package/dist/WSIViewer-EEKHINZU.js +0 -18892
  366. package/dist/WSIViewer-EEKHINZU.js.map +0 -7
  367. package/dist/Wsi-ZP36MKK7.js +0 -431
  368. package/dist/WsiSamplesPlot-6G3U7U5L.js +0 -160
  369. package/dist/WsiSamplesPlot-6G3U7U5L.js.map +0 -7
  370. package/dist/adSandbox-W4THMDUI.js +0 -33
  371. package/dist/animatedBubbleChart-2IVR2WC3.js +0 -547
  372. package/dist/app-LAIPU5IO.js +0 -42
  373. package/dist/app-WMRDJINC.js +0 -32
  374. package/dist/bam-44WCWB5P.js +0 -876
  375. package/dist/barchart-P6XKCJRF.js +0 -42
  376. package/dist/barchart2-5NTYCQYN.js +0 -309
  377. package/dist/block-VEOD6CP4.js +0 -6249
  378. package/dist/block.init-RCPDUYAV.js +0 -33
  379. package/dist/block.mds.expressionrank-KALPK27B.js +0 -354
  380. package/dist/block.mds.geneboxplot-ZASU25BG.js +0 -823
  381. package/dist/block.mds.junction-DCVGVSYG.js +0 -1539
  382. package/dist/block.mds.svcnv-CEGYMRSE.js +0 -6796
  383. package/dist/block.svg-AW4E7NSS.js +0 -159
  384. package/dist/block.tk.aicheck-4ZPFLI5I.js +0 -278
  385. package/dist/block.tk.ase-F3VMNBE3.js +0 -360
  386. package/dist/block.tk.bam-3VDSEMVO.js +0 -1901
  387. package/dist/block.tk.bedgraphdot-3F6AMWFD.js +0 -379
  388. package/dist/block.tk.bigwig.ui-QO334QC3.js +0 -206
  389. package/dist/block.tk.hicstraw-VA7GNOOD.js +0 -818
  390. package/dist/block.tk.junction-7WIZ63R7.js +0 -2358
  391. package/dist/block.tk.junction.textmatrixui-ZHSVODGI.js +0 -194
  392. package/dist/block.tk.ld-JME4SP6A.js +0 -94
  393. package/dist/block.tk.menu-7BFQTH3Q.js +0 -1024
  394. package/dist/block.tk.pgv-C2N7UFYT.js +0 -938
  395. package/dist/brainImaging-6XFUKFZE.js +0 -515
  396. package/dist/brainRegions-SEMS7V4O.js +0 -216
  397. package/dist/brainRegions-SEMS7V4O.js.map +0 -7
  398. package/dist/bubbleHeatmap-YO4232WO.js +0 -378
  399. package/dist/cellTypeBubbleHeatmap-GM4BGCQ3.js +0 -278
  400. package/dist/chunk-2YDQC5BV.js +0 -562
  401. package/dist/chunk-3QMXNK7G.js +0 -379
  402. package/dist/chunk-4C2N2BQC.js +0 -6360
  403. package/dist/chunk-4Q46RDNU.js +0 -34
  404. package/dist/chunk-4YEDSMFX.js +0 -123
  405. package/dist/chunk-56HEUYYM.js +0 -2891
  406. package/dist/chunk-56HEUYYM.js.map +0 -7
  407. package/dist/chunk-5VMEMA4O.js +0 -158
  408. package/dist/chunk-66BJC6ZX.js +0 -217
  409. package/dist/chunk-6RN4RVKF.js +0 -480
  410. package/dist/chunk-6SKLD7JU.js +0 -59
  411. package/dist/chunk-7C45EYL6.js +0 -274
  412. package/dist/chunk-7RX5UEF3.js +0 -24193
  413. package/dist/chunk-7RX5UEF3.js.map +0 -7
  414. package/dist/chunk-AAM7HHPU.js +0 -103
  415. package/dist/chunk-AFMD6226.js +0 -240
  416. package/dist/chunk-AK3SW3VT.js +0 -176
  417. package/dist/chunk-BBYVVPEO.js +0 -1271
  418. package/dist/chunk-BBYVVPEO.js.map +0 -7
  419. package/dist/chunk-BMVRYEN2.js +0 -397
  420. package/dist/chunk-BZYTL2EU.js +0 -294
  421. package/dist/chunk-CLOHFGFX.js +0 -14
  422. package/dist/chunk-DAJT3XVZ.js +0 -31
  423. package/dist/chunk-DKPV7GCZ.js +0 -7966
  424. package/dist/chunk-DKPV7GCZ.js.map +0 -7
  425. package/dist/chunk-DMT6S5HJ.js +0 -5071
  426. package/dist/chunk-DO4SLQNP.js +0 -194
  427. package/dist/chunk-DUGOFIQS.js +0 -464
  428. package/dist/chunk-E3O6ZEWQ.js +0 -129
  429. package/dist/chunk-EJ3SSI5J.js +0 -382
  430. package/dist/chunk-FSDY4QVA.js +0 -272
  431. package/dist/chunk-FUEJFIQX.js +0 -203
  432. package/dist/chunk-FUSTNOQZ.js +0 -2130
  433. package/dist/chunk-FUSTNOQZ.js.map +0 -7
  434. package/dist/chunk-GAW2EETX.js +0 -281
  435. package/dist/chunk-GF6CKFXE.js +0 -1720
  436. package/dist/chunk-GI3RVOO4.js +0 -339
  437. package/dist/chunk-GQ6T62VJ.js +0 -141
  438. package/dist/chunk-GTMHDSOQ.js +0 -550
  439. package/dist/chunk-H555QBYP.js +0 -243
  440. package/dist/chunk-HKQDZKSF.js +0 -119
  441. package/dist/chunk-HLZVDBAI.js +0 -1985
  442. package/dist/chunk-HLZVDBAI.js.map +0 -7
  443. package/dist/chunk-HWMZ2OHD.js +0 -49
  444. package/dist/chunk-JG6SE6YU.js +0 -1339
  445. package/dist/chunk-JSVLKCIQ.js +0 -160
  446. package/dist/chunk-JVRGY6IU.js +0 -54
  447. package/dist/chunk-JXUFZZRJ.js +0 -626
  448. package/dist/chunk-K5YG7MVJ.js +0 -2676
  449. package/dist/chunk-KAUMP3RR.js +0 -56
  450. package/dist/chunk-KLGNLUXR.js +0 -518
  451. package/dist/chunk-KWLBPOPE.js +0 -38
  452. package/dist/chunk-L42F5J5C.js +0 -185
  453. package/dist/chunk-L42F5J5C.js.map +0 -7
  454. package/dist/chunk-LXTBOUBG.js +0 -677
  455. package/dist/chunk-MCRWA655.js +0 -98
  456. package/dist/chunk-NGBQL4CM.js +0 -54
  457. package/dist/chunk-OKUFTLFL.js +0 -4297
  458. package/dist/chunk-OKUFTLFL.js.map +0 -7
  459. package/dist/chunk-ONXYJWY6.js +0 -102
  460. package/dist/chunk-OYHID2D7.js +0 -50
  461. package/dist/chunk-PT5JDHPR.js +0 -42
  462. package/dist/chunk-PZZIDJIB.js +0 -806
  463. package/dist/chunk-PZZIDJIB.js.map +0 -7
  464. package/dist/chunk-S5SOLLGM.js +0 -1654
  465. package/dist/chunk-S5SOLLGM.js.map +0 -7
  466. package/dist/chunk-S6XG74R4.js +0 -70
  467. package/dist/chunk-TAEU6SPJ.js +0 -197
  468. package/dist/chunk-UBZRZ3PS.js +0 -102
  469. package/dist/chunk-VHDVTQFR.js +0 -2784
  470. package/dist/chunk-VRY7WSS6.js +0 -170
  471. package/dist/chunk-VSPUFGDX.js +0 -339
  472. package/dist/chunk-VVDFRJVN.js +0 -306
  473. package/dist/chunk-VVDFRJVN.js.map +0 -7
  474. package/dist/chunk-WFOC4W5A.js +0 -55
  475. package/dist/chunk-WVPFLPWB.js +0 -402
  476. package/dist/chunk-WZUUWGEU.js +0 -22834
  477. package/dist/chunk-WZUUWGEU.js.map +0 -7
  478. package/dist/chunk-X7IAKV5Z.js +0 -276
  479. package/dist/chunk-XHOL37O6.js +0 -299
  480. package/dist/chunk-XJGPL2JZ.js +0 -39
  481. package/dist/chunk-XJGPL2JZ.js.map +0 -7
  482. package/dist/chunk-XPB2GP3C.js +0 -2327
  483. package/dist/chunk-XPVU5AMT.js +0 -263
  484. package/dist/chunk-YLWSTPPL.js +0 -302
  485. package/dist/chunk-YZVWOQBP.js +0 -134
  486. package/dist/chunk-ZB3RP5QP.js +0 -446
  487. package/dist/chunk-ZU47ERPU.js +0 -26
  488. package/dist/cohort-ZTT2PSQA.js +0 -70
  489. package/dist/condition-L5DXIAJT.js +0 -327
  490. package/dist/controls-ROZP2O7A.js +0 -34
  491. package/dist/controls.config-YQKGHMIP.js +0 -34
  492. package/dist/correlation-6AKRIQXN.js +0 -95
  493. package/dist/customdata.inputui-DD3OFHUS.js +0 -284
  494. package/dist/dataDownload-VHHSLSZV.js +0 -329
  495. package/dist/databrowser.ui-RLYJOEWQ.js +0 -425
  496. package/dist/dictionary-IMOOQHIH.js +0 -113
  497. package/dist/dnaMethylation-T6XUIOJF.js +0 -33
  498. package/dist/dnaMethylation.integration.spec-NRJOIDRD.js +0 -198
  499. package/dist/dofetch-MLAEV3A2.js +0 -48
  500. package/dist/e2pca-F3TGJOMW.js +0 -344
  501. package/dist/ep-UAF6OL2Y.js +0 -1249
  502. package/dist/expclust.gdc.spec-GHH3JQ65.js +0 -302
  503. package/dist/facet-MB4C7GII.js +0 -519
  504. package/dist/gb-C5YSAFWP.js +0 -81
  505. package/dist/geneExpClustering-3BRSI5BR.js +0 -244
  506. package/dist/geneExpression-K3IZLSYC.js +0 -310
  507. package/dist/geneExpression-SIAPRA3E.js +0 -33
  508. package/dist/geneExpression.unit.spec-I66QVNT5.js +0 -99
  509. package/dist/geneORA-SLM3SNNS.js +0 -273
  510. package/dist/geneRanking-4EFYOR6A.js +0 -548
  511. package/dist/geneVariant-O347F2OY.js +0 -286
  512. package/dist/geneVariant-Z3BUIBLS.js +0 -36
  513. package/dist/geneVariant.integration.spec-ZZ65EYEL.js +0 -388
  514. package/dist/genefusion.ui-TK6UKPDR.js +0 -303
  515. package/dist/geneset-MVXSEOKZ.js +0 -203
  516. package/dist/genomeBrowser.spec-QDB4Z2L6.js +0 -276
  517. package/dist/grin2-DCU6PLPU.js +0 -70
  518. package/dist/grin2-P6Z45MCJ.js +0 -1137
  519. package/dist/hierCluster-3H47NLKS.js +0 -55
  520. package/dist/hierCluster-JG6VXTCV.js +0 -59
  521. package/dist/hierCluster.config-IP6I7RTS.js +0 -36
  522. package/dist/hierCluster.integration.spec-7PUNHRRS.js +0 -483
  523. package/dist/hierCluster.interactivity-FIDVRACV.js +0 -49
  524. package/dist/hierCluster.renderers-QMJWUPAI.js +0 -19
  525. package/dist/imagePlot-CXYKBCWS.js +0 -156
  526. package/dist/importPlot-Z4A54RXH.js +0 -8
  527. package/dist/isoformExpression-DMDV2PZY.js +0 -35
  528. package/dist/isoformExpression.unit.spec-W2LIYOXS.js +0 -237
  529. package/dist/junction-R5GMEO7Z.js +0 -36
  530. package/dist/junction.customTerm-AI44GNFV.js +0 -16
  531. package/dist/junction.unit.spec-SCRCANOC.js +0 -182
  532. package/dist/launch.adhoc-THLTYZJT.js +0 -37
  533. package/dist/leftlabel.sample-GKQXEY4J.js +0 -258
  534. package/dist/lollipop-2TW6GGPY.js +0 -166
  535. package/dist/maf-A4PVW5V2.js +0 -455
  536. package/dist/maftimeline-QMX3HOAU.js +0 -587
  537. package/dist/matrix-BGRYRU3T.js +0 -54
  538. package/dist/matrix-GPXTUVCQ.js +0 -59
  539. package/dist/matrix.cells-C6OY7F5T.js +0 -26
  540. package/dist/matrix.config-Z5ZGHXDV.js +0 -37
  541. package/dist/matrix.data-WB26I3TF.js +0 -23
  542. package/dist/matrix.groups-C2V2CV4A.js +0 -26
  543. package/dist/matrix.integration.spec-3COAXQBV.js +0 -3160
  544. package/dist/matrix.interactivity-NGHIQR3A.js +0 -37
  545. package/dist/matrix.layout-NYIOESGN.js +0 -39
  546. package/dist/matrix.legend-Q5HHWP5Q.js +0 -20
  547. package/dist/matrix.renderers-GLXZARIP.js +0 -34
  548. package/dist/matrix.serieses-LDQEPXPD.js +0 -19
  549. package/dist/matrix.sort-44TQNRIX.js +0 -26
  550. package/dist/matrix.sort.unit.spec-T3BDWJ3Z.js +0 -468
  551. package/dist/matrix.sorterUi-6Y4YBQYL.js +0 -16
  552. package/dist/matrix.sorterUi.unit.spec-NHUYNMNU.js +0 -338
  553. package/dist/matrix.unit.spec-C7IRIBN6.js +0 -150
  554. package/dist/mavb-E37LI73X.js +0 -727
  555. package/dist/mds.fimo-YTGX7VEN.js +0 -513
  556. package/dist/mds.samplescatterplot-FFGGJSI3.js +0 -1545
  557. package/dist/mds.survivalplot-NCWRXXV4.js +0 -477
  558. package/dist/multivalue-N7A2PU5K.js +0 -83
  559. package/dist/numericDictTermCluster-AKQKRBQH.js +0 -63
  560. package/dist/oncomatrix-QPVGACMF.js +0 -290
  561. package/dist/oncomatrix.spec-6L2NDN2G.js +0 -443
  562. package/dist/plot.2dvaf-6TLON77B.js +0 -372
  563. package/dist/plot.app-VM273TXU.js +0 -36
  564. package/dist/plot.barplot-IQTZURHK.js +0 -97
  565. package/dist/plot.boxplot-WEXB6HII.js +0 -146
  566. package/dist/plot.brainImaging-REGSSBHV.js +0 -51
  567. package/dist/plot.disco-F25Z3FQL.js +0 -99
  568. package/dist/plot.ssgq-CRRK26RS.js +0 -134
  569. package/dist/plot.vaf2cov-WCNPZKXK.js +0 -253
  570. package/dist/plot.wsi-6OAPT5BA.js +0 -36
  571. package/dist/plot.wsi-6OAPT5BA.js.map +0 -7
  572. package/dist/polar2-MH5GPXHJ.js +0 -232
  573. package/dist/profileForms-2YX2OYDI.js +0 -941
  574. package/dist/profilePlot-FUTMZ2PP.js +0 -49
  575. package/dist/proteinView-6Z4ALZW2.js +0 -1562
  576. package/dist/proteomeCohortCompare-6GLFOYI5.js +0 -780
  577. package/dist/pseudbulk.unit.spec-S7FDL3IX.js +0 -86
  578. package/dist/pseudobulk-A3LB23N2.js +0 -35
  579. package/dist/qualitative-5VJRMF4S.js +0 -38
  580. package/dist/radar2-2SJX4ZXN.js +0 -327
  581. package/dist/radarFacility2-7FPO34JS.js +0 -335
  582. package/dist/rememberedGvQ.unit.spec-WOQVPQ75.js +0 -211
  583. package/dist/render-ZLA2RRBP.js +0 -33
  584. package/dist/report-VCE6RILD.js +0 -217
  585. package/dist/sampleView-QYTX4OLI.js +0 -43
  586. package/dist/samplelst-7NGH3SUM.js +0 -106
  587. package/dist/samplematrix-SNAR6IBB.js +0 -2193
  588. package/dist/sc-2JETYAI4.js +0 -81
  589. package/dist/scatter-D7VZOBEE.js +0 -880
  590. package/dist/scatter-GHBQM2RR.js +0 -88
  591. package/dist/selectGenomeWithTklst-BD4GMGX3.js +0 -129
  592. package/dist/singleCellCellType-XHLOJVVC.js +0 -33
  593. package/dist/singleCellCellType.unit.spec-LCLR3IOD.js +0 -154
  594. package/dist/singleCellGeneExpression-JRBONI5C.js +0 -33
  595. package/dist/singleCellGeneExpression.unit.spec-Z2KSVCIG.js +0 -148
  596. package/dist/singleCellPlot-4462CQHF.js +0 -49
  597. package/dist/singlecell-CDUQ6MTO.js +0 -81
  598. package/dist/singlecell-SO3B5KJ7.js +0 -1566
  599. package/dist/snp-YE2MXKJO.js +0 -33
  600. package/dist/snp.unit.spec-MT57TGGQ.js +0 -171
  601. package/dist/snplocus-RSNKWY63.js +0 -203
  602. package/dist/spliceevent.a53ss.diagram-6N6YGYV7.js +0 -146
  603. package/dist/spliceevent.exonskip.diagram-LMNUS4XV.js +0 -278
  604. package/dist/spliceevent.noeventdiagram-LTBH4YD5.js +0 -455
  605. package/dist/ssGSEA-DPK4PDM2.js +0 -33
  606. package/dist/ssGSEA.unit.spec-K2SA7ME7.js +0 -83
  607. package/dist/stattable-PR47XT4F.js +0 -117
  608. package/dist/studyCatalog-GMUWIUL4.js +0 -378
  609. package/dist/summarizeCnvGeneexp-YZEMDLES.js +0 -158
  610. package/dist/summarizeGeneexpSurvival-3TXV6ZNI.js +0 -105
  611. package/dist/summarizeMutationCnv-EBWSEHWJ.js +0 -159
  612. package/dist/summarizeMutationDiagnosis-FXA25W3O.js +0 -35
  613. package/dist/summarizeMutationSurvival-MR4AOMNS.js +0 -99
  614. package/dist/summary-4C6LGTMF.js +0 -42
  615. package/dist/summary.integration.spec-Y6JLH7NH.js +0 -409
  616. package/dist/summaryInput-NWT2DXWU.js +0 -242
  617. package/dist/sunburst-266MA7E2.js +0 -278
  618. package/dist/survival-CAZCIY2N.js +0 -53
  619. package/dist/survival-EILGNIY7.js +0 -1246
  620. package/dist/survival-EILGNIY7.js.map +0 -7
  621. package/dist/survival.integration.spec-34JJVLLI.js +0 -613
  622. package/dist/svgraph-OFUESREM.js +0 -1382
  623. package/dist/svmr-PVH42MY4.js +0 -3837
  624. package/dist/table-C2SICFZV.js +0 -197
  625. package/dist/termCollection-H4RL5WJG.js +0 -33
  626. package/dist/termCollection-TGYDI7NP.js +0 -252
  627. package/dist/termCollection.unit.spec-JSALS7GL.js +0 -299
  628. package/dist/termCollectionFractionSelection-YJVDNV4I.js +0 -42
  629. package/dist/termCollectionFractionSelection.unit.spec-4GM7P4ZW.js +0 -188
  630. package/dist/tk-RZCPSHJG.js +0 -1121
  631. package/dist/tk-SNTRA5CC.js +0 -41
  632. package/dist/tp.ui-2W4K3XH6.js +0 -1454
  633. package/dist/tvs.dt-GIPVC3R6.js +0 -34
  634. package/dist/tvs.dtcnv.categorical-TEYAS4OU.js +0 -35
  635. package/dist/tvs.dtcnv.continuous-VQRATYPZ.js +0 -67
  636. package/dist/tvs.dtfusion-P2KF5Z4H.js +0 -35
  637. package/dist/tvs.dtitd-TM6UROSH.js +0 -35
  638. package/dist/tvs.dtsnvindel-FZXC23NF.js +0 -35
  639. package/dist/tvs.dtsv-Y5QEJPYG.js +0 -35
  640. package/dist/tvs.samplelst-MLAFPFER.js +0 -98
  641. package/dist/tvs.termCollection-ZQQDKESH.js +0 -124
  642. package/dist/vocabulary-JRUZPHMG.js +0 -36
  643. package/dist/wsi.direct-6QYNXOBY.js +0 -244
  644. package/dist/wsi.direct-6QYNXOBY.js.map +0 -7
  645. /package/dist/{2dmaf-JIY57FG6.js.map → 2dmaf-ZQ7ACPAD.js.map} +0 -0
  646. /package/dist/{AggMatrixInput-FH6WRTLP.js.map → AggMatrixInput-EACGUIQA.js.map} +0 -0
  647. /package/dist/{AggregateMatrix-MGEX5AVF.js.map → AggregateMatrix-TC5DTSYN.js.map} +0 -0
  648. /package/dist/{AppHeader-FFOQFH55.js.map → AppHeader-PHI6US5B.js.map} +0 -0
  649. /package/dist/{BoxPlot-KCY4JVRX.js.map → BoxPlot-QWKK3IJ7.js.map} +0 -0
  650. /package/dist/{CorrelationVolcano-E5URKQSM.js.map → CorrelationVolcano-QJJN7FVP.js.map} +0 -0
  651. /package/dist/{Cuminc-CBPMCKIC.js.map → Cuminc-6F2C5C4E.js.map} +0 -0
  652. /package/dist/{DifferentialAnalysis-XRBS4PZI.js.map → DifferentialAnalysis-XGXHWGPI.js.map} +0 -0
  653. /package/dist/{Disco-V2VJIDWG.js.map → Disco-7SRTTB3X.js.map} +0 -0
  654. /package/dist/{Disco.UI-OEF5JXBU.js.map → Disco.UI-CKKZ5MMK.js.map} +0 -0
  655. /package/dist/{DmrPlot-KZUWJWBD.js.map → DmrPlot-N4CT4J2I.js.map} +0 -0
  656. /package/dist/{GB-IYTEMMU7.js.map → GB-NVCLPRWN.js.map} +0 -0
  657. /package/dist/{GSEA-QB62B5KB.js.map → GSEA-UZUNJG7Z.js.map} +0 -0
  658. /package/dist/{GeneExpInput-CXX7SXMQ.js.map → GeneExpInput-3MDN2CAW.js.map} +0 -0
  659. /package/dist/{Geomap-QNHSCN4N.js.map → Geomap-ZUF2PE5A.js.map} +0 -0
  660. /package/dist/{HicApp-UIULZYYJ.js.map → HicApp-OIJT5TFU.js.map} +0 -0
  661. /package/dist/{IDCViewer-B2JENGZZ.js.map → IDCViewer-ZSH2E57L.js.map} +0 -0
  662. /package/dist/{NumBinaryEditor-JOU2J23M.js.map → NumBinaryEditor-74ZPGT7L.js.map} +0 -0
  663. /package/dist/{NumBinaryEditor.unit.spec-UXZBBVWL.js.map → NumBinaryEditor.unit.spec-T2I66SO5.js.map} +0 -0
  664. /package/dist/{NumContEditor-BJGP4PVS.js.map → NumContEditor-M2GARZXM.js.map} +0 -0
  665. /package/dist/{NumContEditor.unit.spec-HEXOYIXC.js.map → NumContEditor.unit.spec-G2QBBNH7.js.map} +0 -0
  666. /package/dist/{NumCustomBinEditor-HDRTVWNK.js.map → NumCustomBinEditor-P44G67KS.js.map} +0 -0
  667. /package/dist/{NumCustomBinEditor.unit.spec-MN6QZ3ZB.js.map → NumCustomBinEditor.unit.spec-AZHJN3V6.js.map} +0 -0
  668. /package/dist/{NumDiscreteEditor-JUBR45IJ.js.map → NumDiscreteEditor-VOZ63LZY.js.map} +0 -0
  669. /package/dist/{NumDiscreteEditor.unit.spec-SDK2LR5B.js.map → NumDiscreteEditor.unit.spec-CFSVPNBA.js.map} +0 -0
  670. /package/dist/{NumRegularBinEditor-AQPRZ3MI.js.map → NumRegularBinEditor-I6GJQR7W.js.map} +0 -0
  671. /package/dist/{NumRegularBinEditor.unit.spec-GM3SFB2N.js.map → NumRegularBinEditor.unit.spec-IDJE7H6S.js.map} +0 -0
  672. /package/dist/{NumSplineEditor-LYLROEGE.js.map → NumSplineEditor-BCGWE52A.js.map} +0 -0
  673. /package/dist/{NumSplineEditor.unit.spec-3Q2HP6IB.js.map → NumSplineEditor.unit.spec-YQAL7L2E.js.map} +0 -0
  674. /package/dist/{NumericDensity-3ZCDZORO.js.map → NumericDensity-P25W63RV.js.map} +0 -0
  675. /package/dist/{NumericDensity.unit.spec-MNIAR2PR.js.map → NumericDensity.unit.spec-N7CQ5W5L.js.map} +0 -0
  676. /package/dist/{NumericHandler-MUNEB5IS.js.map → NumericHandler-R7JWIFEO.js.map} +0 -0
  677. /package/dist/{NumericHandler.unit.spec-KPWG2T27.js.map → NumericHandler.unit.spec-LMGIAGZJ.js.map} +0 -0
  678. /package/dist/{ProteomeInput-NEUHQ2G4.js.map → ProteomeInput-PRYKKF5E.js.map} +0 -0
  679. /package/dist/{Regression-C75T5LOY.js.map → Regression-PSHH7ZXN.js.map} +0 -0
  680. /package/dist/{RunChart2-CMQ2BBSJ.js.map → RunChart2-KJ2UWVCE.js.map} +0 -0
  681. /package/dist/{SC-HYK26DXI.js.map → SC-R6ZIJZ6F.js.map} +0 -0
  682. /package/dist/{Violin-J5Z3NKMU.js.map → Violin-GTQAUJ7B.js.map} +0 -0
  683. /package/dist/{Wsi-ZP36MKK7.js.map → Wsi-GXNGL7O6.js.map} +0 -0
  684. /package/dist/{adSandbox-W4THMDUI.js.map → adSandbox-SXSHVG4P.js.map} +0 -0
  685. /package/dist/{animatedBubbleChart-2IVR2WC3.js.map → animatedBubbleChart-Q4NEETEH.js.map} +0 -0
  686. /package/dist/{app-LAIPU5IO.js.map → app-MX4PL2QO.js.map} +0 -0
  687. /package/dist/{app-WMRDJINC.js.map → app-R5CTEVAC.js.map} +0 -0
  688. /package/dist/{bam-44WCWB5P.js.map → bam-45N3FEEM.js.map} +0 -0
  689. /package/dist/{barchart-P6XKCJRF.js.map → barchart-YCTKQJQX.js.map} +0 -0
  690. /package/dist/{barchart2-5NTYCQYN.js.map → barchart2-252GS3CA.js.map} +0 -0
  691. /package/dist/{block-VEOD6CP4.js.map → block-CR75JHV3.js.map} +0 -0
  692. /package/dist/{block.init-RCPDUYAV.js.map → block.init-U3JMED2E.js.map} +0 -0
  693. /package/dist/{block.mds.expressionrank-KALPK27B.js.map → block.mds.expressionrank-TAN3BDPS.js.map} +0 -0
  694. /package/dist/{block.mds.geneboxplot-ZASU25BG.js.map → block.mds.geneboxplot-EN344GEP.js.map} +0 -0
  695. /package/dist/{block.mds.junction-DCVGVSYG.js.map → block.mds.junction-RFVVJUTR.js.map} +0 -0
  696. /package/dist/{block.mds.svcnv-CEGYMRSE.js.map → block.mds.svcnv-SSUMXEWD.js.map} +0 -0
  697. /package/dist/{block.svg-AW4E7NSS.js.map → block.svg-LRPGNFFI.js.map} +0 -0
  698. /package/dist/{block.tk.aicheck-4ZPFLI5I.js.map → block.tk.aicheck-YY23FT2G.js.map} +0 -0
  699. /package/dist/{block.tk.ase-F3VMNBE3.js.map → block.tk.ase-JCGPFKFT.js.map} +0 -0
  700. /package/dist/{block.tk.bam-3VDSEMVO.js.map → block.tk.bam-NZDC4H7Y.js.map} +0 -0
  701. /package/dist/{block.tk.bedgraphdot-3F6AMWFD.js.map → block.tk.bedgraphdot-NCNZPZH6.js.map} +0 -0
  702. /package/dist/{block.tk.bigwig.ui-QO334QC3.js.map → block.tk.bigwig.ui-Z7G6ZITU.js.map} +0 -0
  703. /package/dist/{block.tk.hicstraw-VA7GNOOD.js.map → block.tk.hicstraw-VVDP4UF5.js.map} +0 -0
  704. /package/dist/{block.tk.junction-7WIZ63R7.js.map → block.tk.junction-L4YBPAHM.js.map} +0 -0
  705. /package/dist/{block.tk.junction.textmatrixui-ZHSVODGI.js.map → block.tk.junction.textmatrixui-6CMKKUB5.js.map} +0 -0
  706. /package/dist/{block.tk.ld-JME4SP6A.js.map → block.tk.ld-VCP2R5UO.js.map} +0 -0
  707. /package/dist/{block.tk.menu-7BFQTH3Q.js.map → block.tk.menu-ZJYGMEDX.js.map} +0 -0
  708. /package/dist/{block.tk.pgv-C2N7UFYT.js.map → block.tk.pgv-M5WNUIVS.js.map} +0 -0
  709. /package/dist/{brainImaging-6XFUKFZE.js.map → brainImaging-JGECJHZO.js.map} +0 -0
  710. /package/dist/{bubbleHeatmap-YO4232WO.js.map → bubbleHeatmap-7DQNWBQ2.js.map} +0 -0
  711. /package/dist/{cellTypeBubbleHeatmap-GM4BGCQ3.js.map → cellTypeBubbleHeatmap-LAE7U3RF.js.map} +0 -0
  712. /package/dist/{chunk-JXUFZZRJ.js.map → chunk-2AQT3ZWL.js.map} +0 -0
  713. /package/dist/{chunk-FUEJFIQX.js.map → chunk-2GLNPB5J.js.map} +0 -0
  714. /package/dist/{chunk-7C45EYL6.js.map → chunk-2O4CS3EZ.js.map} +0 -0
  715. /package/dist/{chunk-4C2N2BQC.js.map → chunk-3MFFZRH3.js.map} +0 -0
  716. /package/dist/{chunk-S6XG74R4.js.map → chunk-4AQQ3BXD.js.map} +0 -0
  717. /package/dist/{chunk-GAW2EETX.js.map → chunk-4PPZYVWZ.js.map} +0 -0
  718. /package/dist/{chunk-ZU47ERPU.js.map → chunk-4WEA7HHH.js.map} +0 -0
  719. /package/dist/{chunk-KWLBPOPE.js.map → chunk-57NYHASA.js.map} +0 -0
  720. /package/dist/{chunk-GQ6T62VJ.js.map → chunk-5AAAH4OZ.js.map} +0 -0
  721. /package/dist/{chunk-6RN4RVKF.js.map → chunk-5BCNVZIW.js.map} +0 -0
  722. /package/dist/{chunk-JG6SE6YU.js.map → chunk-6JBQLOJW.js.map} +0 -0
  723. /package/dist/{chunk-5VMEMA4O.js.map → chunk-756KZF5Y.js.map} +0 -0
  724. /package/dist/{chunk-X7IAKV5Z.js.map → chunk-ABTO5QSB.js.map} +0 -0
  725. /package/dist/{chunk-XHOL37O6.js.map → chunk-ALEZQQOK.js.map} +0 -0
  726. /package/dist/{chunk-UBZRZ3PS.js.map → chunk-APK7TUJX.js.map} +0 -0
  727. /package/dist/{chunk-6SKLD7JU.js.map → chunk-AQAFURQM.js.map} +0 -0
  728. /package/dist/{chunk-HWMZ2OHD.js.map → chunk-CZ5QLVWK.js.map} +0 -0
  729. /package/dist/{chunk-AK3SW3VT.js.map → chunk-D2MZT7CC.js.map} +0 -0
  730. /package/dist/{chunk-4Q46RDNU.js.map → chunk-DE3F7FAP.js.map} +0 -0
  731. /package/dist/{chunk-DUGOFIQS.js.map → chunk-DF3IMIR2.js.map} +0 -0
  732. /package/dist/{chunk-ZB3RP5QP.js.map → chunk-E4WIMTK4.js.map} +0 -0
  733. /package/dist/{chunk-PT5JDHPR.js.map → chunk-E7TJXNIL.js.map} +0 -0
  734. /package/dist/{chunk-AAM7HHPU.js.map → chunk-G3JNTWCX.js.map} +0 -0
  735. /package/dist/{chunk-JSVLKCIQ.js.map → chunk-GN2IIC6U.js.map} +0 -0
  736. /package/dist/{chunk-BZYTL2EU.js.map → chunk-GRI74AXV.js.map} +0 -0
  737. /package/dist/{chunk-GTMHDSOQ.js.map → chunk-IAE3KWN5.js.map} +0 -0
  738. /package/dist/{chunk-BMVRYEN2.js.map → chunk-IB4NE4SI.js.map} +0 -0
  739. /package/dist/{chunk-EJ3SSI5J.js.map → chunk-IS4VLUEX.js.map} +0 -0
  740. /package/dist/{chunk-DO4SLQNP.js.map → chunk-J2DICGKC.js.map} +0 -0
  741. /package/dist/{chunk-XPVU5AMT.js.map → chunk-JBUEQ4E6.js.map} +0 -0
  742. /package/dist/{chunk-K5YG7MVJ.js.map → chunk-JIDJBM2R.js.map} +0 -0
  743. /package/dist/{chunk-JVRGY6IU.js.map → chunk-JNVWSFNC.js.map} +0 -0
  744. /package/dist/{chunk-GF6CKFXE.js.map → chunk-KAFDQKN7.js.map} +0 -0
  745. /package/dist/{chunk-NGBQL4CM.js.map → chunk-LGOTIL62.js.map} +0 -0
  746. /package/dist/{chunk-H555QBYP.js.map → chunk-LHP7RXET.js.map} +0 -0
  747. /package/dist/{chunk-4YEDSMFX.js.map → chunk-LK2GHBUH.js.map} +0 -0
  748. /package/dist/{chunk-KLGNLUXR.js.map → chunk-MAVDQAZE.js.map} +0 -0
  749. /package/dist/{chunk-ONXYJWY6.js.map → chunk-MKT4OJ3G.js.map} +0 -0
  750. /package/dist/{chunk-XPB2GP3C.js.map → chunk-NFAE6VNU.js.map} +0 -0
  751. /package/dist/{chunk-KAUMP3RR.js.map → chunk-NG7K5KYO.js.map} +0 -0
  752. /package/dist/{chunk-WFOC4W5A.js.map → chunk-ODMLC5FN.js.map} +0 -0
  753. /package/dist/{chunk-GI3RVOO4.js.map → chunk-OJ4TDGPQ.js.map} +0 -0
  754. /package/dist/{chunk-3QMXNK7G.js.map → chunk-OXLBPSJ6.js.map} +0 -0
  755. /package/dist/{chunk-MCRWA655.js.map → chunk-P5GRGXH4.js.map} +0 -0
  756. /package/dist/{chunk-DAJT3XVZ.js.map → chunk-POWG4MPT.js.map} +0 -0
  757. /package/dist/{chunk-66BJC6ZX.js.map → chunk-Q25DABNW.js.map} +0 -0
  758. /package/dist/{chunk-TAEU6SPJ.js.map → chunk-R5OIIFSF.js.map} +0 -0
  759. /package/dist/{chunk-VHDVTQFR.js.map → chunk-RJFCT67B.js.map} +0 -0
  760. /package/dist/{chunk-WVPFLPWB.js.map → chunk-RN4BOWRH.js.map} +0 -0
  761. /package/dist/{chunk-YLWSTPPL.js.map → chunk-RZFJ6K77.js.map} +0 -0
  762. /package/dist/{chunk-FSDY4QVA.js.map → chunk-S5UN4VIQ.js.map} +0 -0
  763. /package/dist/{chunk-OYHID2D7.js.map → chunk-SDMNZJ7X.js.map} +0 -0
  764. /package/dist/{chunk-VRY7WSS6.js.map → chunk-SWZAHJYP.js.map} +0 -0
  765. /package/dist/{chunk-2YDQC5BV.js.map → chunk-SY63UUF7.js.map} +0 -0
  766. /package/dist/{chunk-HKQDZKSF.js.map → chunk-T46FA72N.js.map} +0 -0
  767. /package/dist/{chunk-YZVWOQBP.js.map → chunk-VIBK253J.js.map} +0 -0
  768. /package/dist/{chunk-AFMD6226.js.map → chunk-XKL2D2NN.js.map} +0 -0
  769. /package/dist/{chunk-LXTBOUBG.js.map → chunk-XXJT7DSL.js.map} +0 -0
  770. /package/dist/{chunk-DMT6S5HJ.js.map → chunk-YHA3AYAM.js.map} +0 -0
  771. /package/dist/{chunk-VSPUFGDX.js.map → chunk-YN5NY3D3.js.map} +0 -0
  772. /package/dist/{chunk-CLOHFGFX.js.map → chunk-YX6FIREB.js.map} +0 -0
  773. /package/dist/{chunk-E3O6ZEWQ.js.map → chunk-ZXU4ALLZ.js.map} +0 -0
  774. /package/dist/{cohort-ZTT2PSQA.js.map → cohort-75FUW3UO.js.map} +0 -0
  775. /package/dist/{condition-L5DXIAJT.js.map → condition-VW43Q6ZE.js.map} +0 -0
  776. /package/dist/{controls-ROZP2O7A.js.map → controls-HOP2AFHD.js.map} +0 -0
  777. /package/dist/{controls.config-YQKGHMIP.js.map → controls.config-CMIFSKQE.js.map} +0 -0
  778. /package/dist/{correlation-6AKRIQXN.js.map → correlation-PN7BS5OR.js.map} +0 -0
  779. /package/dist/{customdata.inputui-DD3OFHUS.js.map → customdata.inputui-ZBZX63PS.js.map} +0 -0
  780. /package/dist/{dataDownload-VHHSLSZV.js.map → dataDownload-LGA4LAUF.js.map} +0 -0
  781. /package/dist/{databrowser.ui-RLYJOEWQ.js.map → databrowser.ui-IQRDVL66.js.map} +0 -0
  782. /package/dist/{dictionary-IMOOQHIH.js.map → dictionary-BPWD77LJ.js.map} +0 -0
  783. /package/dist/{dnaMethylation-T6XUIOJF.js.map → dnaMethylation-A3XPPBBB.js.map} +0 -0
  784. /package/dist/{dnaMethylation.integration.spec-NRJOIDRD.js.map → dnaMethylation.integration.spec-554ITDQC.js.map} +0 -0
  785. /package/dist/{dofetch-MLAEV3A2.js.map → dofetch-FQ42AX7C.js.map} +0 -0
  786. /package/dist/{e2pca-F3TGJOMW.js.map → e2pca-F3GWG7WZ.js.map} +0 -0
  787. /package/dist/{ep-UAF6OL2Y.js.map → ep-QAVN472H.js.map} +0 -0
  788. /package/dist/{expclust.gdc.spec-GHH3JQ65.js.map → expclust.gdc.spec-DQNX7FTL.js.map} +0 -0
  789. /package/dist/{facet-MB4C7GII.js.map → facet-DH7OOZTJ.js.map} +0 -0
  790. /package/dist/{gb-C5YSAFWP.js.map → gb-OCXOLAMD.js.map} +0 -0
  791. /package/dist/{geneExpClustering-3BRSI5BR.js.map → geneExpClustering-DWYRZGTS.js.map} +0 -0
  792. /package/dist/{geneExpression-SIAPRA3E.js.map → geneExpression-2NKSKZR6.js.map} +0 -0
  793. /package/dist/{geneExpression-K3IZLSYC.js.map → geneExpression-BGFR3KQE.js.map} +0 -0
  794. /package/dist/{geneExpression.unit.spec-I66QVNT5.js.map → geneExpression.unit.spec-63EKKMET.js.map} +0 -0
  795. /package/dist/{geneORA-SLM3SNNS.js.map → geneORA-BED6XL4D.js.map} +0 -0
  796. /package/dist/{geneRanking-4EFYOR6A.js.map → geneRanking-UB5RCQNP.js.map} +0 -0
  797. /package/dist/{geneVariant-O347F2OY.js.map → geneVariant-WJEONTTY.js.map} +0 -0
  798. /package/dist/{geneVariant-Z3BUIBLS.js.map → geneVariant-Y4C2FPJK.js.map} +0 -0
  799. /package/dist/{geneVariant.integration.spec-ZZ65EYEL.js.map → geneVariant.integration.spec-VFYLC47N.js.map} +0 -0
  800. /package/dist/{genefusion.ui-TK6UKPDR.js.map → genefusion.ui-P3NBIMLE.js.map} +0 -0
  801. /package/dist/{geneset-MVXSEOKZ.js.map → geneset-O22RQAED.js.map} +0 -0
  802. /package/dist/{genomeBrowser.spec-QDB4Z2L6.js.map → genomeBrowser.spec-MM7WZUGI.js.map} +0 -0
  803. /package/dist/{grin2-DCU6PLPU.js.map → grin2-3YBIRKUT.js.map} +0 -0
  804. /package/dist/{grin2-P6Z45MCJ.js.map → grin2-O637DNDS.js.map} +0 -0
  805. /package/dist/{hierCluster-3H47NLKS.js.map → hierCluster-3X3BQVNE.js.map} +0 -0
  806. /package/dist/{hierCluster-JG6VXTCV.js.map → hierCluster-7P7M75TU.js.map} +0 -0
  807. /package/dist/{hierCluster.config-IP6I7RTS.js.map → hierCluster.config-XFUOLLDK.js.map} +0 -0
  808. /package/dist/{hierCluster.integration.spec-7PUNHRRS.js.map → hierCluster.integration.spec-HKYGSDDG.js.map} +0 -0
  809. /package/dist/{hierCluster.interactivity-FIDVRACV.js.map → hierCluster.interactivity-JUZSWCM7.js.map} +0 -0
  810. /package/dist/{hierCluster.renderers-QMJWUPAI.js.map → hierCluster.renderers-NGPPAYFM.js.map} +0 -0
  811. /package/dist/{imagePlot-CXYKBCWS.js.map → imagePlot-LKGAFJO7.js.map} +0 -0
  812. /package/dist/{importPlot-Z4A54RXH.js.map → importPlot-SRWQA2FH.js.map} +0 -0
  813. /package/dist/{isoformExpression-DMDV2PZY.js.map → isoformExpression-RYIZQIVX.js.map} +0 -0
  814. /package/dist/{isoformExpression.unit.spec-W2LIYOXS.js.map → isoformExpression.unit.spec-DP4ECITF.js.map} +0 -0
  815. /package/dist/{junction-R5GMEO7Z.js.map → junction-D7QQ3YSG.js.map} +0 -0
  816. /package/dist/{junction.customTerm-AI44GNFV.js.map → junction.customTerm-ZEVNCVU7.js.map} +0 -0
  817. /package/dist/{junction.unit.spec-SCRCANOC.js.map → junction.unit.spec-6MAKIB3R.js.map} +0 -0
  818. /package/dist/{launch.adhoc-THLTYZJT.js.map → launch.adhoc-FAHRZFYG.js.map} +0 -0
  819. /package/dist/{leftlabel.sample-GKQXEY4J.js.map → leftlabel.sample-PDZLWLJ4.js.map} +0 -0
  820. /package/dist/{lollipop-2TW6GGPY.js.map → lollipop-VWGJUHNX.js.map} +0 -0
  821. /package/dist/{maf-A4PVW5V2.js.map → maf-W52H44WK.js.map} +0 -0
  822. /package/dist/{maftimeline-QMX3HOAU.js.map → maftimeline-5JV3HZLE.js.map} +0 -0
  823. /package/dist/{matrix-BGRYRU3T.js.map → matrix-CEVGKXSK.js.map} +0 -0
  824. /package/dist/{matrix-GPXTUVCQ.js.map → matrix-EXNYXYLK.js.map} +0 -0
  825. /package/dist/{matrix.cells-C6OY7F5T.js.map → matrix.cells-DVPWSLJW.js.map} +0 -0
  826. /package/dist/{matrix.config-Z5ZGHXDV.js.map → matrix.config-RLSTWDXC.js.map} +0 -0
  827. /package/dist/{matrix.data-WB26I3TF.js.map → matrix.data-Z6GUACVZ.js.map} +0 -0
  828. /package/dist/{matrix.groups-C2V2CV4A.js.map → matrix.groups-3ZSTUWRK.js.map} +0 -0
  829. /package/dist/{matrix.integration.spec-3COAXQBV.js.map → matrix.integration.spec-4U2R3UB2.js.map} +0 -0
  830. /package/dist/{matrix.interactivity-NGHIQR3A.js.map → matrix.interactivity-DJZFQ7DN.js.map} +0 -0
  831. /package/dist/{matrix.layout-NYIOESGN.js.map → matrix.layout-RQJ6VB4P.js.map} +0 -0
  832. /package/dist/{matrix.legend-Q5HHWP5Q.js.map → matrix.legend-YQ36NWKW.js.map} +0 -0
  833. /package/dist/{matrix.renderers-GLXZARIP.js.map → matrix.renderers-MWDFI6HW.js.map} +0 -0
  834. /package/dist/{matrix.serieses-LDQEPXPD.js.map → matrix.serieses-LTC4RLYD.js.map} +0 -0
  835. /package/dist/{matrix.sort-44TQNRIX.js.map → matrix.sort-5VFYLABY.js.map} +0 -0
  836. /package/dist/{matrix.sort.unit.spec-T3BDWJ3Z.js.map → matrix.sort.unit.spec-2RUEKUT4.js.map} +0 -0
  837. /package/dist/{matrix.sorterUi-6Y4YBQYL.js.map → matrix.sorterUi-EEMYZLPI.js.map} +0 -0
  838. /package/dist/{matrix.sorterUi.unit.spec-NHUYNMNU.js.map → matrix.sorterUi.unit.spec-ZXGSPRFZ.js.map} +0 -0
  839. /package/dist/{matrix.unit.spec-C7IRIBN6.js.map → matrix.unit.spec-HTF6UV4L.js.map} +0 -0
  840. /package/dist/{mavb-E37LI73X.js.map → mavb-GGQRDCO6.js.map} +0 -0
  841. /package/dist/{mds.fimo-YTGX7VEN.js.map → mds.fimo-YKV5OIYV.js.map} +0 -0
  842. /package/dist/{mds.samplescatterplot-FFGGJSI3.js.map → mds.samplescatterplot-RQOEW2AW.js.map} +0 -0
  843. /package/dist/{mds.survivalplot-NCWRXXV4.js.map → mds.survivalplot-TN636DED.js.map} +0 -0
  844. /package/dist/{multivalue-N7A2PU5K.js.map → multivalue-MDQY64EH.js.map} +0 -0
  845. /package/dist/{numericDictTermCluster-AKQKRBQH.js.map → numericDictTermCluster-E73TJCLI.js.map} +0 -0
  846. /package/dist/{oncomatrix-QPVGACMF.js.map → oncomatrix-AENXQMLL.js.map} +0 -0
  847. /package/dist/{oncomatrix.spec-6L2NDN2G.js.map → oncomatrix.spec-UD6U462U.js.map} +0 -0
  848. /package/dist/{plot.2dvaf-6TLON77B.js.map → plot.2dvaf-XMRV6KEG.js.map} +0 -0
  849. /package/dist/{plot.app-VM273TXU.js.map → plot.app-A6JKLYQQ.js.map} +0 -0
  850. /package/dist/{plot.barplot-IQTZURHK.js.map → plot.barplot-UIX7LVWR.js.map} +0 -0
  851. /package/dist/{plot.boxplot-WEXB6HII.js.map → plot.boxplot-DIFWVLMA.js.map} +0 -0
  852. /package/dist/{plot.brainImaging-REGSSBHV.js.map → plot.brainImaging-ZRPVE2UK.js.map} +0 -0
  853. /package/dist/{plot.disco-F25Z3FQL.js.map → plot.disco-I56MT3PC.js.map} +0 -0
  854. /package/dist/{plot.ssgq-CRRK26RS.js.map → plot.ssgq-FCKFSZTV.js.map} +0 -0
  855. /package/dist/{plot.vaf2cov-WCNPZKXK.js.map → plot.vaf2cov-E5C7RJ7Z.js.map} +0 -0
  856. /package/dist/{polar2-MH5GPXHJ.js.map → polar2-SKVBB4FD.js.map} +0 -0
  857. /package/dist/{profileForms-2YX2OYDI.js.map → profileForms-5B3MTUNP.js.map} +0 -0
  858. /package/dist/{profilePlot-FUTMZ2PP.js.map → profilePlot-MCYCGEWT.js.map} +0 -0
  859. /package/dist/{proteinView-6Z4ALZW2.js.map → proteinView-5X55JWVL.js.map} +0 -0
  860. /package/dist/{proteomeCohortCompare-6GLFOYI5.js.map → proteomeCohortCompare-WZBMBLFD.js.map} +0 -0
  861. /package/dist/{pseudbulk.unit.spec-S7FDL3IX.js.map → pseudbulk.unit.spec-Q4YTIPH7.js.map} +0 -0
  862. /package/dist/{pseudobulk-A3LB23N2.js.map → pseudobulk-3UIWCCCQ.js.map} +0 -0
  863. /package/dist/{qualitative-5VJRMF4S.js.map → qualitative-6TJRXZFV.js.map} +0 -0
  864. /package/dist/{radar2-2SJX4ZXN.js.map → radar2-6X4XW5IZ.js.map} +0 -0
  865. /package/dist/{radarFacility2-7FPO34JS.js.map → radarFacility2-UVPXWPV5.js.map} +0 -0
  866. /package/dist/{rememberedGvQ.unit.spec-WOQVPQ75.js.map → rememberedGvQ.unit.spec-GVRFRVSO.js.map} +0 -0
  867. /package/dist/{render-ZLA2RRBP.js.map → render-G7V6R4PV.js.map} +0 -0
  868. /package/dist/{report-VCE6RILD.js.map → report-O7D46EKQ.js.map} +0 -0
  869. /package/dist/{sampleView-QYTX4OLI.js.map → sampleView-6Y3OOOMW.js.map} +0 -0
  870. /package/dist/{samplelst-7NGH3SUM.js.map → samplelst-JRVC4GYC.js.map} +0 -0
  871. /package/dist/{samplematrix-SNAR6IBB.js.map → samplematrix-VP5RQVRH.js.map} +0 -0
  872. /package/dist/{sc-2JETYAI4.js.map → sc-BPHVEP6N.js.map} +0 -0
  873. /package/dist/{scatter-GHBQM2RR.js.map → scatter-2YYRZCSW.js.map} +0 -0
  874. /package/dist/{scatter-D7VZOBEE.js.map → scatter-Y4BIG2PW.js.map} +0 -0
  875. /package/dist/{selectGenomeWithTklst-BD4GMGX3.js.map → selectGenomeWithTklst-2BVZU5SW.js.map} +0 -0
  876. /package/dist/{singleCellCellType-XHLOJVVC.js.map → singleCellCellType-XBGCSIQT.js.map} +0 -0
  877. /package/dist/{singleCellCellType.unit.spec-LCLR3IOD.js.map → singleCellCellType.unit.spec-T4GFRLVZ.js.map} +0 -0
  878. /package/dist/{singleCellGeneExpression-JRBONI5C.js.map → singleCellGeneExpression-5ZPWLSVW.js.map} +0 -0
  879. /package/dist/{singleCellGeneExpression.unit.spec-Z2KSVCIG.js.map → singleCellGeneExpression.unit.spec-4O5UBUDU.js.map} +0 -0
  880. /package/dist/{singleCellPlot-4462CQHF.js.map → singleCellPlot-CZLQBGVU.js.map} +0 -0
  881. /package/dist/{singlecell-SO3B5KJ7.js.map → singlecell-IIUYX7OG.js.map} +0 -0
  882. /package/dist/{singlecell-CDUQ6MTO.js.map → singlecell-O3P5BLWT.js.map} +0 -0
  883. /package/dist/{snp-YE2MXKJO.js.map → snp-ZCYBF3ZQ.js.map} +0 -0
  884. /package/dist/{snp.unit.spec-MT57TGGQ.js.map → snp.unit.spec-TAGD2DRL.js.map} +0 -0
  885. /package/dist/{snplocus-RSNKWY63.js.map → snplocus-TL25OOPE.js.map} +0 -0
  886. /package/dist/{spliceevent.a53ss.diagram-6N6YGYV7.js.map → spliceevent.a53ss.diagram-I7J4PQZT.js.map} +0 -0
  887. /package/dist/{spliceevent.exonskip.diagram-LMNUS4XV.js.map → spliceevent.exonskip.diagram-SB4454HB.js.map} +0 -0
  888. /package/dist/{spliceevent.noeventdiagram-LTBH4YD5.js.map → spliceevent.noeventdiagram-FOSDNYLH.js.map} +0 -0
  889. /package/dist/{ssGSEA-DPK4PDM2.js.map → ssGSEA-WANB2X5L.js.map} +0 -0
  890. /package/dist/{ssGSEA.unit.spec-K2SA7ME7.js.map → ssGSEA.unit.spec-4XXWU4XV.js.map} +0 -0
  891. /package/dist/{stattable-PR47XT4F.js.map → stattable-FNTJLVNB.js.map} +0 -0
  892. /package/dist/{studyCatalog-GMUWIUL4.js.map → studyCatalog-7KEOFLO2.js.map} +0 -0
  893. /package/dist/{summarizeCnvGeneexp-YZEMDLES.js.map → summarizeCnvGeneexp-P4AFZMKD.js.map} +0 -0
  894. /package/dist/{summarizeGeneexpSurvival-3TXV6ZNI.js.map → summarizeGeneexpSurvival-YL2J7F4R.js.map} +0 -0
  895. /package/dist/{summarizeMutationCnv-EBWSEHWJ.js.map → summarizeMutationCnv-BHBHST5F.js.map} +0 -0
  896. /package/dist/{summarizeMutationDiagnosis-FXA25W3O.js.map → summarizeMutationDiagnosis-Z7ZHTV27.js.map} +0 -0
  897. /package/dist/{summarizeMutationSurvival-MR4AOMNS.js.map → summarizeMutationSurvival-PZ4TYHT7.js.map} +0 -0
  898. /package/dist/{summary-4C6LGTMF.js.map → summary-ZMNPO65S.js.map} +0 -0
  899. /package/dist/{summary.integration.spec-Y6JLH7NH.js.map → summary.integration.spec-DPJR2ZBE.js.map} +0 -0
  900. /package/dist/{summaryInput-NWT2DXWU.js.map → summaryInput-6JUFJZ5P.js.map} +0 -0
  901. /package/dist/{sunburst-266MA7E2.js.map → sunburst-OWAUI3HC.js.map} +0 -0
  902. /package/dist/{survival-CAZCIY2N.js.map → survival-6JPKG3VA.js.map} +0 -0
  903. /package/dist/{survival.integration.spec-34JJVLLI.js.map → survival.integration.spec-A6NUJLL6.js.map} +0 -0
  904. /package/dist/{svgraph-OFUESREM.js.map → svgraph-34IKFHUS.js.map} +0 -0
  905. /package/dist/{svmr-PVH42MY4.js.map → svmr-4XNPSVVQ.js.map} +0 -0
  906. /package/dist/{table-C2SICFZV.js.map → table-LPZATFLC.js.map} +0 -0
  907. /package/dist/{termCollection-TGYDI7NP.js.map → termCollection-DYY5FXU5.js.map} +0 -0
  908. /package/dist/{termCollection-H4RL5WJG.js.map → termCollection-WOAUFFIC.js.map} +0 -0
  909. /package/dist/{termCollection.unit.spec-JSALS7GL.js.map → termCollection.unit.spec-WTICTZ7H.js.map} +0 -0
  910. /package/dist/{termCollectionFractionSelection-YJVDNV4I.js.map → termCollectionFractionSelection-K5HPDEFP.js.map} +0 -0
  911. /package/dist/{termCollectionFractionSelection.unit.spec-4GM7P4ZW.js.map → termCollectionFractionSelection.unit.spec-D7DG2HOI.js.map} +0 -0
  912. /package/dist/{tk-RZCPSHJG.js.map → tk-DD2LWVGM.js.map} +0 -0
  913. /package/dist/{tk-SNTRA5CC.js.map → tk-NV7NBLT6.js.map} +0 -0
  914. /package/dist/{tp.ui-2W4K3XH6.js.map → tp.ui-B5J3UUVB.js.map} +0 -0
  915. /package/dist/{tvs.dt-GIPVC3R6.js.map → tvs.dt-XLKQT64T.js.map} +0 -0
  916. /package/dist/{tvs.dtcnv.categorical-TEYAS4OU.js.map → tvs.dtcnv.categorical-XIC3RH2D.js.map} +0 -0
  917. /package/dist/{tvs.dtcnv.continuous-VQRATYPZ.js.map → tvs.dtcnv.continuous-OA2K4LHF.js.map} +0 -0
  918. /package/dist/{tvs.dtfusion-P2KF5Z4H.js.map → tvs.dtfusion-ZGNKALZB.js.map} +0 -0
  919. /package/dist/{tvs.dtitd-TM6UROSH.js.map → tvs.dtitd-6QSG4E34.js.map} +0 -0
  920. /package/dist/{tvs.dtsnvindel-FZXC23NF.js.map → tvs.dtsnvindel-5CXXOGPH.js.map} +0 -0
  921. /package/dist/{tvs.dtsv-Y5QEJPYG.js.map → tvs.dtsv-QYYEYUD3.js.map} +0 -0
  922. /package/dist/{tvs.samplelst-MLAFPFER.js.map → tvs.samplelst-X77ODFFR.js.map} +0 -0
  923. /package/dist/{tvs.termCollection-ZQQDKESH.js.map → tvs.termCollection-VXROWAPS.js.map} +0 -0
  924. /package/dist/{vocabulary-JRUZPHMG.js.map → vocabulary-DKWYTZRC.js.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../plots/matrix/matrix.controls.samples.ts", "../plots/matrix/matrix.controls.genes.ts", "../plots/matrix/matrix.controls.variables.ts", "../plots/matrix/matrix.controls.dimensions.ts", "../plots/matrix/matrix.controls.legend.ts", "../plots/matrix/matrix.controls.mutations.ts", "../plots/matrix/matrix.controls.cnv.ts", "../plots/matrix/matrix.controls.download.ts", "../plots/matrix/matrix.zoomPanScroll.ts", "../plots/matrix/matrix.controls.ts", "../plots/matrix/matrix.xtw.ts", "../plots/matrix/matrix.js"],
4
- "sourcesContent": ["import { getSorterUi } from './matrix.sorterUi'\nimport { fillTermWrapper } from '#termsetting'\nimport { make_radios, make_one_checkbox } from '#dom'\nimport { select } from 'd3-selection'\nimport { isNumericTerm } from '#shared/terms.js'\nimport type { MatrixControls } from './matrix.controls'\n\nexport function setSamplesBtn(self: MatrixControls, s: any) {\n\tconst l = s.controlLabels\n\tconst controls = self\n\tconst parent = self.parent\n\tconst rows: any[] = [\n\t\t{\n\t\t\tlabel: `Maximum # ${l.Samples}`,\n\t\t\ttitle: `Limit the number of displayed ${l.samples}`,\n\t\t\ttype: 'number',\n\t\t\tchartType: 'matrix',\n\t\t\tsettingsKey: 'maxSample',\n\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: `Sort ${l.Sample} Groups`,\n\t\t\ttitle: `Set how to sort ${l.sample} groups`,\n\t\t\ttype: 'radio',\n\t\t\tchartType: 'matrix',\n\t\t\tsettingsKey: 'sortSampleGrpsBy',\n\t\t\toptions: [\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Predefined or Group Name',\n\t\t\t\t\tvalue: 'name',\n\t\t\t\t\ttitle: `Sort by group name`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `${l.Sample} Count`,\n\t\t\t\t\tvalue: 'sampleCount',\n\t\t\t\t\ttitle: `Sort by the number of samples in the group`\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `Hits`,\n\t\t\t\t\tvalue: 'hits',\n\t\t\t\t\ttitle: `Sort by the total number of variants for every ${l.sample} in the group`\n\t\t\t\t}\n\t\t\t],\n\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\treturn plot.divideBy && !plot.hierCluster ? 'table-row' : 'none'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: `${l.Sample} Group Label Character Limit`,\n\t\t\ttitle: `Truncate the ${l.sample} group label if it exceeds this maximum number of characters`,\n\t\t\ttype: 'number',\n\t\t\tchartType: 'matrix',\n\t\t\tsettingsKey: 'sampleGrpLabelMaxChars',\n\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\treturn plot.divideBy && !plot.hierCluster ? 'table-row' : 'none'\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\tlabel: `${l.Sample} Label Character Limit`,\n\t\t\ttitle: `Truncate the ${l.sample} label if it exceeds this maximum number of characters`,\n\t\t\ttype: 'number',\n\t\t\tchartType: 'matrix',\n\t\t\tsettingsKey: 'collabelmaxchars'\n\t\t},\n\t\t{\n\t\t\tlabel: `Toggle sample labels`,\n\t\t\ttitle: `Do not automatically show sample labels based on column width`,\n\t\t\ttype: 'radio',\n\t\t\tchartType: 'matrix',\n\t\t\tsettingsKey: 'sampleLabelsToggle',\n\t\t\tstyles: { display: 'inline-block' },\n\t\t\toptions: [\n\t\t\t\t{ label: `Based on column width`, value: 'auto' },\n\t\t\t\t{ label: 'Always hide', value: 'hide' }\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\tlabel: `Group ${l.Samples} By`,\n\t\t\ttitle: `Select a variable with discrete values to group ${l.samples}`,\n\t\t\ttype: 'term',\n\t\t\tchartType: 'matrix',\n\t\t\tconfigKey: 'divideBy',\n\t\t\t// without an explicit usecase the term tree falls to the 'default' rule,\n\t\t\t// which excludes multivalue; the matrix supports multivalue divideBy\n\t\t\t// (a sample renders in each group it belongs to)\n\t\t\tusecase: { target: 'matrix', detail: 'divideBy' },\n\t\t\tvocabApi: self.opts.app.vocabApi,\n\t\t\tstate: {\n\t\t\t\tvocab: self.opts.vocab\n\t\t\t\t//activeCohort: appState.activeCohort\n\t\t\t},\n\t\t\tprocessInput: async (tw: any) => {\n\t\t\t\tif (tw?.term && isNumericTerm(tw.term)) {\n\t\t\t\t\t// any numeric term should be discrete when used as divideBy term\n\t\t\t\t\t// tw is missing when dividedBy term deleted\n\t\t\t\t\ttw.q = { ...tw.q, mode: 'discrete' }\n\t\t\t\t}\n\t\t\t\tif (tw) await fillTermWrapper(tw, self.opts.app.vocabApi)\n\t\t\t\treturn tw\n\t\t\t},\n\t\t\tprocessConfig: (config: any) => {\n\t\t\t\tif (self.parent.chartType == 'hierCluster' && config['divideBy']) {\n\t\t\t\t\tconfig.settings = {\n\t\t\t\t\t\thierCluster: {\n\t\t\t\t\t\t\tyDendrogramHeight: 0,\n\t\t\t\t\t\t\tclusterSamples: false\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (self.parent.config.divideBy)\n\t\t\t\t\tconfig.legendValueFilter = self.parent.mayRemoveTvsEntry(self.parent.config.divideBy)\n\t\t\t},\n\t\t\tgetBodyParams: () => {\n\t\t\t\t// hierCluster hides the groupBy, so no need to consider gene expression term type\n\t\t\t\tconst currentGeneNames = self.parent.termOrder\n\t\t\t\t\t.filter((t: any) => t.tw.term.type === 'geneVariant')\n\t\t\t\t\t.map((t: any) =>\n\t\t\t\t\t\tt.tw.term.chr ? `${t.tw.term.chr}:${t.tw.term.start}-${t.tw.term.stop}` : t.tw.term.gene || t.tw.term.name\n\t\t\t\t\t) // TODO term.gene replaces term.name\n\t\t\t\tif (currentGeneNames.length) return { currentGeneNames }\n\t\t\t\treturn {}\n\t\t\t}\n\t\t}\n\t]\n\n\trows.push({\n\t\tlabel: `Sort ${l.Sample} Priority`,\n\t\ttitle: `Set how to sort ${l.samples}`,\n\t\ttype: 'custom',\n\t\t// the \"input\" argument is created by controls\n\t\tinit(input: any) {\n\t\t\tconst m = parent.config.settings.matrix\n\t\t\tif (!controls.activeTab) controls.activeTab = 'basic'\n\t\t\tinput.dom.inputTd.style('padding', '5px')\n\t\t\t// **** !!! TODO: use dom/toggleButtons to create tabbed sections !!!\n\t\t\tconst btnsDiv = input.dom.inputTd.append('div').style('margin-bottom', '5px')\n\t\t\tconst basicBtn = btnsDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('padding-right', '5px')\n\t\t\t\t.style('border-right', '2px solid black')\n\t\t\t\t.style('text-decoration', controls.activeTab == 'basic' ? 'underline' : '')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.html('Basic')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tcontrols.activeTab = 'basic'\n\t\t\t\t\tbasicBtn.style('text-decoration', 'underline')\n\t\t\t\t\tadvancedBtn.style('text-decoration', '')\n\t\t\t\t\tbasicDiv.style('display', '')\n\t\t\t\t\tadvancedDiv.style('display', 'none')\n\t\t\t\t})\n\t\t\tconst advancedBtn = btnsDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('margin-left', '5px')\n\t\t\t\t.style('text-decoration', controls.activeTab == 'advanced' ? 'underline' : '')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.html('Advanced')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tcontrols.activeTab = 'advanced'\n\t\t\t\t\tbasicBtn.style('text-decoration', '')\n\t\t\t\t\tadvancedBtn.style('text-decoration', 'underline')\n\t\t\t\t\tbasicDiv.style('display', 'none')\n\t\t\t\t\tadvancedDiv.style('display', '')\n\t\t\t\t})\n\n\t\t\tconst basicDiv = input.dom.inputTd.append('div').style('display', controls.activeTab == 'basic' ? '' : 'none')\n\n\t\t\tif (self.parent.config.chartType == 'matrix' && parent.app.vocabApi.termdbConfig.hasSampleAncestry) {\n\t\t\t\t// visibility depends only on the ancestry feature (guarded above), not on CNV\n\t\t\t\t// state \u2014 the CNV display gate was copied here by mistake and would hide the\n\t\t\t\t// control (including its 'disable' option) whenever all CNV classes are hidden\n\t\t\t\tconst ancestryDiv = basicDiv.append('div').attr('title', 'sort by ancestry').style('display', 'block')\n\n\t\t\t\tancestryDiv.append('span').html('Ancestry')\n\n\t\t\t\tmake_radios({\n\t\t\t\t\t// holder, options, callback, styles\n\t\t\t\t\tholder: ancestryDiv.append('span'),\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ label: 'sort first', value: 'first', checked: m.sortBySampleAncestry === 'first' },\n\t\t\t\t\t\t{ label: 'sort last', value: 'last', checked: m.sortBySampleAncestry === 'last' },\n\t\t\t\t\t\t{ label: 'disable', value: false, checked: m.sortBySampleAncestry === false }\n\t\t\t\t\t],\n\t\t\t\t\tstyles: {\n\t\t\t\t\t\tdisplay: 'inline-block'\n\t\t\t\t\t},\n\t\t\t\t\tcallback: (selectedValue: 'first' | 'last' | false) => {\n\t\t\t\t\t\tparent.app.dispatch({\n\t\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\t\tid: parent.id,\n\t\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\t\t\t\tsortBySampleAncestry: selectedValue\n\t\t\t\t\t\t\t\t\t\t//sortByCNV, // needed to show the correct status for checkbox, but actual sorting behavior\n\t\t\t\t\t\t\t\t\t\t//sortOptions // is based on sortOptions.a[*].tiebreaker[*][disabled, isOrdered]\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\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})\n\t\t\t}\n\n\t\t\tconst ssmDiv = basicDiv.append('div')\n\t\t\tssmDiv.append('span').html('SSM')\n\t\t\tconst { inputs } = make_radios({\n\t\t\t\t// holder, options, callback, styles\n\t\t\t\tholder: ssmDiv.append('span'),\n\t\t\t\toptions: [\n\t\t\t\t\t{ label: 'by consequence', value: 'consequence', checked: m.sortByMutation === 'consequence' },\n\t\t\t\t\t{ label: 'by presence', value: 'presence', checked: m.sortByMutation === 'presence' }\n\t\t\t\t],\n\t\t\t\tstyles: {\n\t\t\t\t\tdisplay: 'inline-block'\n\t\t\t\t},\n\t\t\t\tcallback: (sortByMutation: any) => {\n\t\t\t\t\tconst sortOptions = parent.config.settings.matrix.sortOptions\n\t\t\t\t\tconst activeOption = sortOptions.a\n\t\t\t\t\tconst mutTb = activeOption.sortPriority[0].tiebreakers[1]\n\t\t\t\t\tmutTb.disabled = !sortByMutation\n\t\t\t\t\tmutTb.isOrdered = sortByMutation === 'consequence'\n\n\t\t\t\t\tparent.app.dispatch({\n\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\tid: parent.id,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\t\t\tsortByMutation, // needed to show the correct status for checkbox, but actual sorting behavior\n\t\t\t\t\t\t\t\t\tsortOptions // is based on sortOptions.a[*].tiebreaker[*][disabled, isOrdered]\n\t\t\t\t\t\t\t\t}\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}\n\t\t\t})\n\n\t\t\tinputs.style('margin', '2px 0 0 2px').style('vertical-align', 'top')\n\t\t\tconst cnvDiv = basicDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', m.showMatrixCNV != 'none' && !m.allMatrixCNVHidden ? 'block' : 'none')\n\n\t\t\tcnvDiv.append('span').html('CNV')\n\t\t\t// holder, labeltext, callback, checked, divstyle\n\t\t\tconst checkbox = make_one_checkbox({\n\t\t\t\tholder: cnvDiv.append('span'),\n\t\t\t\tdivstyle: { display: 'inline-block' },\n\t\t\t\tchecked: m.sortByCNV,\n\t\t\t\tlabeltext: 'sort by CNV',\n\t\t\t\tcallback: () => {\n\t\t\t\t\tconst sortByCNV = checkbox.property('checked')\n\t\t\t\t\tconst sortOptions = parent.config.settings.matrix.sortOptions\n\t\t\t\t\tconst activeOption = sortOptions.a\n\t\t\t\t\tconst cnvTb = activeOption.sortPriority[0].tiebreakers[2]\n\t\t\t\t\tcnvTb.disabled = !sortByCNV\n\t\t\t\t\tcnvTb.isOrdered = sortByCNV\n\n\t\t\t\t\tparent.app.dispatch({\n\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\tid: parent.id,\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\t\t\tsortByCNV, // needed to show the correct status for checkbox, but actual sorting behavior\n\t\t\t\t\t\t\t\t\tsortOptions // is based on sortOptions.a[*].tiebreaker[*][disabled, isOrdered]\n\t\t\t\t\t\t\t\t}\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}\n\t\t\t})\n\n\t\t\tconst advancedDiv = input.dom.inputTd\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', controls.activeTab == 'advanced' ? '' : 'none')\n\t\t\tinput.dom.row.on('mouseover', function (this: any) {\n\t\t\t\tthis.style.backgroundColor = '#fff'\n\t\t\t\tthis.style.textShadow = 'none'\n\t\t\t})\n\n\t\t\tif (!controls.sorterUi) {\n\t\t\t\tcontrols.sorterUi = getSorterUi({\n\t\t\t\t\tcontrols: controls,\n\t\t\t\t\tholder: advancedDiv,\n\t\t\t\t\ttip: controls.parent.app.tip\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tcontrols.sorterUi.main(controls.parent.config.settings.matrix, { holder: advancedDiv })\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tmain: (plot: any) => {\n\t\t\t\t\tconst s = plot.settings.matrix\n\t\t\t\t\t// ssm\n\t\t\t\t\tinputs.property('checked', (d: any) => d.value == s.sortByMutation)\n\t\t\t\t\t// cnv\n\t\t\t\t\tcheckbox.property('checked', s.sortByCNV)\n\t\t\t\t\tcnvDiv.style('display', s.showMatrixCNV != 'none' && !s.allMatrixCNVHidden ? 'block' : 'none')\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t})\n\n\tself.opts.holder\n\t\t.append('button')\n\t\t//.property('disabled', d => d.disabled)\n\t\t.datum({\n\t\t\tlabel: l.Samples || `Samples`,\n\t\t\tgetCount: () =>\n\t\t\t\t'sampleCount' in self.overrides ? self.overrides.sampleCount : self.parent.sampleOrder?.length || 0,\n\t\t\trows,\n\t\t\tcustomInputs: updateSamplesControls\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n\nexport function updateSamplesControls(self: MatrixControls, app: any, parent: any, table: any) {\n\tif (parent.chartType == 'hierCluster' && parent.config.settings.hierCluster.clusterSamples) {\n\t\tconst l = parent.config.settings.matrix.controlLabels\n\t\tconst sortingControl = select(\n\t\t\ttable\n\t\t\t\t.selectAll('td')\n\t\t\t\t.filter(function (this: any) {\n\t\t\t\t\treturn select(this).text() == `Sort ${l.Sample} Priority`\n\t\t\t\t})\n\t\t\t\t.node()\n\t\t\t\t.closest('tr')\n\t\t)\n\t\tsortingControl.style('display', 'none')\n\t}\n}\n", "import { initByInput } from '#plots/controls.config.js'\nimport { fillTermWrapper, get$id } from '#termsetting'\nimport { Menu, GeneSetEditUI, GeneSetEditUIwithTabs } from '#dom'\nimport { TermTypes } from '#types'\nimport { getGEunit } from '#tw/geneExpression'\nimport type { MatrixControls } from './matrix.controls'\n\nconst tip = new Menu({ padding: '' })\n\nexport function setGenesBtn(self: MatrixControls, s: any) {\n\tconst l = s.controlLabels\n\tconst renderStyleOptions = [\n\t\t{\n\t\t\tlabel: `&nbsp;Stacked <span style=\"font-size:.7em;color:#555;\">Show stacked rectangles in the same matrix cell to render variants for the same ${l.sample} and gene</span>`,\n\t\t\tvalue: '',\n\t\t\ttitle: `Show stacked rectangles in the same matrix cell to render variants for the same ${l.sample} and gene`\n\t\t},\n\t\t{\n\t\t\tlabel: `&nbsp;OncoPrint <span style=\"font-size:.7em;color:#555;\">Show overlapping rectangles in the same matrix cell to render variants for the same ${l.sample} and gene</span>`,\n\t\t\tvalue: 'oncoprint',\n\t\t\ttitle: `Show overlapping rectangles in the same matrix cell to render variants for the same ${l.sample} and gene`\n\t\t}\n\t]\n\tif (s.addMutationCNVButtons && self.parent.chartType !== 'hierCluster')\n\t\trenderStyleOptions.unshift({\n\t\t\tlabel: `&nbsp;Single <span style=\"font-size:.7em;color:#555;\">Show a single rectangle in a matrix cell to render the most severe variant (truncating > indels > missense > synonymous) for the same ${l.sample} and gene</span>`,\n\t\t\tvalue: 'single',\n\t\t\ttitle: `Show a single rectangle in a matrix cell to render the most severe variant (truncating > indels > missense > synonymous) for the same ${l.sample} and gene`\n\t\t})\n\tself.opts.holder\n\t\t.append('button')\n\t\t//.property('disabled', d => d.disabled)\n\t\t.datum({\n\t\t\tlabel: 'Genes',\n\t\t\tgetCount: () =>\n\t\t\t\tself.parent.termOrder?.filter(\n\t\t\t\t\t(t: any) => t.tw.term.type == TermTypes.GENE_VARIANT || t.tw.term.type == TermTypes.GENE_EXPRESSION\n\t\t\t\t).length || 0,\n\t\t\tcustomInputs: addGeneInputs,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: `Display ${l.Sample} Counts for Gene`,\n\t\t\t\t\ttitle: `Include the ${l.sample} count in the gene label`,\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'samplecount4gene',\n\t\t\t\t\tstyles: { display: 'inline-block' },\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ label: 'Absolute', value: 'abs' },\n\t\t\t\t\t\t{ label: `Percent`, value: 'pct' },\n\t\t\t\t\t\t{ label: `None`, value: '' }\n\t\t\t\t\t],\n\t\t\t\t\tgetDisplayStyle() {\n\t\t\t\t\t\treturn self.parent.termOrder?.filter((t: any) => t.tw.term.type == 'geneVariant').length\n\t\t\t\t\t\t\t? 'table-row'\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t// TODO: implement this contol option\n\t\t\t\t// {\n\t\t\t\t// \tlabel: `Exclude From ${l.Sample} Displayed Counts`,\n\t\t\t\t// \ttitle: `Do not include these variations/mutations when counting samples for a gene.`,\n\t\t\t\t// \ttype: 'text',\n\t\t\t\t// \tchartType: 'matrix',\n\t\t\t\t// \tsettingsKey: 'geneVariantCountSamplesSkipMclass',\n\t\t\t\t// \tprocessInput: tw => {},\n\t\t\t\t// },\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Genomic Alterations Rendering',\n\t\t\t\t\ttitle: `Set how to indicate a ${l.sample}'s applicable variant types in the same matrix cell`,\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'cellEncoding',\n\t\t\t\t\toptions: renderStyleOptions,\n\t\t\t\t\tstyles: { padding: '5px 0px', margin: 0 },\n\t\t\t\t\tlabelDisplay: 'block',\n\t\t\t\t\tgetDisplayStyle() {\n\t\t\t\t\t\treturn self.parent.termOrder?.filter((t: any) => t.tw.term.type == 'geneVariant').length\n\t\t\t\t\t\t\t? 'table-row'\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t\t},\n\t\t\t\t\tcallback: self.parent.geneStyleControlCallback\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Sort Genes',\n\t\t\t\t\ttitle: 'Set how to order the genes as rows',\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'sortTermsBy',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ label: 'By Input Data Order', value: 'asListed' },\n\t\t\t\t\t\t{ label: `By ${l.sample} Count`, value: 'sampleCount' }\n\t\t\t\t\t],\n\t\t\t\t\tstyles: { padding: 0, 'padding-right': '10px', margin: 0, display: 'inline-block' },\n\t\t\t\t\tgetDisplayStyle() {\n\t\t\t\t\t\treturn self.parent.termOrder?.filter((t: any) => t.tw.term.type == 'geneVariant').length\n\t\t\t\t\t\t\t? 'table-row'\n\t\t\t\t\t\t\t: 'none'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n\nexport async function addGeneInputs(self: MatrixControls, app: any, parent: any, table: any) {\n\tif (parent.chartType == 'hierCluster' && parent.config.dataType == TermTypes.GENE_EXPRESSION) {\n\t\tappendGeneInputs(self, app, parent, table, 'hierCluster')\n\t}\n\tif (\n\t\tparent.state?.termdbConfig?.allowedTermTypes?.includes(TermTypes.GENE_VARIANT) ||\n\t\tparent.state.termdbConfig.queries.snvindel\n\t)\n\t\tappendGeneInputs(self, app, parent, table)\n}\n\nexport async function appendGeneInputs(\n\tself: MatrixControls,\n\tapp: any,\n\tparent: any,\n\ttable: any,\n\tgeneInputType?: string\n) {\n\ttip.clear()\n\tif (!parent.selectedGroup) parent.selectedGroup = 0\n\n\tif (parent.opts.customInputs?.genes) {\n\t\t// these are embedder portal specific controls\n\t\tfor (const inputConfig of parent.opts.customInputs.genes) {\n\t\t\tinputConfig.chartType = 'matrix'\n\t\t\tconst holder = table.append('tr')\n\t\t\tif (inputConfig.title) holder.attr('aria-label', inputConfig.title)\n\t\t\tconst input = await initByInput[inputConfig.type](\n\t\t\t\tObject.assign(\n\t\t\t\t\t{},\n\t\t\t\t\t{\n\t\t\t\t\t\tholder,\n\t\t\t\t\t\tapp,\n\t\t\t\t\t\tid: parent.id,\n\t\t\t\t\t\tdebug: self.opts.debug,\n\t\t\t\t\t\tparent\n\t\t\t\t\t},\n\t\t\t\t\tinputConfig\n\t\t\t\t)\n\t\t\t)\n\t\t\tinput.main(parent.config)\n\t\t}\n\t}\n\tlet geneInputTr\n\tif (geneInputType == 'hierCluster' || parent.chartType !== 'hierCluster') {\n\t\t// Insert the gene set edit UI at the top\n\t\tgeneInputTr = table.insert('tr', () => table.select('tr').node())\n\t} else {\n\t\t// Insert after first gene set edit UI\n\t\tconst secondTr = table.selectAll('tr').nodes()[1] || null\n\t\t// Add visual separator: <hr> row\n\t\tconst hrTr = table.insert('tr', () => secondTr)\n\t\thrTr.append('td').attr('colspan', 2).append('hr').style('border', '1px solid #ccc')\n\t\tgeneInputTr = table.insert('tr', () => secondTr)\n\t}\n\taddGenesetInput(self, app, parent, geneInputTr, geneInputType)\n}\n\nexport function addGenesetInput(self: MatrixControls, app: any, parent: any, tr: any, geneInputType?: string) {\n\tconst controlPanelBtn = self.btns.filter((d: any) => d.label.endsWith('Genes'))?.node()\n\tconst tip = app.tip //new Menu({ padding: '5px' })\n\tconst tg = parent.config.termgroups\n\tconst { maxGenes, genesetEditUiVersion } = parent.settings?.matrix || parent.config?.settings?.matrix || {}\n\n\tlet selectedGroup: any\n\tconst triggerGenesetEdit = (holder: any) => {\n\t\tholder.selectAll('*').remove()\n\t\tconst geneList = selectedGroup.lst.map((item: any) => {\n\t\t\treturn { gene: item.name }\n\t\t}) //To do, selectedGroup.lst may replace name with gene as well\n\t\tconst genesetUi = genesetEditUiVersion === 'withTabs' ? GeneSetEditUIwithTabs : GeneSetEditUI\n\t\tnew genesetUi({\n\t\t\tholder,\n\t\t\tgenome: app.opts.genome,\n\t\t\tgeneList,\n\t\t\t// Remove the GFF Loads Gene Sets option from unclustered genes panel.\n\t\t\tcustomInputs:\n\t\t\t\tparent.chartType !== 'hierCluster' || geneInputType == 'hierCluster'\n\t\t\t\t\t? self.parent.opts.customInputs?.geneset\n\t\t\t\t\t: undefined,\n\t\t\t/* running hier clustering and the editing group is the group used for clustering\n\t\t\tpass this mode value to inform ui to support the optional button \"top variably exp gene\"\n\t\t\tthis is hardcoded for the purpose of gene expression and should be improved\n\t\t\t*/\n\n\t\t\tmode: selectedGroup.mode,\n\t\t\tminNumGenes: selectedGroup.mode == 'geneExpression' ? 3 : 1,\n\t\t\tmaxNumGenes: maxGenes,\n\t\t\tvocabApi: self.opts.app.vocabApi,\n\t\t\tcallback: async ({ geneList, groupName }: any) => {\n\t\t\t\tif (!selectedGroup) throw `missing selectedGroup`\n\t\t\t\ttip.hide()\n\t\t\t\tconst group = selectedGroup.status == 'new' ? { name: groupName, lst: [] } : tg[selectedGroup.index]\n\t\t\t\tif (selectedGroup.status == 'new') tg.push(group)\n\t\t\t\tconst targetTermType = selectedGroup.mode == 'geneExpression' ? 'geneExpression' : 'geneVariant'\n\t\t\t\t// remove gene terms to be replaced by the new lst, keep all other term types in the group\n\t\t\t\tconst lst = group.lst.filter((tw: any) => tw.term.type != targetTermType)\n\t\t\t\tconst tws = await Promise.all(\n\t\t\t\t\tgeneList.map(async (d: any) => {\n\t\t\t\t\t\tlet term\n\t\t\t\t\t\tif (targetTermType == 'geneExpression') {\n\t\t\t\t\t\t\tconst gene = d.symbol || d.gene\n\t\t\t\t\t\t\tconst unit = getGEunit(app.vocabApi)\n\t\t\t\t\t\t\tconst name = `${gene} ${unit}`\n\t\t\t\t\t\t\tterm = { gene, name, type: 'geneExpression' }\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tterm = {\n\t\t\t\t\t\t\t\tgene: d.symbol || d.gene,\n\t\t\t\t\t\t\t\tname: d.symbol || d.gene,\n\t\t\t\t\t\t\t\ttype: 'geneVariant'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t//if it was present use the previous term, genomic range terms require chr, start and stop fields, found in the original term\n\t\t\t\t\t\tlet tw = group.lst.find((t: any) => {\n\t\t\t\t\t\t\tconst geneName = t.term.gene || t.term.name\n\t\t\t\t\t\t\tconst match = d.symbol ? geneName === d.symbol : d.gene ? geneName === d.gene : false\n\t\t\t\t\t\t\treturn match && t.term.type == targetTermType\n\t\t\t\t\t\t})\n\t\t\t\t\t\tif (!tw) {\n\t\t\t\t\t\t\ttw = { term }\n\t\t\t\t\t\t\tawait fillTermWrapper(tw, self.opts.app.vocabApi)\n\t\t\t\t\t\t} else if (!tw.$id) {\n\t\t\t\t\t\t\ttw.$id = await get$id(self.opts.app.vocabApi.getTwMinCopy({ term }))\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn tw\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\tgroup.lst = [...lst, ...tws]\n\t\t\t\tif (!group.lst.length) tg.splice(selectedGroup.index, 1)\n\t\t\t\tapp.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: self.parent.id,\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\ttermgroups: tg\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t},\n\t\t\tbackBtn: {\n\t\t\t\ttarget: 'Genes Menu',\n\t\t\t\tcallback: () => {\n\t\t\t\t\tcontrolPanelBtn.click()\n\t\t\t\t}\n\t\t\t},\n\t\t\ttermsAsListed:\n\t\t\t\t(geneInputType == 'hierCluster' && !self.parent.config.settings.hierCluster.clusterRows) ||\n\t\t\t\t(geneInputType != 'hierCluster' && self.parent.config.settings.matrix.sortTermsBy == 'asListed')\n\t\t})\n\t}\n\n\t//the number of groups in the current matrix that is editable: hiercluster group should not be edited from \"Genes\" control panel.\n\tconst numOfEditableGrps = tg.filter((g: any) => g.type != 'hierCluster').length\n\n\ttr.append('td')\n\t\t.attr('class', 'sja-termdb-config-row-label')\n\t\t.html(geneInputType == 'hierCluster' ? 'Hierarchical Clustering Gene Set' : 'Genomic Alteration Gene Set')\n\n\tif (numOfEditableGrps > 0 || geneInputType == 'hierCluster') {\n\t\tconst td1 = tr.append('td').style('display', 'block').style('padding', '5px 0px')\n\t\tconst editGrpDiv = td1.append('div').append('label')\n\n\t\teditGrpDiv\n\t\t\t.append('button')\n\t\t\t.html(\n\t\t\t\tnumOfEditableGrps > 1 && geneInputType !== 'hierCluster'\n\t\t\t\t\t? 'Edit Selected Group'\n\t\t\t\t\t: geneInputType == 'hierCluster'\n\t\t\t\t\t? 'Edit Gene Set'\n\t\t\t\t\t: 'Edit Current Group'\n\t\t\t)\n\t\t\t.on('click', () => {\n\t\t\t\ttip.clear()\n\t\t\t\tsetMenuBackBtn(tip.d.append('div').style('padding', '5px'), () => controlPanelBtn.click(), `Back`)\n\t\t\t\tconst genesetEdiUiHolder = tip.d.append('div')\n\t\t\t\ttriggerGenesetEdit(genesetEdiUiHolder)\n\t\t\t})\n\n\t\tif (numOfEditableGrps > 1 && geneInputType !== 'hierCluster') {\n\t\t\tconst { nonHierClusterGroups, groupSelect } = setTermGroupSelector(self, editGrpDiv, tg)\n\t\t\tselectedGroup = nonHierClusterGroups.find((g: any) => g.selected)\n\t\t\tgroupSelect.on('change', () => {\n\t\t\t\tselectedGroup = nonHierClusterGroups[groupSelect.property('value')]\n\t\t\t})\n\t\t} else {\n\t\t\tconst s = parent.config.settings.hierCluster\n\t\t\tconst g =\n\t\t\t\tgeneInputType == 'hierCluster'\n\t\t\t\t\t? tg.find((g: any) => g.type == 'hierCluster')\n\t\t\t\t\t: tg.find((g: any) => g.type != 'hierCluster')\n\n\t\t\tselectedGroup = {\n\t\t\t\tindex:\n\t\t\t\t\tgeneInputType == 'hierCluster'\n\t\t\t\t\t\t? tg.findIndex((g: any) => g.type == 'hierCluster')\n\t\t\t\t\t\t: tg[0].type == g.type\n\t\t\t\t\t\t? 0\n\t\t\t\t\t\t: 1,\n\t\t\t\tname: g.name,\n\t\t\t\ttype: g.type,\n\t\t\t\tlst:\n\t\t\t\t\tg.type == 'hierCluster'\n\t\t\t\t\t\t? g.lst.map((tw: any) => ({ name: tw.term.gene || tw.term.name }))\n\t\t\t\t\t\t: g.lst\n\t\t\t\t\t\t\t\t.filter((tw: any) => tw.term.type == TermTypes.GENE_VARIANT)\n\t\t\t\t\t\t\t\t.map((tw: any) => ({ name: tw.term.name })),\n\t\t\t\tmode:\n\t\t\t\t\tg.type == 'hierCluster'\n\t\t\t\t\t\t? s.dataType // is clustering group, pass dataType\n\t\t\t\t\t\t: // !!subject to change!! when group is not clustering, and ds has mutation, defaults to MUTATION_CNV_FUSION\n\t\t\t\t\t\tself.parent.state.termdbConfig.queries?.snvindel\n\t\t\t\t\t\t? TermTypes.GENE_VARIANT\n\t\t\t\t\t\t: '',\n\t\t\t\tselected: true\n\t\t\t}\n\t\t}\n\t}\n\n\tif (geneInputType == 'hierCluster') {\n\t\t// Gene set edit UI under \"Clustering\" control panel doesn't need \"create New Group\"\n\t\treturn\n\t}\n\tconst td2 = tr.append('td').style('display', 'block').style('padding', '5px 0px')\n\tconst createNewGrpDiv = td2.append('div').append('label')\n\n\tconst createBtn = createNewGrpDiv\n\t\t.append('button')\n\t\t.html('Create New Group')\n\t\t.property('disabled', true)\n\t\t.on('click', () => {\n\t\t\ttip.clear()\n\t\t\tsetMenuBackBtn(tip.d.append('div'), () => controlPanelBtn.click(), 'Back')\n\t\t\tconst name = nameInput.property('value')\n\t\t\tselectedGroup = {\n\t\t\t\tindex: tg.length,\n\t\t\t\tname,\n\t\t\t\tlabel: name,\n\t\t\t\tlst: [],\n\t\t\t\tstatus: 'new',\n\t\t\t\tmode: parent.state.termdbConfig.queries?.snvindel ? TermTypes.GENE_VARIANT : ''\n\t\t\t}\n\t\t\ttriggerGenesetEdit(tip.d.append('div'))\n\t\t})\n\n\tconst nameInput = createNewGrpDiv\n\t\t.append('input')\n\t\t.style('margin', '2px 5px')\n\t\t.style('width', '210px')\n\t\t.attr('placeholder', 'Group Name')\n\t\t.on('input', () => {\n\t\t\tcreateBtn.property('disabled', !nameInput.property('value'))\n\t\t})\n\t\t.on('keyup', (event: any) => {\n\t\t\tif (event.key == 'Enter' && !createBtn.property('disabled')) {\n\t\t\t\tcreateBtn.node().click()\n\t\t\t}\n\t\t})\n\n\t// if (parent.opts.customInputs?.geneset) {\n\t// \tfor (const btn of parent.opts.customInputs.geneset) {\n\t// \t\ttd.append('button')\n\t// \t\t\t.html(btn.label)\n\t// \t\t\t.on('click', () => {\n\t// \t\t\t\ttip.hide()\n\t// \t\t\t\tbtn.showInput({\n\t// \t\t\t\t\tcallback: genesArr => {\n\t// \t\t\t\t\t\tconst geneLst = genesArr.map(gene => ({ gene }))\n\t// \t\t\t\t\t\t// TODO: this may not be the first term group\n\t// \t\t\t\t\t\tlet group = tg.find(g => g.lst.find(tw => tw.term?.type == 'geneVariant'))\n\t// \t\t\t\t\t\tif (!group) group = tg[0]\n\t// \t\t\t\t\t\tconst lst = group.lst.filter(tw => tw.term.type != 'geneVariant')\n\t// \t\t\t\t\t\tconst tws = geneLst.map(d => {\n\t// \t\t\t\t\t\t\t//if it was present use the previous term, genomic range terms require chr, start and stop fields, found in the original term\n\t// \t\t\t\t\t\t\tlet tw = group.lst.find(tw => tw.term.name == d.symbol || tw.term.name == d.gene)\n\t// \t\t\t\t\t\t\tif (!tw)\n\t// \t\t\t\t\t\t\t\ttw = {\n\t// \t\t\t\t\t\t\t\t\t$id: get$id(),\n\t// \t\t\t\t\t\t\t\t\tterm: {\n\t// \t\t\t\t\t\t\t\t\t\tname: d.symbol || d.gene,\n\t// \t\t\t\t\t\t\t\t\t\ttype: 'geneVariant'\n\t// \t\t\t\t\t\t\t\t\t},\n\t// \t\t\t\t\t\t\t\t\tq: {}\n\t// \t\t\t\t\t\t\t\t}\n\t// \t\t\t\t\t\t\treturn tw\n\t// \t\t\t\t\t\t})\n\t// \t\t\t\t\t\tgroup.lst = [...lst, ...tws]\n\t// \t\t\t\t\t\tif (!group.lst.length) tg.splice(selectedGroup.index, 1)\n\t// \t\t\t\t\t\tapp.dispatch({\n\t// \t\t\t\t\t\t\ttype: 'plot_edit',\n\t// \t\t\t\t\t\t\tid: self.parent.id,\n\t// \t\t\t\t\t\t\tconfig: {\n\t// \t\t\t\t\t\t\t\ttermgroups: tg\n\t// \t\t\t\t\t\t\t}\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})\n\t// \t}\n\t// }\n}\n\nexport function setMenuBackBtn(holder: any, callback: any, label: string) {\n\tholder\n\t\t.attr('tabindex', 0)\n\t\t.style('padding', '5px')\n\t\t.style('text-decoration', 'underline')\n\t\t.style('cursor', 'pointer')\n\t\t.style('margin-bottom', '12px')\n\t\t.html(`&#171; ${label}`)\n\t\t.on('click', callback)\n\t\t.on('keyup', (event: any) => {\n\t\t\tif (event.key == 'Enter') event.target.click()\n\t\t})\n}\n\nexport function setTermGroupSelector(self: MatrixControls, holder: any, tg: any) {\n\t//const label = grpDiv.append('label')\n\t//label.append('span').html('')\n\tconst firstGrpWithGeneTw = tg.find((g: any) =>\n\t\tg.lst.find((tw: any) => tw.term.type == TermTypes.GENE_VARIANT && g.type !== 'hierCluster')\n\t)\n\tconst groups = tg.map((g: any, index: number) => {\n\t\treturn {\n\t\t\tindex,\n\t\t\tname: g.name,\n\t\t\ttype: g.type,\n\t\t\tlst: g.lst.filter((tw: any) => tw.term.type == TermTypes.GENE_VARIANT).map((tw: any) => ({ name: tw.term.name })),\n\t\t\tmode: self.parent.state.termdbConfig.queries?.snvindel ? TermTypes.GENE_VARIANT : '',\n\t\t\tselected: g === firstGrpWithGeneTw\n\t\t}\n\t})\n\tconst nonHierClusterGroups = groups.filter((g: any) => g.type != 'hierCluster')\n\n\tconst groupSelect = holder.append('select').style('width', '218px').style('margin', '2px 5px')\n\tfor (const [i, group] of nonHierClusterGroups.entries()) {\n\t\tif (group.label) continue\n\t\tif (group.name) group.label = group.name\n\t\telse group.label = `Unlabeled group #${i + 1}` // cannot assume \"gene\" group\n\t}\n\n\tgroupSelect\n\t\t.selectAll('option')\n\t\t.data(nonHierClusterGroups)\n\t\t.enter()\n\t\t.append('option')\n\t\t.property('selected', (grp: any) => grp.selected)\n\t\t.attr('value', (d: any, i: number) => i)\n\t\t.html((grp: any) => grp.label)\n\n\treturn { nonHierClusterGroups, groupSelect }\n}\n", "import { fillTermWrapper } from '#termsetting'\nimport { Menu } from '#dom'\nimport type { MatrixControls } from './matrix.controls'\n\nconst tip = new Menu({ padding: '' })\n\nexport function setVariablesBtn(self: MatrixControls, s: any) {\n\tself.opts.holder\n\t\t.append('button')\n\t\t.datum({\n\t\t\tlabel: s.controlLabels.Terms || `Variables`,\n\t\t\t//getCount: () => self.parent.termOrder.filter(t => t.tw.term.type != 'geneVariant').length.length,\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\tlabel: `Row Group Label Max Length`,\n\t\t\t\t\ttitle: `Truncate the row group label if it exceeds this maximum number of characters`,\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'termGrpLabelMaxChars'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: `Row Label Max Length`,\n\t\t\t\t\ttitle: `Truncate the row label if it exceeds this maximum number of characters`,\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'rowlabelmaxchars'\n\t\t\t\t}\n\t\t\t],\n\t\t\tcustomInputs: appendDictInputs\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n\nexport function appendDictInputs(self: MatrixControls, app: any, parent: any) {\n\ttip.clear()\n\tif (!parent.selectedGroup) parent.selectedGroup = parent.chartType == 'hierCluster' ? 1 : 0\n\tapp.tip.d.append('hr')\n\taddDictMenu(self, app, parent, app.tip.d.append('div'))\n}\n\nexport async function addDictMenu(self: MatrixControls, app: any, parent: any, holder: any = undefined) {\n\t//app.tip.clear()\n\n\tconst termdb = await import('#termdb/app')\n\ttermdb.appInit({\n\t\tholder: holder || app.tip.d,\n\t\tvocabApi: self.parent.app.vocabApi,\n\t\tfocus: 'off',\n\t\tstate: {\n\t\t\tvocab: self.parent.state.vocab,\n\t\t\tactiveCohort: self.parent.activeCohort,\n\t\t\tnav: {\n\t\t\t\theader_mode: 'search_only'\n\t\t\t},\n\t\t\ttree: {\n\t\t\t\tusecase: { target: 'matrix', detail: 'termgroups' }\n\t\t\t}\n\t\t},\n\t\ttree: {\n\t\t\tsubmit_lst: (termlst: any) => {\n\t\t\t\tsubmitLst(self, termlst)\n\t\t\t\tapp.tip.hide()\n\t\t\t}\n\t\t},\n\t\tsearch: {\n\t\t\tfocus: 'off'\n\t\t}\n\t})\n}\n\nexport async function submitLst(self: MatrixControls, termlst: any) {\n\tconst newterms = await Promise.all(\n\t\ttermlst.map(async (_term: any) => {\n\t\t\tconst term = structuredClone(_term)\n\t\t\tconst tw = 'id' in term ? { id: term.id, term } : { term }\n\t\t\tawait fillTermWrapper(tw, self.opts.app.vocabApi)\n\t\t\treturn tw\n\t\t})\n\t)\n\n\tconst termgroups = structuredClone(self.parent.config.termgroups)\n\n\tconst i = termgroups.findIndex((g: any) => g.name == 'Variables')\n\tif (i !== -1) {\n\t\tconst grp = termgroups[i]\n\t\tgrp.lst.push(...newterms)\n\t\tself.parent.app.dispatch({\n\t\t\ttype: 'plot_nestedEdits',\n\t\t\tid: self.parent.id,\n\t\t\tedits: [\n\t\t\t\t{\n\t\t\t\t\tnestedKeys: ['termgroups', i, 'lst'],\n\t\t\t\t\tvalue: grp.lst\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t} else {\n\t\tconst grp = { name: 'Variables', lst: newterms }\n\t\ttermgroups.push(grp)\n\t\tself.parent.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: self.parent.id,\n\t\t\tconfig: { termgroups }\n\t\t})\n\t}\n}\n", "import type { MatrixControls } from './matrix.controls'\n\nexport function setDimensionsBtn(self: MatrixControls, s: any) {\n\tconst l = s.controlLabels\n\tself.opts.holder\n\t\t.append('button')\n\t\t.datum({\n\t\t\tlabel: 'Cell Layout',\n\t\t\ttables: [\n\t\t\t\t{\n\t\t\t\t\trows: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Grid',\n\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t'Show grid lines, which creates borders around each matrix cells. ' +\n\t\t\t\t\t\t\t\t' Note that grid lines are hidden when the auto-computed width <= 2, or when either the column and row spacing is set to 0.',\n\t\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t\t\tboxLabel: 'show',\n\t\t\t\t\t\t\t// v===true means property('checked') and convert to recognized 'rect' value for dispatch\n\t\t\t\t\t\t\t// otherwise, compared value to 'rect' to set the current value of the checkbox\n\t\t\t\t\t\t\t// note: the non-boolean showGrid values allow keeping the hidden value='pattern' option for benchmark tests\n\t\t\t\t\t\t\tprocessInput: (v: any) => (v === true ? 'rect' : v === 'rect'),\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'showGrid',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center'\n\t\t\t\t\t\t\t// for testing/benchmarking\n\t\t\t\t\t\t\t// type: 'radio',\n\t\t\t\t\t\t\t// options: [\n\t\t\t\t\t\t\t// \t{\n\t\t\t\t\t\t\t// \t\tlabel: 'hide',\n\t\t\t\t\t\t\t// \t\tvalue: ''\n\t\t\t\t\t\t\t// \t},\n\t\t\t\t\t\t\t// \t{\n\t\t\t\t\t\t\t// \t\tlabel: 'lines',\n\t\t\t\t\t\t\t// \t\tvalue: 'pattern' // needs debugging for when s.rowh or d.colw does not apply to all rows\n\t\t\t\t\t\t\t// \t},\n\t\t\t\t\t\t\t// \t{\n\t\t\t\t\t\t\t// \t\tlabel: 'rect',\n\t\t\t\t\t\t\t// \t\tvalue: 'rect'\n\t\t\t\t\t\t\t// \t}\n\t\t\t\t\t\t\t// ]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Outline Color',\n\t\t\t\t\t\t\ttitle: 'Set a border color for the whole matrix',\n\t\t\t\t\t\t\ttype: 'color',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'outlineStroke',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center'\n\t\t\t\t\t\t\t//getDisplayStyle: plot => self.parent.settings.matrix.showGrid ? '' : 'none'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Beam Color',\n\t\t\t\t\t\t\ttitle: 'Set a color for the beam highlighter',\n\t\t\t\t\t\t\ttype: 'color',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'beamStroke',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center'\n\t\t\t\t\t\t\t//getDisplayStyle: plot => self.parent.settings.matrix.showGrid ? '' : 'none'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Grid Line Color',\n\t\t\t\t\t\t\ttitle: 'Set the grid color, equivalent to applying the same border color for each matrix cell',\n\t\t\t\t\t\t\ttype: 'color',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'gridStroke',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center'\n\t\t\t\t\t\t\t//getDisplayStyle: plot => self.parent.settings.matrix.showGrid ? '' : 'none'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Background Color',\n\t\t\t\t\t\t\ttitle: `Set the background color when there are no alterations or annotation data for a ${l.sample}`,\n\t\t\t\t\t\t\ttype: 'color',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'cellbg',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: `Use Canvas If # ${l.sample} Exceeds`,\n\t\t\t\t\t\t\ttitle: `Switch from SVG to canvas rendering when the number of ${l.samples} exceeds this number`,\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'svgCanvasSwitch',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\twidth: 60,\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 10000,\n\t\t\t\t\t\t\tstep: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Canvas Min. Pixel Width',\n\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t'Set a minimum pixel width for a matrix cell when using canvas, may affect the perceived sharpness of the canvas image',\n\t\t\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\t\t\tboxLabel: 'apply',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'useMinPixelWidth',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tgetDisplayStyle: () => (self.parent.settings.matrix.useCanvas ? '' : 'none')\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\theader: ['Cells', 'Columns', 'Rows'],\n\t\t\t\t\trows: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Row Height',\n\t\t\t\t\t\t\ttitle: 'Set the height of a matrix row',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [{ label: 'N/A' }, { settingsKey: 'rowh', min: 8, max: 30, step: 1 }],\n\t\t\t\t\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\t\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Min Col. Width',\n\t\t\t\t\t\t\ttitle: 'Set the minimum width of the auto-computed matrix column width',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [{ settingsKey: 'colwMin', min: 0.1, max: 16, step: 0.2 }, { label: 'N/A' }]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Max Col. Width',\n\t\t\t\t\t\t\ttitle: 'Set the maximum width of the auto-computed matrix column width',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [{ settingsKey: 'colwMax', min: 1, max: 24, step: 0.2 }, { label: 'N/A' }]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Spacing',\n\t\t\t\t\t\t\ttitle: 'Set the column spacing. Note that this will be set to 0 when the auto-computed width < 2.',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [\n\t\t\t\t\t\t\t\t{ settingsKey: 'colspace', min: 0, max: 20, step: 1 },\n\t\t\t\t\t\t\t\t{ settingsKey: 'rowspace', min: 0, max: 20, step: 1 }\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\t\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Group spacing',\n\t\t\t\t\t\t\ttitle: 'Set the spacing between column and row groups.',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [\n\t\t\t\t\t\t\t\tself.parent.chartType == 'hierCluster'\n\t\t\t\t\t\t\t\t\t? { label: 'N/A' }\n\t\t\t\t\t\t\t\t\t: { settingsKey: 'colgspace', min: 0, max: 20, step: 1 },\n\t\t\t\t\t\t\t\t{ settingsKey: 'rowgspace', min: 0, max: 20, step: 1 }\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},\n\t\t\t\t{\n\t\t\t\t\theader: ['Labels', 'Columns', 'Rows'],\n\t\t\t\t\trows: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Offset',\n\t\t\t\t\t\t\ttitle: 'Set the gap between the label text and matrix edge',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [\n\t\t\t\t\t\t\t\t{ settingsKey: 'collabelgap', min: 0, max: 20, step: 1 },\n\t\t\t\t\t\t\t\t{ settingsKey: 'rowlabelgap', min: 0, max: 20, step: 1 }\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Spacing',\n\t\t\t\t\t\t\ttitle: 'Set the gap between labels',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tinputs: [\n\t\t\t\t\t\t\t\t{ settingsKey: 'collabelpad', min: 0, max: 20, step: 1 },\n\t\t\t\t\t\t\t\t{ settingsKey: 'rowlabelpad', min: 0, max: 20, step: 1 }\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Min font size',\n\t\t\t\t\t\t\ttitle:\n\t\t\t\t\t\t\t\t'Set the minimum auto-computed font size for labels. Note that labels will be hidden if the auto-computed values falls below this minimum.',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'minLabelFontSize',\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 24,\n\t\t\t\t\t\t\tstep: 0.1\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Max font size',\n\t\t\t\t\t\t\ttitle: 'Set the maximum auto-computed font size for labels',\n\t\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\talign: 'center',\n\t\t\t\t\t\t\tcolspan: 2,\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tsettingsKey: 'maxLabelFontSize',\n\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\tmax: 24,\n\t\t\t\t\t\t\tstep: 0.1\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Group label<br/>position',\n\t\t\t\t\t\t\ttitle: 'Set which side of the matrix to display group labels',\n\t\t\t\t\t\t\ttype: 'radio',\n\t\t\t\t\t\t\twidth: 50,\n\t\t\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\t\t\tlabelDisplay: 'block',\n\t\t\t\t\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\t\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tinputs: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsettingsKey: 'collabelpos',\n\t\t\t\t\t\t\t\t\t// switched since settings.collabelpos refers to the individual column label, not group\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{ label: 'Top', value: 'bottom', title: `Display ${l.sample} group labels at the bottom` },\n\t\t\t\t\t\t\t\t\t\t{ label: 'Bottom', value: 'top', title: `Display ${l.sample} group labels on top` }\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tsettingsKey: 'rowlabelpos',\n\t\t\t\t\t\t\t\t\t// switched since settings.rowlabelpos refers to the individual column label, not group\n\t\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Left',\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'right',\n\t\t\t\t\t\t\t\t\t\t\ttitle: `Display gene or variable group labels on the left side`\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\tlabel: 'Right',\n\t\t\t\t\t\t\t\t\t\t\tvalue: 'left',\n\t\t\t\t\t\t\t\t\t\t\ttitle: `Display gene or variable group labels on the right side`\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t}\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}\n\t\t\t]\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n", "import type { MatrixControls } from './matrix.controls'\n\nexport function setLegendBtn(self: MatrixControls) {\n\tself.opts.holder\n\t\t.append('button')\n\t\t.style('margin', '2px 0')\n\t\t.datum({\n\t\t\tlabel: 'Legend Layout',\n\t\t\trows: [\n\t\t\t\t//ontop: false,\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Font Size',\n\t\t\t\t\ttitle: 'Set the font size for the legend text',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'fontsize'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Line Height',\n\t\t\t\t\ttitle: 'Set the line height for a legend group',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'lineh'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Icon Height',\n\t\t\t\t\ttitle: 'Set the icon height for a legend item',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'iconh'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Icon Width',\n\t\t\t\t\ttitle: 'Set the icon width for a legend item',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'iconw'\n\t\t\t\t},\n\t\t\t\t/*{\n\t\t\t\t\tlabel: 'Bottom margin',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'padbtm'\n\t\t\t\t},*/\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Item Left Pad',\n\t\t\t\t\ttitle: 'Set a left margin for each legend item',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'padx'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Left Margin',\n\t\t\t\t\ttitle: 'Set a left margin for the whole legend',\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'padleft'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Left Indent',\n\t\t\t\t\ttitle:\n\t\t\t\t\t\t`Set a left margin for the first legend item in each group, and should be set to the length of the longest group label.` +\n\t\t\t\t\t\t` The left indent will align the legend group label text to the right.`,\n\t\t\t\t\ttype: 'number',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'hangleft'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Item Layout',\n\t\t\t\t\ttitle:\n\t\t\t\t\t\t'Option to separate each legend item into a new line, instead of a horizontal layout in the same line.',\n\t\t\t\t\ttype: 'checkbox',\n\t\t\t\t\tchartType: 'legend',\n\t\t\t\t\tsettingsKey: 'linesep',\n\t\t\t\t\tboxLabel: 'Line separated'\n\t\t\t\t}\n\t\t\t]\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n", "import { dtcnv } from '#shared/common.js'\nimport type { MatrixControls } from './matrix.controls'\n\n// Mutation button for selecting mutations to display on the matrix\nexport function setMutationBtn(self: MatrixControls) {\n\tself.opts.holder\n\t\t.append('button')\n\t\t.style('margin', '2px 0')\n\t\t.datum({\n\t\t\tlabel: 'Mutation',\n\t\t\tupdateBtn: (btn: any) => {\n\t\t\t\tconst s = self.parent.config.settings.matrix\n\t\t\t\tbtn\n\t\t\t\t\t.style('text-decoration', s.allMatrixMutationHidden ? 'line-through' : '')\n\t\t\t\t\t.style('text-decoration-thickness', s.allMatrixMutationHidden ? '2px' : '')\n\t\t\t},\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\ttitle: `Show mutation options`,\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'showMatrixMutation',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ label: 'Show all mutations', value: 'all' },\n\t\t\t\t\t\t{ label: `Show only truncating mutations`, value: 'onlyTruncating' },\n\t\t\t\t\t\t{ label: `Show only protein-changing mutations`, value: 'onlyPC' },\n\t\t\t\t\t\t{ label: `Do not show mutations`, value: 'none' },\n\t\t\t\t\t\t{ label: `Show selected mutation`, value: 'bySelection' }\n\t\t\t\t\t],\n\t\t\t\t\tlabelDisplay: 'block',\n\t\t\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t\t\t},\n\t\t\t\t\tcallback: self.parent.mutationControlCallback\n\t\t\t\t}\n\t\t\t],\n\t\t\tcustomInputs: generateMutationItems\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n\nexport function generateMutationItems(self: MatrixControls, app: any, parent: any, table: any) {\n\ttable.attr('class', null) // remove the hoverover background for CNV button\n\tconst m = parent.config.settings.matrix\n\tconst cnvLegendGrp = parent.legendData.find((l: any) => l.dt?.includes(dtcnv))\n\tif (\n\t\tm.showMatrixMutation !== 'none' &&\n\t\t(m.allMatrixCNVHidden ||\n\t\t\t!cnvLegendGrp ||\n\t\t\tcnvLegendGrp.crossedOut ||\n\t\t\t!cnvLegendGrp.items.find((i: any) => !i.greyedOut && !i.crossedOut))\n\t) {\n\t\t// when all CNV items in the current matrix are hidden or there is no CNV data\n\t\ttable.select(\"input[type='radio'][value='none']\").property('disabled', true)\n\n\t\ttable.select(\"input[type='radio'][value='none'] + span\").style('opacity', '0.5').on('mouseup', null)\n\t}\n\tif (m.addMutationCNVButtons && parent.chartType !== 'hierCluster' && m.showMatrixMutation == 'bySelection')\n\t\tparent.mutationControlCallback('bySelection')\n}\n", "import { dtsnvindel } from '#shared/common.js'\nimport type { MatrixControls } from './matrix.controls'\n\n// CNV button for selecting the CNVs to display on the matrix\nexport function setCNVBtn(self: MatrixControls) {\n\tself.opts.holder\n\t\t.append('button')\n\t\t.style('margin', '2px 0')\n\t\t.datum({\n\t\t\tlabel: 'CNV',\n\t\t\tupdateBtn: (btn: any) => {\n\t\t\t\tconst s = self.parent.config.settings.matrix\n\t\t\t\tconst notRendered = s.allMatrixCNVHidden\n\t\t\t\tbtn\n\t\t\t\t\t.style('text-decoration', notRendered ? 'line-through' : '')\n\t\t\t\t\t.style('text-decoration-thickness', notRendered ? '2px' : '')\n\t\t\t},\n\t\t\trows: [\n\t\t\t\t{\n\t\t\t\t\ttitle: `Show CNV options`,\n\t\t\t\t\ttype: 'radio',\n\t\t\t\t\tchartType: 'matrix',\n\t\t\t\t\tsettingsKey: 'showMatrixCNV',\n\t\t\t\t\toptions: [\n\t\t\t\t\t\t{ label: 'Show all CNV', value: 'all' },\n\t\t\t\t\t\t{ label: `Do not show CNV`, value: 'none' },\n\t\t\t\t\t\t{ label: `Show selected CNV`, value: 'bySelection' }\n\t\t\t\t\t],\n\t\t\t\t\tlabelDisplay: 'block',\n\t\t\t\t\tgetDisplayStyle(plot: any) {\n\t\t\t\t\t\treturn plot.chartType == 'hierCluster' ? 'none' : 'table-row'\n\t\t\t\t\t},\n\t\t\t\t\tcallback: self.parent.CNVControlCallback\n\t\t\t\t}\n\t\t\t],\n\t\t\tcustomInputs: generateCNVItems\n\t\t})\n\t\t.html((d: any) => d.label)\n\t\t.style('margin', '2px 0')\n\t\t.on('click', (event: any, d: any) => self.callback(event, d))\n}\n\nexport function generateCNVItems(self: MatrixControls, app: any, parent: any, table: any) {\n\ttable.attr('class', null) // remove the hoverover background for CNV button\n\tconst m = parent.config.settings.matrix\n\tconst mutationLegendGrp = parent.legendData.find((l: any) => l.dt?.includes(dtsnvindel))\n\tif (\n\t\tm.showMatrixCNV !== 'none' &&\n\t\t(m.allMatrixMutationHidden ||\n\t\t\t!mutationLegendGrp ||\n\t\t\tmutationLegendGrp.crossedOut ||\n\t\t\t!mutationLegendGrp.items.find((i: any) => !i.greyedOut && !i.crossedOut))\n\t) {\n\t\t// when all mutation items in the current matrix are hidden or there is no mutation data\n\t\ttable.select(\"input[type='radio'][value='none']\").property('disabled', true)\n\n\t\ttable.select(\"input[type='radio'][value='none'] + span\").style('opacity', '0.5').on('mouseup', null)\n\t}\n\tif (m.addMutationCNVButtons && parent.chartType !== 'hierCluster' && m.showMatrixCNV == 'bySelection')\n\t\tparent.CNVControlCallback('bySelection')\n}\n", "import { to_svg } from '#src/client'\nimport { fileDateStamp, Menu } from '#dom'\nimport { mclass, dt2label, dtsnvindel, dtcnv, dtfusionrna, dtsv } from '#shared/common.js'\nimport { TermTypes } from '#types'\nimport type { MatrixControls } from './matrix.controls'\n\nexport function setDownloadBtn(self: MatrixControls) {\n\tself.opts.holder\n\t\t.append('button')\n\t\t.style('margin', '2px 0')\n\t\t//.property('disabled', d => d.disabled)\n\t\t.text('Download')\n\t\t.on('focus', () => self.parent.app.tip.hide())\n\t\t.on('click.sjpp-matrix-download', (event: any) => {\n\t\t\tconst p = self.parent\n\t\t\tif (!p.dom.downloadMenu) p.dom.downloadMenu = new Menu({ padding: '' })\n\t\t\tconst downloadMenu = p.dom.downloadMenu.clear()\n\t\t\tconst div = downloadMenu.d.append('div')\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t\t.text(`SVG image`)\n\t\t\t\t.on('click.sjpp-matrix-download', () => {\n\t\t\t\t\tto_svg(self.opts.getSvg(), 'matrix', { apply_dom_styles: true })\n\t\t\t\t\tp.dom.downloadMenu.destroy()\n\t\t\t\t})\n\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t\t.text(`TSV data`)\n\t\t\t\t.on('click.sjpp-matrix-download', () => {\n\t\t\t\t\tconst lst = p.data.lst\n\t\t\t\t\tconst allTerms = p.termOrder.map((t: any) => t.tw)\n\t\t\t\t\tconst assayAvailability = p.state.termdbConfig.assayAvailability\n\t\t\t\t\tconst controlLabels = p.settings.matrix.controlLabels\n\t\t\t\t\tif (p.config.divideBy?.id && !allTerms.find((a: any) => a.id == p.config.divideBy.id)) {\n\t\t\t\t\t\t// when divideBy term is not in the matrix terms\n\t\t\t\t\t\tallTerms.push(p.config.divideBy)\n\t\t\t\t\t}\n\n\t\t\t\t\tconst activeSamples: any[] = []\n\t\t\t\t\tfor (const d of lst) {\n\t\t\t\t\t\tfor (const tw of allTerms) {\n\t\t\t\t\t\t\tif (tw.$id in d) {\n\t\t\t\t\t\t\t\tactiveSamples.push(d)\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tconst header = [controlLabels.Sample]\n\t\t\t\t\tfor (const tw of allTerms) header.push(tw.term.name)\n\n\t\t\t\t\tconst rows = [header]\n\t\t\t\t\tfor (const sample of activeSamples) {\n\t\t\t\t\t\tconst row = [sample._ref_.label]\n\t\t\t\t\t\tfor (const tw of allTerms) {\n\t\t\t\t\t\t\tif (!sample[tw.$id]) {\n\t\t\t\t\t\t\t\trow.push('')\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (tw.term.type == 'geneVariant') {\n\t\t\t\t\t\t\t\t\tconst allVariant: string[] = []\n\t\t\t\t\t\t\t\t\tfor (const v of sample[tw.$id].renderedValues) {\n\t\t\t\t\t\t\t\t\t\t// when assayAvailability presents, has WT and Blank\n\t\t\t\t\t\t\t\t\t\tconst hasAssayAvailability = assayAvailability?.byDt?.[parseInt(v.dt)]\n\t\t\t\t\t\t\t\t\t\tif (v.dt == dtsnvindel) {\n\t\t\t\t\t\t\t\t\t\t\tallVariant.push(\n\t\t\t\t\t\t\t\t\t\t\t\t(v.origin ? `${v.origin} ` : '') +\n\t\t\t\t\t\t\t\t\t\t\t\t\t(hasAssayAvailability ? `${dt2label[v.dt]}:` : '') +\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${mclass[v.class]?.label}` +\n\t\t\t\t\t\t\t\t\t\t\t\t\t(v.mname ? `,${v.mname}` : '')\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t} else if (v.dt == dtcnv) {\n\t\t\t\t\t\t\t\t\t\t\tconst cnvValue = v.value\n\t\t\t\t\t\t\t\t\t\t\t\t? `${hasAssayAvailability ? '' : 'CNV:'}${v.value}` //show v.value for numerical CNV, otherwise show CNV gain/loss\n\t\t\t\t\t\t\t\t\t\t\t\t: v.class == 'CNV_amp'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'CNV gain'\n\t\t\t\t\t\t\t\t\t\t\t\t: v.class == 'CNV_loss'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'CNV loss'\n\t\t\t\t\t\t\t\t\t\t\t\t: v.class == 'CNV_homozygous_deletion'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'CNV homozygous deletion'\n\t\t\t\t\t\t\t\t\t\t\t\t: v.class == 'CNV_amplification'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'CNV amplification'\n\t\t\t\t\t\t\t\t\t\t\t\t: v.class == 'CNV_loh'\n\t\t\t\t\t\t\t\t\t\t\t\t? 'CNV loss of heterozygosity'\n\t\t\t\t\t\t\t\t\t\t\t\t: mclass[v.class]?.label\n\n\t\t\t\t\t\t\t\t\t\t\tallVariant.push(\n\t\t\t\t\t\t\t\t\t\t\t\t(v.origin ? `${v.origin} ` : '') + (hasAssayAvailability ? `${dt2label[v.dt]}:` : '') + cnvValue\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t} else if (v.dt == dtfusionrna || v.dt == dtsv) {\n\t\t\t\t\t\t\t\t\t\t\tallVariant.push(\n\t\t\t\t\t\t\t\t\t\t\t\t(v.origin ? `${v.origin} ` : '') +\n\t\t\t\t\t\t\t\t\t\t\t\t\t(hasAssayAvailability ? `${dt2label[v.dt]}:` : '') +\n\t\t\t\t\t\t\t\t\t\t\t\t\t`${mclass[v.class]?.label}` +\n\t\t\t\t\t\t\t\t\t\t\t\t\t/* mname is the partner gene of the fusion, so it is emitted whenever\n\t\t\t\t\t\t\t\t\t\t\t\t\tpresent. The queried gene prefixes it as the usual BCR::ABL1 notation;\n\t\t\t\t\t\t\t\t\t\t\t\t\ta queried region has no gene to name, and its coordinates are not put\n\t\t\t\t\t\t\t\t\t\t\t\t\tin an export, so the partner stands alone there */\n\t\t\t\t\t\t\t\t\t\t\t\t\t(v.mname ? `(${v.gene ? `${v.gene}::` : ''}${v.mname})` : '')\n\t\t\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\tallVariant.push(`DO NOT SUPPORT dt='${v.dt}'`)\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\trow.push(allVariant.join('|'))\n\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\ttw.term.type == TermTypes.GENE_EXPRESSION ||\n\t\t\t\t\t\t\t\t\ttw.term.type == TermTypes.METABOLITE_INTENSITY ||\n\t\t\t\t\t\t\t\t\ttw.term.type == TermTypes.PROTEOME_ABUNDANCE\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\trow.push(sample[tw.$id]?.renderedValues?.[0]?.value || '')\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\trow.push(sample[tw.$id]?.renderedValues?.[0] || sample[tw.$id]?.value || '')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\trows.push(row)\n\t\t\t\t\t}\n\n\t\t\t\t\tconst matrix = rows.map((row: any[]) => row.join('\\t')).join('\\n')\n\t\t\t\t\tconst a = document.createElement('a')\n\t\t\t\t\tdocument.body.appendChild(a)\n\t\t\t\t\ta.addEventListener(\n\t\t\t\t\t\t'click',\n\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\tconst currentDate = fileDateStamp()\n\t\t\t\t\t\t\ta.download = p.config.settings?.hierCluster?.termGroupName?.startsWith('Gene Expression')\n\t\t\t\t\t\t\t\t? `GeneExpression.${currentDate}.tsv`\n\t\t\t\t\t\t\t\t: p.chartType == 'hierCluster'\n\t\t\t\t\t\t\t\t? `HierCluster.${currentDate}.tsv`\n\t\t\t\t\t\t\t\t: `${p.app.vocabApi.termdbConfig.matrix?.appName || 'Matrix'}.${currentDate}.tsv`\n\t\t\t\t\t\t\ta.href = URL.createObjectURL(new Blob([matrix], { type: 'text/tab-separated-values' }))\n\t\t\t\t\t\t\tdocument.body.removeChild(a)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfalse\n\t\t\t\t\t)\n\t\t\t\t\ta.click()\n\t\t\t\t\tp.dom.downloadMenu.destroy()\n\t\t\t\t})\n\t\t\tdownloadMenu.showunder(event.target)\n\t\t})\n}\n", "import { zoom, icons, svgScroll } from '#dom'\nimport type { MatrixControls } from './matrix.controls'\n\nexport function setZoomInput(self: MatrixControls) {\n\tconst holder = self.opts.holder.append('div').style('display', 'inline-block').style('margin-left', '50px')\n\tconst s = self.parent.settings.matrix || self.parent.config.settings.matrix\n\tself.zoomApi = zoom({\n\t\tholder,\n\t\ttitle:\n\t\t\t'Zoom factor relative to the ideal column width, as computed for the number of columns versus available screen width',\n\t\tunit: '',\n\t\twidth: '80px',\n\t\tsettings: {\n\t\t\tmin: 0.1, // will be determined once the auto-computed width is determined\n\t\t\tmax: 1, // will be determined once the auto-computed width is determined\n\t\t\tvalue: 1,\n\t\t\tincrement: s.zoomIncrement,\n\t\t\tstep: s.zoomStep || 5\n\t\t},\n\t\tcallback: (zoomLevel: any) => {\n\t\t\tconst p = self.parent\n\t\t\tconst c = p.getVisibleCenterCell(0)\n\t\t\tp.app.dispatch({\n\t\t\t\ttype: 'plot_edit',\n\t\t\t\tid: p.id,\n\t\t\t\tconfig: {\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\tzoomLevel,\n\t\t\t\t\t\t\tzoomCenterPct: 0.5,\n\t\t\t\t\t\t\tzoomIndex: c.totalIndex,\n\t\t\t\t\t\t\tzoomGrpIndex: c.grpIndex\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},\n\t\treset: () => {\n\t\t\tself.parent.app.dispatch({\n\t\t\t\ttype: 'plot_edit',\n\t\t\t\tid: self.parent.id,\n\t\t\t\tconfig: {\n\t\t\t\t\tsettings: {\n\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\tzoomLevel: 1,\n\t\t\t\t\t\t\tzoomCenterPct: 0\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}\n\t})\n}\n\nexport function setDragToggle(self: MatrixControls, opts: any = {}) {\n\tconst defaults = {\n\t\tmouseMode: 'select',\n\t\tactiveBgColor: 'rgb(255, 255, 255)'\n\t}\n\n\t// hardcode to always be in select mode on first render\n\topts.target.style('cursor', 'default')\n\n\tconst instance: any = {\n\t\topts: Object.assign({}, defaults, opts),\n\t\tdom: {\n\t\t\tselectBtn: opts.holder\n\t\t\t\t.append('button')\n\t\t\t\t.attr('aria-label', 'Click the matrix to select data')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('width', '25px')\n\t\t\t\t.style('height', '24.5px')\n\t\t\t\t.style('background-color', defaults.activeBgColor)\n\t\t\t\t.on('click', () => setMode('select')),\n\n\t\t\tgrabBtn: opts.holder\n\t\t\t\t.append('button')\n\t\t\t\t.attr('aria-label', 'Click the matrix to drag and move')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('width', '25px')\n\t\t\t\t.style('height', '24.5px')\n\t\t\t\t.on('click', () => setMode('pan'))\n\t\t}\n\t}\n\n\ticons.arrowPointer(instance.dom.selectBtn, { width: 14, height: 14, transform: 'translate(50,50)' })\n\ticons.grab(instance.dom.grabBtn, { width: 14, height: 14, transform: 'translate(30,50)' })\n\n\tfunction setMode(m: string) {\n\t\tinstance.opts.mouseMode = m\n\t\tself.parent.settings.matrix.mouseMode = m\n\t\topts.target.style('cursor', m == 'select' ? 'default' : 'grab')\n\t\tinstance.dom.selectBtn.style('background-color', m == 'select' ? instance.opts.activeBgColor : '')\n\t\tinstance.dom.grabBtn.style('background-color', m == 'pan' ? instance.opts.activeBgColor : '')\n\t}\n\n\t// NOTE:\n\tself.dragToggleApi = {\n\t\tupdate(s: any = {}) {\n\t\t\tObject.assign(instance.opts, s)\n\t\t\tsetMode(instance.opts.mouseMode)\n\t\t},\n\t\tgetSettings() {\n\t\t\treturn {\n\t\t\t\tmouseMode: instance.opts.mouseMode\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function setSvgScroll(self: MatrixControls, state: any) {\n\tself.svgScrollApi = svgScroll({\n\t\tholder: self.parent.dom.scroll,\n\t\theight: state.config.settings.matrix.scrollHeight,\n\t\tcallback: (dx: number, eventType: string) => {\n\t\t\tconst p = self.parent\n\t\t\tconst s = p.settings.matrix\n\t\t\tconst d = p.dimensions\n\t\t\tif (eventType == 'move') {\n\t\t\t\tp.dom.seriesesG.attr('transform', `translate(${d.xOffset + d.seriesXoffset - dx},${d.yOffset})`)\n\t\t\t\tp.clusterRenderer.translateElems(-dx, s, d)\n\t\t\t\tp.layout.top.attr.adjustBoxTransform(-dx)\n\t\t\t\tp.layout.btm.attr.adjustBoxTransform(-dx)\n\t\t\t\tif (p.dom.topDendrogram) {\n\t\t\t\t\tp.dom.topDendrogram.attr('transform', `translate(${p.topDendroX - dx},0)`)\n\t\t\t\t}\n\t\t\t} else if (eventType == 'up') {\n\t\t\t\tconst c = p.getVisibleCenterCell(-dx)\n\t\t\t\tp.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: p.id,\n\t\t\t\t\tconfig: {\n\t\t\t\t\t\tsettings: {\n\t\t\t\t\t\t\tmatrix: {\n\t\t\t\t\t\t\t\tzoomCenterPct: 0.5,\n\t\t\t\t\t\t\t\tzoomIndex: c.totalIndex,\n\t\t\t\t\t\t\t\tzoomGrpIndex: c.grpIndex\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})\n\t\t\t}\n\t\t}\n\t})\n}\n", "import { initByInput } from '#plots/controls.config.js'\nimport { select } from 'd3-selection'\nimport { TermTypes } from '#types'\nimport { setSamplesBtn } from './matrix.controls.samples'\nimport { setGenesBtn } from './matrix.controls.genes'\nimport { setVariablesBtn } from './matrix.controls.variables'\nimport { setDimensionsBtn } from './matrix.controls.dimensions'\nimport { setLegendBtn } from './matrix.controls.legend'\nimport { setMutationBtn } from './matrix.controls.mutations'\nimport { setCNVBtn } from './matrix.controls.cnv'\nimport { setDownloadBtn } from './matrix.controls.download'\nimport { setZoomInput, setDragToggle, setSvgScroll } from './matrix.zoomPanScroll'\n\nexport class MatrixControls {\n\ttype: string\n\topts: any\n\tparent: any\n\toverrides: any\n\tzoomApi: any\n\tsvgScrollApi: any\n\tdragToggleApi: any\n\tbtns: any\n\tactiveTab: 'basic' | 'advanced' = 'basic'\n\tsorterUi!: any\n\n\tconstructor(opts: any, appState: any) {\n\t\tthis.type = 'matrixControls'\n\t\tthis.opts = opts\n\t\tthis.parent = opts.parent\n\t\tthis.overrides = {}\n\n\t\tthis.opts.holder.style('margin', '10px 10px 20px 10px').style('white-space', 'nowrap')\n\t\tconst state = this.parent.getState(appState)\n\t\tconst s = state.config.settings.matrix\n\t\tif (this.parent.setClusteringBtn)\n\t\t\tthis.parent.setClusteringBtn(this.opts.holder, (event: any, data: any) => this.callback(event, data))\n\t\tsetSamplesBtn(this, s)\n\t\tif (\n\t\t\tstate.termdbConfig?.allowedTermTypes?.includes(TermTypes.GENE_VARIANT) ||\n\t\t\tstate.termdbConfig.queries.snvindel ||\n\t\t\t(this.parent.chartType == 'hierCluster' && this.parent.config.dataType == TermTypes.GENE_EXPRESSION)\n\t\t) {\n\t\t\tsetGenesBtn(this, s)\n\t\t}\n\t\tif (s.addMutationCNVButtons && this.parent.chartType !== 'hierCluster') {\n\t\t\tsetMutationBtn(this)\n\t\t\tsetCNVBtn(this)\n\t\t}\n\t\tsetVariablesBtn(this, s)\n\t\tsetDimensionsBtn(this, s)\n\t\tsetLegendBtn(this)\n\t\tsetDownloadBtn(this)\n\t\tsetZoomInput(this)\n\t\tsetDragToggle(this, {\n\t\t\tholder: this.opts.holder.append('div').style('display', 'inline-block'),\n\t\t\ttarget: this.parent.dom.seriesesG\n\t\t})\n\t\tsetSvgScroll(this, state)\n\n\t\tthis.keyboardNavHandler = async (event: any) => {\n\t\t\tif (event.key == 'Escape') {\n\t\t\t\tthis.parent.app.tip.hide()\n\t\t\t} else if (event.key == 'Enter' || event.key == 'ArrowDown') {\n\t\t\t\tconst elems =\n\t\t\t\t\tevent.target.tagName == 'BUTTON'\n\t\t\t\t\t\t? this.parent.app.tip.d.node().querySelectorAll('input, select')\n\t\t\t\t\t\t: event.target.querySelectorAll('input, select')\n\t\t\t\tfor (const elem of elems) {\n\t\t\t\t\tif (elem.checkVisibility?.() || (!elem.checkVisibility && elem.getBoundingClientRect().height)) {\n\t\t\t\t\t\telem.focus()\n\t\t\t\t\t\treturn false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if ((event.key == 'Tab' && event.shiftKey) || event.key == 'Backspace' || event.key == 'ArrowUp') {\n\t\t\t\tif (event.target.tagName == 'BUTTON') event.target.focus()\n\t\t\t\treturn false\n\t\t\t} //else if (event.keyShift && el)\n\t\t}\n\n\t\tthis.btns = this.opts.holder\n\t\t\t.selectAll(':scope>button')\n\t\t\t.filter((d: any) => d && d.label)\n\t\t\t.on(`keyup.matrix-${this.parent.id}`, this.keyboardNavHandler)\n\t}\n\n\tkeyboardNavHandler: any\n\n\tmain(overrides: any = {}) {\n\t\tthis.overrides = overrides\n\t\tthis.parent.app.tip.hide()\n\n\t\tthis.btns\n\t\t\t.text((d: any) =>\n\t\t\t\t!d.getCount || d.showCount == 'hide'\n\t\t\t\t\t? d.label\n\t\t\t\t\t: d.showCount == 'append'\n\t\t\t\t\t? `${d.label} (n=${d.getCount()})`\n\t\t\t\t\t: `${d.getCount()} ${d.label}`\n\t\t\t)\n\t\t\t.each(function (this: any, d: any) {\n\t\t\t\tif (d.updateBtn) d.updateBtn(select(this))\n\t\t\t})\n\n\t\tconst s = this.parent.settings.matrix || this.parent.config.settings.matrix\n\t\tconst min = this.parent.computedSettings.zoomMin\n\t\tconst max = this.parent.computedSettings.zoomMax\n\t\tconst increment = Math.max(0.01, Number((min / max).toFixed(2)))\n\n\t\tconst d = this.parent.dimensions\n\t\tif (this.zoomApi)\n\t\t\tthis.zoomApi.update({\n\t\t\t\tvalue: s.zoomLevel.toFixed(2),\n\t\t\t\tmin: min.toFixed(2),\n\t\t\t\tmax: max.toFixed(2),\n\t\t\t\tincrement,\n\t\t\t\tstep: s.zoomStep || 1\n\t\t\t})\n\n\t\tif (this.svgScrollApi && d) {\n\t\t\tthis.svgScrollApi.update({\n\t\t\t\tx: d.xOffset,\n\t\t\t\ty: d.yOffset - s.scrollHeight,\n\t\t\t\ttotalWidth: d.zoomedMainW,\n\t\t\t\tvisibleWidth: d.mainw,\n\t\t\t\tzoomCenter: s.zoomCenterPct * d.mainw - d.seriesXoffset\n\t\t\t})\n\t\t}\n\n\t\tif (this.dragToggleApi) {\n\t\t\tthis.dragToggleApi.update(s.mouseMode ? { mouseMode: s.mouseMode } : {})\n\t\t}\n\t}\n\n\tgetSettings() {\n\t\t// return control settings that are not tracked in the global app state or plot state\n\t\treturn {\n\t\t\tmouseMode: this.dragToggleApi.getSettings().mouseMode\n\t\t}\n\t}\n\n\tasync callback(event: any, d: any) {\n\t\tconst app = this.opts.app\n\t\tconst parent = this.opts.parent\n\t\tconst tables = d.tables || [d]\n\n\t\tevent.target.focus()\n\t\tapp.tip.clear()\n\n\t\tconst table = app.tip.d.append('table').attr('class', 'sjpp-controls-table')\n\t\tfor (const t of tables) {\n\t\t\t//if (d.customHeaderRows) d.customHeaderRows(parent, table)\n\t\t\tif (t.header) {\n\t\t\t\ttable\n\t\t\t\t\t.append('tr')\n\t\t\t\t\t.selectAll('th')\n\t\t\t\t\t.data(t.header)\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('th')\n\t\t\t\t\t.html((d: any) => d)\n\t\t\t}\n\n\t\t\tfor (const inputConfig of t.rows) {\n\t\t\t\tconst holder = table.append('tr')\n\t\t\t\tconst input = await initByInput[inputConfig.type](\n\t\t\t\t\tObject.assign(\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tholder,\n\t\t\t\t\t\t\tapp,\n\t\t\t\t\t\t\tdispatch: (action: any) => app.dispatch(action),\n\t\t\t\t\t\t\tid: parent.id,\n\t\t\t\t\t\t\tdebug: this.opts.debug,\n\t\t\t\t\t\t\tparent\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinputConfig\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\tinput.main(parent.config)\n\t\t\t}\n\n\t\t\tif (t.customInputs) t.customInputs(this, app, parent, table)\n\t\t\ttable.selectAll('select, input, button').attr('tabindex', 0).on('keydown', this.keyboardNavHandler)\n\t\t}\n\n\t\tapp.tip.showunder(event.target)\n\t}\n}\n", "import type { ContinuousXTW, DiscreteXTW, CollectionCont, TermCollectionTransformedValue } from '#tw'\nimport { TwRouter, routedTermTypes } from '#tw'\nimport type { TermWrapper } from '#types'\nimport { convertUnits } from '#shared/helpers.js'\n\nlet addons\n\nexport async function getTermGroups(termgroups, app) {\n\tconst termGroups = structuredClone(termgroups)\n\t// should only set the addons once, it should not vary from one call to the next\n\tif (!addons)\n\t\taddons = {\n\t\t\tQualTWValues: discreteAddons,\n\t\t\tQualTWPredefinedGS: discreteAddons,\n\t\t\tQualTWCustomGS: discreteAddons,\n\t\t\tNumTWRegularBin: discreteAddons,\n\t\t\tNumTWCustomBin: discreteAddons,\n\t\t\tNumTWCont: continuousAddons,\n\t\t\tTermCollectionTWCont: TermCollectionContAddons\n\t\t}\n\n\tconst opts = {\n\t\tvocabApi: app.vocabApi,\n\t\taddons\n\t}\n\n\tfor (const [origIndex, tG] of termGroups.entries()) {\n\t\ttG.origIndex = origIndex\n\t\tif (tG.type == 'hierCluster') continue\n\t\tconst xtwlst: (MatrixTWObj | TermWrapper)[] = []\n\t\tfor (const tw of tG.lst) {\n\t\t\tconst inputTw = tw.getTw?.() || tw\n\t\t\txtwlst.push(\n\t\t\t\tinputTw.type in opts.addons && routedTermTypes.has(inputTw.term.type)\n\t\t\t\t\t? await TwRouter.init(inputTw, opts)\n\t\t\t\t\t: inputTw\n\t\t\t)\n\t\t}\n\t\ttG.lst = xtwlst\n\t}\n\treturn termGroups\n}\n\nexport type SetCellPropsSignature = {\n\tvalue: (\n\t\t/** a plain object for matrix cell data to be rendered, including sibling cells */\n\t\tcell: any,\n\t\tanno: any,\n\t\tvalue: string | number,\n\t\ts: any,\n\t\tt: any,\n\t\tself: any,\n\t\twidth: number,\n\t\theight: number,\n\t\tdx: number,\n\t\tdy: number,\n\t\ti: number\n\t) => any\n}\n\ninterface MatrixTWObj {\n\tsetCellProps: SetCellPropsSignature\n}\n\nconst discreteAddons: MatrixTWObj = {\n\tsetCellProps: {\n\t\tvalue: function (\n\t\t\tthis: DiscreteXTW,\n\t\t\tcell: any,\n\t\t\tanno: any,\n\t\t\tvalue: string | number,\n\t\t\ts: any,\n\t\t\tt: any,\n\t\t\tself: any,\n\t\t\twidth: number,\n\t\t\theight: number,\n\t\t\tdx: number,\n\t\t\tdy: number,\n\t\t\ti: number\n\t\t) {\n\t\t\tconst tw = this.getTw()\n\t\t\tconst key = anno.key\n\t\t\tconst values = tw.term.values || {}\n\t\t\tcell.label = 'label' in anno ? anno.label : values[key]?.label ? values[key].label : key\n\t\t\tconst tw$id = tw.$id\n\t\t\tcell.fill =\n\t\t\t\tself.config.settings.matrix.twSpecificSettings?.[tw$id!]?.[key]?.color ||\n\t\t\t\tanno.color ||\n\t\t\t\tvalues[anno.key]?.color ||\n\t\t\t\tself.data.refs.byTermId?.[tw$id!]?.bins?.find(b => anno.key == b.name)?.color\n\t\t\t// only for numeric terms for now\n\t\t\t// TODO: should also consider categorical term.values[*].order\n\t\t\tcell.order = t.ref.bins ? t.ref.bins.findIndex(bin => bin.name == key) : 0\n\n\t\t\tcell.x = cell.totalIndex * dx + cell.grpIndex * s.colgspace\n\t\t\tcell.y = height * i\n\t\t\tconst group = tw.legend?.group || tw$id\n\t\t\treturn { ref: t.ref, group, value: key, entry: { key, label: cell.label, fill: cell.fill } }\n\t\t}\n\t}\n}\n\nconst continuousAddons: MatrixTWObj = {\n\tsetCellProps: {\n\t\tvalue: function (\n\t\t\tthis: ContinuousXTW,\n\t\t\tcell: any,\n\t\t\tanno: any,\n\t\t\tvalue: string | number,\n\t\t\ts: any,\n\t\t\tt: any,\n\t\t\tself: any,\n\t\t\twidth: number,\n\t\t\theight: number,\n\t\t\tdx: number,\n\t\t\tdy: number,\n\t\t\ti: number\n\t\t) {\n\t\t\tconst tw = this.getTw()\n\t\t\tconst key = anno.key\n\t\t\tconst values = tw.term.values || {}\n\t\t\tcell.label = 'label' in anno ? anno.label : values[key]?.label ? values[key].label : key\n\t\t\tcell.fill = anno.color || values[anno.key]?.color\n\t\t\tconst tw$id = tw.$id\n\t\t\tconst twSpecificSettings = self.config.settings.matrix.twSpecificSettings\n\t\t\tif (!twSpecificSettings[tw$id!]) twSpecificSettings[tw$id!] = {}\n\t\t\tconst twSettings = twSpecificSettings[tw$id!]\n\t\t\tif (!twSettings.contBarH) twSettings.contBarH = s.barh\n\t\t\tif (!('gap' in twSettings)) twSettings.contBarGap = 4\n\n\t\t\tconst specialValue = tw.term.values?.[cell.key]\n\n\t\t\t// handle uncomputable values\n\t\t\t// TODO: the server response data should not have uncomputable values when mode='continuous'\n\t\t\t// this may be implemented in getData(), but will require lots of testing since it is used\n\t\t\t// by multiple charts\n\t\t\tif (specialValue?.uncomputable) {\n\t\t\t\tcell.x = cell.totalIndex * dx + cell.grpIndex * s.colgspace\n\t\t\t\tcell.y = height * i\n\t\t\t\tcell.height = twSettings.contBarH\n\t\t\t\tcell.fill = 'transparent'\n\t\t\t\tcell.label = specialValue.label\n\t\t\t\tconst group = tw.legend?.group || tw.$id\n\t\t\t\treturn {\n\t\t\t\t\tref: t.ref,\n\t\t\t\t\tgroup,\n\t\t\t\t\tvalue: specialValue.label || specialValue.key,\n\t\t\t\t\tentry: { key, label: cell.label, fill: cell.fill }\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: may use color scale instead of bars\n\t\t\t// for bars, use a hardcoded color; TODO: allow a user to customize the bar color?\n\t\t\tcell.fill = self.config.settings.matrix.twSpecificSettings?.[tw$id!]?.contBarColor || '#555'\n\t\t\tif (s.transpose) {\n\t\t\t\tcell.height = t.scale(cell.key)\n\t\t\t\tcell.x = twSettings.contBarGap // - cell.width\n\t\t\t} else {\n\t\t\t\tconst vc = cell.term.valueConversion\n\t\t\t\tlet renderV = vc ? cell.key * vc.scaleFactor : cell.key\n\t\t\t\t// todo: convert from a boolean into maybe `q.units or q.transform: 'zscore' | ...`\n\t\t\t\tif (this.q.convert2ZScore) {\n\t\t\t\t\trenderV = (renderV - t.mean) / t.std\n\n\t\t\t\t\t// show positive z-score as soft red and negative z-score as soft blue\n\t\t\t\t\tcell.fill = renderV > 0 ? '#FF6666' : '#6666FF'\n\t\t\t\t\tcell.zscoreLabel = ` (Z-score: ${renderV.toFixed(2)})`\n\t\t\t\t}\n\t\t\t\tcell.label =\n\t\t\t\t\t'label' in anno\n\t\t\t\t\t\t? anno.label\n\t\t\t\t\t\t: values[key]?.label\n\t\t\t\t\t\t? values[key].label\n\t\t\t\t\t\t: this.term.unit\n\t\t\t\t\t\t? `${cell.key.toFixed(2)} ${this.term.unit}`\n\t\t\t\t\t\t: cell.key.toFixed(2)\n\t\t\t\tcell.height = renderV >= 0 ? t.scales.pos(renderV) : t.scales.neg(renderV)\n\t\t\t\tcell.x = cell.totalIndex * dx + cell.grpIndex * s.colgspace\n\t\t\t\tcell.y =\n\t\t\t\t\trenderV >= 0\n\t\t\t\t\t\t? t.counts.posMaxHt + twSettings.contBarGap - cell.height\n\t\t\t\t\t\t: t.counts.posMaxHt + twSettings.contBarGap\n\t\t\t\tcell.convertedValueLabel = !vc ? '' : convertUnits(cell.key, vc.fromUnit, vc.toUnit, vc.scaleFactor)\n\t\t\t}\n\t\t}\n\t}\n}\n\nconst TermCollectionContAddons = {\n\tsetCellProps: {\n\t\tvalue: function (\n\t\t\tthis: CollectionCont,\n\t\t\tcell: any,\n\t\t\tanno: any,\n\t\t\tvalue: TermCollectionTransformedValue,\n\t\t\ts: any,\n\t\t\tt: any,\n\t\t\tself: any,\n\t\t\twidth: number,\n\t\t\theight: number,\n\t\t\tdx: number,\n\t\t\t_dy: number,\n\t\t\t_i: number\n\t\t) {\n\t\t\t//\n\t\t\tconst tw = this.getTw() as CollectionCont\n\t\t\t//cell, tw, anno, value, s, t, self, width, height, dx, dy, i) {\n\t\t\tconst twSpecificSettings = self.config.settings.matrix.twSpecificSettings\n\t\t\tif (!twSpecificSettings[tw.$id]) twSpecificSettings[tw.$id] = {}\n\t\t\tconst twSettings = twSpecificSettings[tw.$id]\n\n\t\t\tif (!twSettings.contBarH) twSettings.contBarH = s.barh\n\t\t\tif (!('gap' in twSettings)) twSettings.contBarGap = 4\n\n\t\t\t// Determine if value is positive or negative\n\t\t\tconst isNegative = value.value < 0\n\n\t\t\tif (isNegative) {\n\t\t\t\t// For negative values, use the neg scale and position below the zero line\n\t\t\t\t// Height is the scale distance from 0 to the value\n\t\t\t\tcell.height = t.scales.neg ? t.scales.neg(value.value) - t.scales.neg(0) : 0\n\t\t\t\tcell.x = cell.totalIndex * dx + cell.grpIndex * s.colgspace\n\t\t\t\t// Position negative bars downward from the zero line\n\t\t\t\t// Cumulative height is the scale distance from 0 to pre_val_sum\n\t\t\t\tconst cumulativeHeight = t.scales.neg ? t.scales.neg(value.pre_val_sum) - t.scales.neg(0) : 0\n\t\t\t\tcell.y = t.counts.posMaxHt + twSettings.contBarGap + (t.scales.neg ? t.scales.neg(0) : 0) + cumulativeHeight\n\t\t\t} else {\n\t\t\t\t// For positive values, use the pos scale and position above the zero line\n\t\t\t\t// Height is the scale distance from 0 to the value\n\t\t\t\tcell.height = t.scales.pos(value.value) - t.scales.pos(0)\n\t\t\t\tcell.x = cell.totalIndex * dx + cell.grpIndex * s.colgspace\n\t\t\t\t// Position positive bars upward from the zero line\n\t\t\t\t// Cumulative height is the scale distance from 0 to pre_val_sum\n\t\t\t\tconst cumulativeHeight = t.scales.pos(value.pre_val_sum) - t.scales.pos(0)\n\t\t\t\tcell.y = t.counts.posMaxHt + twSettings.contBarGap - t.scales.pos(0) - cumulativeHeight - cell.height\n\t\t\t}\n\n\t\t\tcell.label = value.label\n\t\t\tcell.fill = twSettings[value.label]?.color || value.color || tw.term.propsByTermId?.[value.label]?.color\n\t\t\tcell.value = value.value\n\n\t\t\t// return the corresponding legend item data\n\t\t\treturn {\n\t\t\t\tref: t.ref,\n\t\t\t\tgroup: tw.$id,\n\t\t\t\tvalue: value.label,\n\t\t\t\torder: -1,\n\t\t\t\tentry: { key: value.label, label: value.label, fill: cell.fill }\n\t\t\t}\n\t\t}\n\t}\n}\n", "import { getCompInit, copyMerge, deepEqual } from '#rx'\nimport { setMatrixDom } from './matrix.dom'\nimport { setInteractivity } from './matrix.interactivity'\nimport { setRenderers } from './matrix.renderers'\nimport { MatrixCluster } from './matrix.cluster'\nimport { MatrixControls } from './matrix.controls'\nimport * as matrixData from './matrix.data'\nimport * as matrixLayout from './matrix.layout'\nimport * as matrixSerieses from './matrix.serieses'\nimport * as matrixLegend from './matrix.legend'\nimport * as matrixGroups from './matrix.groups'\nimport { setComputedConfig } from './matrix.config'\nimport { getTermGroups } from './matrix.xtw'\nimport svgLegend from '#dom/svg.legend'\nimport { mclass, dt2label, morigin, dtsnvindel, dtcnv } from '#shared/common.js'\nimport { select } from 'd3-selection'\nimport { sayerror } from '#dom'\nimport { getCombinedTermFilter } from '#filter'\nimport { rebaseGroupFilter } from '../../mass/groups.js'\nimport { PlotBase } from '#plots/PlotBase.js'\n\nexport class Matrix extends PlotBase {\n\tstatic type = 'matrix'\n\tconfigTermKeys = ['termgroups.lst', 'divideBy']\n\n\tconstructor(opts) {\n\t\tsuper(opts)\n\t\tthis.type = Matrix.type\n\t\tthis.holderTitle = 'Sample Matrix'\n\t\tthis.optionalFeatures = JSON.parse(sessionStorage.getItem('optionalFeatures') || `{}`)?.matrix || []\n\t\tsetInteractivity(this)\n\t\tsetRenderers(this)\n\t}\n\n\tasync init(appState) {\n\t\tconst opts = this.opts\n\t\tif (opts.reactsTo) this.reactsTo = opts.reactsTo\n\t\tthis.setDom = setMatrixDom\n\t\tthis.setDom(opts)\n\n\t\tthis.config = appState.plots.find(p => p.id === this.id)\n\t\tthis.settings = Object.assign({}, this.config.settings.matrix)\n\t\tthis.computed = {} // will hold settings/configuration/data that are computed or derived from other data\n\t\tif (this.dom.header) this.dom.header.html(this.config.preBuiltPlotTitle || this.holderTitle)\n\n\t\tthis.setControls(appState)\n\t\tthis.clusterRenderer = new MatrixCluster({ holder: this.dom.cluster, app: this.app, parent: this })\n\t\tthis.legendRenderer = svgLegend({\n\t\t\tholder: this.dom.legendG,\n\t\t\trectFillFxn: d => d.color,\n\t\t\ticonStroke: '#aaa',\n\t\t\thandlers: {\n\t\t\t\tlegend: {\n\t\t\t\t\tclick: this.legendClick\n\t\t\t\t}\n\t\t\t},\n\t\t\tsettings: {\n\t\t\t\tisExcludedAttr: 'isExcluded'\n\t\t\t},\n\t\t\tnote: 'CLICK A ROW LABEL OR ITEM TO APPLY FILTERING'\n\t\t})\n\n\t\t// enable embedding of termsetting and tree menu inside self.dom.menu\n\t\tthis.customTipApi = this.dom.tip.getCustomApi({\n\t\t\td: this.dom.menubody,\n\t\t\tclear: event => {\n\t\t\t\tif (event?.target) this.dom.menutop.style('display', 'none')\n\t\t\t\tthis.dom.menubody.selectAll('*').remove()\n\t\t\t\treturn this.customTipApi\n\t\t\t},\n\t\t\tshow: () => {\n\t\t\t\tthis.dom.menubody.style('display', 'block')\n\t\t\t},\n\t\t\thide: () => {\n\t\t\t\t//this.dom.menubody.style('display', 'none')\n\t\t\t}\n\t\t})\n\n\t\tthis.setPill(appState)\n\n\t\t/*\n\t\tLevels of mclass overrides, from more general to more specific. Same logic for dt2label\n\n\t\t1. server-level:\n\t\t - specified as serverconfig.commonOverrides\n\t\t - applied to the mclass from #shared/common on server startup\n\t\t - applies to all datasets and charts\n\t\t - overrides are applied to the static common.mclass object\n\t\t\n\t\t2. dataset-level: \n\t\t - specified as termdb.mclass in the dataset's js file\n\t\t - applied to the termdbConfig.mclass payload as returned from the /termdb?getTermdbConfig=1 route\n\t\t - applies to all charts rendered for only the dataset/dslabel\n\t\t - overrides are applied to a copy of common.mclass, not the original \"static\" object\n\n\t\t3. chart-level: \n\t\t - specified as termdb[chartType].mclass in the dataset's js file\n\t\t - applied to the termdbConfig[chartType].mclass payload as returned from the /termdb?getTermdbConfig=1 route\n\t\t - applies to only the specific chart type as rendered for the dataset/dslabel\n\t\t - overrides are applied to a copy of common.mclass + termdb.mclass\n\n\t\t!!! NOTE: \n\t\t\tBoolean configuration flags for mutually exclusive values may cause conflicting configurations\n\t\t\tin the resulting merged overrides, as outputted by rx.copyMerge()\n\t\t!!!\n\t\t*/\n\t\tconst commonKeys = { mclass, dt2label, morigin }\n\t\tfor (const k in commonKeys) {\n\t\t\tconst v = commonKeys[k]\n\t\t\tthis[k] = copyMerge({}, v, appState.termdbConfig[k] || {}, appState.termdbConfig.matrix?.[k] || {})\n\t\t}\n\t}\n\n\tsetControls(appState) {\n\t\t//if (this.opts.controls) return\n\t\tthis.controlsRenderer = new MatrixControls(\n\t\t\t{\n\t\t\t\tapp: this.app,\n\t\t\t\tid: this.id,\n\t\t\t\tparent: this,\n\t\t\t\tholder: this.dom.controls,\n\t\t\t\tgetSvg: () => this.dom.svg.node()\n\t\t\t},\n\t\t\tappState\n\t\t)\n\t}\n\n\t// reactsTo(action) {\n\t// \t// note: a parent app or 'plot' component is expected to already have\n\t// \t// a comprehensive reactsTo() call to filter the actions for this component,\n\t// \t// so only farther selective action filters should be applied here as needed\n\t// \treturn true\n\t// }\n\n\tgetState(appState) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tconst filter0 = appState.termfilter.filter0\n\t\t// will be used to detect cohort change. this.state is not set before the first update,\n\t\t// in which case the cohort that this matrix is created with becomes the baseline, so that\n\t\t// the initial render of a matrix that is created with a filter0 is not detected as a change\n\t\tif (this.state) this.prevFilter0 = this.state.filter0\n\t\telse if (this.prevFilter0 === undefined) this.prevFilter0 = filter0\n\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\tisVisible: true,\n\t\t\tconfig,\n\t\t\tfilter: termfilter.filter,\n\t\t\tfilter0, // read-only, invisible filter currently only used for gdc dataset\n\t\t\thasVerifiedToken: this.app.vocabApi.hasVerifiedToken(),\n\t\t\ttokenVerificationMessage: this.app.vocabApi.tokenVerificationMessage,\n\t\t\tvocab: appState.vocab,\n\t\t\ttermdbConfig: appState.termdbConfig,\n\t\t\tclusterMethod: config.settings.hierCluster?.clusterMethod,\n\t\t\tdistanceMethod: config.settings.hierCluster?.distanceMethod,\n\t\t\tclusterSamples: config.settings.hierCluster?.clusterSamples,\n\t\t\tclusterRows: config.settings.hierCluster?.clusterRows,\n\t\t\tzScoreTransformation: config.settings.hierCluster?.zScoreTransformation,\n\t\t\tnav: appState.nav,\n\t\t\tgroups: rebaseGroupFilter(appState)\n\t\t}\n\t}\n\n\tasync main() {\n\t\ttry {\n\t\t\tthis.config = await this.getMutableConfig()\n\t\t\tif (this.mayRequireToken()) return\n\t\t\t// do not assign this.termgroups until the data request is complete, to avoid stale value in a race condition;\n\t\t\t// this termGroups value is directly associated with the submitted data request, and the response will match\n\t\t\t// the tw.$id's in these term groups\n\t\t\tconst termGroups = await getTermGroups(this.config.termgroups, this.app)\n\n\t\t\tconst prevTranspose = this.settings.transpose\n\t\t\t// controlsRenderer.getSettings() supplies settings that are not tracked in the global app and plot state\n\t\t\t// use structuredClone to avoid overwriting of original settings.matrix\n\t\t\tObject.assign(this.settings, structuredClone(this.config.settings), this.controlsRenderer.getSettings())\n\n\t\t\tthis.dom.loadingDiv.selectAll('*').remove()\n\t\t\tthis.dom.loadingDiv.html('').style('display', '').style('position', 'relative').style('left', '45%')\n\t\t\t// clear a message from a previous cohort change, in case this update returns early before it may be reshown\n\t\t\tthis.dom.cohortMsgDiv.html('').style('display', 'none')\n\t\t\tthis.dom.svg.style('opacity', 0.1).style('pointer-events', 'none')\n\n\t\t\t// reset highlighted top/left dendrogram children to black when data request is triggered\n\t\t\tdelete this.clickedClusterIds\n\t\t\tdelete this.clickedLeftClusterIds\n\n\t\t\ttry {\n\t\t\t\tsetComputedConfig(this.config)\n\t\t\t\tconst promises = []\n\t\t\t\t// get the data\n\t\t\t\tif (this.setHierClusterData) promises.push(this.setHierClusterData())\n\t\t\t\tpromises.push(this.setData())\n\t\t\t\tthis.dom.loadingDiv.html('Processing data ...')\n\t\t\t\tawait Promise.all(promises)\n\t\t\t\tconst warnings = this.data.warnings.join('\\n')\n\t\t\t\tthis.dom.warningDiv.style('display', warnings.length ? '' : 'none').html(warnings)\n\t\t\t\tthis.applyLegendValueFilter() // need to applyLegendValueFiter before combineData to avoid error for hierCluster\n\t\t\t\tif (this.combineData) this.combineData()\n\t\t\t\t// tws in the config may be filled-in based on applicable server response data;\n\t\t\t\t// these filled-in config, such as tw.term.values|category2samplecount, will need to replace\n\t\t\t\t// the corresponding tracked state values in the app store, without causing unnecessary\n\t\t\t\t// dispatch notifications, so use app.save()\n\t\t\t\tthis.app.save({ type: 'plot_edit', id: this.id, config: this.config })\n\t\t\t} catch (e) {\n\t\t\t\tif (e == 'no data') {\n\t\t\t\t\tthis.showNoMatchingDataMessage()\n\t\t\t\t\treturn\n\t\t\t\t} else if (this.app.isAbortError(e)) {\n\t\t\t\t\t// ignore this error, but skip this update since a subsequent action is being processed\n\t\t\t\t\treturn\n\t\t\t\t} else {\n\t\t\t\t\tthis.dom.svg.style('display', 'none')\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.termGroups = termGroups // onl assign this as instance value after the data request, to prevent incorrect reference in a race condition\n\t\t\tthis.dom.loadingDiv.html('Updating ...').style('display', '')\n\t\t\tthis.termOrder = this.getTermOrder(this.data)\n\t\t\tthis.sampleGroups = this.getSampleGroups(this.hierClusterSamples || this.data)\n\t\t\tthis.sampleOrder = this.getSampleOrder(this.data)\n\t\t\t// even though there may not be sampleOrder (matrix columns) to render,\n\t\t\t// should still compute empty series data, legendData, etc to not break\n\t\t\t// controls/interactions handlers that use those data\n\t\t\tthis.setLayout()\n\t\t\tif (this.setHierColorScale) this.setHierColorScale(this.hierClusterData.clustering)\n\t\t\tif (!this.sampleOrder?.length) {\n\t\t\t\tthis.showNoMatchingDataMessage()\n\t\t\t\t// do not return early yet\n\t\t\t}\n\t\t\t// make sure computed dimensions are available from preceding steps, to use as control input values\n\t\t\tthis.controlsRenderer.main() // to update button count or cross out button labels\n\n\t\t\tthis.serieses = this.getSerieses(this.data)\n\t\t\t// TODO: may re-enable below if showing no-data message/suggestions is preferred over rendering empty matrix\n\t\t\t// can now return early before rendering computed data\n\t\t\t// if (!this.sampleOrder?.length) return\n\n\t\t\t// render the data\n\t\t\tthis.dom.loadingDiv.html('Rendering ...')\n\t\t\tif (this.plotDendrogramHclust) this.plotDendrogramHclust()\n\t\t\tthis.render()\n\t\t\t// the transient loading message is no longer needed once the matrix is rendered\n\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t\tthis.mayDisplayCohortMessage()\n\t\t\tthis.dom.svg.style('display', '').style('opacity', 1).style('pointer-events', '')\n\n\t\t\tconst [xGrps, yGrps] = !this.settings.matrix.transpose ? ['sampleGrps', 'termGrps'] : ['termGrps', 'sampleGrps']\n\t\t\tconst d = this.dimensions\n\t\t\tthis.clusterRenderer.main({\n\t\t\t\tsettings: this.settings.matrix,\n\t\t\t\txGrps: this[xGrps],\n\t\t\t\tyGrps: this[yGrps],\n\t\t\t\tdimensions: d\n\t\t\t})\n\n\t\t\tthis.legendRenderer(this.legendData, {\n\t\t\t\tsettings: Object.assign({}, this.settings.legend, {\n\t\t\t\t\tsvgw: Math.max(400, d.mainw + d.xOffset - this.settings.matrix.margin.right),\n\t\t\t\t\tsvgh: d.mainh + d.yOffset,\n\t\t\t\t\tdimensions: d,\n\t\t\t\t\tpadleft: this.settings.legend.padleft //+ d.xOffset\n\t\t\t\t})\n\t\t\t})\n\t\t\tawait this.adjustSvgDimensions(prevTranspose)\n\t\t\tthis.controlsRenderer.main()\n\t\t\tif (this.data.removedHierClusterTerms) {\n\t\t\t\tfor (const r of this.data.removedHierClusterTerms) {\n\t\t\t\t\tsayerror(this.dom.errorDiv, r.text + ': ' + r.lst.join(', '))\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t// a new token message error may have been triggered by the data request here,\n\t\t\t// even if the initial state did not have a token message at the start of a dispatch\n\t\t\tconst message = this.app.vocabApi.tokenVerificationMessage\n\t\t\tthis.mayRequireToken(message)\n\t\t\tif (!message) {\n\t\t\t\tthis.app.tip.hide()\n\t\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t\t\tthrow e\n\t\t\t}\n\t\t}\n\n\t\tthis.resetInteractions()\n\t}\n\n\tshowNoMatchingDataMessage() {\n\t\tthis.forcedSampleCount = 0\n\t\tthis.dom.svg.style('opacity', 0.001).style('display', 'none')\n\t\t// an error on initial load/data request will cause computed data/settings to be empty,\n\t\t// which would cause input values to be empty for controls and likely thrown errors\n\t\tif (this.termOrder && this.dimensions) this.controlsRenderer.main({ sampleCount: 0 })\n\t\tthis.dom.loadingDiv.html('')\n\t\tconst div = this.dom.loadingDiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('text-align', 'center')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('left', '-150px')\n\t\tdiv.append('div').style('margin', '5px 10px').html('No matching cohort sample data for the current gene list.')\n\n\t\tif (this.settings.matrix.showHints?.includes('genesetEdit')) {\n\t\t\tconst div1 = div.append('div').style('margin', '5px 10px')\n\t\t\tdiv1.append('span').html('You may change the selected cohort,')\n\n\t\t\tif (this.config.legendGrpFilter?.lst.length || this.config.legendValueFilter?.lst.length) {\n\t\t\t\tconst cnvBtn = this.controlsRenderer.btns.filter(d => d.label == 'CNV')?.node()\n\t\t\t\tif (cnvBtn) {\n\t\t\t\t\tdiv1.append('br')\n\t\t\t\t\tdiv1.append('span').html('show hidden ')\n\t\t\t\t\tdiv1\n\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t.html('CNV')\n\t\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t\t.style('text-decoration', 'underline')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tcnvBtn.click()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tconst mutationBtn = this.controlsRenderer.btns.filter(d => d.label == 'Mutation')?.node()\n\n\t\t\t\tif (cnvBtn && mutationBtn) div1.append('span').html(' or ')\n\t\t\t\tif (mutationBtn) {\n\t\t\t\t\tdiv1\n\t\t\t\t\t\t.append('span')\n\t\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t\t.style('text-decoration', 'underline')\n\t\t\t\t\t\t.html('Mutation')\n\t\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\t\tmutationBtn.click()\n\t\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t\tif (cnvBtn || mutationBtn) div1.append('span').html(' data,')\n\t\t\t}\n\n\t\t\tdiv1.append('br')\n\t\t\tdiv1.append('span').html('or edit the gene list from the ')\n\t\t\tdiv1\n\t\t\t\t.append('span')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('text-decoration', 'underline')\n\t\t\t\t.html('Gene Set Edit Group menu.')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tconst GenesBtn = this.controlsRenderer.btns\n\t\t\t\t\t\t.filter(d => d.label == 'Genes')\n\t\t\t\t\t\t?.node()\n\t\t\t\t\t\t.click()\n\t\t\t\t\tconst i = setInterval(() => {\n\t\t\t\t\t\tconst editBtn = this.app.tip.d\n\t\t\t\t\t\t\t.selectAll('button')\n\t\t\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\t\t\treturn this.innerHTML == 'Edit Group'\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t.node()\n\t\t\t\t\t\tif (editBtn) {\n\t\t\t\t\t\t\teditBtn.click()\n\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 100)\n\t\t\t\t})\n\t\t}\n\t\tthis.dom.svg.style('display', 'none')\n\t}\n\n\tmayDisplayCohortMessage() {\n\t\tconst msg = deepEqual(this.state.filter0, this.prevFilter0) ? '' : 'The gene list is persisted across cohorts.'\n\t\tif (msg) {\n\t\t\tthis.dom.cohortMsgDiv.html('')\n\t\t\tconst div = this.dom.cohortMsgDiv.append('div').style('display', 'inline-block')\n\t\t\tdiv.append('div').html(msg)\n\n\t\t\tif (this.settings.matrix.showHints?.includes('genesetEdit')) {\n\t\t\t\tconst div1 = div.append('div')\n\t\t\t\tdiv1.append('span').html(' You may edit the gene list from the ')\n\t\t\t\tdiv1\n\t\t\t\t\t.append('span')\n\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t.style('text-decoration', 'underline')\n\t\t\t\t\t.html('Gene Set Edit Group menu.')\n\t\t\t\t\t.on('click', () => {\n\t\t\t\t\t\tconst GenesBtn = this.controlsRenderer.btns\n\t\t\t\t\t\t\t.filter(d => d.label == 'Genes')\n\t\t\t\t\t\t\t?.node()\n\t\t\t\t\t\t\t.click()\n\t\t\t\t\t\tconst i = setInterval(() => {\n\t\t\t\t\t\t\tconst editBtn = this.app.tip.d\n\t\t\t\t\t\t\t\t.selectAll('button')\n\t\t\t\t\t\t\t\t.filter(function () {\n\t\t\t\t\t\t\t\t\treturn this.innerHTML == 'Edit Group'\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t.node()\n\t\t\t\t\t\t\tif (editBtn) {\n\t\t\t\t\t\t\t\teditBtn.click()\n\t\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, 100)\n\t\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tthis.dom.cohortMsgDiv.style('display', msg ? '' : 'none')\n\t}\n\n\tsampleKey(s) {\n\t\treturn s.row.sample\n\t}\n\n\tsampleLabel(s) {\n\t\treturn s.label || s.row._ref_.label || ''\n\t}\n\n\tsampleGrpKey(s) {\n\t\treturn s.grp.name\n\t}\n\n\tsampleGrpLabel(s) {\n\t\treturn s.grp.label || s.grp.name || ''\n\t}\n\n\ttermKey(t) {\n\t\treturn t.tw.$id\n\t}\n\n\ttermLabel(t) {\n\t\treturn t.label\n\t}\n\n\ttermGrpKey(t) {\n\t\treturn t.grp.name\n\t}\n\n\ttermGrpLabel(t) {\n\t\treturn t.grp.label || t.grp.name || [{ text: '\u22EE', dx: 3, cls: 'sjpp-exclude-svg-download' }]\n\t}\n\tdestroy() {\n\t\tselect(window).on(`resize.sjpp-${self.id}`, null)\n\t}\n}\n\n// assign class prototype methods and props that are exported from other matrix.* code files\nfor (const m of [matrixData, matrixGroups, matrixLayout, matrixSerieses, matrixLegend]) {\n\tfor (const methodName in m) {\n\t\tMatrix.prototype[methodName] = m[methodName]\n\t}\n}\n\nexport const matrixInit = getCompInit(Matrix)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = matrixInit\n\nexport function makeChartBtnMenu(holder, chartsInstance) {\n\t/*\n\tholder: the holder in the tooltip\n\tchartsInstance: MassCharts instance\n\t\ttermdbConfig is accessible at chartsInstance.state.termdbConfig{}\n\t\tmass option is accessible at chartsInstance.app.opts{}\n\t*/\n\tchartsInstance.dom.tip.clear()\n\tconst menuDiv = holder.append('div')\n\tif (chartsInstance.state.termdbConfig.matrixplots) {\n\t\tfor (const plot of chartsInstance.state.termdbConfig.matrixplots) {\n\t\t\t/* plot: \n\t\t\t{\n\t\t\t\tname=str\n\t\t\t}\n\t\t\t*/\n\t\t\tmenuDiv\n\t\t\t\t.append('button')\n\t\t\t\t.style('margin', '10px')\n\t\t\t\t.style('padding', '10px 15px')\n\t\t\t\t.style('border-radius', '20px')\n\t\t\t\t.style('border-color', '#ededed')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.text(plot.name)\n\t\t\t\t.on('click', async () => {\n\t\t\t\t\tchartsInstance.dom.tip.hide()\n\t\t\t\t\tconst config = await chartsInstance.app.vocabApi.getMatrixByName(plot.name)\n\t\t\t\t\t//add pre-built plot name to config to be shown in the sandbox header\n\t\t\t\t\tconfig.preBuiltPlotTitle = plot.name\n\t\t\t\t\tchartsInstance.app.dispatch({\n\t\t\t\t\t\ttype: 'plot_create',\n\t\t\t\t\t\tconfig\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t}\n\t}\n\n\tconst chart = {\n\t\tclickTo: chartsInstance.showTree_selectlst,\n\t\tchartType: 'matrix',\n\t\tusecase: { target: 'matrix', detail: 'termgroups' },\n\t\tprocessSelection: lst => {\n\t\t\treturn [\n\t\t\t\t{\n\t\t\t\t\tname: '',\n\t\t\t\t\tlst: lst.map(term => {\n\t\t\t\t\t\treturn { term }\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t}\n\tchartsInstance.showTree_selectlst(chart)\n}\n"],
5
- "mappings": "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",
6
- "names": ["self", "s", "self", "tip", "geneList", "g", "tip", "self", "self", "self", "self", "self", "self", "a", "self", "d", "self"]
7
- }
@@ -1,49 +0,0 @@
1
- import {
2
- runproteinpaint
3
- } from "./chunk-56HEUYYM.js";
4
-
5
- // test/front.helpers.js
6
- var serverData = /* @__PURE__ */ Object.create(null);
7
- function getRunPp(appname = "", defaultArgs = {}, _host = "http://localhost:3000") {
8
- const host = window.testHost || _host;
9
- const arg = {
10
- host: window.testHost || _host,
11
- noheader: 1,
12
- nobox: true,
13
- debug: 1,
14
- norecover: true
15
- };
16
- if (appname == "mass" || appname == "termdb") {
17
- defaultArgs.debounceInterval = 0;
18
- }
19
- if (appname) arg[appname] = defaultArgs;
20
- else copyMerge(arg, defaultArgs);
21
- const argStr = JSON.stringify(arg);
22
- return function runpp(overrides = {}) {
23
- const argCopy = JSON.parse(argStr);
24
- if (appname) copyMerge(argCopy[appname], overrides);
25
- else copyMerge(argCopy, overrides);
26
- if (appname && defaultArgs.fetchOpts) {
27
- argCopy[appname].fetchOpts = defaultArgs.fetchOpts;
28
- }
29
- return runproteinpaint(Object.assign(argCopy, { serverData }));
30
- };
31
- }
32
- function copyMerge(base, ...args) {
33
- const target = typeof base == "string" ? JSON.parse(base) : base;
34
- for (const arg of args) {
35
- if (arg) {
36
- const source = typeof base == "string" ? JSON.parse(JSON.stringify(arg)) : arg;
37
- for (const key in source) {
38
- if (!target[key] || Array.isArray(target[key]) || typeof target[key] !== "object") target[key] = source[key];
39
- else copyMerge(target[key], source[key]);
40
- }
41
- }
42
- }
43
- return target;
44
- }
45
-
46
- export {
47
- getRunPp
48
- };
49
- //# sourceMappingURL=chunk-HWMZ2OHD.js.map