@sjcrh/proteinpaint-client 2.216.0 → 2.217.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 (956) hide show
  1. package/dist/2dmaf-RRHATFHO.js +1362 -0
  2. package/dist/AggMatrixInput-4UHBCXYH.js +402 -0
  3. package/dist/AggregateMatrix-IJE5CM5Y.js +37 -0
  4. package/dist/AppHeader-UXGLRW6C.js +826 -0
  5. package/dist/BoxPlot-GQYC22KY.js +1233 -0
  6. package/dist/CorrelationVolcano-5CWRWZTI.js +613 -0
  7. package/dist/Cuminc-TYHKAPRK.js +1217 -0
  8. package/dist/DE-UUFQGSOI.js +85 -0
  9. package/dist/DEinput-DU7MF4YY.js +497 -0
  10. package/dist/DM-SSI5KUBC.js +86 -0
  11. package/dist/DifferentialAnalysis-G6FE2MXY.js +235 -0
  12. package/dist/Disco-B3KGNEAW.js +3384 -0
  13. package/dist/Disco.UI-UNPUBQCN.js +239 -0
  14. package/dist/DmrPlot-27NGDMT4.js +358 -0
  15. package/dist/GB-SXACUA4V.js +1388 -0
  16. package/dist/GSEA-EHMBA3TF.js +870 -0
  17. package/dist/GeneExpInput-NDXISF2U.js +38 -0
  18. package/dist/Geomap-3CNT227W.js +80 -0
  19. package/dist/HicApp-VQBUB6EZ.js +2240 -0
  20. package/dist/IDCViewer-DTOE7KDX.js +10808 -0
  21. package/dist/NumBinaryEditor-IVZ4MMQT.js +274 -0
  22. package/dist/NumBinaryEditor.unit.spec-3BSQ6FM4.js +308 -0
  23. package/dist/NumContEditor-CUZHU3IO.js +100 -0
  24. package/dist/NumContEditor.unit.spec-SCQFD2Y7.js +160 -0
  25. package/dist/NumCustomBinEditor-UEEYZ4ZO.js +29 -0
  26. package/dist/NumCustomBinEditor.unit.spec-GYS35OQV.js +393 -0
  27. package/dist/NumDiscreteEditor-IT7NIXTV.js +165 -0
  28. package/dist/NumDiscreteEditor.unit.spec-LB6VLAWO.js +229 -0
  29. package/dist/NumRegularBinEditor-FF6UXZWN.js +29 -0
  30. package/dist/NumRegularBinEditor.unit.spec-Z4S5LH2C.js +274 -0
  31. package/dist/NumSplineEditor-IW5WEN3P.js +205 -0
  32. package/dist/NumSplineEditor.unit.spec-PAEN3SAD.js +220 -0
  33. package/dist/NumericDensity-CPJIQLYT.js +29 -0
  34. package/dist/NumericDensity.unit.spec-4KHECHVU.js +414 -0
  35. package/dist/NumericHandler-SEFTQJDM.js +30 -0
  36. package/dist/NumericHandler.unit.spec-UGDR3476.js +210 -0
  37. package/dist/ProteomeInput-NYPUYVN5.js +610 -0
  38. package/dist/ProteomeInput-NYPUYVN5.js.map +7 -0
  39. package/dist/Regression-WDSISHYL.js +1412 -0
  40. package/dist/RunChart2-2NPADXUR.js +744 -0
  41. package/dist/SC-EWDBPHEL.js +1344 -0
  42. package/dist/Violin-POGGPCZY.js +1095 -0
  43. package/dist/Volcano-U2B4KEUL.js +2452 -0
  44. package/dist/Wsi-G7OCAJ3R.js +625 -0
  45. package/dist/adSandbox-SUCX6DAQ.js +29 -0
  46. package/dist/animatedBubbleChart-SDBWJELZ.js +542 -0
  47. package/dist/app-ATQM5PKI.js +28 -0
  48. package/dist/app-BCKEWJCY.js +38 -0
  49. package/dist/app.js +14 -14
  50. package/dist/bam-QK2ZLZDI.js +872 -0
  51. package/dist/barchart-RHDKI3NZ.js +38 -0
  52. package/dist/barchart2-CS3E6FOY.js +305 -0
  53. package/dist/block-RQ3HTJVP.js +6232 -0
  54. package/dist/block.init-T33F47DO.js +29 -0
  55. package/dist/block.mds.expressionrank-LQD6MN6Z.js +350 -0
  56. package/dist/block.mds.geneboxplot-N5XHHVR7.js +819 -0
  57. package/dist/block.mds.junction-JD4WQUSH.js +1534 -0
  58. package/dist/block.mds.svcnv-LCTYWXL2.js +6408 -0
  59. package/dist/block.svg-2F3RGTI3.js +155 -0
  60. package/dist/block.tk.aicheck-BOF6WZ5E.js +274 -0
  61. package/dist/block.tk.bam-5GBYEQBM.js +1897 -0
  62. package/dist/block.tk.bedgraphdot-LVQEP4RS.js +375 -0
  63. package/dist/block.tk.bigwig.ui-HHBO4JAC.js +202 -0
  64. package/dist/block.tk.hicstraw-JBO4UEOA.js +814 -0
  65. package/dist/block.tk.junction-S5S2N7FK.js +2353 -0
  66. package/dist/block.tk.junction.textmatrixui-DNQL7WB5.js +190 -0
  67. package/dist/block.tk.ld-JHQNR67E.js +90 -0
  68. package/dist/block.tk.menu-7JBJOY2O.js +1050 -0
  69. package/dist/block.tk.pgv-FQPREV6P.js +934 -0
  70. package/dist/brainImaging-HEWGZZNY.js +550 -0
  71. package/dist/brainRegions-QUGB7YUW.js +213 -0
  72. package/dist/bubbleHeatmap-OZRONGAX.js +374 -0
  73. package/dist/cellTypeBubbleHeatmap-N7NDE325.js +274 -0
  74. package/dist/chunk-2FWSNJEN.js +54 -0
  75. package/dist/chunk-2JIKMCJR.js +34 -0
  76. package/dist/chunk-3SPEW6R6.js +102 -0
  77. package/dist/chunk-5G6O5RYM.js +123 -0
  78. package/dist/chunk-65DO5IKM.js +299 -0
  79. package/dist/chunk-6D4HOTG7.js +1844 -0
  80. package/dist/chunk-6D4HOTG7.js.map +7 -0
  81. package/dist/chunk-6Q5SOSSU.js +2685 -0
  82. package/dist/chunk-7JHIUS54.js +626 -0
  83. package/dist/chunk-7X347XMF.js +397 -0
  84. package/dist/chunk-ABLG7GUS.js +55 -0
  85. package/dist/chunk-AFEFZ74T.js +276 -0
  86. package/dist/chunk-AIC43DTG.js +243 -0
  87. package/dist/chunk-AJXP4AV7.js +182 -0
  88. package/dist/chunk-AMW5LCUB.js +424 -0
  89. package/dist/chunk-AV2IH5K2.js +156 -0
  90. package/dist/chunk-B3WLXXGY.js +263 -0
  91. package/dist/chunk-BG6GAROI.js +302 -0
  92. package/dist/chunk-BIJOXCLN.js +2277 -0
  93. package/dist/chunk-BIJOXCLN.js.map +7 -0
  94. package/dist/chunk-BU6PAOGA.js +103 -0
  95. package/dist/chunk-C2TII2FF.js +96 -0
  96. package/dist/chunk-CTFHEDG2.js +550 -0
  97. package/dist/chunk-CXEECHP5.js +37 -0
  98. package/dist/chunk-CZK4EV3Y.js +1339 -0
  99. package/dist/chunk-D35GNF3Y.js +2325 -0
  100. package/dist/chunk-DFZWE3TR.js +170 -0
  101. package/dist/chunk-DX23HAW7.js +1219 -0
  102. package/dist/chunk-DX23HAW7.js.map +7 -0
  103. package/dist/chunk-E7XHA4YL.js +1988 -0
  104. package/dist/chunk-EDFBRXX2.js +54 -0
  105. package/dist/chunk-F23EQSGU.js +26 -0
  106. package/dist/chunk-F2EEQ7KG.js +379 -0
  107. package/dist/chunk-F5FFI7Z7.js +468 -0
  108. package/dist/chunk-FK5NL2DF.js +141 -0
  109. package/dist/chunk-FVZTRWAO.js +692 -0
  110. package/dist/chunk-GDHQVEIO.js +217 -0
  111. package/dist/chunk-GSVB4XNS.js +2799 -0
  112. package/dist/chunk-GVAV4VRI.js +418 -0
  113. package/dist/chunk-H2FELGYK.js +140 -0
  114. package/dist/chunk-HFKZGMVV.js +839 -0
  115. package/dist/chunk-HFKZGMVV.js.map +7 -0
  116. package/dist/chunk-HJARHSDC.js +274 -0
  117. package/dist/chunk-HWNQOADC.js +182 -0
  118. package/dist/chunk-HWNQOADC.js.map +7 -0
  119. package/dist/chunk-HXRG7XYB.js +54 -0
  120. package/dist/chunk-J5KCTRJC.js +80 -0
  121. package/dist/chunk-JMFVXWDX.js +59 -0
  122. package/dist/chunk-KGX2OIR4.js +203 -0
  123. package/dist/chunk-L2NPLA43.js +257 -0
  124. package/dist/chunk-L2WOLNZK.js +339 -0
  125. package/dist/chunk-LQKMDIRB.js +466 -0
  126. package/dist/chunk-LSQ5AQ6Q.js +562 -0
  127. package/dist/chunk-MBQIHLGI.js +1269 -0
  128. package/dist/chunk-MFR4WWDM.js +14 -0
  129. package/dist/chunk-MU4Z2MX2.js +340 -0
  130. package/dist/chunk-MU4Z2MX2.js.map +7 -0
  131. package/dist/chunk-NHMIMTJA.js +281 -0
  132. package/dist/chunk-NNDKYTUV.js +25353 -0
  133. package/dist/chunk-NNDKYTUV.js.map +7 -0
  134. package/dist/chunk-NPBN3PPZ.js +6358 -0
  135. package/dist/chunk-NULQJF73.js +56 -0
  136. package/dist/chunk-NYO7YANQ.js +294 -0
  137. package/dist/chunk-OBNHXAYG.js +194 -0
  138. package/dist/chunk-PETYR7LC.js +134 -0
  139. package/dist/chunk-PLFPXOGX.js +119 -0
  140. package/dist/chunk-PQVHRM4L.js +5213 -0
  141. package/dist/chunk-QLUTQPZE.js +240 -0
  142. package/dist/chunk-QNQ2ZYT7.js +38 -0
  143. package/dist/chunk-QYCPIVCX.js +255 -0
  144. package/dist/chunk-RZ2THVK4.js +516 -0
  145. package/dist/chunk-S4IZ4VM7.js +31 -0
  146. package/dist/chunk-SFUDTUXF.js +382 -0
  147. package/dist/chunk-SUT75MRI.js +102 -0
  148. package/dist/chunk-SYLYLOHK.js +56 -0
  149. package/dist/chunk-TEFWF3SK.js +176 -0
  150. package/dist/chunk-TPSVPMAN.js +70 -0
  151. package/dist/chunk-V4ZKHM6D.js +2960 -0
  152. package/dist/chunk-V7DNHPZD.js +4373 -0
  153. package/dist/chunk-VPMQDTYR.js +194 -0
  154. package/dist/chunk-VV6JIG4D.js +444 -0
  155. package/dist/chunk-WU3YXPRE.js +217 -0
  156. package/dist/chunk-X2HWRISK.js +480 -0
  157. package/dist/chunk-X77QVINS.js +49 -0
  158. package/dist/chunk-XXFLJWTQ.js +237 -0
  159. package/dist/chunk-ZPWBYHNE.js +5799 -0
  160. package/dist/chunk-ZPWBYHNE.js.map +7 -0
  161. package/dist/chunk-ZX75ZAUG.js +45 -0
  162. package/dist/chunk-ZX75ZAUG.js.map +7 -0
  163. package/dist/cohort-ATIZW34H.js +66 -0
  164. package/dist/cohortSunburst-WQK2UV25.js +686 -0
  165. package/dist/cohortSunburst-WQK2UV25.js.map +7 -0
  166. package/dist/condition-SGJIDZNB.js +323 -0
  167. package/dist/controls-JQCMGPXP.js +30 -0
  168. package/dist/controls.config-WQHVQAIJ.js +30 -0
  169. package/dist/correlation-S3MN3L5Q.js +91 -0
  170. package/dist/customdata.inputui-LGTGMJBZ.js +280 -0
  171. package/dist/dataDownload-FAWN2WKE.js +325 -0
  172. package/dist/databrowser.ui-KF3LWQXG.js +421 -0
  173. package/dist/dictionary-EVLEOT72.js +109 -0
  174. package/dist/dnaMethylation-J3SPEM4S.js +29 -0
  175. package/dist/dnaMethylation.integration.spec-CTA53YCT.js +194 -0
  176. package/dist/dofetch-3C3MI5NR.js +47 -0
  177. package/dist/e2pca-PTWPY5WP.js +340 -0
  178. package/dist/ep-MS4LQQDR.js +1245 -0
  179. package/dist/expclust.gdc.spec-S5FE4MMD.js +298 -0
  180. package/dist/facet-FSOIZJCA.js +515 -0
  181. package/dist/gb-YDEOK7NW.js +77 -0
  182. package/dist/geneExpClustering-37JKKFW3.js +240 -0
  183. package/dist/geneExpression-G6ODP3VY.js +29 -0
  184. package/dist/geneExpression-VQPRFNKE.js +309 -0
  185. package/dist/geneExpression.unit.spec-ZHXCUG6Q.js +124 -0
  186. package/dist/geneORA-E3PSS3CI.js +269 -0
  187. package/dist/geneRanking-MK3YYINC.js +544 -0
  188. package/dist/geneVariant-LEMAVFOY.js +32 -0
  189. package/dist/geneVariant-NNSB7JLS.js +285 -0
  190. package/dist/geneVariant.integration.spec-6CC5UAOP.js +499 -0
  191. package/dist/genefusion.ui-5NCQIQPN.js +299 -0
  192. package/dist/geneset-ZX4V3CFB.js +199 -0
  193. package/dist/genomeBrowser.spec-J7ISXY6H.js +272 -0
  194. package/dist/grin2-GN3DQNON.js +945 -0
  195. package/dist/grin2-LBGBBB4L.js +66 -0
  196. package/dist/hierCluster-5JURTKAZ.js +55 -0
  197. package/dist/hierCluster-BJ5VBPXR.js +51 -0
  198. package/dist/hierCluster.config-4EERP4KK.js +32 -0
  199. package/dist/hierCluster.integration.spec-VR4GULRV.js +479 -0
  200. package/dist/hierCluster.interactivity-SMTQOKUY.js +45 -0
  201. package/dist/hierCluster.renderers-PAME7BWU.js +18 -0
  202. package/dist/imagePlot-4LMIKBVE.js +152 -0
  203. package/dist/importPlot-3CG6ASNH.js +8 -0
  204. package/dist/isoformExpression-VCDNKTZ6.js +31 -0
  205. package/dist/isoformExpression.unit.spec-ZXYY37TA.js +233 -0
  206. package/dist/junction-5DXJO4PS.js +32 -0
  207. package/dist/junction.customTerm-UOPUSEOE.js +15 -0
  208. package/dist/junction.unit.spec-F35E3GJW.js +178 -0
  209. package/dist/launch.adhoc-V2HTCQGD.js +33 -0
  210. package/dist/leftlabel.sample-V7O2EC36.js +253 -0
  211. package/dist/lollipop-RNRZLG64.js +162 -0
  212. package/dist/maf-W6SF6BJS.js +451 -0
  213. package/dist/maftimeline-NABCAMHG.js +583 -0
  214. package/dist/matrix-JC6AJT2N.js +55 -0
  215. package/dist/matrix-UCHESWVK.js +50 -0
  216. package/dist/matrix.cells-B4L42TBM.js +25 -0
  217. package/dist/matrix.config-6US3AAH7.js +33 -0
  218. package/dist/matrix.data-FYFXYDA3.js +22 -0
  219. package/dist/matrix.groups-Y7DEG3GS.js +25 -0
  220. package/dist/matrix.integration.spec-KXX7SFX5.js +3156 -0
  221. package/dist/matrix.interactivity-NHWG4WCC.js +33 -0
  222. package/dist/matrix.layout-5DQNT7DD.js +35 -0
  223. package/dist/matrix.legend-OY7IF6AS.js +19 -0
  224. package/dist/matrix.renderers-GYOXGHPU.js +30 -0
  225. package/dist/matrix.serieses-657TLDAV.js +18 -0
  226. package/dist/matrix.sort-IMA2ES3T.js +25 -0
  227. package/dist/matrix.sort.unit.spec-S6BAFYPR.js +464 -0
  228. package/dist/matrix.sorterUi-77F36Q5H.js +15 -0
  229. package/dist/matrix.sorterUi.unit.spec-V5NVQGD5.js +334 -0
  230. package/dist/matrix.unit.spec-R4NMTZYQ.js +146 -0
  231. package/dist/mavb-MRCVMBPD.js +723 -0
  232. package/dist/mds.fimo-5DCH5BEM.js +509 -0
  233. package/dist/mds.samplescatterplot-VIBCS5M6.js +1545 -0
  234. package/dist/mds.survivalplot-AZ7LJDZZ.js +472 -0
  235. package/dist/multivalue-4QKGYYW2.js +79 -0
  236. package/dist/numericDictTermCluster-GLLG6IK2.js +62 -0
  237. package/dist/oncomatrix-R32ZPMX7.js +286 -0
  238. package/dist/oncomatrix.spec-BMK6LMBS.js +439 -0
  239. package/dist/plot.2dvaf-46FT53MF.js +368 -0
  240. package/dist/plot.app-7EE4YCV4.js +32 -0
  241. package/dist/plot.barplot-FK4J2G7K.js +93 -0
  242. package/dist/plot.boxplot-ATY4LK3X.js +142 -0
  243. package/dist/plot.brainImaging-S7B547V4.js +51 -0
  244. package/dist/plot.disco-K5MMC2GD.js +98 -0
  245. package/dist/plot.ssgq-B3OVMZFD.js +130 -0
  246. package/dist/plot.vaf2cov-RBHDQULW.js +249 -0
  247. package/dist/polar2-GECELCTG.js +228 -0
  248. package/dist/profileForms-2USYOA34.js +937 -0
  249. package/dist/profilePlot-YGD2CF6P.js +45 -0
  250. package/dist/proteinView-FCPWJLGU.js +1346 -0
  251. package/dist/proteinView-FCPWJLGU.js.map +7 -0
  252. package/dist/proteomeCohortCompare-TYYUF5A5.js +866 -0
  253. package/dist/proteomeCohortCompare-TYYUF5A5.js.map +7 -0
  254. package/dist/pseudbulk.unit.spec-UVVRP6NR.js +82 -0
  255. package/dist/pseudobulk-ZIN5VJGB.js +31 -0
  256. package/dist/qualitative-27BZGASV.js +34 -0
  257. package/dist/qualitative-N4F6NITI.js +241 -0
  258. package/dist/radar2-X465RPJX.js +323 -0
  259. package/dist/radarFacility2-AE7BA62N.js +331 -0
  260. package/dist/rememberedGvQ.unit.spec-4PDIU5RY.js +210 -0
  261. package/dist/render-TD2QWOHT.js +29 -0
  262. package/dist/report-3Y2OWDF7.js +213 -0
  263. package/dist/sampleView-BUMMYRHJ.js +39 -0
  264. package/dist/samplelst-BWK53BLI.js +102 -0
  265. package/dist/samplematrix-RQU43UYR.js +2188 -0
  266. package/dist/sc-LCBFWCZZ.js +77 -0
  267. package/dist/scatter-6S5I7OW3.js +921 -0
  268. package/dist/scatter-MJELX75N.js +84 -0
  269. package/dist/selectGenomeWithTklst-WAVXHXR5.js +125 -0
  270. package/dist/singleCellCellType-WMCAJ7JF.js +29 -0
  271. package/dist/singleCellCellType.unit.spec-4Z46ZT5Q.js +150 -0
  272. package/dist/singleCellGeneExpression-7Q5ZJT4R.js +29 -0
  273. package/dist/singleCellGeneExpression.unit.spec-6C7PDGRH.js +144 -0
  274. package/dist/singleCellNumericValue-QGYITZRC.js +29 -0
  275. package/dist/singleCellNumericValue.unit.spec-MQUKPEZJ.js +412 -0
  276. package/dist/singleCellPlot-JJMFJ2KQ.js +44 -0
  277. package/dist/singlecell-J23S3JR2.js +1562 -0
  278. package/dist/singlecell-Y4OGUWEC.js +77 -0
  279. package/dist/snp-IO6TKWGD.js +29 -0
  280. package/dist/snp.unit.spec-X7ILEEPO.js +167 -0
  281. package/dist/snplocus-Z2NGIKMO.js +200 -0
  282. package/dist/snplst-XCS2FCQV.js +36 -0
  283. package/dist/spliceevent.a53ss.diagram-F3S4BRVG.js +142 -0
  284. package/dist/spliceevent.exonskip.diagram-AXCDJKH4.js +274 -0
  285. package/dist/spliceevent.noeventdiagram-UK3X667E.js +451 -0
  286. package/dist/ssGSEA-ZRPNQKJ5.js +29 -0
  287. package/dist/ssGSEA.unit.spec-DG5ZHLC7.js +79 -0
  288. package/dist/stattable-XYSC3CYU.js +112 -0
  289. package/dist/studyCatalog-Y75LMI62.js +457 -0
  290. package/dist/studyCatalog-Y75LMI62.js.map +7 -0
  291. package/dist/summarizeCnvGeneexp-H2NP7VLU.js +154 -0
  292. package/dist/summarizeGeneexpSurvival-HTCD3VQQ.js +101 -0
  293. package/dist/summarizeMutationCnv-UEGXWK2P.js +155 -0
  294. package/dist/summarizeMutationDiagnosis-MJGWP7IT.js +31 -0
  295. package/dist/summarizeMutationSurvival-55JW5LA6.js +95 -0
  296. package/dist/summary-HJO23RGB.js +40 -0
  297. package/dist/summary.integration.spec-OWI2C2N5.js +405 -0
  298. package/dist/summaryInput-RL2JXRDE.js +238 -0
  299. package/dist/sunburst-JFY6V5E2.js +274 -0
  300. package/dist/survival-6FLR4YCJ.js +1246 -0
  301. package/dist/survival-PBBU6PA5.js +49 -0
  302. package/dist/survival.integration.spec-WAKTGYGP.js +609 -0
  303. package/dist/svgraph-WD3DUZV7.js +1377 -0
  304. package/dist/svmr-AP6ZFO7S.js +3832 -0
  305. package/dist/swimmer-VPKSBV6V.js +741 -0
  306. package/dist/swimmer-VPKSBV6V.js.map +7 -0
  307. package/dist/table-GX3VJLPZ.js +192 -0
  308. package/dist/termCollection-QE7U5QBD.js +29 -0
  309. package/dist/termCollection-YQ332WKB.js +247 -0
  310. package/dist/termCollection.unit.spec-ELLN7VRA.js +295 -0
  311. package/dist/termCollectionFractionSelection-V3RP5KAT.js +38 -0
  312. package/dist/termCollectionFractionSelection.unit.spec-JR7Q7TJI.js +184 -0
  313. package/dist/tk-GD2KJM5W.js +1116 -0
  314. package/dist/tk-J5VPFEX6.js +37 -0
  315. package/dist/tp.ui-5K3AAXDW.js +1449 -0
  316. package/dist/tvs.categorical-RPACB4VU.js +28 -0
  317. package/dist/tvs.condition-O6JBUM6D.js +160 -0
  318. package/dist/tvs.dt-5EVBSRX3.js +30 -0
  319. package/dist/tvs.dtcnv.categorical-Y5YHBZNC.js +31 -0
  320. package/dist/tvs.dtcnv.continuous-WP322QUP.js +63 -0
  321. package/dist/tvs.dtfusion-CCMUFDMQ.js +31 -0
  322. package/dist/tvs.dtitd-P3ED3MWA.js +31 -0
  323. package/dist/tvs.dtsnvindel-X2MXPLC6.js +31 -0
  324. package/dist/tvs.dtsv-4FOWFNVV.js +31 -0
  325. package/dist/tvs.multivalue-IRF467ZK.js +84 -0
  326. package/dist/tvs.numeric-C7FDCGCS.js +32 -0
  327. package/dist/tvs.samplelst-CBU6ATI5.js +95 -0
  328. package/dist/tvs.survival-3K5ASAXV.js +110 -0
  329. package/dist/tvs.termCollection-MXEWO6KJ.js +118 -0
  330. package/dist/vocabulary-GQBHDP3K.js +32 -0
  331. package/dist/wsi.direct-25JUHWEF.js +8339 -0
  332. package/package.json +3 -3
  333. package/dist/2dmaf-Y4CPQCKD.js +0 -1362
  334. package/dist/AggMatrixInput-XSZSKYJM.js +0 -402
  335. package/dist/AggregateMatrix-BETOEO7U.js +0 -37
  336. package/dist/AppHeader-6X6SNEBI.js +0 -826
  337. package/dist/BoxPlot-J6JKDOH6.js +0 -1233
  338. package/dist/CorrelationVolcano-DMDE4LAP.js +0 -613
  339. package/dist/Cuminc-6WHLJVOC.js +0 -1217
  340. package/dist/DE-EJM6W4Q4.js +0 -85
  341. package/dist/DEinput-AU3E7JM2.js +0 -497
  342. package/dist/DM-FN4WJNDX.js +0 -86
  343. package/dist/DifferentialAnalysis-FD57SA7H.js +0 -235
  344. package/dist/Disco-BMNSQ6YL.js +0 -3384
  345. package/dist/Disco.UI-4VXFHJQV.js +0 -239
  346. package/dist/DmrPlot-P5WKLC5J.js +0 -358
  347. package/dist/GB-BO75K7TF.js +0 -1388
  348. package/dist/GSEA-OEFXDJ23.js +0 -870
  349. package/dist/GeneExpInput-FP7RBRXH.js +0 -38
  350. package/dist/Geomap-ELX6O3IS.js +0 -80
  351. package/dist/HicApp-3JVEBSWO.js +0 -2240
  352. package/dist/IDCViewer-76N6I34Q.js +0 -10808
  353. package/dist/NumBinaryEditor-XLACD6VG.js +0 -274
  354. package/dist/NumBinaryEditor.unit.spec-3Z62H2JG.js +0 -308
  355. package/dist/NumContEditor-Z5ONNXFC.js +0 -100
  356. package/dist/NumContEditor.unit.spec-EJ3L7WH6.js +0 -160
  357. package/dist/NumCustomBinEditor-WKXAK5ZW.js +0 -29
  358. package/dist/NumCustomBinEditor.unit.spec-WXCLBBWT.js +0 -393
  359. package/dist/NumDiscreteEditor-5UBFABFT.js +0 -165
  360. package/dist/NumDiscreteEditor.unit.spec-5EMKOQZU.js +0 -229
  361. package/dist/NumRegularBinEditor-DMOKU5UM.js +0 -29
  362. package/dist/NumRegularBinEditor.unit.spec-QT2WSGNL.js +0 -274
  363. package/dist/NumSplineEditor-G3T26V5H.js +0 -205
  364. package/dist/NumSplineEditor.unit.spec-P4WNWJKE.js +0 -220
  365. package/dist/NumericDensity-AWQK5BKC.js +0 -29
  366. package/dist/NumericDensity.unit.spec-TO5EUJF3.js +0 -414
  367. package/dist/NumericHandler-MZ4WZDMW.js +0 -30
  368. package/dist/NumericHandler.unit.spec-JFLQQ2RI.js +0 -210
  369. package/dist/ProteomeInput-2XRW7WFL.js +0 -384
  370. package/dist/ProteomeInput-2XRW7WFL.js.map +0 -7
  371. package/dist/Regression-QO5EKLTZ.js +0 -1412
  372. package/dist/RunChart2-JLN324L6.js +0 -744
  373. package/dist/SC-W3M6IEDU.js +0 -1344
  374. package/dist/Violin-BCHEWRDU.js +0 -1095
  375. package/dist/Volcano-2PP67BZI.js +0 -2452
  376. package/dist/Wsi-GNGKPGJF.js +0 -625
  377. package/dist/adSandbox-XRWLD73B.js +0 -29
  378. package/dist/animatedBubbleChart-23CVOAXV.js +0 -542
  379. package/dist/app-KRJBODQD.js +0 -28
  380. package/dist/app-YLGQTR3U.js +0 -38
  381. package/dist/bam-3VPOMNJU.js +0 -872
  382. package/dist/barchart-I4S7TYFY.js +0 -38
  383. package/dist/barchart2-VXUP2L4M.js +0 -305
  384. package/dist/block-NVXPY2IK.js +0 -6232
  385. package/dist/block.init-CQ76SLCN.js +0 -29
  386. package/dist/block.mds.expressionrank-CTMM4IFI.js +0 -350
  387. package/dist/block.mds.geneboxplot-XYUU3PUZ.js +0 -819
  388. package/dist/block.mds.junction-LX4ETPO6.js +0 -1534
  389. package/dist/block.mds.svcnv-ABWHJJOA.js +0 -6408
  390. package/dist/block.svg-NY7ZDCUD.js +0 -155
  391. package/dist/block.tk.aicheck-3C52WICS.js +0 -274
  392. package/dist/block.tk.bam-QQHY3KEB.js +0 -1897
  393. package/dist/block.tk.bedgraphdot-EWZAMZ6E.js +0 -375
  394. package/dist/block.tk.bigwig.ui-OW3Q6THD.js +0 -202
  395. package/dist/block.tk.hicstraw-T7GJ7ZV6.js +0 -814
  396. package/dist/block.tk.junction-WKD34BUV.js +0 -2353
  397. package/dist/block.tk.junction.textmatrixui-G6KNHIUC.js +0 -190
  398. package/dist/block.tk.ld-PXXGZMUF.js +0 -90
  399. package/dist/block.tk.menu-W3RFEKFJ.js +0 -1050
  400. package/dist/block.tk.pgv-QVRJDGGG.js +0 -934
  401. package/dist/brainImaging-D42IV6LT.js +0 -550
  402. package/dist/brainRegions-DLXBHC4Y.js +0 -213
  403. package/dist/bubbleHeatmap-LATPOGLF.js +0 -374
  404. package/dist/cellTypeBubbleHeatmap-H7VHFQFD.js +0 -274
  405. package/dist/chunk-2XH5T5HA.js +0 -176
  406. package/dist/chunk-3Z7FX6GQ.js +0 -102
  407. package/dist/chunk-42II4FNQ.js +0 -14
  408. package/dist/chunk-4BQ3HUD2.js +0 -1988
  409. package/dist/chunk-4IWOYJ4D.js +0 -56
  410. package/dist/chunk-5D5Y3XVS.js +0 -56
  411. package/dist/chunk-5KHI46ZP.js +0 -26
  412. package/dist/chunk-5KNC4AJ7.js +0 -103
  413. package/dist/chunk-5MHE7AIV.js +0 -2260
  414. package/dist/chunk-5MHE7AIV.js.map +0 -7
  415. package/dist/chunk-6WYKPBZI.js +0 -339
  416. package/dist/chunk-AIH5PKJN.js +0 -626
  417. package/dist/chunk-AWZOZLFI.js +0 -217
  418. package/dist/chunk-AYZ6BEK4.js +0 -5213
  419. package/dist/chunk-B4NTLUWL.js +0 -2685
  420. package/dist/chunk-BQXK7K5J.js +0 -134
  421. package/dist/chunk-C5YMSIGN.js +0 -6358
  422. package/dist/chunk-CBAU2QMR.js +0 -31
  423. package/dist/chunk-CFHGRMLN.js +0 -468
  424. package/dist/chunk-CNQJ4LOC.js +0 -102
  425. package/dist/chunk-CVT7JE5B.js +0 -123
  426. package/dist/chunk-D4UCM6R7.js +0 -562
  427. package/dist/chunk-DBOJ3TMI.js +0 -424
  428. package/dist/chunk-DDDL46RE.js +0 -550
  429. package/dist/chunk-DURCB2KS.js +0 -141
  430. package/dist/chunk-E64SCL4O.js +0 -418
  431. package/dist/chunk-EAVA7XQL.js +0 -240
  432. package/dist/chunk-EG7HOBJY.js +0 -54
  433. package/dist/chunk-EZFO5UYD.js +0 -5795
  434. package/dist/chunk-EZFO5UYD.js.map +0 -7
  435. package/dist/chunk-F22GGUNI.js +0 -243
  436. package/dist/chunk-F4TEXJ74.js +0 -49
  437. package/dist/chunk-F5ERVYFW.js +0 -783
  438. package/dist/chunk-F5ERVYFW.js.map +0 -7
  439. package/dist/chunk-FIFNXVTS.js +0 -25345
  440. package/dist/chunk-FIFNXVTS.js.map +0 -7
  441. package/dist/chunk-G7YFQ4AK.js +0 -692
  442. package/dist/chunk-GGUCMNZ2.js +0 -339
  443. package/dist/chunk-GGUCMNZ2.js.map +0 -7
  444. package/dist/chunk-HAQGBJZ7.js +0 -156
  445. package/dist/chunk-HCEB7HBL.js +0 -2960
  446. package/dist/chunk-ISYZNLED.js +0 -444
  447. package/dist/chunk-IXQQHAHZ.js +0 -237
  448. package/dist/chunk-JSYPAJVF.js +0 -37
  449. package/dist/chunk-KBEIJEOX.js +0 -194
  450. package/dist/chunk-KE5IMRCJ.js +0 -516
  451. package/dist/chunk-KSWKOKY7.js +0 -38
  452. package/dist/chunk-L2TWQXK2.js +0 -203
  453. package/dist/chunk-L4ORRHDP.js +0 -2325
  454. package/dist/chunk-LH4BM6C7.js +0 -257
  455. package/dist/chunk-LLLRH3MB.js +0 -274
  456. package/dist/chunk-MWDPHZ2K.js +0 -1269
  457. package/dist/chunk-N2FCAFJH.js +0 -178
  458. package/dist/chunk-N2FCAFJH.js.map +0 -7
  459. package/dist/chunk-NT4BDYKQ.js +0 -466
  460. package/dist/chunk-OH33WT6Q.js +0 -119
  461. package/dist/chunk-PEBOVSIC.js +0 -1339
  462. package/dist/chunk-Q37PHHHH.js +0 -59
  463. package/dist/chunk-QCPXDSKH.js +0 -379
  464. package/dist/chunk-QDWEKA5J.js +0 -382
  465. package/dist/chunk-QVQI5DW7.js +0 -1817
  466. package/dist/chunk-QVQI5DW7.js.map +0 -7
  467. package/dist/chunk-R3UYQXJL.js +0 -1233
  468. package/dist/chunk-R3UYQXJL.js.map +0 -7
  469. package/dist/chunk-R47CRASM.js +0 -182
  470. package/dist/chunk-ROLQAMNM.js +0 -96
  471. package/dist/chunk-RXAKFDZM.js +0 -302
  472. package/dist/chunk-STDPI4K3.js +0 -281
  473. package/dist/chunk-SYDK5RV5.js +0 -54
  474. package/dist/chunk-SZ2VC2I2.js +0 -276
  475. package/dist/chunk-TAOTFHMT.js +0 -170
  476. package/dist/chunk-TMEDFIPS.js +0 -2799
  477. package/dist/chunk-TRZVM7OG.js +0 -194
  478. package/dist/chunk-VB47XOA4.js +0 -397
  479. package/dist/chunk-VCXAL36U.js +0 -54
  480. package/dist/chunk-VP3BJXOR.js +0 -55
  481. package/dist/chunk-VZGARY6D.js +0 -255
  482. package/dist/chunk-WO5S6USJ.js +0 -4373
  483. package/dist/chunk-WPR2CMWS.js +0 -34
  484. package/dist/chunk-WTKV6KPV.js +0 -70
  485. package/dist/chunk-XCJHO2PZ.js +0 -263
  486. package/dist/chunk-XVBFTP6A.js +0 -294
  487. package/dist/chunk-YKR3O6TN.js +0 -480
  488. package/dist/chunk-YZO7NVZW.js +0 -299
  489. package/dist/chunk-ZNOQYTF7.js +0 -140
  490. package/dist/chunk-ZOOMCQVD.js +0 -80
  491. package/dist/chunk-ZZTAUDJV.js +0 -217
  492. package/dist/cohort-E2RISYWQ.js +0 -66
  493. package/dist/condition-ZCROOBW2.js +0 -323
  494. package/dist/controls-TRUCBCUG.js +0 -30
  495. package/dist/controls.config-ZWEI3PWR.js +0 -30
  496. package/dist/correlation-ODRXACI5.js +0 -91
  497. package/dist/customdata.inputui-WADNWN4A.js +0 -280
  498. package/dist/dataDownload-TKACVGQG.js +0 -325
  499. package/dist/databrowser.ui-P74LKVPW.js +0 -421
  500. package/dist/dictionary-AR7TU32A.js +0 -109
  501. package/dist/dnaMethylation-FAA5NEAR.js +0 -29
  502. package/dist/dnaMethylation.integration.spec-XO5KTHGG.js +0 -194
  503. package/dist/dofetch-3ZCQBYTP.js +0 -47
  504. package/dist/e2pca-545GHJWM.js +0 -340
  505. package/dist/ep-DFBBKNXP.js +0 -1245
  506. package/dist/expclust.gdc.spec-IW2EKLIJ.js +0 -298
  507. package/dist/facet-JNIRJGUK.js +0 -515
  508. package/dist/gb-C3Z24J7G.js +0 -77
  509. package/dist/geneExpClustering-ZYYXVWEH.js +0 -240
  510. package/dist/geneExpression-AFI6PX7J.js +0 -29
  511. package/dist/geneExpression-QAHT5JK3.js +0 -309
  512. package/dist/geneExpression.unit.spec-QD6FBA7Y.js +0 -124
  513. package/dist/geneORA-UJUDJH33.js +0 -269
  514. package/dist/geneRanking-W4GJTT2D.js +0 -544
  515. package/dist/geneVariant-7TLTYMRN.js +0 -285
  516. package/dist/geneVariant-PIPW23ZL.js +0 -32
  517. package/dist/geneVariant.integration.spec-EWVEPYWR.js +0 -499
  518. package/dist/genefusion.ui-CQMINB6C.js +0 -299
  519. package/dist/geneset-DB2UIWDN.js +0 -199
  520. package/dist/genomeBrowser.spec-5PPCZGJY.js +0 -272
  521. package/dist/grin2-6FKWST7P.js +0 -66
  522. package/dist/grin2-CRHH7XQL.js +0 -945
  523. package/dist/hierCluster-LVVQUFIA.js +0 -55
  524. package/dist/hierCluster-N4BWRDRD.js +0 -51
  525. package/dist/hierCluster.config-RXYYXEKK.js +0 -32
  526. package/dist/hierCluster.integration.spec-32ELKHGP.js +0 -479
  527. package/dist/hierCluster.interactivity-O5PWSGD7.js +0 -45
  528. package/dist/hierCluster.renderers-E6FQE2DK.js +0 -18
  529. package/dist/imagePlot-CJJPFFND.js +0 -152
  530. package/dist/importPlot-IT2VCT3E.js +0 -8
  531. package/dist/isoformExpression-MB7VXNYL.js +0 -31
  532. package/dist/isoformExpression.unit.spec-WBGH5T22.js +0 -233
  533. package/dist/junction-RUMI5YFR.js +0 -32
  534. package/dist/junction.customTerm-LBVLFTOA.js +0 -15
  535. package/dist/junction.unit.spec-VU665JWH.js +0 -178
  536. package/dist/launch.adhoc-PG2VDOP5.js +0 -33
  537. package/dist/leftlabel.sample-O4EI4FEW.js +0 -253
  538. package/dist/lollipop-LWQ3ZPUC.js +0 -162
  539. package/dist/maf-Z7IN4HAW.js +0 -451
  540. package/dist/maftimeline-AQLIVUW3.js +0 -583
  541. package/dist/matrix-LTXFBGFW.js +0 -55
  542. package/dist/matrix-W2XR54DY.js +0 -50
  543. package/dist/matrix.cells-F44JHGOO.js +0 -25
  544. package/dist/matrix.config-Y5OUBSEC.js +0 -33
  545. package/dist/matrix.data-VLIW75OR.js +0 -22
  546. package/dist/matrix.groups-QEWUDMPF.js +0 -25
  547. package/dist/matrix.integration.spec-24DH4HNF.js +0 -3156
  548. package/dist/matrix.interactivity-R3BQYXAY.js +0 -33
  549. package/dist/matrix.layout-TENBEUJ6.js +0 -35
  550. package/dist/matrix.legend-E35GDZWD.js +0 -19
  551. package/dist/matrix.renderers-CMPAIUYT.js +0 -30
  552. package/dist/matrix.serieses-GXVQBJML.js +0 -18
  553. package/dist/matrix.sort-VQS6E6S5.js +0 -25
  554. package/dist/matrix.sort.unit.spec-P5C6EVDC.js +0 -464
  555. package/dist/matrix.sorterUi-4R2TVBUJ.js +0 -15
  556. package/dist/matrix.sorterUi.unit.spec-UMI2N2OG.js +0 -334
  557. package/dist/matrix.unit.spec-HSA7OWME.js +0 -146
  558. package/dist/mavb-ZARQZJJR.js +0 -723
  559. package/dist/mds.fimo-YRNNY5KA.js +0 -509
  560. package/dist/mds.samplescatterplot-ESIALOMA.js +0 -1545
  561. package/dist/mds.survivalplot-5E6ITKIU.js +0 -472
  562. package/dist/multivalue-CT2QWWB4.js +0 -79
  563. package/dist/numericDictTermCluster-CRVSJ6PI.js +0 -62
  564. package/dist/oncomatrix-MX5EHBNW.js +0 -286
  565. package/dist/oncomatrix.spec-DN2RAWGZ.js +0 -439
  566. package/dist/plot.2dvaf-B5QAKDTK.js +0 -368
  567. package/dist/plot.app-V5DZWC6N.js +0 -32
  568. package/dist/plot.barplot-VAJLAU7H.js +0 -93
  569. package/dist/plot.boxplot-PT3BUNVT.js +0 -142
  570. package/dist/plot.brainImaging-2WB7XJJM.js +0 -51
  571. package/dist/plot.disco-64IPBCII.js +0 -98
  572. package/dist/plot.ssgq-ET4OBMUM.js +0 -130
  573. package/dist/plot.vaf2cov-DGMVJ7UN.js +0 -249
  574. package/dist/polar2-CWWDVNZQ.js +0 -228
  575. package/dist/profileForms-FM7D4WO2.js +0 -937
  576. package/dist/profilePlot-LQ6K4EXX.js +0 -45
  577. package/dist/proteinView-WVI3OVDD.js +0 -1352
  578. package/dist/proteinView-WVI3OVDD.js.map +0 -7
  579. package/dist/proteomeCohortCompare-6FWTYPDF.js +0 -908
  580. package/dist/proteomeCohortCompare-6FWTYPDF.js.map +0 -7
  581. package/dist/pseudbulk.unit.spec-IAONX4QR.js +0 -82
  582. package/dist/pseudobulk-NIX4JOOZ.js +0 -31
  583. package/dist/qualitative-GLTKWA6H.js +0 -241
  584. package/dist/qualitative-M3XSQZA2.js +0 -34
  585. package/dist/radar2-JBULXNFQ.js +0 -323
  586. package/dist/radarFacility2-YYIBHZCY.js +0 -331
  587. package/dist/rememberedGvQ.unit.spec-YJV6DVPN.js +0 -210
  588. package/dist/render-ZCH7R3WL.js +0 -29
  589. package/dist/report-YPIAIMND.js +0 -213
  590. package/dist/sampleView-K4GSYMAE.js +0 -39
  591. package/dist/samplelst-F2SLVHFP.js +0 -102
  592. package/dist/samplematrix-Z6F4F7YN.js +0 -2188
  593. package/dist/sc-UM7SEGED.js +0 -77
  594. package/dist/scatter-63XRRLGP.js +0 -921
  595. package/dist/scatter-HFTYLGDP.js +0 -84
  596. package/dist/selectGenomeWithTklst-PJNALPM2.js +0 -125
  597. package/dist/singleCellCellType-HR3R6KBD.js +0 -29
  598. package/dist/singleCellCellType.unit.spec-VK57HQ2O.js +0 -150
  599. package/dist/singleCellGeneExpression-VWOA7MLN.js +0 -29
  600. package/dist/singleCellGeneExpression.unit.spec-YP64T3XD.js +0 -144
  601. package/dist/singleCellNumericValue-3VIUPYPB.js +0 -29
  602. package/dist/singleCellNumericValue.unit.spec-VR5ICRQA.js +0 -412
  603. package/dist/singleCellPlot-36QDY7VL.js +0 -44
  604. package/dist/singlecell-D2MZVFR4.js +0 -77
  605. package/dist/singlecell-EXEOLJ3J.js +0 -1562
  606. package/dist/snp-XHEHXZMB.js +0 -29
  607. package/dist/snp.unit.spec-YR6IDLL7.js +0 -167
  608. package/dist/snplocus-BM7LUK2U.js +0 -200
  609. package/dist/snplst-22VSEZ7R.js +0 -36
  610. package/dist/spliceevent.a53ss.diagram-KERTJ3QA.js +0 -142
  611. package/dist/spliceevent.exonskip.diagram-K74VIUA4.js +0 -274
  612. package/dist/spliceevent.noeventdiagram-W7WGSVVL.js +0 -451
  613. package/dist/ssGSEA-XDEA5TVX.js +0 -29
  614. package/dist/ssGSEA.unit.spec-RDCPXJ5S.js +0 -79
  615. package/dist/stattable-HZ3DOUEM.js +0 -112
  616. package/dist/studyCatalog-FWNHGZUT.js +0 -410
  617. package/dist/studyCatalog-FWNHGZUT.js.map +0 -7
  618. package/dist/summarizeCnvGeneexp-VB4SOJHT.js +0 -154
  619. package/dist/summarizeGeneexpSurvival-5ZWIJ6O4.js +0 -101
  620. package/dist/summarizeMutationCnv-MBPU64C5.js +0 -155
  621. package/dist/summarizeMutationDiagnosis-QRP4ITNL.js +0 -31
  622. package/dist/summarizeMutationSurvival-SSXAY5W4.js +0 -95
  623. package/dist/summary-SRESZS4Z.js +0 -40
  624. package/dist/summary.integration.spec-3V2CEPJM.js +0 -405
  625. package/dist/summaryInput-3VD4KBCU.js +0 -238
  626. package/dist/sunburst-E5IEQQUV.js +0 -274
  627. package/dist/survival-H4HYC6GC.js +0 -1246
  628. package/dist/survival-K5WWAELO.js +0 -49
  629. package/dist/survival.integration.spec-SPN2TSQW.js +0 -609
  630. package/dist/svgraph-USRAYSBN.js +0 -1377
  631. package/dist/svmr-MOKLLJKJ.js +0 -3832
  632. package/dist/table-WD3P3WL2.js +0 -192
  633. package/dist/termCollection-JU4OJRWD.js +0 -29
  634. package/dist/termCollection-VWS5CKVH.js +0 -247
  635. package/dist/termCollection.unit.spec-TPUJWKKW.js +0 -295
  636. package/dist/termCollectionFractionSelection-UWLHDPX2.js +0 -38
  637. package/dist/termCollectionFractionSelection.unit.spec-RBHJY34K.js +0 -184
  638. package/dist/tk-OAOVCATS.js +0 -1116
  639. package/dist/tk-SMOGJUD7.js +0 -37
  640. package/dist/tp.ui-EMWJCGRX.js +0 -1449
  641. package/dist/tvs.categorical-A7J4RIKL.js +0 -28
  642. package/dist/tvs.condition-HFLZES5E.js +0 -160
  643. package/dist/tvs.dt-GBYX2RWX.js +0 -30
  644. package/dist/tvs.dtcnv.categorical-X2K3MIPG.js +0 -31
  645. package/dist/tvs.dtcnv.continuous-5EMX4PBP.js +0 -63
  646. package/dist/tvs.dtfusion-7VVSPNRK.js +0 -31
  647. package/dist/tvs.dtitd-2YGFPXOY.js +0 -31
  648. package/dist/tvs.dtsnvindel-EISO52O6.js +0 -31
  649. package/dist/tvs.dtsv-RTAMAW3G.js +0 -31
  650. package/dist/tvs.multivalue-5N6PSG4L.js +0 -84
  651. package/dist/tvs.numeric-R5UT7ARM.js +0 -32
  652. package/dist/tvs.samplelst-SZDNNFK5.js +0 -95
  653. package/dist/tvs.survival-EUUDDXP7.js +0 -110
  654. package/dist/tvs.termCollection-DAHEYZK2.js +0 -118
  655. package/dist/vocabulary-P4XRHR34.js +0 -32
  656. package/dist/wsi.direct-J7VX5EMI.js +0 -8339
  657. /package/dist/{2dmaf-Y4CPQCKD.js.map → 2dmaf-RRHATFHO.js.map} +0 -0
  658. /package/dist/{AggMatrixInput-XSZSKYJM.js.map → AggMatrixInput-4UHBCXYH.js.map} +0 -0
  659. /package/dist/{AggregateMatrix-BETOEO7U.js.map → AggregateMatrix-IJE5CM5Y.js.map} +0 -0
  660. /package/dist/{AppHeader-6X6SNEBI.js.map → AppHeader-UXGLRW6C.js.map} +0 -0
  661. /package/dist/{BoxPlot-J6JKDOH6.js.map → BoxPlot-GQYC22KY.js.map} +0 -0
  662. /package/dist/{CorrelationVolcano-DMDE4LAP.js.map → CorrelationVolcano-5CWRWZTI.js.map} +0 -0
  663. /package/dist/{Cuminc-6WHLJVOC.js.map → Cuminc-TYHKAPRK.js.map} +0 -0
  664. /package/dist/{DE-EJM6W4Q4.js.map → DE-UUFQGSOI.js.map} +0 -0
  665. /package/dist/{DEinput-AU3E7JM2.js.map → DEinput-DU7MF4YY.js.map} +0 -0
  666. /package/dist/{DM-FN4WJNDX.js.map → DM-SSI5KUBC.js.map} +0 -0
  667. /package/dist/{DifferentialAnalysis-FD57SA7H.js.map → DifferentialAnalysis-G6FE2MXY.js.map} +0 -0
  668. /package/dist/{Disco-BMNSQ6YL.js.map → Disco-B3KGNEAW.js.map} +0 -0
  669. /package/dist/{Disco.UI-4VXFHJQV.js.map → Disco.UI-UNPUBQCN.js.map} +0 -0
  670. /package/dist/{DmrPlot-P5WKLC5J.js.map → DmrPlot-27NGDMT4.js.map} +0 -0
  671. /package/dist/{GB-BO75K7TF.js.map → GB-SXACUA4V.js.map} +0 -0
  672. /package/dist/{GSEA-OEFXDJ23.js.map → GSEA-EHMBA3TF.js.map} +0 -0
  673. /package/dist/{GeneExpInput-FP7RBRXH.js.map → GeneExpInput-NDXISF2U.js.map} +0 -0
  674. /package/dist/{Geomap-ELX6O3IS.js.map → Geomap-3CNT227W.js.map} +0 -0
  675. /package/dist/{HicApp-3JVEBSWO.js.map → HicApp-VQBUB6EZ.js.map} +0 -0
  676. /package/dist/{IDCViewer-76N6I34Q.js.map → IDCViewer-DTOE7KDX.js.map} +0 -0
  677. /package/dist/{NumBinaryEditor-XLACD6VG.js.map → NumBinaryEditor-IVZ4MMQT.js.map} +0 -0
  678. /package/dist/{NumBinaryEditor.unit.spec-3Z62H2JG.js.map → NumBinaryEditor.unit.spec-3BSQ6FM4.js.map} +0 -0
  679. /package/dist/{NumContEditor-Z5ONNXFC.js.map → NumContEditor-CUZHU3IO.js.map} +0 -0
  680. /package/dist/{NumContEditor.unit.spec-EJ3L7WH6.js.map → NumContEditor.unit.spec-SCQFD2Y7.js.map} +0 -0
  681. /package/dist/{NumCustomBinEditor-WKXAK5ZW.js.map → NumCustomBinEditor-UEEYZ4ZO.js.map} +0 -0
  682. /package/dist/{NumCustomBinEditor.unit.spec-WXCLBBWT.js.map → NumCustomBinEditor.unit.spec-GYS35OQV.js.map} +0 -0
  683. /package/dist/{NumDiscreteEditor-5UBFABFT.js.map → NumDiscreteEditor-IT7NIXTV.js.map} +0 -0
  684. /package/dist/{NumDiscreteEditor.unit.spec-5EMKOQZU.js.map → NumDiscreteEditor.unit.spec-LB6VLAWO.js.map} +0 -0
  685. /package/dist/{NumRegularBinEditor-DMOKU5UM.js.map → NumRegularBinEditor-FF6UXZWN.js.map} +0 -0
  686. /package/dist/{NumRegularBinEditor.unit.spec-QT2WSGNL.js.map → NumRegularBinEditor.unit.spec-Z4S5LH2C.js.map} +0 -0
  687. /package/dist/{NumSplineEditor-G3T26V5H.js.map → NumSplineEditor-IW5WEN3P.js.map} +0 -0
  688. /package/dist/{NumSplineEditor.unit.spec-P4WNWJKE.js.map → NumSplineEditor.unit.spec-PAEN3SAD.js.map} +0 -0
  689. /package/dist/{NumericDensity-AWQK5BKC.js.map → NumericDensity-CPJIQLYT.js.map} +0 -0
  690. /package/dist/{NumericDensity.unit.spec-TO5EUJF3.js.map → NumericDensity.unit.spec-4KHECHVU.js.map} +0 -0
  691. /package/dist/{NumericHandler-MZ4WZDMW.js.map → NumericHandler-SEFTQJDM.js.map} +0 -0
  692. /package/dist/{NumericHandler.unit.spec-JFLQQ2RI.js.map → NumericHandler.unit.spec-UGDR3476.js.map} +0 -0
  693. /package/dist/{Regression-QO5EKLTZ.js.map → Regression-WDSISHYL.js.map} +0 -0
  694. /package/dist/{RunChart2-JLN324L6.js.map → RunChart2-2NPADXUR.js.map} +0 -0
  695. /package/dist/{SC-W3M6IEDU.js.map → SC-EWDBPHEL.js.map} +0 -0
  696. /package/dist/{Violin-BCHEWRDU.js.map → Violin-POGGPCZY.js.map} +0 -0
  697. /package/dist/{Volcano-2PP67BZI.js.map → Volcano-U2B4KEUL.js.map} +0 -0
  698. /package/dist/{Wsi-GNGKPGJF.js.map → Wsi-G7OCAJ3R.js.map} +0 -0
  699. /package/dist/{adSandbox-XRWLD73B.js.map → adSandbox-SUCX6DAQ.js.map} +0 -0
  700. /package/dist/{animatedBubbleChart-23CVOAXV.js.map → animatedBubbleChart-SDBWJELZ.js.map} +0 -0
  701. /package/dist/{app-KRJBODQD.js.map → app-ATQM5PKI.js.map} +0 -0
  702. /package/dist/{app-YLGQTR3U.js.map → app-BCKEWJCY.js.map} +0 -0
  703. /package/dist/{bam-3VPOMNJU.js.map → bam-QK2ZLZDI.js.map} +0 -0
  704. /package/dist/{barchart-I4S7TYFY.js.map → barchart-RHDKI3NZ.js.map} +0 -0
  705. /package/dist/{barchart2-VXUP2L4M.js.map → barchart2-CS3E6FOY.js.map} +0 -0
  706. /package/dist/{block-NVXPY2IK.js.map → block-RQ3HTJVP.js.map} +0 -0
  707. /package/dist/{block.init-CQ76SLCN.js.map → block.init-T33F47DO.js.map} +0 -0
  708. /package/dist/{block.mds.expressionrank-CTMM4IFI.js.map → block.mds.expressionrank-LQD6MN6Z.js.map} +0 -0
  709. /package/dist/{block.mds.geneboxplot-XYUU3PUZ.js.map → block.mds.geneboxplot-N5XHHVR7.js.map} +0 -0
  710. /package/dist/{block.mds.junction-LX4ETPO6.js.map → block.mds.junction-JD4WQUSH.js.map} +0 -0
  711. /package/dist/{block.mds.svcnv-ABWHJJOA.js.map → block.mds.svcnv-LCTYWXL2.js.map} +0 -0
  712. /package/dist/{block.svg-NY7ZDCUD.js.map → block.svg-2F3RGTI3.js.map} +0 -0
  713. /package/dist/{block.tk.aicheck-3C52WICS.js.map → block.tk.aicheck-BOF6WZ5E.js.map} +0 -0
  714. /package/dist/{block.tk.bam-QQHY3KEB.js.map → block.tk.bam-5GBYEQBM.js.map} +0 -0
  715. /package/dist/{block.tk.bedgraphdot-EWZAMZ6E.js.map → block.tk.bedgraphdot-LVQEP4RS.js.map} +0 -0
  716. /package/dist/{block.tk.bigwig.ui-OW3Q6THD.js.map → block.tk.bigwig.ui-HHBO4JAC.js.map} +0 -0
  717. /package/dist/{block.tk.hicstraw-T7GJ7ZV6.js.map → block.tk.hicstraw-JBO4UEOA.js.map} +0 -0
  718. /package/dist/{block.tk.junction-WKD34BUV.js.map → block.tk.junction-S5S2N7FK.js.map} +0 -0
  719. /package/dist/{block.tk.junction.textmatrixui-G6KNHIUC.js.map → block.tk.junction.textmatrixui-DNQL7WB5.js.map} +0 -0
  720. /package/dist/{block.tk.ld-PXXGZMUF.js.map → block.tk.ld-JHQNR67E.js.map} +0 -0
  721. /package/dist/{block.tk.menu-W3RFEKFJ.js.map → block.tk.menu-7JBJOY2O.js.map} +0 -0
  722. /package/dist/{block.tk.pgv-QVRJDGGG.js.map → block.tk.pgv-FQPREV6P.js.map} +0 -0
  723. /package/dist/{brainImaging-D42IV6LT.js.map → brainImaging-HEWGZZNY.js.map} +0 -0
  724. /package/dist/{brainRegions-DLXBHC4Y.js.map → brainRegions-QUGB7YUW.js.map} +0 -0
  725. /package/dist/{bubbleHeatmap-LATPOGLF.js.map → bubbleHeatmap-OZRONGAX.js.map} +0 -0
  726. /package/dist/{cellTypeBubbleHeatmap-H7VHFQFD.js.map → cellTypeBubbleHeatmap-N7NDE325.js.map} +0 -0
  727. /package/dist/{chunk-EG7HOBJY.js.map → chunk-2FWSNJEN.js.map} +0 -0
  728. /package/dist/{chunk-WPR2CMWS.js.map → chunk-2JIKMCJR.js.map} +0 -0
  729. /package/dist/{chunk-CNQJ4LOC.js.map → chunk-3SPEW6R6.js.map} +0 -0
  730. /package/dist/{chunk-CVT7JE5B.js.map → chunk-5G6O5RYM.js.map} +0 -0
  731. /package/dist/{chunk-YZO7NVZW.js.map → chunk-65DO5IKM.js.map} +0 -0
  732. /package/dist/{chunk-B4NTLUWL.js.map → chunk-6Q5SOSSU.js.map} +0 -0
  733. /package/dist/{chunk-AIH5PKJN.js.map → chunk-7JHIUS54.js.map} +0 -0
  734. /package/dist/{chunk-VB47XOA4.js.map → chunk-7X347XMF.js.map} +0 -0
  735. /package/dist/{chunk-VP3BJXOR.js.map → chunk-ABLG7GUS.js.map} +0 -0
  736. /package/dist/{chunk-SZ2VC2I2.js.map → chunk-AFEFZ74T.js.map} +0 -0
  737. /package/dist/{chunk-F22GGUNI.js.map → chunk-AIC43DTG.js.map} +0 -0
  738. /package/dist/{chunk-R47CRASM.js.map → chunk-AJXP4AV7.js.map} +0 -0
  739. /package/dist/{chunk-DBOJ3TMI.js.map → chunk-AMW5LCUB.js.map} +0 -0
  740. /package/dist/{chunk-HAQGBJZ7.js.map → chunk-AV2IH5K2.js.map} +0 -0
  741. /package/dist/{chunk-XCJHO2PZ.js.map → chunk-B3WLXXGY.js.map} +0 -0
  742. /package/dist/{chunk-RXAKFDZM.js.map → chunk-BG6GAROI.js.map} +0 -0
  743. /package/dist/{chunk-5KNC4AJ7.js.map → chunk-BU6PAOGA.js.map} +0 -0
  744. /package/dist/{chunk-ROLQAMNM.js.map → chunk-C2TII2FF.js.map} +0 -0
  745. /package/dist/{chunk-DDDL46RE.js.map → chunk-CTFHEDG2.js.map} +0 -0
  746. /package/dist/{chunk-JSYPAJVF.js.map → chunk-CXEECHP5.js.map} +0 -0
  747. /package/dist/{chunk-PEBOVSIC.js.map → chunk-CZK4EV3Y.js.map} +0 -0
  748. /package/dist/{chunk-L4ORRHDP.js.map → chunk-D35GNF3Y.js.map} +0 -0
  749. /package/dist/{chunk-TAOTFHMT.js.map → chunk-DFZWE3TR.js.map} +0 -0
  750. /package/dist/{chunk-4BQ3HUD2.js.map → chunk-E7XHA4YL.js.map} +0 -0
  751. /package/dist/{chunk-SYDK5RV5.js.map → chunk-EDFBRXX2.js.map} +0 -0
  752. /package/dist/{chunk-5KHI46ZP.js.map → chunk-F23EQSGU.js.map} +0 -0
  753. /package/dist/{chunk-QCPXDSKH.js.map → chunk-F2EEQ7KG.js.map} +0 -0
  754. /package/dist/{chunk-CFHGRMLN.js.map → chunk-F5FFI7Z7.js.map} +0 -0
  755. /package/dist/{chunk-DURCB2KS.js.map → chunk-FK5NL2DF.js.map} +0 -0
  756. /package/dist/{chunk-G7YFQ4AK.js.map → chunk-FVZTRWAO.js.map} +0 -0
  757. /package/dist/{chunk-AWZOZLFI.js.map → chunk-GDHQVEIO.js.map} +0 -0
  758. /package/dist/{chunk-TMEDFIPS.js.map → chunk-GSVB4XNS.js.map} +0 -0
  759. /package/dist/{chunk-E64SCL4O.js.map → chunk-GVAV4VRI.js.map} +0 -0
  760. /package/dist/{chunk-ZNOQYTF7.js.map → chunk-H2FELGYK.js.map} +0 -0
  761. /package/dist/{chunk-LLLRH3MB.js.map → chunk-HJARHSDC.js.map} +0 -0
  762. /package/dist/{chunk-VCXAL36U.js.map → chunk-HXRG7XYB.js.map} +0 -0
  763. /package/dist/{chunk-ZOOMCQVD.js.map → chunk-J5KCTRJC.js.map} +0 -0
  764. /package/dist/{chunk-Q37PHHHH.js.map → chunk-JMFVXWDX.js.map} +0 -0
  765. /package/dist/{chunk-L2TWQXK2.js.map → chunk-KGX2OIR4.js.map} +0 -0
  766. /package/dist/{chunk-LH4BM6C7.js.map → chunk-L2NPLA43.js.map} +0 -0
  767. /package/dist/{chunk-6WYKPBZI.js.map → chunk-L2WOLNZK.js.map} +0 -0
  768. /package/dist/{chunk-NT4BDYKQ.js.map → chunk-LQKMDIRB.js.map} +0 -0
  769. /package/dist/{chunk-D4UCM6R7.js.map → chunk-LSQ5AQ6Q.js.map} +0 -0
  770. /package/dist/{chunk-MWDPHZ2K.js.map → chunk-MBQIHLGI.js.map} +0 -0
  771. /package/dist/{chunk-42II4FNQ.js.map → chunk-MFR4WWDM.js.map} +0 -0
  772. /package/dist/{chunk-STDPI4K3.js.map → chunk-NHMIMTJA.js.map} +0 -0
  773. /package/dist/{chunk-C5YMSIGN.js.map → chunk-NPBN3PPZ.js.map} +0 -0
  774. /package/dist/{chunk-5D5Y3XVS.js.map → chunk-NULQJF73.js.map} +0 -0
  775. /package/dist/{chunk-XVBFTP6A.js.map → chunk-NYO7YANQ.js.map} +0 -0
  776. /package/dist/{chunk-TRZVM7OG.js.map → chunk-OBNHXAYG.js.map} +0 -0
  777. /package/dist/{chunk-BQXK7K5J.js.map → chunk-PETYR7LC.js.map} +0 -0
  778. /package/dist/{chunk-OH33WT6Q.js.map → chunk-PLFPXOGX.js.map} +0 -0
  779. /package/dist/{chunk-AYZ6BEK4.js.map → chunk-PQVHRM4L.js.map} +0 -0
  780. /package/dist/{chunk-EAVA7XQL.js.map → chunk-QLUTQPZE.js.map} +0 -0
  781. /package/dist/{chunk-KSWKOKY7.js.map → chunk-QNQ2ZYT7.js.map} +0 -0
  782. /package/dist/{chunk-VZGARY6D.js.map → chunk-QYCPIVCX.js.map} +0 -0
  783. /package/dist/{chunk-KE5IMRCJ.js.map → chunk-RZ2THVK4.js.map} +0 -0
  784. /package/dist/{chunk-CBAU2QMR.js.map → chunk-S4IZ4VM7.js.map} +0 -0
  785. /package/dist/{chunk-QDWEKA5J.js.map → chunk-SFUDTUXF.js.map} +0 -0
  786. /package/dist/{chunk-3Z7FX6GQ.js.map → chunk-SUT75MRI.js.map} +0 -0
  787. /package/dist/{chunk-4IWOYJ4D.js.map → chunk-SYLYLOHK.js.map} +0 -0
  788. /package/dist/{chunk-2XH5T5HA.js.map → chunk-TEFWF3SK.js.map} +0 -0
  789. /package/dist/{chunk-WTKV6KPV.js.map → chunk-TPSVPMAN.js.map} +0 -0
  790. /package/dist/{chunk-HCEB7HBL.js.map → chunk-V4ZKHM6D.js.map} +0 -0
  791. /package/dist/{chunk-WO5S6USJ.js.map → chunk-V7DNHPZD.js.map} +0 -0
  792. /package/dist/{chunk-KBEIJEOX.js.map → chunk-VPMQDTYR.js.map} +0 -0
  793. /package/dist/{chunk-ISYZNLED.js.map → chunk-VV6JIG4D.js.map} +0 -0
  794. /package/dist/{chunk-ZZTAUDJV.js.map → chunk-WU3YXPRE.js.map} +0 -0
  795. /package/dist/{chunk-YKR3O6TN.js.map → chunk-X2HWRISK.js.map} +0 -0
  796. /package/dist/{chunk-F4TEXJ74.js.map → chunk-X77QVINS.js.map} +0 -0
  797. /package/dist/{chunk-IXQQHAHZ.js.map → chunk-XXFLJWTQ.js.map} +0 -0
  798. /package/dist/{cohort-E2RISYWQ.js.map → cohort-ATIZW34H.js.map} +0 -0
  799. /package/dist/{condition-ZCROOBW2.js.map → condition-SGJIDZNB.js.map} +0 -0
  800. /package/dist/{controls-TRUCBCUG.js.map → controls-JQCMGPXP.js.map} +0 -0
  801. /package/dist/{controls.config-ZWEI3PWR.js.map → controls.config-WQHVQAIJ.js.map} +0 -0
  802. /package/dist/{correlation-ODRXACI5.js.map → correlation-S3MN3L5Q.js.map} +0 -0
  803. /package/dist/{customdata.inputui-WADNWN4A.js.map → customdata.inputui-LGTGMJBZ.js.map} +0 -0
  804. /package/dist/{dataDownload-TKACVGQG.js.map → dataDownload-FAWN2WKE.js.map} +0 -0
  805. /package/dist/{databrowser.ui-P74LKVPW.js.map → databrowser.ui-KF3LWQXG.js.map} +0 -0
  806. /package/dist/{dictionary-AR7TU32A.js.map → dictionary-EVLEOT72.js.map} +0 -0
  807. /package/dist/{dnaMethylation-FAA5NEAR.js.map → dnaMethylation-J3SPEM4S.js.map} +0 -0
  808. /package/dist/{dnaMethylation.integration.spec-XO5KTHGG.js.map → dnaMethylation.integration.spec-CTA53YCT.js.map} +0 -0
  809. /package/dist/{dofetch-3ZCQBYTP.js.map → dofetch-3C3MI5NR.js.map} +0 -0
  810. /package/dist/{e2pca-545GHJWM.js.map → e2pca-PTWPY5WP.js.map} +0 -0
  811. /package/dist/{ep-DFBBKNXP.js.map → ep-MS4LQQDR.js.map} +0 -0
  812. /package/dist/{expclust.gdc.spec-IW2EKLIJ.js.map → expclust.gdc.spec-S5FE4MMD.js.map} +0 -0
  813. /package/dist/{facet-JNIRJGUK.js.map → facet-FSOIZJCA.js.map} +0 -0
  814. /package/dist/{gb-C3Z24J7G.js.map → gb-YDEOK7NW.js.map} +0 -0
  815. /package/dist/{geneExpClustering-ZYYXVWEH.js.map → geneExpClustering-37JKKFW3.js.map} +0 -0
  816. /package/dist/{geneExpression-AFI6PX7J.js.map → geneExpression-G6ODP3VY.js.map} +0 -0
  817. /package/dist/{geneExpression-QAHT5JK3.js.map → geneExpression-VQPRFNKE.js.map} +0 -0
  818. /package/dist/{geneExpression.unit.spec-QD6FBA7Y.js.map → geneExpression.unit.spec-ZHXCUG6Q.js.map} +0 -0
  819. /package/dist/{geneORA-UJUDJH33.js.map → geneORA-E3PSS3CI.js.map} +0 -0
  820. /package/dist/{geneRanking-W4GJTT2D.js.map → geneRanking-MK3YYINC.js.map} +0 -0
  821. /package/dist/{geneVariant-PIPW23ZL.js.map → geneVariant-LEMAVFOY.js.map} +0 -0
  822. /package/dist/{geneVariant-7TLTYMRN.js.map → geneVariant-NNSB7JLS.js.map} +0 -0
  823. /package/dist/{geneVariant.integration.spec-EWVEPYWR.js.map → geneVariant.integration.spec-6CC5UAOP.js.map} +0 -0
  824. /package/dist/{genefusion.ui-CQMINB6C.js.map → genefusion.ui-5NCQIQPN.js.map} +0 -0
  825. /package/dist/{geneset-DB2UIWDN.js.map → geneset-ZX4V3CFB.js.map} +0 -0
  826. /package/dist/{genomeBrowser.spec-5PPCZGJY.js.map → genomeBrowser.spec-J7ISXY6H.js.map} +0 -0
  827. /package/dist/{grin2-CRHH7XQL.js.map → grin2-GN3DQNON.js.map} +0 -0
  828. /package/dist/{grin2-6FKWST7P.js.map → grin2-LBGBBB4L.js.map} +0 -0
  829. /package/dist/{hierCluster-LVVQUFIA.js.map → hierCluster-5JURTKAZ.js.map} +0 -0
  830. /package/dist/{hierCluster-N4BWRDRD.js.map → hierCluster-BJ5VBPXR.js.map} +0 -0
  831. /package/dist/{hierCluster.config-RXYYXEKK.js.map → hierCluster.config-4EERP4KK.js.map} +0 -0
  832. /package/dist/{hierCluster.integration.spec-32ELKHGP.js.map → hierCluster.integration.spec-VR4GULRV.js.map} +0 -0
  833. /package/dist/{hierCluster.interactivity-O5PWSGD7.js.map → hierCluster.interactivity-SMTQOKUY.js.map} +0 -0
  834. /package/dist/{hierCluster.renderers-E6FQE2DK.js.map → hierCluster.renderers-PAME7BWU.js.map} +0 -0
  835. /package/dist/{imagePlot-CJJPFFND.js.map → imagePlot-4LMIKBVE.js.map} +0 -0
  836. /package/dist/{importPlot-IT2VCT3E.js.map → importPlot-3CG6ASNH.js.map} +0 -0
  837. /package/dist/{isoformExpression-MB7VXNYL.js.map → isoformExpression-VCDNKTZ6.js.map} +0 -0
  838. /package/dist/{isoformExpression.unit.spec-WBGH5T22.js.map → isoformExpression.unit.spec-ZXYY37TA.js.map} +0 -0
  839. /package/dist/{junction-RUMI5YFR.js.map → junction-5DXJO4PS.js.map} +0 -0
  840. /package/dist/{junction.customTerm-LBVLFTOA.js.map → junction.customTerm-UOPUSEOE.js.map} +0 -0
  841. /package/dist/{junction.unit.spec-VU665JWH.js.map → junction.unit.spec-F35E3GJW.js.map} +0 -0
  842. /package/dist/{launch.adhoc-PG2VDOP5.js.map → launch.adhoc-V2HTCQGD.js.map} +0 -0
  843. /package/dist/{leftlabel.sample-O4EI4FEW.js.map → leftlabel.sample-V7O2EC36.js.map} +0 -0
  844. /package/dist/{lollipop-LWQ3ZPUC.js.map → lollipop-RNRZLG64.js.map} +0 -0
  845. /package/dist/{maf-Z7IN4HAW.js.map → maf-W6SF6BJS.js.map} +0 -0
  846. /package/dist/{maftimeline-AQLIVUW3.js.map → maftimeline-NABCAMHG.js.map} +0 -0
  847. /package/dist/{matrix-LTXFBGFW.js.map → matrix-JC6AJT2N.js.map} +0 -0
  848. /package/dist/{matrix-W2XR54DY.js.map → matrix-UCHESWVK.js.map} +0 -0
  849. /package/dist/{matrix.cells-F44JHGOO.js.map → matrix.cells-B4L42TBM.js.map} +0 -0
  850. /package/dist/{matrix.config-Y5OUBSEC.js.map → matrix.config-6US3AAH7.js.map} +0 -0
  851. /package/dist/{matrix.data-VLIW75OR.js.map → matrix.data-FYFXYDA3.js.map} +0 -0
  852. /package/dist/{matrix.groups-QEWUDMPF.js.map → matrix.groups-Y7DEG3GS.js.map} +0 -0
  853. /package/dist/{matrix.integration.spec-24DH4HNF.js.map → matrix.integration.spec-KXX7SFX5.js.map} +0 -0
  854. /package/dist/{matrix.interactivity-R3BQYXAY.js.map → matrix.interactivity-NHWG4WCC.js.map} +0 -0
  855. /package/dist/{matrix.layout-TENBEUJ6.js.map → matrix.layout-5DQNT7DD.js.map} +0 -0
  856. /package/dist/{matrix.legend-E35GDZWD.js.map → matrix.legend-OY7IF6AS.js.map} +0 -0
  857. /package/dist/{matrix.renderers-CMPAIUYT.js.map → matrix.renderers-GYOXGHPU.js.map} +0 -0
  858. /package/dist/{matrix.serieses-GXVQBJML.js.map → matrix.serieses-657TLDAV.js.map} +0 -0
  859. /package/dist/{matrix.sort-VQS6E6S5.js.map → matrix.sort-IMA2ES3T.js.map} +0 -0
  860. /package/dist/{matrix.sort.unit.spec-P5C6EVDC.js.map → matrix.sort.unit.spec-S6BAFYPR.js.map} +0 -0
  861. /package/dist/{matrix.sorterUi-4R2TVBUJ.js.map → matrix.sorterUi-77F36Q5H.js.map} +0 -0
  862. /package/dist/{matrix.sorterUi.unit.spec-UMI2N2OG.js.map → matrix.sorterUi.unit.spec-V5NVQGD5.js.map} +0 -0
  863. /package/dist/{matrix.unit.spec-HSA7OWME.js.map → matrix.unit.spec-R4NMTZYQ.js.map} +0 -0
  864. /package/dist/{mavb-ZARQZJJR.js.map → mavb-MRCVMBPD.js.map} +0 -0
  865. /package/dist/{mds.fimo-YRNNY5KA.js.map → mds.fimo-5DCH5BEM.js.map} +0 -0
  866. /package/dist/{mds.samplescatterplot-ESIALOMA.js.map → mds.samplescatterplot-VIBCS5M6.js.map} +0 -0
  867. /package/dist/{mds.survivalplot-5E6ITKIU.js.map → mds.survivalplot-AZ7LJDZZ.js.map} +0 -0
  868. /package/dist/{multivalue-CT2QWWB4.js.map → multivalue-4QKGYYW2.js.map} +0 -0
  869. /package/dist/{numericDictTermCluster-CRVSJ6PI.js.map → numericDictTermCluster-GLLG6IK2.js.map} +0 -0
  870. /package/dist/{oncomatrix-MX5EHBNW.js.map → oncomatrix-R32ZPMX7.js.map} +0 -0
  871. /package/dist/{oncomatrix.spec-DN2RAWGZ.js.map → oncomatrix.spec-BMK6LMBS.js.map} +0 -0
  872. /package/dist/{plot.2dvaf-B5QAKDTK.js.map → plot.2dvaf-46FT53MF.js.map} +0 -0
  873. /package/dist/{plot.app-V5DZWC6N.js.map → plot.app-7EE4YCV4.js.map} +0 -0
  874. /package/dist/{plot.barplot-VAJLAU7H.js.map → plot.barplot-FK4J2G7K.js.map} +0 -0
  875. /package/dist/{plot.boxplot-PT3BUNVT.js.map → plot.boxplot-ATY4LK3X.js.map} +0 -0
  876. /package/dist/{plot.brainImaging-2WB7XJJM.js.map → plot.brainImaging-S7B547V4.js.map} +0 -0
  877. /package/dist/{plot.disco-64IPBCII.js.map → plot.disco-K5MMC2GD.js.map} +0 -0
  878. /package/dist/{plot.ssgq-ET4OBMUM.js.map → plot.ssgq-B3OVMZFD.js.map} +0 -0
  879. /package/dist/{plot.vaf2cov-DGMVJ7UN.js.map → plot.vaf2cov-RBHDQULW.js.map} +0 -0
  880. /package/dist/{polar2-CWWDVNZQ.js.map → polar2-GECELCTG.js.map} +0 -0
  881. /package/dist/{profileForms-FM7D4WO2.js.map → profileForms-2USYOA34.js.map} +0 -0
  882. /package/dist/{profilePlot-LQ6K4EXX.js.map → profilePlot-YGD2CF6P.js.map} +0 -0
  883. /package/dist/{pseudbulk.unit.spec-IAONX4QR.js.map → pseudbulk.unit.spec-UVVRP6NR.js.map} +0 -0
  884. /package/dist/{pseudobulk-NIX4JOOZ.js.map → pseudobulk-ZIN5VJGB.js.map} +0 -0
  885. /package/dist/{qualitative-M3XSQZA2.js.map → qualitative-27BZGASV.js.map} +0 -0
  886. /package/dist/{qualitative-GLTKWA6H.js.map → qualitative-N4F6NITI.js.map} +0 -0
  887. /package/dist/{radar2-JBULXNFQ.js.map → radar2-X465RPJX.js.map} +0 -0
  888. /package/dist/{radarFacility2-YYIBHZCY.js.map → radarFacility2-AE7BA62N.js.map} +0 -0
  889. /package/dist/{rememberedGvQ.unit.spec-YJV6DVPN.js.map → rememberedGvQ.unit.spec-4PDIU5RY.js.map} +0 -0
  890. /package/dist/{render-ZCH7R3WL.js.map → render-TD2QWOHT.js.map} +0 -0
  891. /package/dist/{report-YPIAIMND.js.map → report-3Y2OWDF7.js.map} +0 -0
  892. /package/dist/{sampleView-K4GSYMAE.js.map → sampleView-BUMMYRHJ.js.map} +0 -0
  893. /package/dist/{samplelst-F2SLVHFP.js.map → samplelst-BWK53BLI.js.map} +0 -0
  894. /package/dist/{samplematrix-Z6F4F7YN.js.map → samplematrix-RQU43UYR.js.map} +0 -0
  895. /package/dist/{sc-UM7SEGED.js.map → sc-LCBFWCZZ.js.map} +0 -0
  896. /package/dist/{scatter-63XRRLGP.js.map → scatter-6S5I7OW3.js.map} +0 -0
  897. /package/dist/{scatter-HFTYLGDP.js.map → scatter-MJELX75N.js.map} +0 -0
  898. /package/dist/{selectGenomeWithTklst-PJNALPM2.js.map → selectGenomeWithTklst-WAVXHXR5.js.map} +0 -0
  899. /package/dist/{singleCellCellType-HR3R6KBD.js.map → singleCellCellType-WMCAJ7JF.js.map} +0 -0
  900. /package/dist/{singleCellCellType.unit.spec-VK57HQ2O.js.map → singleCellCellType.unit.spec-4Z46ZT5Q.js.map} +0 -0
  901. /package/dist/{singleCellGeneExpression-VWOA7MLN.js.map → singleCellGeneExpression-7Q5ZJT4R.js.map} +0 -0
  902. /package/dist/{singleCellGeneExpression.unit.spec-YP64T3XD.js.map → singleCellGeneExpression.unit.spec-6C7PDGRH.js.map} +0 -0
  903. /package/dist/{singleCellNumericValue-3VIUPYPB.js.map → singleCellNumericValue-QGYITZRC.js.map} +0 -0
  904. /package/dist/{singleCellNumericValue.unit.spec-VR5ICRQA.js.map → singleCellNumericValue.unit.spec-MQUKPEZJ.js.map} +0 -0
  905. /package/dist/{singleCellPlot-36QDY7VL.js.map → singleCellPlot-JJMFJ2KQ.js.map} +0 -0
  906. /package/dist/{singlecell-EXEOLJ3J.js.map → singlecell-J23S3JR2.js.map} +0 -0
  907. /package/dist/{singlecell-D2MZVFR4.js.map → singlecell-Y4OGUWEC.js.map} +0 -0
  908. /package/dist/{snp-XHEHXZMB.js.map → snp-IO6TKWGD.js.map} +0 -0
  909. /package/dist/{snp.unit.spec-YR6IDLL7.js.map → snp.unit.spec-X7ILEEPO.js.map} +0 -0
  910. /package/dist/{snplocus-BM7LUK2U.js.map → snplocus-Z2NGIKMO.js.map} +0 -0
  911. /package/dist/{snplst-22VSEZ7R.js.map → snplst-XCS2FCQV.js.map} +0 -0
  912. /package/dist/{spliceevent.a53ss.diagram-KERTJ3QA.js.map → spliceevent.a53ss.diagram-F3S4BRVG.js.map} +0 -0
  913. /package/dist/{spliceevent.exonskip.diagram-K74VIUA4.js.map → spliceevent.exonskip.diagram-AXCDJKH4.js.map} +0 -0
  914. /package/dist/{spliceevent.noeventdiagram-W7WGSVVL.js.map → spliceevent.noeventdiagram-UK3X667E.js.map} +0 -0
  915. /package/dist/{ssGSEA-XDEA5TVX.js.map → ssGSEA-ZRPNQKJ5.js.map} +0 -0
  916. /package/dist/{ssGSEA.unit.spec-RDCPXJ5S.js.map → ssGSEA.unit.spec-DG5ZHLC7.js.map} +0 -0
  917. /package/dist/{stattable-HZ3DOUEM.js.map → stattable-XYSC3CYU.js.map} +0 -0
  918. /package/dist/{summarizeCnvGeneexp-VB4SOJHT.js.map → summarizeCnvGeneexp-H2NP7VLU.js.map} +0 -0
  919. /package/dist/{summarizeGeneexpSurvival-5ZWIJ6O4.js.map → summarizeGeneexpSurvival-HTCD3VQQ.js.map} +0 -0
  920. /package/dist/{summarizeMutationCnv-MBPU64C5.js.map → summarizeMutationCnv-UEGXWK2P.js.map} +0 -0
  921. /package/dist/{summarizeMutationDiagnosis-QRP4ITNL.js.map → summarizeMutationDiagnosis-MJGWP7IT.js.map} +0 -0
  922. /package/dist/{summarizeMutationSurvival-SSXAY5W4.js.map → summarizeMutationSurvival-55JW5LA6.js.map} +0 -0
  923. /package/dist/{summary-SRESZS4Z.js.map → summary-HJO23RGB.js.map} +0 -0
  924. /package/dist/{summary.integration.spec-3V2CEPJM.js.map → summary.integration.spec-OWI2C2N5.js.map} +0 -0
  925. /package/dist/{summaryInput-3VD4KBCU.js.map → summaryInput-RL2JXRDE.js.map} +0 -0
  926. /package/dist/{sunburst-E5IEQQUV.js.map → sunburst-JFY6V5E2.js.map} +0 -0
  927. /package/dist/{survival-H4HYC6GC.js.map → survival-6FLR4YCJ.js.map} +0 -0
  928. /package/dist/{survival-K5WWAELO.js.map → survival-PBBU6PA5.js.map} +0 -0
  929. /package/dist/{survival.integration.spec-SPN2TSQW.js.map → survival.integration.spec-WAKTGYGP.js.map} +0 -0
  930. /package/dist/{svgraph-USRAYSBN.js.map → svgraph-WD3DUZV7.js.map} +0 -0
  931. /package/dist/{svmr-MOKLLJKJ.js.map → svmr-AP6ZFO7S.js.map} +0 -0
  932. /package/dist/{table-WD3P3WL2.js.map → table-GX3VJLPZ.js.map} +0 -0
  933. /package/dist/{termCollection-JU4OJRWD.js.map → termCollection-QE7U5QBD.js.map} +0 -0
  934. /package/dist/{termCollection-VWS5CKVH.js.map → termCollection-YQ332WKB.js.map} +0 -0
  935. /package/dist/{termCollection.unit.spec-TPUJWKKW.js.map → termCollection.unit.spec-ELLN7VRA.js.map} +0 -0
  936. /package/dist/{termCollectionFractionSelection-UWLHDPX2.js.map → termCollectionFractionSelection-V3RP5KAT.js.map} +0 -0
  937. /package/dist/{termCollectionFractionSelection.unit.spec-RBHJY34K.js.map → termCollectionFractionSelection.unit.spec-JR7Q7TJI.js.map} +0 -0
  938. /package/dist/{tk-OAOVCATS.js.map → tk-GD2KJM5W.js.map} +0 -0
  939. /package/dist/{tk-SMOGJUD7.js.map → tk-J5VPFEX6.js.map} +0 -0
  940. /package/dist/{tp.ui-EMWJCGRX.js.map → tp.ui-5K3AAXDW.js.map} +0 -0
  941. /package/dist/{tvs.categorical-A7J4RIKL.js.map → tvs.categorical-RPACB4VU.js.map} +0 -0
  942. /package/dist/{tvs.condition-HFLZES5E.js.map → tvs.condition-O6JBUM6D.js.map} +0 -0
  943. /package/dist/{tvs.dt-GBYX2RWX.js.map → tvs.dt-5EVBSRX3.js.map} +0 -0
  944. /package/dist/{tvs.dtcnv.categorical-X2K3MIPG.js.map → tvs.dtcnv.categorical-Y5YHBZNC.js.map} +0 -0
  945. /package/dist/{tvs.dtcnv.continuous-5EMX4PBP.js.map → tvs.dtcnv.continuous-WP322QUP.js.map} +0 -0
  946. /package/dist/{tvs.dtfusion-7VVSPNRK.js.map → tvs.dtfusion-CCMUFDMQ.js.map} +0 -0
  947. /package/dist/{tvs.dtitd-2YGFPXOY.js.map → tvs.dtitd-P3ED3MWA.js.map} +0 -0
  948. /package/dist/{tvs.dtsnvindel-EISO52O6.js.map → tvs.dtsnvindel-X2MXPLC6.js.map} +0 -0
  949. /package/dist/{tvs.dtsv-RTAMAW3G.js.map → tvs.dtsv-4FOWFNVV.js.map} +0 -0
  950. /package/dist/{tvs.multivalue-5N6PSG4L.js.map → tvs.multivalue-IRF467ZK.js.map} +0 -0
  951. /package/dist/{tvs.numeric-R5UT7ARM.js.map → tvs.numeric-C7FDCGCS.js.map} +0 -0
  952. /package/dist/{tvs.samplelst-SZDNNFK5.js.map → tvs.samplelst-CBU6ATI5.js.map} +0 -0
  953. /package/dist/{tvs.survival-EUUDDXP7.js.map → tvs.survival-3K5ASAXV.js.map} +0 -0
  954. /package/dist/{tvs.termCollection-DAHEYZK2.js.map → tvs.termCollection-MXEWO6KJ.js.map} +0 -0
  955. /package/dist/{vocabulary-P4XRHR34.js.map → vocabulary-GQBHDP3K.js.map} +0 -0
  956. /package/dist/{wsi.direct-J7VX5EMI.js.map → wsi.direct-25JUHWEF.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/cohortSunburst.ts"],
4
+ "sourcesContent": ["import type { MassState, BasePlotConfig } from '#mass/types/mass'\nimport { getCompInit, copyMerge, type RxComponent, type ComponentApi } from '#rx'\nimport { PlotBase } from './PlotBase'\nimport { Menu } from '#dom'\nimport { hierarchy, partition } from 'd3-hierarchy'\nimport { arc as d3arc } from 'd3-shape'\nimport { rgb as d3rgb } from 'd3-color'\nimport { interpolate } from 'd3-interpolate'\nimport { select } from 'd3-selection'\nimport 'd3-transition'\nimport { schemeTableau10 } from 'd3-scale-chromatic'\nimport { deriveCatalogRows, catalogRowKey, cohortMatches, type CatalogRow } from './proteome.catalog'\nimport type { ProteomeCohortSunburstConfig, ProteomeSunburstStat } from '#types'\n\n/*\nZoomable cohort sunburst.\n\nRings follow the dataset's `cohortSunburst.levels` (e.g. species \u2192 sample type \u2192 sample\nsource \u2192 disease \u2192 assay), each wedge sized by the number of sample sets (cohorts) beneath it. Two rings are shown around the centre; clicking an inner wedge zooms\nso that wedge becomes the centre and the next two rings appear; the centre offers Back.\nClicking a sample-set wedge (outermost leaf) toggles it in the selection, and \"Select all\"\nadds every sample set under the current centre. The selection panel launches the same\nactions as the Studies catalog: one cohort \u2192 Analytics Tools, several \u2192 cohort compare.\n\nZooming is animated the way d3's zoomable sunburst does it: every node keeps a\n`current` geometry (angles + ring units, see Geom); a click assigns each node a `target`\nrelative to the new centre, and one transition interpolates current \u2192 target while\nre-drawing arcs and label positions each frame. The clicked wedge's target is the full\ncentre disc (y 0..1), so it visibly sweeps round into a circle and fades as its children\nunfold into the rings; Back runs the same interpolation the other way, so the centre disc\nshrinks back into its wedge. The wedges are created once per data load and only their\nattributes change afterwards.\n*/\n\nconst RINGS = 2\nconst R0 = 74 // centre radius\nconst RING_W = 74\nconst RADIUS = R0 + RINGS * RING_W\nconst SIZE = RADIUS * 2 + 12\nconst DURATION = 750 // ms, zoom transition\nconst HOVER_DARKEN = 0.5 // d3-color darker() amount on hover\n/** how far a wedge of another kind than the selection fades towards white */\nconst DIM = 0.65\nconst WARN = '#b45309'\n/** wedges touch, divided by thin white lines, with bold white labels; the chart sits on the\n * page background like every other plot */\nconst DIVIDER = '#ffffff'\nconst SELECT_STROKE = '#111827'\nconst CENTRE_FILL = '#f8fafc'\nconst CENTRE_STROKE = '#cbd5e1'\nconst TEXT_DARK = '#111827'\nconst TEXT_MUTED = '#4b5563'\nconst LINK = '#2563eb'\nconst CARD_BORDER = '#d1d5db'\nconst PILL_BG = '#e5e7eb'\nconst RULE = '#e5e7eb'\n/** shade of a ring relative to the centre: the inner ring a touch darker than the species colour */\nconst RING_SHADE = [-0.35, 0]\nconst LABEL_FONT = 12 // px, bold\nconst LABEL_LINE_H = LABEL_FONT * 1.15\nconst LABEL_CHAR_W = LABEL_FONT * 0.55 // rough advance of a bold glyph\nconst LABEL_MAX_LINES = 2\n\n/** radius of a ring-unit coordinate: the centre disc spans 0..1, every ring after is RING_W */\nconst radius = (y: number) => (y < 1 ? y * R0 : R0 + (y - 1) * RING_W)\nconst midRadius = (g: Geom) => (radius(g.y0) + radius(g.y1)) / 2\n\n/** small inline stroke icon for the controls above the chart; `paths` is the svg content */\nconst icon = (paths: string) =>\n\t`<svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" style=\"vertical-align:-2px;margin-right:6px\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\">${paths}</svg>`\n\ntype HNode = any // d3 HierarchyRectangularNode<TreeNode>\n/** a card: rounded box with a spaced-capitals title and an optional right-hand slot in its head */\ntype Card = { box: any; title: any; headRight: any; body: any }\n\nconst defaultConfig = { chartType: 'cohortSunburst' }\n\nclass CohortSunburst extends PlotBase implements RxComponent {\n\tstatic type = 'cohortSunburst'\n\ttype: string\n\tdom!: {\n\t\tholder: any\n\t\tbody: any\n\t\t/** path box: species at the start, then the path of clicked wedges */\n\t\tselBox: Card\n\t\t/** the selected sample sets, with the analyze/compare action */\n\t\tsel: Card\n\t\treset: any\n\t\t/** \"select all\" control beside reset, for the sample sets under the centre */\n\t\tselectAll: any\n\t\tsvg: any\n\t\tg: any\n\t\t/** centre disc (drawn beneath the wedges) and the text on it */\n\t\tcentre: any\n\t\tcentreText: any\n\t\t/** one <path> per node, whole tree; hidden ones have fill-opacity 0 */\n\t\tpaths: any\n\t\t/** one <text> per node, matching paths */\n\t\tlabels: any\n\t\tstats: any\n\t\ttip: Menu\n\t\theader?: any\n\t}\n\tui?: SunburstUiConfig\n\troot?: HNode\n\tfocus?: HNode\n\t/** stat box elements and the value they currently show, for the count animation */\n\tstatValues: Map<string, { el: any; value: number }> = new Map()\n\t/** selected cohorts by key, in selection order */\n\tselected: Map<string, CatalogRow> = new Map()\n\t/** leaf node of each cohort by key, for its species colour and ring label */\n\tleafNode: Map<string, HNode> = new Map()\n\tbaseColor: Map<string, string> = new Map()\n\n\tconstructor(opts: any, api: ComponentApi) {\n\t\tsuper(opts, api)\n\t\tthis.type = CohortSunburst.type\n\t}\n\n\tasync init() {\n\t\t// the plot holder inherits nowrap from the sandbox; the cards need their text to wrap\n\t\tconst holder = this.opts.holder.append('div').style('padding', '10px').style('white-space', 'normal')\n\t\tconst body = holder.append('div')\n\t\tthis.dom = {\n\t\t\tholder,\n\t\t\tbody,\n\t\t\tselBox: undefined as any,\n\t\t\tsel: undefined as any,\n\t\t\treset: undefined,\n\t\t\tselectAll: undefined,\n\t\t\tsvg: undefined,\n\t\t\tg: undefined,\n\t\t\tcentre: undefined,\n\t\t\tcentreText: undefined,\n\t\t\tpaths: undefined,\n\t\t\tlabels: undefined,\n\t\t\tstats: undefined,\n\t\t\ttip: new Menu({ padding: '' }),\n\t\t\theader: this.opts.header\n\t\t}\n\t\tif (this.dom.header) this.dom.header.html('Explore cohorts')\n\t}\n\n\tgetState(appState: MassState) {\n\t\tconst config: any = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) throw `No plot with id='${this.id}' found`\n\t\treturn { config }\n\t}\n\n\tasync main() {\n\t\tconst proteome = this.app.vocabApi.termdbConfig?.queries?.proteome\n\t\tconst ui: SunburstUiConfig | undefined = proteome?.cohortSunburst\n\t\tthis.dom.body.selectAll('*').remove()\n\t\tif (!ui?.levels?.length || !proteome?.organisms) {\n\t\t\tthis.dom.body\n\t\t\t\t.append('div')\n\t\t\t\t.style('padding', '20px')\n\t\t\t\t.style('color', '#666')\n\t\t\t\t.text('No cohort sunburst is configured.')\n\t\t\treturn\n\t\t}\n\t\tthis.ui = ui\n\t\tconst tree = buildTree(deriveCatalogRows(proteome.organisms), ui)\n\t\tthis.root = hierarchy<TreeNode>(tree)\n\t\t\t.sum(d => (d.cohort ? 1 : 0))\n\t\t\t.sort(() => 0)\n\t\tpartition<TreeNode>().size([2 * Math.PI, this.root.height + 1])(this.root)\n\t\tthis.focus = this.root\n\t\tthis.leafNode = new Map(this.root.leaves().map((l: HNode) => [cohortKey(l.data.cohort), l]))\n\t\t// first-ring colours: dataset colors, else a palette in ring order\n\t\tthis.baseColor.clear()\n\t\tlet pi = 0\n\t\tfor (const c of this.root.children || []) {\n\t\t\tthis.baseColor.set(c.data.name, ui.colors?.[c.data.name] || schemeTableau10[pi++ % schemeTableau10.length])\n\t\t}\n\n\t\tconst layout = this.dom.body\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('gap', '24px')\n\t\t\t.style('align-items', 'flex-start')\n\t\t// path box to the left of the chart\n\t\tthis.dom.selBox = this.card(layout, 'Selection')\n\t\tthis.dom.selBox.box.style('flex', '0 0 230px')\n\t\tconst left = layout.append('div')\n\t\tconst panel = left.append('div').style('width', `${SIZE}px`)\n\t\t// controls above the chart, in spaced capitals: reset, and select all\n\t\t// sample sets under the centre\n\t\tconst toolbar = panel\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('justify-content', 'center')\n\t\t\t.style('gap', '28px')\n\t\t\t.style('min-height', '20px')\n\t\tconst control = () =>\n\t\t\ttoolbar\n\t\t\t\t.append('div')\n\t\t\t\t.style('letter-spacing', '0.15em')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('user-select', 'none')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\tthis.dom.reset = control()\n\t\t\t.html(`${icon('<path d=\"M3 12a9 9 0 1 0 3-6.7\"/><polyline points=\"3 3 3 9 9 9\"/>')}RESET`)\n\t\t\t.on('click', () => {\n\t\t\t\tif (this.focus!.depth) this.zoomTo(this.root)\n\t\t\t})\n\t\tthis.dom.selectAll = control().on('click', () => this.toggleSelectAll())\n\t\tthis.dom.svg = panel.append('svg').attr('width', SIZE).attr('height', SIZE).style('display', 'block')\n\t\tthis.dom.g = this.dom.svg.append('g').attr('transform', `translate(${SIZE / 2},${SIZE / 2})`)\n\t\tconst right = layout\n\t\t\t.append('div')\n\t\t\t.style('flex', '0 0 300px')\n\t\t\t.style('min-width', '0')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('flex-direction', 'column')\n\t\t\t.style('gap', '12px')\n\t\t// stat boxes; their numbers follow the centre of the chart and count up/down\n\t\tthis.dom.stats = right\n\t\t\t.append('div')\n\t\t\t.style('display', 'grid')\n\t\t\t.style('grid-template-columns', '1fr 1fr')\n\t\t\t.style('gap', '8px')\n\t\tthis.statValues = new Map()\n\t\tfor (const def of ui.stats || []) {\n\t\t\tconst box = this.card(this.dom.stats, def.label)\n\t\t\tbox.box.style('padding', '8px 12px')\n\t\t\tbox.title.style('margin-bottom', '0')\n\t\t\tconst num = box.body\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '24px')\n\t\t\t\t.style('font-weight', '500')\n\t\t\t\t.style('color', TEXT_DARK)\n\t\t\t\t.style('font-variant-numeric', 'tabular-nums')\n\t\t\t\t.text('0')\n\t\t\tthis.statValues.set(def.label, { el: num, value: 0 })\n\t\t}\n\t\tthis.dom.sel = this.card(right, 'Selected sample sets')\n\t\tthis.buildChart()\n\t\tthis.renderStats()\n\t}\n\n\t/************ shared pieces ************/\n\n\t/** the card every box on the page is built from: rounded border, spaced-capitals title,\n\t * a right-hand slot in the head for a count or control, and a body */\n\tcard(holder: any, title: string): Card {\n\t\tconst box = holder\n\t\t\t.append('div')\n\t\t\t.style('border', `1px solid ${CARD_BORDER}`)\n\t\t\t.style('border-radius', '10px')\n\t\t\t.style('padding', '10px 12px')\n\t\t\t.style('box-sizing', 'border-box')\n\t\tconst head = box\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('align-items', 'center')\n\t\t\t.style('justify-content', 'space-between')\n\t\t\t.style('gap', '8px')\n\t\tconst titleDiv = head\n\t\t\t.append('div')\n\t\t\t.style('font-size', '10px')\n\t\t\t.style('font-weight', 'bold')\n\t\t\t.style('letter-spacing', '0.12em')\n\t\t\t.style('text-transform', 'uppercase')\n\t\t\t.style('color', TEXT_MUTED)\n\t\t\t.style('margin-bottom', '8px')\n\t\t\t.text(title)\n\t\tconst headRight = head.append('div').style('display', 'flex').style('align-items', 'center').style('gap', '8px')\n\t\treturn { box, title: titleDiv, headRight, body: box.append('div') }\n\t}\n\n\t/** colour-coded square with the short code of a name */\n\tbadge(holder: any, name: string, color: string, size = 30) {\n\t\treturn holder\n\t\t\t.append('span')\n\t\t\t.style('flex', '0 0 auto')\n\t\t\t.style('min-width', `${size}px`)\n\t\t\t.style('height', `${size}px`)\n\t\t\t.style('line-height', `${size}px`)\n\t\t\t.style('padding', '0 4px')\n\t\t\t.style('box-sizing', 'border-box')\n\t\t\t.style('border-radius', '6px')\n\t\t\t.style('background', color)\n\t\t\t.style('color', '#fff')\n\t\t\t.style('font-weight', 'bold')\n\t\t\t.style('font-size', size >= 30 ? '0.8em' : '0.7em')\n\t\t\t.style('text-align', 'center')\n\t\t\t.text(this.badgeCode(name))\n\t}\n\n\t/** rounded pill: the primary action button, or a count */\n\tpill(holder: any, opts: { button?: boolean } = {}) {\n\t\tconst el = holder\n\t\t\t.append(opts.button ? 'button' : 'span')\n\t\t\t.style('border-radius', '999px')\n\t\t\t.style('font-weight', 'bold')\n\t\t\t.style('font-variant-numeric', 'tabular-nums')\n\t\tif (opts.button)\n\t\t\tel.style('border', 'none')\n\t\t\t\t.style('background', SELECT_STROKE)\n\t\t\t\t.style('color', '#fff')\n\t\t\t\t.style('font-size', '13px')\n\t\t\t\t.style('padding', '8px 16px')\n\t\t\t\t.style('width', '100%')\n\t\t\t\t.style('cursor', 'pointer')\n\t\telse\n\t\t\tel.style('background', PILL_BG).style('color', TEXT_DARK).style('font-size', '11px').style('padding', '1px 8px')\n\t\treturn el\n\t}\n\n\t/************ colours ************/\n\n\t/** the first-ring (species) colour a wedge or cohort belongs to */\n\tspeciesColor(d: HNode): string {\n\t\tlet top = d\n\t\twhile (top.depth > 1) top = top.parent\n\t\treturn this.baseColor.get(top.data.name) || '#9ca3af'\n\t}\n\n\t/** the species colour, shaded by the ring the wedge occupies around the current centre\n\t * (so a wedge keeps its species hue at every zoom level) */\n\tcolor(d: HNode): string {\n\t\tif (d.depth === 0) return CENTRE_FILL\n\t\tconst base = this.speciesColor(d)\n\t\tconst ring = Math.max(0, Math.min(RING_SHADE.length - 1, d.depth - (this.focus?.depth ?? 0) - 1))\n\t\tconst c = d3rgb(base).brighter(RING_SHADE[ring]).formatHex()\n\t\treturn d.dim ? d3rgb(interpolate(c, '#ffffff')(DIM)).formatHex() : c\n\t}\n\n\thoverColor(d: HNode): string {\n\t\treturn d3rgb(this.color(d)).darker(HOVER_DARKEN).formatHex()\n\t}\n\n\t/************ rendering ************/\n\n\tarc = d3arc()\n\t\t.startAngle((d: any) => d.x0)\n\t\t.endAngle((d: any) => d.x1)\n\t\t.innerRadius((d: any) => radius(d.y0))\n\t\t.outerRadius((d: any) => Math.max(radius(d.y0), radius(d.y1)))\n\n\t/** build every wedge and label once; zoomTo() then only animates their attributes */\n\tbuildChart() {\n\t\tconst g = this.dom.g\n\t\tg.selectAll('*').remove()\n\t\tconst root = this.root!\n\t\troot.each((d: HNode) => (d.current = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 } as Geom))\n\t\tconst nodes = root.descendants().slice(1)\n\n\t\t// centre sits beneath the wedges so a clicked wedge can sweep over it as it grows;\n\t\t// hidden wedges have pointer-events none, so clicks fall through to the disc\n\t\tthis.dom.centre = g.append('g')\n\t\tthis.dom.centre\n\t\t\t.append('circle')\n\t\t\t.attr('r', R0 - 3)\n\t\t\t.attr('fill', CENTRE_FILL)\n\t\t\t.attr('stroke', CENTRE_STROKE)\n\t\t\t.attr('stroke-width', 1.5)\n\t\t\t.on('click', () => {\n\t\t\t\tif (this.focus!.depth) this.zoomTo(this.focus!.parent)\n\t\t\t})\n\t\tthis.dom.centreText = this.dom.centre.append('g').attr('pointer-events', 'none')\n\n\t\tthis.dom.paths = g\n\t\t\t.append('g')\n\t\t\t.selectAll('path')\n\t\t\t.data(nodes)\n\t\t\t.join('path')\n\t\t\t.attr('class', 'sjpp-sunburst-wedge')\n\t\t\t.attr('fill', (d: HNode) => this.color(d))\n\t\t\t.attr('fill-opacity', (d: HNode) => (arcVisible(d.current, RINGS) ? 1 : 0))\n\t\t\t.attr('stroke-opacity', (d: HNode) => (arcVisible(d.current, RINGS) ? 1 : 0))\n\t\t\t.attr('pointer-events', (d: HNode) => (arcVisible(d.current, RINGS) ? 'auto' : 'none'))\n\t\t\t.attr('d', (d: HNode) => this.arc(d.current))\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.on('mouseenter', (event: any, d: HNode) => {\n\t\t\t\tselect(event.currentTarget).attr('fill', this.hoverColor(d))\n\t\t\t\tthis.showTip(event, d)\n\t\t\t})\n\t\t\t.on('mouseleave', (event: any, d: HNode) => {\n\t\t\t\tselect(event.currentTarget).attr('fill', this.color(d))\n\t\t\t\tthis.dom.tip.hide()\n\t\t\t})\n\t\t\t.on('click', (_: any, d: HNode) => this.onWedgeClick(d))\n\n\t\tthis.dom.labels = g\n\t\t\t.append('g')\n\t\t\t.attr('pointer-events', 'none')\n\t\t\t.attr('text-anchor', 'middle')\n\t\t\t.style('user-select', 'none')\n\t\t\t.selectAll('text')\n\t\t\t.data(nodes)\n\t\t\t.join('text')\n\t\t\t.attr('font-size', `${LABEL_FONT}px`)\n\t\t\t.attr('font-weight', 'bold')\n\t\t\t.attr('fill', '#fff')\n\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t.attr('fill-opacity', (d: HNode) => (this.labelVisible(d.current) ? 1 : 0))\n\t\t\t.attr('transform', (d: HNode) => this.labelTransform(d.current))\n\t\t\t.each((d: HNode, i: number, els: any[]) => this.setLabelText(select(els[i]), d, d.current))\n\n\t\tthis.refreshSelection()\n\t\tthis.renderCentre()\n\t\tthis.renderSelBox()\n\t}\n\n\t/** a label shows only where its wedge is visible and at least one line fits along the arc */\n\tlabelVisible(g: Geom): boolean {\n\t\treturn arcVisible(g, RINGS) && (g.x1 - g.x0) * midRadius(g) >= LABEL_LINE_H + 2\n\t}\n\n\t/** along the wedge's mid radius, reading outward; flipped in the left half so it is upright */\n\tlabelTransform(g: Geom): string {\n\t\tconst a = ((g.x0 + g.x1) / 2) * (180 / Math.PI)\n\t\treturn `rotate(${a - 90}) translate(${midRadius(g)},0) rotate(${a < 180 ? 0 : 180})`\n\t}\n\n\t/** wrap the node name into as many lines as the wedge's arc length allows (max 2), each\n\t * no longer than the ring is thick */\n\tsetLabelText(text: any, d: HNode, g: Geom) {\n\t\tconst arcLen = (g.x1 - g.x0) * midRadius(g)\n\t\tconst nLines = Math.max(1, Math.min(LABEL_MAX_LINES, Math.floor(arcLen / LABEL_LINE_H)))\n\t\tconst maxChars = Math.floor((RING_W - 8) / LABEL_CHAR_W)\n\t\tconst lines = splitLabel(d.data.name, maxChars, nLines)\n\t\ttext.selectAll('tspan').remove()\n\t\tlines.forEach((l: string, i: number) => {\n\t\t\ttext\n\t\t\t\t.append('tspan')\n\t\t\t\t.attr('x', 0)\n\t\t\t\t.attr('dy', i === 0 ? `${(-(lines.length - 1) * LABEL_LINE_H) / 2}px` : `${LABEL_LINE_H}px`)\n\t\t\t\t.text(l)\n\t\t})\n\t}\n\n\t/** name, sample-set count and Back on the centre disc */\n\trenderCentre() {\n\t\tconst focus = this.focus!\n\t\tconst t = this.dom.centreText\n\t\tt.selectAll('*').remove()\n\t\tthis.dom.centre.select('circle').style('cursor', focus.depth ? 'pointer' : 'default')\n\t\tconst name = focus.depth ? focus.data.name : 'All sample sets'\n\t\tconst nameLines = splitLabel(name, Math.floor((2 * (R0 - 16)) / (15 * 0.6)), 2)\n\t\tconst n = countLeaves(focus.data)\n\t\tconst rows: { text: string; size: number; weight?: string; color: string; h: number }[] = [\n\t\t\t...nameLines.map(l => ({ text: l, size: 15, weight: 'bold', color: TEXT_DARK, h: 18 })),\n\t\t\t{ text: `${n} sample set${n === 1 ? '' : 's'}`, size: 12, color: TEXT_MUTED, h: 16 }\n\t\t]\n\t\tif (focus.depth) rows.push({ text: '\u2039 BACK', size: 12, weight: 'bold', color: LINK, h: 22 })\n\t\tconst total = rows.reduce((s, r) => s + r.h, 0)\n\t\tlet y = -total / 2\n\t\tfor (const r of rows) {\n\t\t\tt.append('text')\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.attr('dominant-baseline', 'middle')\n\t\t\t\t.attr('y', y + r.h / 2)\n\t\t\t\t.attr('font-size', `${r.size}px`)\n\t\t\t\t.attr('font-weight', r.weight || 'normal')\n\t\t\t\t.attr('fill', r.color)\n\t\t\t\t.attr('letter-spacing', r.text.endsWith('BACK') ? '0.12em' : null)\n\t\t\t\t.text(r.text)\n\t\t\ty += r.h\n\t\t}\n\t}\n\n\t/** selection strokes on the wedges plus the selection panel; no geometry changes */\n\trefreshSelection() {\n\t\t// a wedge is dimmed when nothing beneath it can join the current selection\n\t\tconst kind = this.selectedKind()\n\t\tthis.root!.each((d: HNode) => {\n\t\t\td.dim = kind !== undefined && !leavesOf(d.data).some(l => this.compatible(l.cohort!))\n\t\t})\n\t\tthis.dom.paths\n\t\t\t.attr('fill', (d: HNode) => this.color(d))\n\t\t\t.attr('stroke', (d: HNode) => (this.isSelected(d) ? SELECT_STROKE : DIVIDER))\n\t\t\t.attr('stroke-width', (d: HNode) => (this.isSelected(d) ? 3 : 1))\n\t\t\t.attr('stroke-linejoin', 'round')\n\t\t\t.style('cursor', (d: HNode) => (d.dim && this.terminalLeaf(d) ? 'not-allowed' : 'pointer'))\n\t\tthis.dom.labels.attr('fill', (d: HNode) => (d.dim ? TEXT_MUTED : '#fff'))\n\t\tthis.renderToolbar()\n\t\tthis.renderSidebar()\n\t}\n\n\t/************ selection kind ************/\n\n\tkindKeys(): string[] {\n\t\treturn this.ui?.selectionKind?.keys || []\n\t}\n\n\t/** the kind of the current selection; undefined when nothing is selected */\n\tselectedKind(): string | undefined {\n\t\tconst first = this.selected.values().next()\n\t\treturn first.done ? undefined : kindOf(first.value, this.kindKeys())\n\t}\n\n\t/** whether a cohort could be added to the current selection */\n\tcompatible(r: CatalogRow): boolean {\n\t\tconst kind = this.selectedKind()\n\t\treturn kind === undefined || kindOf(r, this.kindKeys()) === kind\n\t}\n\n\t/** short code for a badge: short upper-case names as they are (AD, CSF), initials of\n\t * multi-word names (Frontal Cortex \u2192 FC), else the first two letters (Human \u2192 HU) */\n\tbadgeCode(name: string): string {\n\t\tif (name.length <= 4 && name === name.toUpperCase()) return name\n\t\tconst words = name.split(/[\\s()]+/).filter(Boolean)\n\t\tif (words.length > 1)\n\t\t\treturn words\n\t\t\t\t.map(w => w[0])\n\t\t\t\t.join('')\n\t\t\t\t.toUpperCase()\n\t\t\t\t.slice(0, 3)\n\t\treturn name.slice(0, 2).toUpperCase()\n\t}\n\n\t/** the selection box: at the root it lists the first ring (species) to click into; once\n\t * zoomed it shows the path of clicked wedges, each with a colour-coded badge, and clicking\n\t * a line zooms back to it */\n\trenderSelBox() {\n\t\tconst box = this.dom.selBox.body\n\t\tbox.selectAll('*').remove()\n\t\tconst focus = this.focus!\n\t\tconst atRoot = !focus.depth\n\t\tthis.dom.selBox.title.text(atRoot ? `${this.ui!.levels[0]?.name || ''} selection`.trim() : 'Selection')\n\t\tconst nodes: HNode[] = atRoot ? this.root!.children || [] : focus.ancestors().reverse().slice(1)\n\t\tconst STEP = 7 // px indent per ring, so the path reads as parent \u2192 child\n\t\tnodes.forEach((d: HNode, i: number) => {\n\t\t\tconst isFocus = d === focus\n\t\t\tconst indent = atRoot ? 0 : i * STEP\n\t\t\tconst row = box.append('div').style('position', 'relative').style('margin-left', `${indent}px`)\n\t\t\tif (indent) {\n\t\t\t\t// elbow connector from the parent's badge column down into this line\n\t\t\t\trow\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('position', 'absolute')\n\t\t\t\t\t.style('left', `${-STEP + 2}px`)\n\t\t\t\t\t.style('top', '-6px')\n\t\t\t\t\t.style('width', `${STEP - 4}px`)\n\t\t\t\t\t.style('height', '22px')\n\t\t\t\t\t.style('border-left', '1px solid #cbd5e1')\n\t\t\t\t\t.style('border-bottom', '1px solid #cbd5e1')\n\t\t\t\t\t.style('border-bottom-left-radius', '4px')\n\t\t\t}\n\t\t\tconst line = row\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('gap', '8px')\n\t\t\t\t.style('padding', '4px 6px')\n\t\t\t\t.style('margin', '2px 0')\n\t\t\t\t.style('border-radius', '6px')\n\t\t\t\t.style('background', isFocus ? '#eef2ff' : 'transparent')\n\t\t\t\t.style('cursor', isFocus ? 'default' : 'pointer')\n\t\t\t\t.attr('title', isFocus ? d.data.name : `Go to ${d.data.name}`)\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tif (!isFocus) this.zoomTo(d)\n\t\t\t\t})\n\t\t\t\t.on('mouseenter', (event: any) => {\n\t\t\t\t\tif (!isFocus) select(event.currentTarget).style('background', '#f3f4f6')\n\t\t\t\t})\n\t\t\t\t.on('mouseleave', (event: any) => {\n\t\t\t\t\tif (!isFocus) select(event.currentTarget).style('background', 'transparent')\n\t\t\t\t})\n\t\t\tthis.badge(line, d.data.name, this.color(d))\n\t\t\tconst text = line.append('div').style('min-width', '0').style('line-height', '1.2')\n\t\t\ttext\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.9em')\n\t\t\t\t.style('font-weight', isFocus ? 'bold' : 'normal')\n\t\t\t\t.style('color', '#111827')\n\t\t\t\t.style('overflow', 'hidden')\n\t\t\t\t.style('text-overflow', 'ellipsis')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.text(d.data.name)\n\t\t\tconst n = countLeaves(d.data)\n\t\t\ttext\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.7em')\n\t\t\t\t.style('color', '#6b7280')\n\t\t\t\t.text(`${d.data.level} \u00B7 ${n} sample set${n === 1 ? '' : 's'}`)\n\t\t})\n\t}\n\n\t/** stat boxes for the sample sets under the centre; numbers roll from the previous value */\n\trenderStats() {\n\t\tconst leaves = leavesOf(this.focus!.data)\n\t\tfor (const def of this.ui!.stats || []) {\n\t\t\tconst box = this.statValues.get(def.label)\n\t\t\tif (!box) continue\n\t\t\tconst v = computeStat(leaves, def)\n\t\t\tif (v === null) {\n\t\t\t\tbox.el.text('\u2014').attr('title', `No ${def.key || ''} counts in the dataset yet`)\n\t\t\t\tbox.value = 0\n\t\t\t\tcontinue\n\t\t\t}\n\t\t\tbox.el.attr('title', null)\n\t\t\tconst from = box.value\n\t\t\tbox.value = v\n\t\t\tconst i = interpolate(from, v)\n\t\t\tbox.el\n\t\t\t\t.transition()\n\t\t\t\t.duration(DURATION)\n\t\t\t\t.tween('text', () => (t: number) => box.el.text(Math.round(i(t)).toLocaleString()))\n\t\t}\n\t}\n\n\t/** the sample sets Select all would take under the centre: those of the selected kind,\n\t * or, with nothing selected, of the largest kind there; and whether all are selected */\n\tunderFocus(): { under: TreeNode[]; allIn: boolean; kind: string } {\n\t\tconst leaves = leavesOf(this.focus!.data)\n\t\tconst keys = this.kindKeys()\n\t\tconst kind = this.selectedKind() ?? largestKind(leaves, keys)\n\t\tconst under = leaves.filter(l => kindOf(l.cohort!, keys) === kind)\n\t\tconst allIn = under.length > 0 && under.every(l => this.selected.has(cohortKey(l.cohort!)))\n\t\treturn { under, allIn, kind }\n\t}\n\n\ttoggleSelectAll() {\n\t\tconst { under, allIn } = this.underFocus()\n\t\tif (!under.length) return\n\t\tfor (const l of under) {\n\t\t\tif (allIn) this.selected.delete(cohortKey(l.cohort!))\n\t\t\telse this.selected.set(cohortKey(l.cohort!), l.cohort!)\n\t\t}\n\t\tthis.refreshSelection()\n\t}\n\n\t/** reset is only active when zoomed in; select all follows the centre and flips to\n\t * deselect once everything under it is selected */\n\trenderToolbar() {\n\t\tconst zoomed = !!this.focus!.depth\n\t\tthis.dom.reset.style('opacity', zoomed ? 1 : 0.35).style('cursor', zoomed ? 'pointer' : 'default')\n\t\tconst { under, allIn, kind } = this.underFocus()\n\t\tconst what = kind ? `${kind} sample sets` : 'sample sets'\n\t\tconst none = !under.length\n\t\tthis.dom.selectAll\n\t\t\t.style('opacity', none ? 0.35 : 1)\n\t\t\t.style('cursor', none ? 'default' : 'pointer')\n\t\t\t.attr(\n\t\t\t\t'title',\n\t\t\t\tnone\n\t\t\t\t\t? `No ${what} under the centre; clear the selection to pick other kinds`\n\t\t\t\t\t: allIn\n\t\t\t\t\t? `Deselect every ${what.replace(/s$/, '')} under the centre`\n\t\t\t\t\t: `Select every ${what.replace(/s$/, '')} under the centre`\n\t\t\t)\n\t\t\t.html(\n\t\t\t\tallIn\n\t\t\t\t\t? `${icon('<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M8 12h8\"/>')}DESELECT ALL`\n\t\t\t\t\t: `${icon('<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 8v8M8 12h8\"/>')}SELECT ALL ${under.length}${\n\t\t\t\t\t\t\tkind ? ` \u00B7 ${kind.toUpperCase()}` : ''\n\t\t\t\t\t }`\n\t\t\t)\n\t}\n\n\t/** the selected-sample-sets card: count in the head, one line per set with its species\n\t * badge, and the analyze/compare action as the footer */\n\trenderSidebar() {\n\t\tconst { title, headRight, body } = this.dom.sel\n\t\theadRight.selectAll('*').remove()\n\t\tbody.selectAll('*').remove()\n\t\theadRight.style('margin-bottom', '8px')\n\t\tconst n = this.selected.size\n\t\ttitle.text(n ? 'Selected sample sets' : 'No sample sets selected')\n\t\tif (n) {\n\t\t\tthis.pill(headRight).text(n)\n\t\t\theadRight\n\t\t\t\t.append('span')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.style('color', LINK)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.text('Clear')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tthis.selected.clear()\n\t\t\t\t\tthis.refreshSelection()\n\t\t\t\t})\n\t\t}\n\n\t\tconst kind = this.selectedKind()\n\t\tif (kind) {\n\t\t\tbody\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.75em')\n\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t.style('margin-bottom', '4px')\n\t\t\t\t.text(`${kind} only \u00B7 clear the selection to pick another kind`)\n\t\t}\n\t\tconst list = body\n\t\t\t.append('div')\n\t\t\t.style('max-height', `${SIZE - 200}px`)\n\t\t\t.style('overflow-y', 'auto')\n\t\tif (!n) {\n\t\t\tlist\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t.style('padding', '4px 0')\n\t\t\t\t.text('Click a sample-set wedge, or Select all above the chart.')\n\t\t}\n\t\tfor (const [k, r] of this.selected) {\n\t\t\tconst leaf = this.leafNode.get(k)\n\t\t\tconst line = list\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('gap', '8px')\n\t\t\t\t.style('padding', '3px 6px')\n\t\t\t\t.style('margin', '2px 0')\n\t\t\t\t.style('border-radius', '6px')\n\t\t\t\t.on('mouseenter', (event: any) => {\n\t\t\t\t\tselect(event.currentTarget).style('background', '#f3f4f6').select('.sjpp-sunburst-remove').style('opacity', 1)\n\t\t\t\t})\n\t\t\t\t.on('mouseleave', (event: any) => {\n\t\t\t\t\tselect(event.currentTarget)\n\t\t\t\t\t\t.style('background', 'transparent')\n\t\t\t\t\t\t.select('.sjpp-sunburst-remove')\n\t\t\t\t\t\t.style('opacity', 0)\n\t\t\t\t})\n\t\t\tthis.badge(line, leaf?.data.name || r.cohort, leaf ? this.speciesColor(leaf) : '#9ca3af', 24)\n\t\t\tconst text = line.append('div').style('flex', '1 1 auto').style('min-width', '0').style('line-height', '1.2')\n\t\t\ttext\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.9em')\n\t\t\t\t.style('color', TEXT_DARK)\n\t\t\t\t.style('overflow', 'hidden')\n\t\t\t\t.style('text-overflow', 'ellipsis')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.text(this.selectionLabel(r))\n\t\t\ttext\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.7em')\n\t\t\t\t.style('color', '#6b7280')\n\t\t\t\t.text(r.proteome + (r.placeholder ? ' \u00B7 placeholder data' : ''))\n\t\t\tline\n\t\t\t\t.append('span')\n\t\t\t\t.attr('class', 'sjpp-sunburst-remove')\n\t\t\t\t.style('opacity', 0)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('color', '#9ca3af')\n\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t.attr('title', 'Remove')\n\t\t\t\t.text('\u2715')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tthis.selected.delete(k)\n\t\t\t\t\tthis.refreshSelection()\n\t\t\t\t})\n\t\t}\n\n\t\t// PTM (site-level) and protein-level z are not comparable\n\t\tconst types = new Set([...this.selected.values()].map(r => r.dataType))\n\t\tif (types.size > 1) {\n\t\t\tbody\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.style('color', WARN)\n\t\t\t\t.style('margin-top', '6px')\n\t\t\t\t.text('Selection mixes PTM (site-level) and protein-level assays; their log2FC-z are not directly comparable.')\n\t\t}\n\n\t\tconst footer = body\n\t\t\t.append('div')\n\t\t\t.style('margin-top', '10px')\n\t\t\t.style('padding-top', '10px')\n\t\t\t.style('border-top', `1px solid ${RULE}`)\n\t\tthis.pill(footer, { button: true })\n\t\t\t.property('disabled', n === 0)\n\t\t\t.style('opacity', n ? 1 : 0.3)\n\t\t\t.style('cursor', n ? 'pointer' : 'default')\n\t\t\t.text(n >= 2 ? `Compare ${n} cohorts` : 'Analyze cohort')\n\t\t\t.on('click', () => this.onAction())\n\t}\n\n\t/************ interaction ************/\n\n\t/** the single sample set a wedge stands for: the leaf itself, or the only leaf beneath an\n\t * inner wedge (e.g. a human assay wedge with one cohort), so it can be selected without\n\t * zooming down to a lone full-circle wedge */\n\tterminalLeaf(d: HNode): CatalogRow | undefined {\n\t\tif (d.data.cohort) return d.data.cohort\n\t\tif (countLeaves(d.data) !== 1) return undefined\n\t\treturn leavesOf(d.data)[0].cohort\n\t}\n\n\tisSelected(d: HNode): boolean {\n\t\tconst r = this.terminalLeaf(d)\n\t\treturn !!r && this.selected.has(cohortKey(r))\n\t}\n\n\t/** animate every wedge from its current geometry to where it sits with `p` at the centre */\n\tzoomTo(p: HNode) {\n\t\tthis.focus = p\n\t\tthis.dom.tip.hide()\n\t\tconst root = this.root!\n\t\troot.each((d: HNode) => (d.target = zoomTarget(d, p)))\n\t\tconst t = this.dom.g.transition().duration(DURATION)\n\n\t\t// no hover or clicks on wedges while they move (a wedge sweeping under the cursor would\n\t\t// otherwise darken and pop a tooltip); the visible ones take pointer events again at the end.\n\t\t// A zoom that interrupts this one re-runs the same steps, so nothing is left disabled.\n\t\tthis.dom.paths.attr('pointer-events', 'none')\n\t\t// judged by the target, not d.current: the group's end event fires a tick before the\n\t\t// wedge tweens write their final frame, so current would still be a hair short of it\n\t\tt.on('end', () =>\n\t\t\tthis.dom.paths.attr('pointer-events', (d: HNode) => (arcVisible(d.target, RINGS) ? 'auto' : 'none'))\n\t\t)\n\t\tthis.dom.paths\n\t\t\t.transition(t)\n\t\t\t// every node's current geometry moves, even hidden ones, so a later zoom starts right\n\t\t\t.tween('data', (d: HNode) => {\n\t\t\t\tconst i = interpolate(d.current, d.target)\n\t\t\t\treturn (k: number) => (d.current = i(k))\n\t\t\t})\n\t\t\t.filter(function (this: any, d: HNode) {\n\t\t\t\treturn +this.getAttribute('fill-opacity') || arcVisible(d.target, RINGS)\n\t\t\t})\n\t\t\t.attr('fill-opacity', (d: HNode) => (arcVisible(d.target, RINGS) ? 1 : 0))\n\t\t\t.attr('stroke-opacity', (d: HNode) => (arcVisible(d.target, RINGS) ? 1 : 0))\n\t\t\t.attr('fill', (d: HNode) => this.color(d))\n\t\t\t.attrTween('d', (d: HNode) => () => this.arc(d.current))\n\n\t\tthis.dom.labels\n\t\t\t.filter((d: HNode, i: number, els: any[]) => +els[i].getAttribute('fill-opacity') || this.labelVisible(d.target))\n\t\t\t.each((d: HNode, i: number, els: any[]) => this.setLabelText(select(els[i]), d, d.target))\n\t\t\t.transition(t)\n\t\t\t.attr('fill-opacity', (d: HNode) => (this.labelVisible(d.target) ? 1 : 0))\n\t\t\t.attrTween('transform', (d: HNode) => () => this.labelTransform(d.current))\n\n\t\t// the new centre text fades in beneath the wedge sweeping over the disc\n\t\tthis.renderCentre()\n\t\tthis.dom.centreText.attr('opacity', 0).transition(t).attr('opacity', 1)\n\t\tthis.renderStats()\n\t\tthis.renderToolbar()\n\t\tthis.renderSelBox()\n\t\tthis.renderSidebar()\n\t}\n\n\tonWedgeClick(d: HNode) {\n\t\tconst r = this.terminalLeaf(d)\n\t\tif (r) {\n\t\t\tif (!this.compatible(r)) return // the tooltip says why\n\t\t\tconst k = cohortKey(r)\n\t\t\tif (this.selected.has(k)) this.selected.delete(k)\n\t\t\telse this.selected.set(k, r)\n\t\t\tthis.refreshSelection()\n\t\t} else this.zoomTo(d)\n\t}\n\n\tshowTip(event: any, d: HNode) {\n\t\tthis.dom.tip.clear().show(event.clientX, event.clientY)\n\t\tconst box = this.dom.tip.d\n\t\t\t.append('div')\n\t\t\t.style('padding', '10px 14px')\n\t\t\t.style('min-width', '170px')\n\t\t\t.style('font-size', '13px')\n\t\t\t.style('line-height', '1.45')\n\t\tbox.append('div').style('font-weight', 'bold').style('font-size', '14px').text(d.data.name)\n\t\tconst r = this.terminalLeaf(d)\n\t\tconst stat = (label: string, value: string | number) => {\n\t\t\tconst line = box.append('div').style('color', '#374151')\n\t\t\tline.append('span').text(`${label}: `)\n\t\t\tline.append('b').text(String(value))\n\t\t}\n\t\tconst note = (text: string, color: string) =>\n\t\t\tbox.append('div').style('margin-top', '4px').style('color', color).text(text)\n\t\tconst kind = this.selectedKind()\n\t\tif (r) {\n\t\t\tbox.append('div').style('color', '#6b7280').text(`${r.species} \u00B7 ${r.proteome} \u00B7 ${r.cohort}`)\n\t\t\tif (r.placeholder) box.append('div').style('color', WARN).text('placeholder data')\n\t\t\tif (!this.compatible(r))\n\t\t\t\tnote(`Clear the ${kind} selection to select a ${kindOf(r, this.kindKeys())} sample set`, WARN)\n\t\t\telse note(this.selected.has(cohortKey(r)) ? 'click to deselect' : 'click to select', LINK)\n\t\t} else {\n\t\t\tbox.append('div').style('color', '#6b7280').text(d.data.level)\n\t\t\tstat('Sample sets', countLeaves(d.data))\n\t\t\tif (d.dim) note(`No ${kind} sample sets here; clear the selection to pick from these`, WARN)\n\t\t\tnote('click to zoom in', LINK)\n\t\t}\n\t}\n\n\t/** label for the selection list / compare plot; adds the assay when several are selected */\n\tselectionLabel(r: CatalogRow): string {\n\t\tconst species = r.species\n\t\tconst leaf = this.leafNode.get(cohortKey(r))\n\t\tconst base = `${species} ${leaf?.data.name || r.cohort}`\n\t\tconst assays = new Set([...this.selected.values()].map(x => x.proteome))\n\t\treturn assays.size > 1 ? `${base} (${r.proteome})` : base\n\t}\n\n\tonAction() {\n\t\tconst sel = [...this.selected.values()]\n\t\tif (sel.length === 1) {\n\t\t\tconst c = sel[0]\n\t\t\tthis.app.dispatch({\n\t\t\t\ttype: 'plot_create',\n\t\t\t\tconfig: {\n\t\t\t\t\tchartType: 'ProteomeInput',\n\t\t\t\t\tproteomeDetails: { organism: c.organism, assay: c.assay, cohort: c.cohort },\n\t\t\t\t\thidePlotFilter: true\n\t\t\t\t}\n\t\t\t})\n\t\t} else if (sel.length >= 2) {\n\t\t\tthis.app.dispatch({\n\t\t\t\ttype: 'plot_create',\n\t\t\t\tconfig: {\n\t\t\t\t\tchartType: 'proteomeCohortCompare',\n\t\t\t\t\tcohorts: sel.map(c => ({\n\t\t\t\t\t\torganism: c.organism,\n\t\t\t\t\t\tassay: c.assay,\n\t\t\t\t\t\tcohort: c.cohort,\n\t\t\t\t\t\tlabel: this.selectionLabel(c)\n\t\t\t\t\t}))\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n}\n\n/*********** tree building and zoom geometry (DOM-free) ***********/\n\ntype SunburstUiConfig = ProteomeCohortSunburstConfig\ntype Level = SunburstUiConfig['levels'][number]\n\ntype TreeNode = {\n\tname: string\n\t/** ring name (Level.name); undefined for the root and the leaves */\n\tlevel?: string\n\tchildren?: TreeNode[]\n\t/** leaves only */\n\tcohort?: CatalogRow\n}\n\n/** the value of one ring for a cohort, '' if the ring does not apply to it */\nfunction levelValue(row: CatalogRow, level: Level): string {\n\tfor (const v of level.values) {\n\t\tif (v.when && !cohortMatches(v.when, row.organism, row.assay, row)) continue\n\t\tif (v.const) return v.const\n\t\tif (v.key && row[v.key]) return String(row[v.key])\n\t}\n\treturn ''\n}\n\nfunction leafLabel(row: CatalogRow, cfg: SunburstUiConfig['leafLabel']): string {\n\tconst pick = (keys: string[]) =>\n\t\tkeys\n\t\t\t.map(k => row[k])\n\t\t\t.filter(Boolean)\n\t\t\t.map(String)\n\tconst a = pick(cfg.keys)\n\tif (a.length) return a.join(' ')\n\tconst b = pick(cfg.fallbackKeys || [])\n\treturn b.length ? b.join(' ') : row.cohort\n}\n\n/** nest cohorts by their ring values, in first-seen order. A ring without a value for a\n * cohort is skipped for that cohort, so branches may differ in depth. */\nfunction buildTree(rows: CatalogRow[], ui: SunburstUiConfig, rootName = 'All sample sets'): TreeNode {\n\tconst root: TreeNode = { name: rootName, children: [] }\n\tfor (const r of rows) {\n\t\tlet node = root\n\t\tfor (const level of ui.levels) {\n\t\t\tconst v = levelValue(r, level)\n\t\t\tif (!v) continue\n\t\t\tif (!node.children) node.children = []\n\t\t\tlet child = node.children.find(c => c.name === v && c.level === level.name)\n\t\t\tif (!child) {\n\t\t\t\tchild = { name: v, level: level.name, children: [] }\n\t\t\t\tnode.children.push(child)\n\t\t\t}\n\t\t\tnode = child\n\t\t}\n\t\tif (!node.children) node.children = []\n\t\tnode.children.push({ name: leafLabel(r, ui.leafLabel), cohort: r })\n\t}\n\tdisambiguateLeaves(root)\n\treturn root\n}\n\n/** sibling leaves sharing a label (e.g. two studies of the same disease and region) get\n * their cohort key appended, so each wedge names the sample set it selects */\nfunction disambiguateLeaves(node: TreeNode) {\n\tconst leaves = (node.children || []).filter(c => c.cohort)\n\tconst seen = new Map<string, number>()\n\tfor (const l of leaves) seen.set(l.name, (seen.get(l.name) || 0) + 1)\n\tfor (const l of leaves) if (seen.get(l.name)! > 1) l.name = `${l.name} (${l.cohort!.cohort})`\n\tfor (const c of node.children || []) if (!c.cohort) disambiguateLeaves(c)\n}\n\n/** number of cohorts (leaves) under a node */\nfunction countLeaves(n: TreeNode): number {\n\tif (n.cohort) return 1\n\tlet s = 0\n\tfor (const c of n.children || []) s += countLeaves(c)\n\treturn s\n}\n\n/** every leaf under a node, in tree order */\nfunction leavesOf(n: TreeNode): TreeNode[] {\n\tif (n.cohort) return [n]\n\tconst out: TreeNode[] = []\n\tfor (const c of n.children || []) out.push(...leavesOf(c))\n\treturn out\n}\n\nconst cohortKey = (r: CatalogRow) => catalogRowKey(r.organism, r.assay, r.cohort)\n\n/*********** selection kind ***********/\n\n/** the kind of a cohort: its values of the selectionKind keys joined, e.g. \"Human Whole\";\n * '' when no keys are configured, so every cohort is of one kind */\nfunction kindOf(r: CatalogRow, keys: string[] = []): string {\n\treturn keys\n\t\t.map(k => r[k])\n\t\t.filter(Boolean)\n\t\t.map(String)\n\t\t.join(' ')\n}\n\n/** the kind with the most leaves; first-seen wins a tie; '' for no leaves */\nfunction largestKind(leaves: TreeNode[], keys: string[] = []): string {\n\tconst counts = new Map<string, number>()\n\tfor (const l of leaves) {\n\t\tconst k = kindOf(l.cohort!, keys)\n\t\tcounts.set(k, (counts.get(k) || 0) + 1)\n\t}\n\tlet best = ''\n\tlet bestN = 0\n\tfor (const [k, n] of counts) {\n\t\tif (n > bestN) {\n\t\t\tbest = k\n\t\t\tbestN = n\n\t\t}\n\t}\n\treturn best\n}\n\n/*********** zoom geometry (d3 zoomable-sunburst) ***********/\n\n/** arc geometry of one wedge in partition units: angles in radians; y in ring units, where\n * y=0 is the centre point, y=1 the edge of the centre circle and y=2 the outer edge of the\n * first ring */\ntype Geom = { x0: number; x1: number; y0: number; y1: number }\n\n/** where a node lands once `focus` is the centre: its angles are rescaled to the focus's\n * span (clamped, so wedges outside the focus collapse to zero width) and its rings shift\n * inward by the focus depth (so the focus itself becomes the full centre disc, y 0..1,\n * and its ancestors collapse onto the centre point). Interpolating a node's current\n * geometry toward this is what makes a clicked wedge sweep into a circle. */\nfunction zoomTarget(d: Geom & { depth: number }, focus: Geom & { depth: number }): Geom {\n\tconst span = focus.x1 - focus.x0 || 1\n\tconst ang = (x: number) => Math.max(0, Math.min(1, (x - focus.x0) / span)) * 2 * Math.PI\n\treturn {\n\t\tx0: ang(d.x0),\n\t\tx1: ang(d.x1),\n\t\ty0: Math.max(0, d.y0 - focus.depth),\n\t\ty1: Math.max(0, d.y1 - focus.depth)\n\t}\n}\n\n/** a wedge is drawn when it lies within the `rings` shown around the centre and has width */\nfunction arcVisible(g: Geom, rings: number): boolean {\n\treturn g.y0 >= 1 && g.y1 <= rings + 1 && g.x1 > g.x0\n}\n\n/** break a label into at most `maxLines` lines of at most `maxChars` characters, splitting\n * at spaces; a line that still does not fit is truncated with an ellipsis */\nfunction splitLabel(text: string, maxChars: number, maxLines: number): string[] {\n\tconst words = text.split(/\\s+/).filter(Boolean)\n\tconst lines: string[] = []\n\tlet cur = ''\n\tfor (const w of words) {\n\t\tif (!cur) cur = w\n\t\telse if ((cur + ' ' + w).length <= maxChars) cur += ' ' + w\n\t\telse {\n\t\t\tlines.push(cur)\n\t\t\tcur = w\n\t\t}\n\t}\n\tif (cur) lines.push(cur)\n\tif (lines.length > maxLines) {\n\t\tconst rest = lines.slice(maxLines - 1).join(' ')\n\t\tlines.length = maxLines - 1\n\t\tlines.push(rest)\n\t}\n\treturn lines.map(l => (l.length > maxChars ? l.slice(0, Math.max(1, maxChars - 1)) + '\u2026' : l))\n}\n\n/** value of a stat box over a set of leaves; null = not available (a sum with no data) */\nfunction computeStat(leaves: TreeNode[], def: ProteomeSunburstStat): number | null {\n\tconst rows = leaves.map(l => l.cohort!).filter(r => !def.where || cohortMatches(def.where, r.organism, r.assay, r))\n\tif (def.kind === 'count') return rows.length\n\tif (def.kind === 'distinct') {\n\t\tconst vals = new Set(\n\t\t\trows.map(r => r[def.key || '']).filter(v => v !== undefined && v !== null && v !== '')\n\t\t)\n\t\treturn vals.size\n\t}\n\t// sum\n\tlet total = 0\n\tlet seen = false\n\tfor (const r of rows) {\n\t\tconst v = Number(r[def.key || ''])\n\t\tif (!Number.isFinite(v) || r[def.key || ''] === undefined || r[def.key || ''] === '') continue\n\t\ttotal += v\n\t\tseen = true\n\t}\n\treturn seen ? total : null\n}\n\nexport const componentInit = getCompInit(CohortSunburst)\n\nexport async function getPlotConfig(opts: any) {\n\tconst config = structuredClone(defaultConfig)\n\treturn copyMerge(config, opts)\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,323 @@
1
+ import {
2
+ getPillNameDefault,
3
+ make_radios,
4
+ sayerror,
5
+ set_hiddenvalues,
6
+ throwMsgWithFilePathAndFnName
7
+ } from "./chunk-NNDKYTUV.js";
8
+ import "./chunk-HJ6L54YS.js";
9
+ import "./chunk-HWNQOADC.js";
10
+ import "./chunk-CNFTQSNE.js";
11
+ import "./chunk-PLFPXOGX.js";
12
+ import "./chunk-EEB5VE2A.js";
13
+ import "./chunk-3CIL7KH7.js";
14
+ import "./chunk-T4XPCSLP.js";
15
+ import "./chunk-BIJOXCLN.js";
16
+ import "./chunk-W5J3LTYS.js";
17
+ import "./chunk-L2WOLNZK.js";
18
+ import "./chunk-AMW5LCUB.js";
19
+ import "./chunk-ZPWBYHNE.js";
20
+ import {
21
+ copyMerge
22
+ } from "./chunk-HBNB5TRH.js";
23
+ import "./chunk-PF4DSFDR.js";
24
+ import "./chunk-4OLM3KSB.js";
25
+ import "./chunk-6XKAOSQE.js";
26
+ import "./chunk-TLT4YIG3.js";
27
+ import "./chunk-5R63Q5KH.js";
28
+ import "./chunk-I6Y4O3RR.js";
29
+ import "./chunk-Q5RDQNIT.js";
30
+ import "./chunk-HS5PO5ZQ.js";
31
+
32
+ // termsetting/handlers/condition.ts
33
+ var cutoffGrades = [1, 2, 3, 4, 5];
34
+ function getHandler(self) {
35
+ return {
36
+ getPillName(d) {
37
+ return getPillNameDefault(self, d);
38
+ },
39
+ getPillStatus() {
40
+ return getPillStatus(self);
41
+ },
42
+ showEditMenu(div) {
43
+ if (self.q.mode == "discrete") {
44
+ return showMenu_discrete(self, div);
45
+ }
46
+ if (self.q.mode == "binary" || self.q.mode == "cuminc" || self.q.mode == "cox") {
47
+ return showMenu_cutoff(self, div);
48
+ }
49
+ console.error("invalid q.mode:", self.q.mode);
50
+ throw "invalid q.mode";
51
+ }
52
+ // async postMain() {
53
+ // const body = self.opts.getBodyParams?.() || {} //make sure term1_q is added
54
+ // const data = await self.vocabApi.getCategories(self.term, self.filter!, body)
55
+ // //not really sure this is necessary but it's consistent across other handlers
56
+ // self.category2samplecount = []
57
+ // for (const d of data.lst) {
58
+ // self.category2samplecount.push({
59
+ // key: d.key,
60
+ // label: d.label,
61
+ // count: d.samplecount
62
+ // })
63
+ // // }
64
+ // }
65
+ // }
66
+ };
67
+ }
68
+ function getPillStatus(self) {
69
+ const text = self.q?.name;
70
+ if (text) return { text };
71
+ if (self.q.mode == "discrete") {
72
+ if (self.q.breaks?.length) {
73
+ return { text: self.q.breaks.length + 1 + " groups" };
74
+ } else {
75
+ if (self.q.bar_by_grade) {
76
+ if (self.q.value_by_max_grade) return { text: "Max. Grade" };
77
+ if (self.q.value_by_most_recent) return { text: "Most Recent Grade" };
78
+ if (self.q.value_by_computable_grade) return { text: "Any Grade" };
79
+ return { text: "Error: unknown grade setting", bgcolor: "red" };
80
+ }
81
+ if (self.q.bar_by_children) return { text: "Sub-condition" };
82
+ }
83
+ }
84
+ if (self.q.mode == "binary") {
85
+ return {
86
+ text: self.usecase?.target == "regression" ? self.data.q.groups.find((x) => x.name != self.data.refGrp).name : "binary"
87
+ };
88
+ }
89
+ if (self.q.mode == "cuminc" || self.q.mode == "cox") {
90
+ if (!self.q.breaks || self.q.breaks.length == 0) throwMsgWithFilePathAndFnName("Missing q.breaks");
91
+ return { text: `Grades ${self.q.breaks[0]}-5` };
92
+ }
93
+ return {};
94
+ }
95
+ async function showMenu_discrete(self, div) {
96
+ const value_type_div = div.append("div").style("margin", "10px 0px 10px 5px").style("border-left", "solid 1px #ededed");
97
+ value_type_div.append("div").style("display", "inline-block").style("margin", "0px 0px 5px 5px").style("color", "rgb(136, 136, 136)").text("Grade type:");
98
+ const value_type_select = value_type_div.append("select").style("display", "inline").style("margin", "0px 10px").on("change", () => {
99
+ const i = value_type_select.property("selectedIndex");
100
+ self.q.bar_by_grade = i != 3;
101
+ self.q.bar_by_children = i == 3;
102
+ self.q.value_by_max_grade = i == 0;
103
+ self.q.value_by_most_recent = i == 1;
104
+ self.q.value_by_computable_grade = i == 2 || i == 3;
105
+ self.dom.tip.hide();
106
+ self.api.runCallback();
107
+ });
108
+ value_type_select.append("option").text("Max grade per patient");
109
+ value_type_select.append("option").text("Most recent grade per patient");
110
+ value_type_select.append("option").text("Any grade per patient");
111
+ if (self.term.subconditions) {
112
+ value_type_select.append("option").text("Sub-conditions");
113
+ }
114
+ value_type_select.property(
115
+ "selectedIndex",
116
+ self.q.bar_by_children ? 3 : self.q.value_by_computable_grade ? 2 : self.q.value_by_most_recent ? 1 : 0
117
+ );
118
+ if (self.q.bar_by_children) {
119
+ return;
120
+ }
121
+ const breaksSelectorDiv = div.append("div").style("margin", "20px 0px 10px 5px").style("border-left", "solid 1px #ededed");
122
+ breaksSelectorDiv.append("div").text("Divide grades into groups (optional):").style("margin", "0px 0px 10px 5px").style("color", "rgb(136, 136, 136)");
123
+ const holder = breaksSelectorDiv.append("div").style("display", "flex").style("align-items", "start").style("margin-left", "10px").style("width", "100%");
124
+ const gradeValuesDiv = holder.append("div").style("margin-right", "20px");
125
+ const rangeNameDiv = holder.append("div").style("display", "grid").style("grid-template-columns", "auto auto").style("column-gap", "20px").style("align-items", "center").style("margin-right", "5px");
126
+ gradeValuesDiv.append("div").style("margin-bottom", "5px").style("color", "rgb(136, 136, 136)").text("Cutoff grades");
127
+ const textarea = gradeValuesDiv.append("textarea").style("width", "100px").style("height", "70px").on("keyup", textarea2gradeUI);
128
+ gradeValuesDiv.append("div").style("font-size", ".6em").style("margin-left", "1px").style("color", "#858585").html("Enter numeric values </br>seperated by ENTER");
129
+ if (self.q.breaks?.length) {
130
+ textarea.property("value", self.q.breaks.join("\n"));
131
+ }
132
+ textarea2gradeUI();
133
+ function textarea2gradeUI() {
134
+ rangeNameDiv.selectAll("*").remove();
135
+ const breaks = textarea2breaks();
136
+ if (!breaks.length) {
137
+ delete self.q.breaks;
138
+ delete self.q.groups;
139
+ return;
140
+ }
141
+ if (!self.term.values) throwMsgWithFilePathAndFnName(`Missing term values`);
142
+ const grades = Object.keys(self.term.values).filter((g) => !self.term.values?.[g].uncomputable).map(Number).sort((a, b) => a - b);
143
+ const groups = getGroups(grades, breaks);
144
+ rangeNameDiv.append("div").style("margin-bottom", "3px").style("color", "rgb(136, 136, 136)").text("Range");
145
+ rangeNameDiv.append("div").style("margin-bottom", "3px").style("color", "rgb(136, 136, 136)").text("Label");
146
+ for (const [i, g] of groups.entries()) {
147
+ rangeNameDiv.append("div").text(g.name.replace(/Grades* /, ""));
148
+ rangeNameDiv.append("div").append("input").attr("type", "text").property("value", g.name).style("margin", "2px 0px").on("change", function() {
149
+ groups[i].name = this.value;
150
+ });
151
+ }
152
+ self.q.breaks = breaks;
153
+ self.q.groups = groups;
154
+ }
155
+ function textarea2breaks() {
156
+ const str = textarea.property("value").trim();
157
+ if (!str) return [];
158
+ const lst = [...new Set(str.split("\n"))];
159
+ const breaks = [];
160
+ for (const x of lst) {
161
+ const b = Number(x);
162
+ if (!Number.isInteger(b)) {
163
+ sayerror(div, "cutoff grade must be an integer value");
164
+ return [];
165
+ }
166
+ if (b < 1 || b > 5) {
167
+ sayerror(div, `cutoff grade must be within grades 1-5`);
168
+ return [];
169
+ }
170
+ breaks.push(b);
171
+ }
172
+ if (!breaks.length) return [];
173
+ return breaks.sort((i, j) => i - j);
174
+ }
175
+ div.append("button").text("Apply").style("margin", "10px").on("click", (event) => {
176
+ event.target.disabled = true;
177
+ event.target.innerHTML = "Loading...";
178
+ self.api.runCallback();
179
+ });
180
+ }
181
+ function showMenu_cutoff(self, div) {
182
+ const holder = div.append("div").style("margin", "10px").style("display", "grid").style("grid-template-columns", "auto auto").style("gap", "20px");
183
+ holder.append("div").text("Grade cutoff").style("opacity", 0.4);
184
+ const sd = holder.append("div");
185
+ const gradeSelect = sd.append("select").on("change", changeGradeSelect);
186
+ for (const i of cutoffGrades) {
187
+ gradeSelect.append("option").text(self.term.values?.[i].label);
188
+ }
189
+ gradeSelect.property("selectedIndex", self.q.breaks[0] - 1);
190
+ holder.append("div").text(self.q.mode == "binary" ? "Group 1" : "Censored").style("opacity", 0.4);
191
+ const g1n = holder.append("div").style("opacity", 0.4);
192
+ holder.append("div").text(self.q.mode == "binary" ? "Group 2" : "Event").style("opacity", 0.4);
193
+ const g2n = holder.append("div").style("opacity", 0.4);
194
+ changeGradeSelect();
195
+ function changeGradeSelect() {
196
+ const grade = gradeSelect.property("selectedIndex") + 1;
197
+ g1n.selectAll("*").remove();
198
+ g2n.selectAll("*").remove();
199
+ const grades = Object.keys(self.term.values).map(Number).sort((a, b) => a - b);
200
+ for (const i of grades) {
201
+ if (i < grade) {
202
+ g1n.append("div").text(self.term.values?.[i].label);
203
+ } else {
204
+ g2n.append("div").text(self.term.values?.[i].label);
205
+ }
206
+ }
207
+ }
208
+ const timeUnit = self.vocabApi.termdbConfig.timeUnit;
209
+ let timeScaleChoice;
210
+ if (self.q.mode == "cox") {
211
+ timeScaleChoice = self.q.timeScale;
212
+ holder.append("div").text("Time axis").style("opacity", 0.4);
213
+ const options = [
214
+ {
215
+ label: timeUnit.charAt(0).toUpperCase() + timeUnit.slice(1),
216
+ value: "time"
217
+ },
218
+ { label: "Age", value: "age" }
219
+ ];
220
+ if (self.q.timeScale == "age") {
221
+ options[1].checked = true;
222
+ } else {
223
+ options[0].checked = true;
224
+ }
225
+ make_radios({
226
+ holder: holder.append("div"),
227
+ options,
228
+ styles: { padding: "" },
229
+ callback: (v) => timeScaleChoice = v
230
+ });
231
+ }
232
+ div.append("button").text("Apply").style("margin", "10px").on("click", (event) => {
233
+ if (!self.q.breaks || self.q.breaks.length == 0) throwMsgWithFilePathAndFnName("Missing q.breaks");
234
+ const grade = gradeSelect.property("selectedIndex") + 1;
235
+ self.q.breaks[0] = grade;
236
+ if (self.q.mode == "binary") {
237
+ const grades = Object.keys(self.term.values).map(Number).sort((a, b) => a - b);
238
+ self.q.groups = getGroups(grades, self.q.breaks);
239
+ self.refGrp = self.q.groups[0].name;
240
+ }
241
+ if (self.q.mode == "cox") self.q.timeScale = timeScaleChoice;
242
+ event.target.disabled = true;
243
+ event.target.innerHTML = "Loading...";
244
+ self.api.runCallback();
245
+ });
246
+ }
247
+ function getGroups(grades, breaks) {
248
+ grades.sort((a, b2) => a - b2);
249
+ const groups = [];
250
+ let group = { values: [] };
251
+ let b;
252
+ for (const g of grades) {
253
+ if (breaks.includes(g)) {
254
+ b = g;
255
+ const max = Math.max(...group.values);
256
+ if (!groups.length) {
257
+ if (group.values.length == 1) {
258
+ if (group.values[0] !== 0) throw "unexpected group value";
259
+ group.name = "Grade 0";
260
+ } else {
261
+ if (group.values.length == 2 && group.values.includes(-1) && group.values.includes(0)) {
262
+ group.name = "Not tested/Grade 0";
263
+ } else {
264
+ group.name = group.values.includes(-1) ? `Not tested/Grade 0 - Grade ${max}` : `Grades 0-${max}`;
265
+ }
266
+ }
267
+ } else {
268
+ group.name = group.values.length == 1 ? `Grade ${group.values[0]}` : `${group.name}-${max}`;
269
+ }
270
+ groups.push(group);
271
+ group = {
272
+ name: `Grade ${b}`,
273
+ values: [g]
274
+ };
275
+ } else {
276
+ group.values.push(g);
277
+ }
278
+ }
279
+ group.name = `Grades ${b}-5`;
280
+ groups.push(group);
281
+ return groups;
282
+ }
283
+ function fillTW(tw, vocabApi, defaultQ) {
284
+ set_hiddenvalues(tw.q, tw.term);
285
+ if (defaultQ) {
286
+ copyMerge(tw.q, defaultQ);
287
+ }
288
+ if (!Object.keys(tw.q).includes("mode")) tw.q.mode = "discrete";
289
+ if (!tw.q.valueFor) {
290
+ const q = tw.q;
291
+ if (!q.bar_by_grade && !q.bar_by_children) q.bar_by_grade = true;
292
+ tw.q.valueFor = tw.q.bar_by_children ? "children" : "grade";
293
+ }
294
+ if (tw.q.valueFor == "grade") {
295
+ if (tw.q.value_by_max_grade || tw.q.value_by_most_recent || tw.q.value_by_computable_grade) {
296
+ } else {
297
+ tw.q.value_by_max_grade = true;
298
+ }
299
+ }
300
+ if (tw.q.mode == "binary" || tw.q.mode == "cox" || tw.q.mode == "cuminc") {
301
+ const defaultBreak = tw.q.mode == "binary" ? 1 : 3;
302
+ if (!tw.q.breaks?.length) tw.q.breaks = [defaultBreak];
303
+ if (tw.q.breaks.length != 1 || ![1, 2, 3, 4, 5].includes(tw.q.breaks[0])) throw "invalid tw.q.breaks";
304
+ }
305
+ if (tw.q.valueFor == "grade") {
306
+ if (tw.q.breaks?.length) {
307
+ if (!tw.term.values) throw "missing term.values";
308
+ if (tw.q.mode == "discrete" || tw.q.mode == "binary") {
309
+ const grades = Object.keys(tw.term.values).filter((g) => tw.q.mode == "discrete" ? !tw.term.values?.[g].uncomputable : g).map(Number).sort((a, b) => a - b);
310
+ tw.q.groups = getGroups(grades, tw.q.breaks);
311
+ }
312
+ }
313
+ if (tw.q.mode == "cox") {
314
+ if (!tw.q.timeScale) tw.q.timeScale = "time";
315
+ if (!["age", "time"].includes(tw.q.timeScale)) throw "invalid q.timeScale";
316
+ }
317
+ }
318
+ }
319
+ export {
320
+ fillTW,
321
+ getHandler
322
+ };
323
+ //# sourceMappingURL=condition-SGJIDZNB.js.map
@@ -0,0 +1,30 @@
1
+ import {
2
+ controlsInit,
3
+ renderTerm1Label
4
+ } from "./chunk-NNDKYTUV.js";
5
+ import "./chunk-HJ6L54YS.js";
6
+ import "./chunk-HWNQOADC.js";
7
+ import "./chunk-CNFTQSNE.js";
8
+ import "./chunk-PLFPXOGX.js";
9
+ import "./chunk-EEB5VE2A.js";
10
+ import "./chunk-3CIL7KH7.js";
11
+ import "./chunk-T4XPCSLP.js";
12
+ import "./chunk-BIJOXCLN.js";
13
+ import "./chunk-W5J3LTYS.js";
14
+ import "./chunk-L2WOLNZK.js";
15
+ import "./chunk-AMW5LCUB.js";
16
+ import "./chunk-ZPWBYHNE.js";
17
+ import "./chunk-HBNB5TRH.js";
18
+ import "./chunk-PF4DSFDR.js";
19
+ import "./chunk-4OLM3KSB.js";
20
+ import "./chunk-6XKAOSQE.js";
21
+ import "./chunk-TLT4YIG3.js";
22
+ import "./chunk-5R63Q5KH.js";
23
+ import "./chunk-I6Y4O3RR.js";
24
+ import "./chunk-Q5RDQNIT.js";
25
+ import "./chunk-HS5PO5ZQ.js";
26
+ export {
27
+ controlsInit,
28
+ renderTerm1Label
29
+ };
30
+ //# sourceMappingURL=controls-JQCMGPXP.js.map
@@ -0,0 +1,30 @@
1
+ import {
2
+ configUiInit,
3
+ initByInput
4
+ } from "./chunk-NNDKYTUV.js";
5
+ import "./chunk-HJ6L54YS.js";
6
+ import "./chunk-HWNQOADC.js";
7
+ import "./chunk-CNFTQSNE.js";
8
+ import "./chunk-PLFPXOGX.js";
9
+ import "./chunk-EEB5VE2A.js";
10
+ import "./chunk-3CIL7KH7.js";
11
+ import "./chunk-T4XPCSLP.js";
12
+ import "./chunk-BIJOXCLN.js";
13
+ import "./chunk-W5J3LTYS.js";
14
+ import "./chunk-L2WOLNZK.js";
15
+ import "./chunk-AMW5LCUB.js";
16
+ import "./chunk-ZPWBYHNE.js";
17
+ import "./chunk-HBNB5TRH.js";
18
+ import "./chunk-PF4DSFDR.js";
19
+ import "./chunk-4OLM3KSB.js";
20
+ import "./chunk-6XKAOSQE.js";
21
+ import "./chunk-TLT4YIG3.js";
22
+ import "./chunk-5R63Q5KH.js";
23
+ import "./chunk-I6Y4O3RR.js";
24
+ import "./chunk-Q5RDQNIT.js";
25
+ import "./chunk-HS5PO5ZQ.js";
26
+ export {
27
+ configUiInit,
28
+ initByInput
29
+ };
30
+ //# sourceMappingURL=controls.config-WQHVQAIJ.js.map
@@ -0,0 +1,91 @@
1
+ import {
2
+ appInit
3
+ } from "./chunk-MU4Z2MX2.js";
4
+ import "./chunk-F5FFI7Z7.js";
5
+ import "./chunk-JMFVXWDX.js";
6
+ import "./chunk-6D4HOTG7.js";
7
+ import "./chunk-CTFHEDG2.js";
8
+ import "./chunk-QNQ2ZYT7.js";
9
+ import "./chunk-4E2F26CC.js";
10
+ import "./chunk-SKMFMGCD.js";
11
+ import "./chunk-F23EQSGU.js";
12
+ import "./chunk-PRZWSBMA.js";
13
+ import "./chunk-NNDKYTUV.js";
14
+ import "./chunk-HJ6L54YS.js";
15
+ import "./chunk-HWNQOADC.js";
16
+ import "./chunk-CNFTQSNE.js";
17
+ import "./chunk-PLFPXOGX.js";
18
+ import "./chunk-EEB5VE2A.js";
19
+ import "./chunk-3CIL7KH7.js";
20
+ import "./chunk-T4XPCSLP.js";
21
+ import "./chunk-BIJOXCLN.js";
22
+ import "./chunk-W5J3LTYS.js";
23
+ import "./chunk-L2WOLNZK.js";
24
+ import "./chunk-AMW5LCUB.js";
25
+ import "./chunk-ZPWBYHNE.js";
26
+ import "./chunk-HBNB5TRH.js";
27
+ import "./chunk-PF4DSFDR.js";
28
+ import "./chunk-4OLM3KSB.js";
29
+ import "./chunk-6XKAOSQE.js";
30
+ import "./chunk-TLT4YIG3.js";
31
+ import "./chunk-5R63Q5KH.js";
32
+ import "./chunk-I6Y4O3RR.js";
33
+ import "./chunk-Q5RDQNIT.js";
34
+ import "./chunk-HS5PO5ZQ.js";
35
+
36
+ // gdc/correlation.ts
37
+ async function init(arg, holder, genomes) {
38
+ const useGenome = arg.genome || "hg38";
39
+ const useDslabel = arg.dslabel || "GDC";
40
+ if (!genomes[useGenome]) throw useGenome + " missing";
41
+ const massApi = await appInit({
42
+ //debug: arg.debugmode, // is debug accepted?
43
+ genome: genomes[useGenome],
44
+ holder,
45
+ state: {
46
+ genome: useGenome,
47
+ dslabel: useDslabel,
48
+ termfilter: { filter0: arg.filter0 },
49
+ nav: { activeTab: 1, header_mode: window.location.pathname.includes("example.gdc") ? void 0 : "only_buttons" },
50
+ plots: arg.state?.plots || [
51
+ { chartType: "summaryInput" }
52
+ // default shows summaryInput ui, can change
53
+ //{ chartType: 'barchart', term: {id: 'case.demographic.gender'} }, // uncomment for quicker testing
54
+ ]
55
+ },
56
+ opts: Object.assign(
57
+ {
58
+ // todo additional customizations
59
+ // dictionary:{header:'Select a variable to build Correlation Plot'}
60
+ // some way to make gene exp violin/boxplot to use log scale by default, but numeric dict term should not
61
+ },
62
+ arg.opts || {}
63
+ ),
64
+ barchart: arg.opts?.barchart || {},
65
+ violin: arg.opts?.violin || {},
66
+ boxplot: arg.opts?.boxplot || {},
67
+ app: arg.opts?.app || {}
68
+ });
69
+ const api = {
70
+ update: async (updateArg) => {
71
+ if (!massApi) return;
72
+ if ("filter0" in updateArg) {
73
+ massApi.dispatch({
74
+ type: "app_refresh",
75
+ subactions: [
76
+ {
77
+ type: "filter_replace",
78
+ filter0: updateArg.filter0
79
+ }
80
+ ]
81
+ });
82
+ }
83
+ },
84
+ triggerAbort: (reason = "") => massApi.triggerAbort(reason)
85
+ };
86
+ return api;
87
+ }
88
+ export {
89
+ init
90
+ };
91
+ //# sourceMappingURL=correlation-S3MN3L5Q.js.map