@sjcrh/proteinpaint-client 2.217.0 → 2.218.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 (977) hide show
  1. package/dist/2dmaf-BZWQ4YZF.js +1362 -0
  2. package/dist/AggMatrixInput-OXUENYYF.js +402 -0
  3. package/dist/AggregateMatrix-7PYLWY3X.js +37 -0
  4. package/dist/AppHeader-QOLLABH4.js +826 -0
  5. package/dist/BoxPlot-PDRYKWXF.js +1233 -0
  6. package/dist/CorrelationVolcano-Z3ABRHL6.js +613 -0
  7. package/dist/Cuminc-ATQT3KDO.js +1217 -0
  8. package/dist/DE-5LMMF5QB.js +85 -0
  9. package/dist/DEinput-Y2VXYH54.js +497 -0
  10. package/dist/DM-ACIWRZS2.js +86 -0
  11. package/dist/DifferentialAnalysis-23WQKT6I.js +235 -0
  12. package/dist/Disco-5UBCTVTY.js +3384 -0
  13. package/dist/Disco.UI-6YCIW3QK.js +239 -0
  14. package/dist/DmrPlot-R7UOGAVY.js +361 -0
  15. package/dist/DmrPlot-R7UOGAVY.js.map +7 -0
  16. package/dist/GB-QZZG4DHJ.js +1388 -0
  17. package/dist/GSEA-3WW4GEXE.js +870 -0
  18. package/dist/GeneExpInput-PW6HP5LO.js +38 -0
  19. package/dist/Geomap-YDUXJ65P.js +80 -0
  20. package/dist/HicApp-CXHLK5UM.js +2240 -0
  21. package/dist/IDCViewer-ID46XKWW.js +10808 -0
  22. package/dist/NumBinaryEditor-7HEQD3UO.js +274 -0
  23. package/dist/NumBinaryEditor.unit.spec-CE5FZMLZ.js +308 -0
  24. package/dist/NumContEditor-7J4IODVT.js +100 -0
  25. package/dist/NumContEditor.unit.spec-H3DEDHGO.js +160 -0
  26. package/dist/NumCustomBinEditor-URE4NOZI.js +29 -0
  27. package/dist/NumCustomBinEditor.unit.spec-XE5AUM45.js +393 -0
  28. package/dist/NumDiscreteEditor-PBV2QXRU.js +165 -0
  29. package/dist/NumDiscreteEditor.unit.spec-2TWQ7DAZ.js +229 -0
  30. package/dist/NumRegularBinEditor-MG27BRWO.js +29 -0
  31. package/dist/NumRegularBinEditor.unit.spec-6NJLP3BX.js +274 -0
  32. package/dist/NumSplineEditor-ZZKMWU2V.js +205 -0
  33. package/dist/NumSplineEditor.unit.spec-T3C2YPU5.js +220 -0
  34. package/dist/NumericDensity-BUEAEQZD.js +29 -0
  35. package/dist/NumericDensity.unit.spec-XZ77VRO7.js +414 -0
  36. package/dist/NumericHandler-RW2NAEBZ.js +30 -0
  37. package/dist/NumericHandler.unit.spec-BQGTQBV6.js +210 -0
  38. package/dist/ProteomeInput-RL6IDTOA.js +610 -0
  39. package/dist/Regression-EVGHTLUT.js +1412 -0
  40. package/dist/RunChart2-NK2KWOZ7.js +744 -0
  41. package/dist/SC-QWJ72SI3.js +1290 -0
  42. package/dist/SC-QWJ72SI3.js.map +7 -0
  43. package/dist/Violin-2HIRC6A2.js +1095 -0
  44. package/dist/Volcano-H55O7GBI.js +2453 -0
  45. package/dist/Volcano-H55O7GBI.js.map +7 -0
  46. package/dist/Wsi-M2XRJBGL.js +636 -0
  47. package/dist/Wsi-M2XRJBGL.js.map +7 -0
  48. package/dist/adSandbox-T2HORPLC.js +29 -0
  49. package/dist/animatedBubbleChart-PS7KMVSY.js +542 -0
  50. package/dist/app-FKPGNJDN.js +38 -0
  51. package/dist/app-NPGVS6X4.js +28 -0
  52. package/dist/app.js +14 -14
  53. package/dist/bam-QQ54FE3A.js +872 -0
  54. package/dist/barchart-4DLCN7NL.js +38 -0
  55. package/dist/barchart2-H65GFNNQ.js +305 -0
  56. package/dist/block-RAYA73ZN.js +6232 -0
  57. package/dist/block.init-VE3TQWH4.js +29 -0
  58. package/dist/block.mds.expressionrank-YLFQQHZJ.js +350 -0
  59. package/dist/block.mds.geneboxplot-6V44H7EC.js +819 -0
  60. package/dist/block.mds.junction-DEIUZOQK.js +1534 -0
  61. package/dist/block.mds.svcnv-PTP7JYS2.js +6408 -0
  62. package/dist/block.svg-RGDXDKV6.js +155 -0
  63. package/dist/block.tk.aicheck-MFXHYAIN.js +274 -0
  64. package/dist/block.tk.bam-ICTVSRQ6.js +1897 -0
  65. package/dist/block.tk.bedgraphdot-X5AYHRUJ.js +375 -0
  66. package/dist/block.tk.bigwig.ui-FS3DA5JQ.js +202 -0
  67. package/dist/block.tk.hicstraw-MBBA3H4E.js +814 -0
  68. package/dist/block.tk.junction-L3YVWWOR.js +2353 -0
  69. package/dist/block.tk.junction.textmatrixui-PU3C7W6B.js +190 -0
  70. package/dist/block.tk.ld-SNKUZDPW.js +90 -0
  71. package/dist/block.tk.menu-NARHQW7Y.js +1050 -0
  72. package/dist/block.tk.pgv-NVNFNJZ6.js +934 -0
  73. package/dist/brainImaging-KHFLAPHC.js +550 -0
  74. package/dist/brainRegions-MQL2KZOQ.js +213 -0
  75. package/dist/bubbleHeatmap-U3GAF5AV.js +374 -0
  76. package/dist/cellTypeBubbleHeatmap-5ENEMDCZ.js +274 -0
  77. package/dist/chunk-25Q4AX4L.js +102 -0
  78. package/dist/chunk-2GQSPQ3U.js +1273 -0
  79. package/dist/chunk-2GQSPQ3U.js.map +7 -0
  80. package/dist/chunk-2RILGMXS.js +22873 -0
  81. package/dist/chunk-2RILGMXS.js.map +7 -0
  82. package/dist/chunk-2WWCHIXZ.js +194 -0
  83. package/dist/chunk-3AO7OZLF.js +294 -0
  84. package/dist/chunk-3DZJ64RQ.js +56 -0
  85. package/dist/chunk-3QZHRQ55.js +26 -0
  86. package/dist/chunk-3ZM5PZXA.js +240 -0
  87. package/dist/chunk-43FVCJXV.js +2685 -0
  88. package/dist/chunk-43WVK5KI.js +96 -0
  89. package/dist/chunk-4ZOKEHK4.js +516 -0
  90. package/dist/chunk-5M4U6S3E.js +103 -0
  91. package/dist/chunk-5O4GAKJT.js +49 -0
  92. package/dist/chunk-5Q6TANNH.js +274 -0
  93. package/dist/chunk-5WBIVXMG.js +134 -0
  94. package/dist/chunk-65FN7LIA.js +255 -0
  95. package/dist/chunk-6HVJJT3Y.js +6360 -0
  96. package/dist/chunk-6HVJJT3Y.js.map +7 -0
  97. package/dist/chunk-7HTMIFVR.js +170 -0
  98. package/dist/chunk-AOKINHUU.js +2799 -0
  99. package/dist/chunk-APXULA6M.js +182 -0
  100. package/dist/chunk-C7O67FZJ.js +1844 -0
  101. package/dist/chunk-CCNV3WJO.js +281 -0
  102. package/dist/chunk-DAKRDL76.js +156 -0
  103. package/dist/chunk-EGQVMN6S.js +397 -0
  104. package/dist/chunk-ERCLZ433.js +217 -0
  105. package/dist/chunk-ESLXHJ7W.js +31 -0
  106. package/dist/chunk-ET2KFCXK.js +424 -0
  107. package/dist/chunk-EYIZTX33.js +263 -0
  108. package/dist/chunk-F2PHTKCI.js +243 -0
  109. package/dist/chunk-FJXUMOVQ.js +176 -0
  110. package/dist/chunk-HJCI33L4.js +140 -0
  111. package/dist/chunk-HKXBGMUT.js +80 -0
  112. package/dist/chunk-HNMKK33Y.js +38 -0
  113. package/dist/chunk-IKZAWD7P.js +480 -0
  114. package/dist/chunk-ILPJAASI.js +203 -0
  115. package/dist/chunk-JFZECJY2.js +562 -0
  116. package/dist/chunk-K6CZAEBF.js +119 -0
  117. package/dist/chunk-KXDK6ZOJ.js +13624 -0
  118. package/dist/chunk-L7LRBRUN.js +2960 -0
  119. package/dist/chunk-LMG7Y5IN.js +5799 -0
  120. package/dist/chunk-LMG7Y5IN.js.map +7 -0
  121. package/dist/chunk-LO624OGK.js +102 -0
  122. package/dist/chunk-LPDQ26OP.js +550 -0
  123. package/dist/chunk-M2XWAAIZ.js +340 -0
  124. package/dist/chunk-M37J6Z5U.js +1988 -0
  125. package/dist/chunk-M5SJ42E2.js +468 -0
  126. package/dist/chunk-MJREV2KW.js +692 -0
  127. package/dist/chunk-MRR5GPPP.js +466 -0
  128. package/dist/chunk-NSCNNQOY.js +56 -0
  129. package/dist/chunk-OAQLBII5.js +54 -0
  130. package/dist/chunk-OKHU7EJW.js +194 -0
  131. package/dist/chunk-OXVB4OZC.js +4373 -0
  132. package/dist/chunk-PDZED3RR.js +382 -0
  133. package/dist/chunk-PITPUAWX.js +182 -0
  134. package/dist/chunk-PVXG2BRT.js +59 -0
  135. package/dist/chunk-PX6MHRAN.js +141 -0
  136. package/dist/chunk-REIPTX7J.js +626 -0
  137. package/dist/chunk-RFE2VG6T.js +55 -0
  138. package/dist/chunk-RPFQOIYX.js +418 -0
  139. package/dist/chunk-S2NAGL4V.js +839 -0
  140. package/dist/chunk-T24YYODE.js +217 -0
  141. package/dist/chunk-TDP4PX2S.js +123 -0
  142. package/dist/chunk-TUPJEZSL.js +299 -0
  143. package/dist/chunk-UNXVW5OT.js +379 -0
  144. package/dist/chunk-UOWUMUAX.js +444 -0
  145. package/dist/chunk-V6EIPPMT.js +1339 -0
  146. package/dist/chunk-VGUO2BQ7.js +276 -0
  147. package/dist/chunk-VKWZPC73.js +37 -0
  148. package/dist/chunk-VQ5PDCAJ.js +5213 -0
  149. package/dist/chunk-VQK3UKNA.js +54 -0
  150. package/dist/chunk-WB5MHFHB.js +237 -0
  151. package/dist/chunk-WK6CPMXR.js +302 -0
  152. package/dist/chunk-WNUCR3UF.js +2334 -0
  153. package/dist/chunk-WNUCR3UF.js.map +7 -0
  154. package/dist/chunk-WRYNE3Q4.js +1219 -0
  155. package/dist/chunk-XA6LI63Y.js +54 -0
  156. package/dist/chunk-XJYVMXMZ.js +2279 -0
  157. package/dist/chunk-XJYVMXMZ.js.map +7 -0
  158. package/dist/chunk-Y7Y6X6E5.js +70 -0
  159. package/dist/chunk-YG57X4VD.js +257 -0
  160. package/dist/chunk-YPOIMSJR.js +34 -0
  161. package/dist/chunk-YS7Y257H.js +26152 -0
  162. package/dist/chunk-YS7Y257H.js.map +7 -0
  163. package/dist/chunk-ZRLON6PP.js +14 -0
  164. package/dist/chunk-ZSNZPH6G.js +339 -0
  165. package/dist/cohort-TPMJZ4OH.js +66 -0
  166. package/dist/cohortSunburst-SL5F36RM.js +684 -0
  167. package/dist/cohortSunburst-SL5F36RM.js.map +7 -0
  168. package/dist/condition-QROUALBG.js +323 -0
  169. package/dist/controls-GH37YWOP.js +30 -0
  170. package/dist/controls.config-ZYCDICYF.js +30 -0
  171. package/dist/correlation-JESMUFS6.js +91 -0
  172. package/dist/customdata.inputui-T2DLAZYJ.js +280 -0
  173. package/dist/dataDownload-Z7A6ZEH7.js +325 -0
  174. package/dist/databrowser.ui-ZVMGFYJ2.js +421 -0
  175. package/dist/dictionary-KXFUR3NL.js +109 -0
  176. package/dist/dnaMethylation-2YU2HDD4.js +29 -0
  177. package/dist/dnaMethylation.integration.spec-75Y5RSDO.js +194 -0
  178. package/dist/dofetch-G5ULIRMG.js +47 -0
  179. package/dist/e2pca-75VDPO7P.js +340 -0
  180. package/dist/ep-F2Z7TNAG.js +1247 -0
  181. package/dist/ep-F2Z7TNAG.js.map +7 -0
  182. package/dist/expclust.gdc.spec-PB66FFWD.js +298 -0
  183. package/dist/facet-2RY37EFR.js +515 -0
  184. package/dist/gb-WQQFYFGF.js +77 -0
  185. package/dist/geneExpClustering-ARVZDF6G.js +240 -0
  186. package/dist/geneExpression-FR33PKJW.js +309 -0
  187. package/dist/geneExpression-O7DR5SMR.js +29 -0
  188. package/dist/geneExpression.unit.spec-HGNDSTAI.js +124 -0
  189. package/dist/geneORA-RXXQT44V.js +269 -0
  190. package/dist/geneRanking-WDQZ7TI3.js +544 -0
  191. package/dist/geneVariant-6JYBWFEJ.js +32 -0
  192. package/dist/geneVariant-TKRG5VQN.js +285 -0
  193. package/dist/geneVariant.integration.spec-L2Q2DY67.js +499 -0
  194. package/dist/genefusion.ui-DBLMBU2D.js +299 -0
  195. package/dist/geneset-2ZQF7FET.js +199 -0
  196. package/dist/genomeBrowser.spec-E5RJD53Z.js +272 -0
  197. package/dist/grin2-MJ4SYAFO.js +66 -0
  198. package/dist/grin2-VXRMV7VA.js +945 -0
  199. package/dist/hierCluster-44FPBMNL.js +55 -0
  200. package/dist/hierCluster-SU4BDK6I.js +51 -0
  201. package/dist/hierCluster.config-4OZ65GKH.js +32 -0
  202. package/dist/hierCluster.integration.spec-CHNSKZD4.js +479 -0
  203. package/dist/hierCluster.interactivity-M72CEGCW.js +45 -0
  204. package/dist/hierCluster.renderers-RM43G7ZR.js +18 -0
  205. package/dist/imagePlot-UYMWFNI4.js +152 -0
  206. package/dist/importPlot-W3HPE4LZ.js +8 -0
  207. package/dist/isoformExpression-JEMJE5WY.js +31 -0
  208. package/dist/isoformExpression.unit.spec-GOK5LFME.js +233 -0
  209. package/dist/jspdf.es.min-KB3HW45U.js +40 -0
  210. package/dist/junction-2X4AS47T.js +32 -0
  211. package/dist/junction.customTerm-MVSIUY66.js +15 -0
  212. package/dist/junction.unit.spec-HA74XQYV.js +178 -0
  213. package/dist/launch.adhoc-PZAJ6J2S.js +33 -0
  214. package/dist/leftlabel.sample-7BZKFB3I.js +253 -0
  215. package/dist/lollipop-URSFH4ZE.js +162 -0
  216. package/dist/maf-CM3ETF4N.js +451 -0
  217. package/dist/maftimeline-CRQEUTRY.js +583 -0
  218. package/dist/matrix-IBWB4A3Z.js +50 -0
  219. package/dist/matrix-SOBGWBTY.js +55 -0
  220. package/dist/matrix.cells-GSKC6FXI.js +25 -0
  221. package/dist/matrix.config-4KU5X3LQ.js +33 -0
  222. package/dist/matrix.data-XC2OTBTR.js +22 -0
  223. package/dist/matrix.groups-THXKRQSD.js +25 -0
  224. package/dist/matrix.integration.spec-GKHH4RSR.js +3156 -0
  225. package/dist/matrix.interactivity-ITXMM2ZP.js +33 -0
  226. package/dist/matrix.layout-D6SRLAXS.js +35 -0
  227. package/dist/matrix.legend-OWQAMHI2.js +19 -0
  228. package/dist/matrix.renderers-J66OAQUZ.js +30 -0
  229. package/dist/matrix.serieses-P5I4E2NB.js +18 -0
  230. package/dist/matrix.sort-CXBXF75N.js +25 -0
  231. package/dist/matrix.sort.unit.spec-RSXBKXC5.js +464 -0
  232. package/dist/matrix.sorterUi-WEZRKU63.js +15 -0
  233. package/dist/matrix.sorterUi.unit.spec-6EULDV43.js +334 -0
  234. package/dist/matrix.unit.spec-D4ZLDVDT.js +146 -0
  235. package/dist/mavb-5JAD6CPN.js +726 -0
  236. package/dist/mavb-5JAD6CPN.js.map +7 -0
  237. package/dist/mds.fimo-CQFREH3A.js +509 -0
  238. package/dist/mds.samplescatterplot-XLJITURG.js +1545 -0
  239. package/dist/mds.survivalplot-MLRD27QP.js +472 -0
  240. package/dist/multivalue-KJQCYBHA.js +79 -0
  241. package/dist/numericDictTermCluster-ZOU6R4XP.js +62 -0
  242. package/dist/oncomatrix-4RHDDJDC.js +286 -0
  243. package/dist/oncomatrix.spec-JA6DT4PP.js +439 -0
  244. package/dist/plot.2dvaf-VJWPWCOY.js +368 -0
  245. package/dist/plot.app-JNEOGNVW.js +32 -0
  246. package/dist/plot.barplot-YELRBXUB.js +93 -0
  247. package/dist/plot.boxplot-HNFOB3TV.js +142 -0
  248. package/dist/plot.brainImaging-AZYEGF3U.js +51 -0
  249. package/dist/plot.disco-L6PGGZJI.js +98 -0
  250. package/dist/plot.ssgq-UM64SSXW.js +130 -0
  251. package/dist/plot.vaf2cov-DKUKJRUP.js +249 -0
  252. package/dist/polar2-4YHPENAV.js +228 -0
  253. package/dist/profileForms-KMECFO3K.js +937 -0
  254. package/dist/profilePlot-3AXSIXCK.js +45 -0
  255. package/dist/proteinView-QWHOTL35.js +1346 -0
  256. package/dist/proteomeCohortCompare-DL2QLFL3.js +866 -0
  257. package/dist/pseudbulk.unit.spec-IWR7EZ7O.js +82 -0
  258. package/dist/pseudobulk-IC525IZ2.js +31 -0
  259. package/dist/purify.es-34NJ2D5A.js +1986 -0
  260. package/dist/purify.es-34NJ2D5A.js.map +7 -0
  261. package/dist/qualitative-LK2QEYHU.js +34 -0
  262. package/dist/qualitative-YY4NQGO5.js +241 -0
  263. package/dist/radar2-TJUPENQF.js +323 -0
  264. package/dist/radarFacility2-Q7LBWLCV.js +331 -0
  265. package/dist/rememberedGvQ.unit.spec-2GBLM5AO.js +210 -0
  266. package/dist/render-AHR6SCQX.js +29 -0
  267. package/dist/report-BPHJTRTO.js +213 -0
  268. package/dist/sampleView-CS2FB3K3.js +39 -0
  269. package/dist/samplelst-A3DHKP6U.js +102 -0
  270. package/dist/samplematrix-5X7MFT3G.js +2188 -0
  271. package/dist/sc-RCYXZMN6.js +77 -0
  272. package/dist/scatter-2ITGMX5N.js +921 -0
  273. package/dist/scatter-OAL4YOCA.js +84 -0
  274. package/dist/selectGenomeWithTklst-PB5KDW2N.js +125 -0
  275. package/dist/singleCellCellType-FEFNOHOP.js +29 -0
  276. package/dist/singleCellCellType.unit.spec-V2I32V23.js +150 -0
  277. package/dist/singleCellGeneExpression-RUQQMKDE.js +29 -0
  278. package/dist/singleCellGeneExpression.unit.spec-VCMJRMT7.js +144 -0
  279. package/dist/singleCellNumericValue-JLXZQWNT.js +29 -0
  280. package/dist/singleCellNumericValue.unit.spec-XVCZEN5K.js +412 -0
  281. package/dist/singleCellPlot-4EBYWOJ2.js +44 -0
  282. package/dist/singlecell-UKZJAYVH.js +1562 -0
  283. package/dist/singlecell-VNRWPXGV.js +77 -0
  284. package/dist/snp-2RJDJQZC.js +29 -0
  285. package/dist/snp.unit.spec-Z4DNBFAH.js +167 -0
  286. package/dist/snplocus-OZLIZ7R7.js +200 -0
  287. package/dist/snplst-EVRJ4OCL.js +36 -0
  288. package/dist/spliceevent.a53ss.diagram-N5UXX4OX.js +142 -0
  289. package/dist/spliceevent.exonskip.diagram-WBNFLW4V.js +274 -0
  290. package/dist/spliceevent.noeventdiagram-EI72A6L3.js +451 -0
  291. package/dist/ssGSEA-NONMMNF7.js +29 -0
  292. package/dist/ssGSEA.unit.spec-7JDPNLZA.js +79 -0
  293. package/dist/stattable-NNUHKPF4.js +112 -0
  294. package/dist/studyCatalog-KMLE7Q55.js +457 -0
  295. package/dist/summarizeCnvGeneexp-AHCGPQLE.js +154 -0
  296. package/dist/summarizeGeneexpSurvival-NCST7HDQ.js +101 -0
  297. package/dist/summarizeMutationCnv-VUTQYXO6.js +155 -0
  298. package/dist/summarizeMutationDiagnosis-TFU2HUHQ.js +31 -0
  299. package/dist/summarizeMutationSurvival-F4CJILS3.js +95 -0
  300. package/dist/summary-QQZW7BEE.js +40 -0
  301. package/dist/summary.integration.spec-FILIPD3W.js +405 -0
  302. package/dist/summaryInput-RMY226Y3.js +238 -0
  303. package/dist/sunburst-Y4LNCKMR.js +274 -0
  304. package/dist/survival-4FYQHQHX.js +49 -0
  305. package/dist/survival-6GC267GY.js +1246 -0
  306. package/dist/survival.integration.spec-5ERXR6MG.js +609 -0
  307. package/dist/svg2pdf.es.min-KKHWPFWG.js +3157 -0
  308. package/dist/svgraph-XIQIA7OJ.js +1377 -0
  309. package/dist/svmr-45YJKRQP.js +3834 -0
  310. package/dist/svmr-45YJKRQP.js.map +7 -0
  311. package/dist/swimmer-643B5Q6F.js +741 -0
  312. package/dist/table-JQIBRXTJ.js +192 -0
  313. package/dist/termCollection-LU5NW6KT.js +247 -0
  314. package/dist/termCollection-XZCPBXRV.js +29 -0
  315. package/dist/termCollection.unit.spec-H5LBV3N4.js +295 -0
  316. package/dist/termCollectionFractionSelection-3YHOFXEL.js +38 -0
  317. package/dist/termCollectionFractionSelection.unit.spec-G5X3Y5YI.js +184 -0
  318. package/dist/tk-NPWNBXLB.js +37 -0
  319. package/dist/tk-YSW5NPW2.js +1116 -0
  320. package/dist/tp.ui-W6RG7V2A.js +1453 -0
  321. package/dist/tp.ui-W6RG7V2A.js.map +7 -0
  322. package/dist/tvs.categorical-TUX6KRZI.js +28 -0
  323. package/dist/tvs.condition-2CH25PLO.js +160 -0
  324. package/dist/tvs.dt-YKP3F75O.js +30 -0
  325. package/dist/tvs.dtcnv.categorical-QBJWJNHZ.js +31 -0
  326. package/dist/tvs.dtcnv.continuous-MV25OLBD.js +63 -0
  327. package/dist/tvs.dtfusion-SJ64HNKE.js +31 -0
  328. package/dist/tvs.dtitd-WQLHZK2P.js +31 -0
  329. package/dist/tvs.dtsnvindel-WMFJ7W7U.js +31 -0
  330. package/dist/tvs.dtsv-GKEC5OGA.js +31 -0
  331. package/dist/tvs.multivalue-LFWMQETN.js +84 -0
  332. package/dist/tvs.numeric-63NVZG7U.js +32 -0
  333. package/dist/tvs.samplelst-DEMMYRKK.js +95 -0
  334. package/dist/tvs.survival-M4QUVP5L.js +110 -0
  335. package/dist/tvs.termCollection-J367GZY3.js +118 -0
  336. package/dist/vocabulary-RAVWS5IS.js +32 -0
  337. package/dist/wsi.direct-UY3SIIAD.js +11514 -0
  338. package/dist/wsi.direct-UY3SIIAD.js.map +7 -0
  339. package/package.json +3 -3
  340. package/dist/2dmaf-RRHATFHO.js +0 -1362
  341. package/dist/AggMatrixInput-4UHBCXYH.js +0 -402
  342. package/dist/AggregateMatrix-IJE5CM5Y.js +0 -37
  343. package/dist/AppHeader-UXGLRW6C.js +0 -826
  344. package/dist/BoxPlot-GQYC22KY.js +0 -1233
  345. package/dist/CorrelationVolcano-5CWRWZTI.js +0 -613
  346. package/dist/Cuminc-TYHKAPRK.js +0 -1217
  347. package/dist/DE-UUFQGSOI.js +0 -85
  348. package/dist/DEinput-DU7MF4YY.js +0 -497
  349. package/dist/DM-SSI5KUBC.js +0 -86
  350. package/dist/DifferentialAnalysis-G6FE2MXY.js +0 -235
  351. package/dist/Disco-B3KGNEAW.js +0 -3384
  352. package/dist/Disco.UI-UNPUBQCN.js +0 -239
  353. package/dist/DmrPlot-27NGDMT4.js +0 -358
  354. package/dist/DmrPlot-27NGDMT4.js.map +0 -7
  355. package/dist/GB-SXACUA4V.js +0 -1388
  356. package/dist/GSEA-EHMBA3TF.js +0 -870
  357. package/dist/GeneExpInput-NDXISF2U.js +0 -38
  358. package/dist/Geomap-3CNT227W.js +0 -80
  359. package/dist/HicApp-VQBUB6EZ.js +0 -2240
  360. package/dist/IDCViewer-DTOE7KDX.js +0 -10808
  361. package/dist/NumBinaryEditor-IVZ4MMQT.js +0 -274
  362. package/dist/NumBinaryEditor.unit.spec-3BSQ6FM4.js +0 -308
  363. package/dist/NumContEditor-CUZHU3IO.js +0 -100
  364. package/dist/NumContEditor.unit.spec-SCQFD2Y7.js +0 -160
  365. package/dist/NumCustomBinEditor-UEEYZ4ZO.js +0 -29
  366. package/dist/NumCustomBinEditor.unit.spec-GYS35OQV.js +0 -393
  367. package/dist/NumDiscreteEditor-IT7NIXTV.js +0 -165
  368. package/dist/NumDiscreteEditor.unit.spec-LB6VLAWO.js +0 -229
  369. package/dist/NumRegularBinEditor-FF6UXZWN.js +0 -29
  370. package/dist/NumRegularBinEditor.unit.spec-Z4S5LH2C.js +0 -274
  371. package/dist/NumSplineEditor-IW5WEN3P.js +0 -205
  372. package/dist/NumSplineEditor.unit.spec-PAEN3SAD.js +0 -220
  373. package/dist/NumericDensity-CPJIQLYT.js +0 -29
  374. package/dist/NumericDensity.unit.spec-4KHECHVU.js +0 -414
  375. package/dist/NumericHandler-SEFTQJDM.js +0 -30
  376. package/dist/NumericHandler.unit.spec-UGDR3476.js +0 -210
  377. package/dist/ProteomeInput-NYPUYVN5.js +0 -610
  378. package/dist/Regression-WDSISHYL.js +0 -1412
  379. package/dist/RunChart2-2NPADXUR.js +0 -744
  380. package/dist/SC-EWDBPHEL.js +0 -1344
  381. package/dist/SC-EWDBPHEL.js.map +0 -7
  382. package/dist/Violin-POGGPCZY.js +0 -1095
  383. package/dist/Volcano-U2B4KEUL.js +0 -2452
  384. package/dist/Volcano-U2B4KEUL.js.map +0 -7
  385. package/dist/Wsi-G7OCAJ3R.js +0 -625
  386. package/dist/Wsi-G7OCAJ3R.js.map +0 -7
  387. package/dist/adSandbox-SUCX6DAQ.js +0 -29
  388. package/dist/animatedBubbleChart-SDBWJELZ.js +0 -542
  389. package/dist/app-ATQM5PKI.js +0 -28
  390. package/dist/app-BCKEWJCY.js +0 -38
  391. package/dist/bam-QK2ZLZDI.js +0 -872
  392. package/dist/barchart-RHDKI3NZ.js +0 -38
  393. package/dist/barchart2-CS3E6FOY.js +0 -305
  394. package/dist/block-RQ3HTJVP.js +0 -6232
  395. package/dist/block.init-T33F47DO.js +0 -29
  396. package/dist/block.mds.expressionrank-LQD6MN6Z.js +0 -350
  397. package/dist/block.mds.geneboxplot-N5XHHVR7.js +0 -819
  398. package/dist/block.mds.junction-JD4WQUSH.js +0 -1534
  399. package/dist/block.mds.svcnv-LCTYWXL2.js +0 -6408
  400. package/dist/block.svg-2F3RGTI3.js +0 -155
  401. package/dist/block.tk.aicheck-BOF6WZ5E.js +0 -274
  402. package/dist/block.tk.bam-5GBYEQBM.js +0 -1897
  403. package/dist/block.tk.bedgraphdot-LVQEP4RS.js +0 -375
  404. package/dist/block.tk.bigwig.ui-HHBO4JAC.js +0 -202
  405. package/dist/block.tk.hicstraw-JBO4UEOA.js +0 -814
  406. package/dist/block.tk.junction-S5S2N7FK.js +0 -2353
  407. package/dist/block.tk.junction.textmatrixui-DNQL7WB5.js +0 -190
  408. package/dist/block.tk.ld-JHQNR67E.js +0 -90
  409. package/dist/block.tk.menu-7JBJOY2O.js +0 -1050
  410. package/dist/block.tk.pgv-FQPREV6P.js +0 -934
  411. package/dist/brainImaging-HEWGZZNY.js +0 -550
  412. package/dist/brainRegions-QUGB7YUW.js +0 -213
  413. package/dist/bubbleHeatmap-OZRONGAX.js +0 -374
  414. package/dist/cellTypeBubbleHeatmap-N7NDE325.js +0 -274
  415. package/dist/chunk-2FWSNJEN.js +0 -54
  416. package/dist/chunk-2JIKMCJR.js +0 -34
  417. package/dist/chunk-3SPEW6R6.js +0 -102
  418. package/dist/chunk-5G6O5RYM.js +0 -123
  419. package/dist/chunk-65DO5IKM.js +0 -299
  420. package/dist/chunk-6D4HOTG7.js +0 -1844
  421. package/dist/chunk-6Q5SOSSU.js +0 -2685
  422. package/dist/chunk-7JHIUS54.js +0 -626
  423. package/dist/chunk-7X347XMF.js +0 -397
  424. package/dist/chunk-ABLG7GUS.js +0 -55
  425. package/dist/chunk-AFEFZ74T.js +0 -276
  426. package/dist/chunk-AIC43DTG.js +0 -243
  427. package/dist/chunk-AJXP4AV7.js +0 -182
  428. package/dist/chunk-AMW5LCUB.js +0 -424
  429. package/dist/chunk-AV2IH5K2.js +0 -156
  430. package/dist/chunk-B3WLXXGY.js +0 -263
  431. package/dist/chunk-BG6GAROI.js +0 -302
  432. package/dist/chunk-BIJOXCLN.js +0 -2277
  433. package/dist/chunk-BIJOXCLN.js.map +0 -7
  434. package/dist/chunk-BU6PAOGA.js +0 -103
  435. package/dist/chunk-BZV2BJDU.js +0 -13624
  436. package/dist/chunk-C2TII2FF.js +0 -96
  437. package/dist/chunk-CTFHEDG2.js +0 -550
  438. package/dist/chunk-CXEECHP5.js +0 -37
  439. package/dist/chunk-CZK4EV3Y.js +0 -1339
  440. package/dist/chunk-D35GNF3Y.js +0 -2325
  441. package/dist/chunk-D35GNF3Y.js.map +0 -7
  442. package/dist/chunk-DFZWE3TR.js +0 -170
  443. package/dist/chunk-DX23HAW7.js +0 -1219
  444. package/dist/chunk-E7XHA4YL.js +0 -1988
  445. package/dist/chunk-EDFBRXX2.js +0 -54
  446. package/dist/chunk-F23EQSGU.js +0 -26
  447. package/dist/chunk-F2EEQ7KG.js +0 -379
  448. package/dist/chunk-F5FFI7Z7.js +0 -468
  449. package/dist/chunk-FK5NL2DF.js +0 -141
  450. package/dist/chunk-FVZTRWAO.js +0 -692
  451. package/dist/chunk-GDHQVEIO.js +0 -217
  452. package/dist/chunk-GSVB4XNS.js +0 -2799
  453. package/dist/chunk-GVAV4VRI.js +0 -418
  454. package/dist/chunk-H2FELGYK.js +0 -140
  455. package/dist/chunk-HFKZGMVV.js +0 -839
  456. package/dist/chunk-HJARHSDC.js +0 -274
  457. package/dist/chunk-HWNQOADC.js +0 -182
  458. package/dist/chunk-HXRG7XYB.js +0 -54
  459. package/dist/chunk-J5KCTRJC.js +0 -80
  460. package/dist/chunk-JMFVXWDX.js +0 -59
  461. package/dist/chunk-KGX2OIR4.js +0 -203
  462. package/dist/chunk-L2NPLA43.js +0 -257
  463. package/dist/chunk-L2WOLNZK.js +0 -339
  464. package/dist/chunk-LQKMDIRB.js +0 -466
  465. package/dist/chunk-LSQ5AQ6Q.js +0 -562
  466. package/dist/chunk-MBQIHLGI.js +0 -1269
  467. package/dist/chunk-MBQIHLGI.js.map +0 -7
  468. package/dist/chunk-MFR4WWDM.js +0 -14
  469. package/dist/chunk-MU4Z2MX2.js +0 -340
  470. package/dist/chunk-NHMIMTJA.js +0 -281
  471. package/dist/chunk-NNDKYTUV.js +0 -25353
  472. package/dist/chunk-NNDKYTUV.js.map +0 -7
  473. package/dist/chunk-NPBN3PPZ.js +0 -6358
  474. package/dist/chunk-NPBN3PPZ.js.map +0 -7
  475. package/dist/chunk-NULQJF73.js +0 -56
  476. package/dist/chunk-NYO7YANQ.js +0 -294
  477. package/dist/chunk-OBNHXAYG.js +0 -194
  478. package/dist/chunk-PETYR7LC.js +0 -134
  479. package/dist/chunk-PLFPXOGX.js +0 -119
  480. package/dist/chunk-PQVHRM4L.js +0 -5213
  481. package/dist/chunk-QLUTQPZE.js +0 -240
  482. package/dist/chunk-QNQ2ZYT7.js +0 -38
  483. package/dist/chunk-QYCPIVCX.js +0 -255
  484. package/dist/chunk-RZ2THVK4.js +0 -516
  485. package/dist/chunk-S4IZ4VM7.js +0 -31
  486. package/dist/chunk-SFUDTUXF.js +0 -382
  487. package/dist/chunk-SUT75MRI.js +0 -102
  488. package/dist/chunk-SYLYLOHK.js +0 -56
  489. package/dist/chunk-TEFWF3SK.js +0 -176
  490. package/dist/chunk-TPSVPMAN.js +0 -70
  491. package/dist/chunk-V4ZKHM6D.js +0 -2960
  492. package/dist/chunk-V7DNHPZD.js +0 -4373
  493. package/dist/chunk-VPMQDTYR.js +0 -194
  494. package/dist/chunk-VV6JIG4D.js +0 -444
  495. package/dist/chunk-WTAPOH2W.js +0 -22699
  496. package/dist/chunk-WTAPOH2W.js.map +0 -7
  497. package/dist/chunk-WU3YXPRE.js +0 -217
  498. package/dist/chunk-X2HWRISK.js +0 -480
  499. package/dist/chunk-X77QVINS.js +0 -49
  500. package/dist/chunk-XXFLJWTQ.js +0 -237
  501. package/dist/chunk-ZPWBYHNE.js +0 -5799
  502. package/dist/chunk-ZPWBYHNE.js.map +0 -7
  503. package/dist/cohort-ATIZW34H.js +0 -66
  504. package/dist/cohortSunburst-WQK2UV25.js +0 -686
  505. package/dist/cohortSunburst-WQK2UV25.js.map +0 -7
  506. package/dist/condition-SGJIDZNB.js +0 -323
  507. package/dist/controls-JQCMGPXP.js +0 -30
  508. package/dist/controls.config-WQHVQAIJ.js +0 -30
  509. package/dist/correlation-S3MN3L5Q.js +0 -91
  510. package/dist/customdata.inputui-LGTGMJBZ.js +0 -280
  511. package/dist/dataDownload-FAWN2WKE.js +0 -325
  512. package/dist/databrowser.ui-KF3LWQXG.js +0 -421
  513. package/dist/dictionary-EVLEOT72.js +0 -109
  514. package/dist/dnaMethylation-J3SPEM4S.js +0 -29
  515. package/dist/dnaMethylation.integration.spec-CTA53YCT.js +0 -194
  516. package/dist/dofetch-3C3MI5NR.js +0 -47
  517. package/dist/e2pca-PTWPY5WP.js +0 -340
  518. package/dist/ep-MS4LQQDR.js +0 -1245
  519. package/dist/ep-MS4LQQDR.js.map +0 -7
  520. package/dist/expclust.gdc.spec-S5FE4MMD.js +0 -298
  521. package/dist/facet-FSOIZJCA.js +0 -515
  522. package/dist/gb-YDEOK7NW.js +0 -77
  523. package/dist/geneExpClustering-37JKKFW3.js +0 -240
  524. package/dist/geneExpression-G6ODP3VY.js +0 -29
  525. package/dist/geneExpression-VQPRFNKE.js +0 -309
  526. package/dist/geneExpression.unit.spec-ZHXCUG6Q.js +0 -124
  527. package/dist/geneORA-E3PSS3CI.js +0 -269
  528. package/dist/geneRanking-MK3YYINC.js +0 -544
  529. package/dist/geneVariant-LEMAVFOY.js +0 -32
  530. package/dist/geneVariant-NNSB7JLS.js +0 -285
  531. package/dist/geneVariant.integration.spec-6CC5UAOP.js +0 -499
  532. package/dist/genefusion.ui-5NCQIQPN.js +0 -299
  533. package/dist/geneset-ZX4V3CFB.js +0 -199
  534. package/dist/genomeBrowser.spec-J7ISXY6H.js +0 -272
  535. package/dist/grin2-GN3DQNON.js +0 -945
  536. package/dist/grin2-LBGBBB4L.js +0 -66
  537. package/dist/hierCluster-5JURTKAZ.js +0 -55
  538. package/dist/hierCluster-BJ5VBPXR.js +0 -51
  539. package/dist/hierCluster.config-4EERP4KK.js +0 -32
  540. package/dist/hierCluster.integration.spec-VR4GULRV.js +0 -479
  541. package/dist/hierCluster.interactivity-SMTQOKUY.js +0 -45
  542. package/dist/hierCluster.renderers-PAME7BWU.js +0 -18
  543. package/dist/imagePlot-4LMIKBVE.js +0 -152
  544. package/dist/importPlot-3CG6ASNH.js +0 -8
  545. package/dist/isoformExpression-VCDNKTZ6.js +0 -31
  546. package/dist/isoformExpression.unit.spec-ZXYY37TA.js +0 -233
  547. package/dist/jspdf.es.min-V7ONHJJV.js +0 -40
  548. package/dist/junction-5DXJO4PS.js +0 -32
  549. package/dist/junction.customTerm-UOPUSEOE.js +0 -15
  550. package/dist/junction.unit.spec-F35E3GJW.js +0 -178
  551. package/dist/launch.adhoc-V2HTCQGD.js +0 -33
  552. package/dist/leftlabel.sample-V7O2EC36.js +0 -253
  553. package/dist/lollipop-RNRZLG64.js +0 -162
  554. package/dist/maf-W6SF6BJS.js +0 -451
  555. package/dist/maftimeline-NABCAMHG.js +0 -583
  556. package/dist/matrix-JC6AJT2N.js +0 -55
  557. package/dist/matrix-UCHESWVK.js +0 -50
  558. package/dist/matrix.cells-B4L42TBM.js +0 -25
  559. package/dist/matrix.config-6US3AAH7.js +0 -33
  560. package/dist/matrix.data-FYFXYDA3.js +0 -22
  561. package/dist/matrix.groups-Y7DEG3GS.js +0 -25
  562. package/dist/matrix.integration.spec-KXX7SFX5.js +0 -3156
  563. package/dist/matrix.interactivity-NHWG4WCC.js +0 -33
  564. package/dist/matrix.layout-5DQNT7DD.js +0 -35
  565. package/dist/matrix.legend-OY7IF6AS.js +0 -19
  566. package/dist/matrix.renderers-GYOXGHPU.js +0 -30
  567. package/dist/matrix.serieses-657TLDAV.js +0 -18
  568. package/dist/matrix.sort-IMA2ES3T.js +0 -25
  569. package/dist/matrix.sort.unit.spec-S6BAFYPR.js +0 -464
  570. package/dist/matrix.sorterUi-77F36Q5H.js +0 -15
  571. package/dist/matrix.sorterUi.unit.spec-V5NVQGD5.js +0 -334
  572. package/dist/matrix.unit.spec-R4NMTZYQ.js +0 -146
  573. package/dist/mavb-MRCVMBPD.js +0 -723
  574. package/dist/mavb-MRCVMBPD.js.map +0 -7
  575. package/dist/mds.fimo-5DCH5BEM.js +0 -509
  576. package/dist/mds.samplescatterplot-VIBCS5M6.js +0 -1545
  577. package/dist/mds.survivalplot-AZ7LJDZZ.js +0 -472
  578. package/dist/multivalue-4QKGYYW2.js +0 -79
  579. package/dist/numericDictTermCluster-GLLG6IK2.js +0 -62
  580. package/dist/oncomatrix-R32ZPMX7.js +0 -286
  581. package/dist/oncomatrix.spec-BMK6LMBS.js +0 -439
  582. package/dist/plot.2dvaf-46FT53MF.js +0 -368
  583. package/dist/plot.app-7EE4YCV4.js +0 -32
  584. package/dist/plot.barplot-FK4J2G7K.js +0 -93
  585. package/dist/plot.boxplot-ATY4LK3X.js +0 -142
  586. package/dist/plot.brainImaging-S7B547V4.js +0 -51
  587. package/dist/plot.disco-K5MMC2GD.js +0 -98
  588. package/dist/plot.ssgq-B3OVMZFD.js +0 -130
  589. package/dist/plot.vaf2cov-RBHDQULW.js +0 -249
  590. package/dist/polar2-GECELCTG.js +0 -228
  591. package/dist/profileForms-2USYOA34.js +0 -937
  592. package/dist/profilePlot-YGD2CF6P.js +0 -45
  593. package/dist/proteinView-FCPWJLGU.js +0 -1346
  594. package/dist/proteomeCohortCompare-TYYUF5A5.js +0 -866
  595. package/dist/pseudbulk.unit.spec-UVVRP6NR.js +0 -82
  596. package/dist/pseudobulk-ZIN5VJGB.js +0 -31
  597. package/dist/purify.es-3S3RVH5Y.js +0 -1594
  598. package/dist/purify.es-3S3RVH5Y.js.map +0 -7
  599. package/dist/qualitative-27BZGASV.js +0 -34
  600. package/dist/qualitative-N4F6NITI.js +0 -241
  601. package/dist/radar2-X465RPJX.js +0 -323
  602. package/dist/radarFacility2-AE7BA62N.js +0 -331
  603. package/dist/rememberedGvQ.unit.spec-4PDIU5RY.js +0 -210
  604. package/dist/render-TD2QWOHT.js +0 -29
  605. package/dist/report-3Y2OWDF7.js +0 -213
  606. package/dist/sampleView-BUMMYRHJ.js +0 -39
  607. package/dist/samplelst-BWK53BLI.js +0 -102
  608. package/dist/samplematrix-RQU43UYR.js +0 -2188
  609. package/dist/sc-LCBFWCZZ.js +0 -77
  610. package/dist/scatter-6S5I7OW3.js +0 -921
  611. package/dist/scatter-MJELX75N.js +0 -84
  612. package/dist/selectGenomeWithTklst-WAVXHXR5.js +0 -125
  613. package/dist/singleCellCellType-WMCAJ7JF.js +0 -29
  614. package/dist/singleCellCellType.unit.spec-4Z46ZT5Q.js +0 -150
  615. package/dist/singleCellGeneExpression-7Q5ZJT4R.js +0 -29
  616. package/dist/singleCellGeneExpression.unit.spec-6C7PDGRH.js +0 -144
  617. package/dist/singleCellNumericValue-QGYITZRC.js +0 -29
  618. package/dist/singleCellNumericValue.unit.spec-MQUKPEZJ.js +0 -412
  619. package/dist/singleCellPlot-JJMFJ2KQ.js +0 -44
  620. package/dist/singlecell-J23S3JR2.js +0 -1562
  621. package/dist/singlecell-Y4OGUWEC.js +0 -77
  622. package/dist/snp-IO6TKWGD.js +0 -29
  623. package/dist/snp.unit.spec-X7ILEEPO.js +0 -167
  624. package/dist/snplocus-Z2NGIKMO.js +0 -200
  625. package/dist/snplst-XCS2FCQV.js +0 -36
  626. package/dist/spliceevent.a53ss.diagram-F3S4BRVG.js +0 -142
  627. package/dist/spliceevent.exonskip.diagram-AXCDJKH4.js +0 -274
  628. package/dist/spliceevent.noeventdiagram-UK3X667E.js +0 -451
  629. package/dist/ssGSEA-ZRPNQKJ5.js +0 -29
  630. package/dist/ssGSEA.unit.spec-DG5ZHLC7.js +0 -79
  631. package/dist/stattable-XYSC3CYU.js +0 -112
  632. package/dist/studyCatalog-Y75LMI62.js +0 -457
  633. package/dist/summarizeCnvGeneexp-H2NP7VLU.js +0 -154
  634. package/dist/summarizeGeneexpSurvival-HTCD3VQQ.js +0 -101
  635. package/dist/summarizeMutationCnv-UEGXWK2P.js +0 -155
  636. package/dist/summarizeMutationDiagnosis-MJGWP7IT.js +0 -31
  637. package/dist/summarizeMutationSurvival-55JW5LA6.js +0 -95
  638. package/dist/summary-HJO23RGB.js +0 -40
  639. package/dist/summary.integration.spec-OWI2C2N5.js +0 -405
  640. package/dist/summaryInput-RL2JXRDE.js +0 -238
  641. package/dist/sunburst-JFY6V5E2.js +0 -274
  642. package/dist/survival-6FLR4YCJ.js +0 -1246
  643. package/dist/survival-PBBU6PA5.js +0 -49
  644. package/dist/survival.integration.spec-WAKTGYGP.js +0 -609
  645. package/dist/svg2pdf.es.min-NIFE2BIE.js +0 -3157
  646. package/dist/svgraph-WD3DUZV7.js +0 -1377
  647. package/dist/svmr-AP6ZFO7S.js +0 -3832
  648. package/dist/svmr-AP6ZFO7S.js.map +0 -7
  649. package/dist/swimmer-VPKSBV6V.js +0 -741
  650. package/dist/table-GX3VJLPZ.js +0 -192
  651. package/dist/termCollection-QE7U5QBD.js +0 -29
  652. package/dist/termCollection-YQ332WKB.js +0 -247
  653. package/dist/termCollection.unit.spec-ELLN7VRA.js +0 -295
  654. package/dist/termCollectionFractionSelection-V3RP5KAT.js +0 -38
  655. package/dist/termCollectionFractionSelection.unit.spec-JR7Q7TJI.js +0 -184
  656. package/dist/tk-GD2KJM5W.js +0 -1116
  657. package/dist/tk-J5VPFEX6.js +0 -37
  658. package/dist/tp.ui-5K3AAXDW.js +0 -1449
  659. package/dist/tp.ui-5K3AAXDW.js.map +0 -7
  660. package/dist/tvs.categorical-RPACB4VU.js +0 -28
  661. package/dist/tvs.condition-O6JBUM6D.js +0 -160
  662. package/dist/tvs.dt-5EVBSRX3.js +0 -30
  663. package/dist/tvs.dtcnv.categorical-Y5YHBZNC.js +0 -31
  664. package/dist/tvs.dtcnv.continuous-WP322QUP.js +0 -63
  665. package/dist/tvs.dtfusion-CCMUFDMQ.js +0 -31
  666. package/dist/tvs.dtitd-P3ED3MWA.js +0 -31
  667. package/dist/tvs.dtsnvindel-X2MXPLC6.js +0 -31
  668. package/dist/tvs.dtsv-4FOWFNVV.js +0 -31
  669. package/dist/tvs.multivalue-IRF467ZK.js +0 -84
  670. package/dist/tvs.numeric-C7FDCGCS.js +0 -32
  671. package/dist/tvs.samplelst-CBU6ATI5.js +0 -95
  672. package/dist/tvs.survival-3K5ASAXV.js +0 -110
  673. package/dist/tvs.termCollection-MXEWO6KJ.js +0 -118
  674. package/dist/vocabulary-GQBHDP3K.js +0 -32
  675. package/dist/wsi.direct-25JUHWEF.js +0 -8339
  676. package/dist/wsi.direct-25JUHWEF.js.map +0 -7
  677. /package/dist/{2dmaf-RRHATFHO.js.map → 2dmaf-BZWQ4YZF.js.map} +0 -0
  678. /package/dist/{AggMatrixInput-4UHBCXYH.js.map → AggMatrixInput-OXUENYYF.js.map} +0 -0
  679. /package/dist/{AggregateMatrix-IJE5CM5Y.js.map → AggregateMatrix-7PYLWY3X.js.map} +0 -0
  680. /package/dist/{AppHeader-UXGLRW6C.js.map → AppHeader-QOLLABH4.js.map} +0 -0
  681. /package/dist/{BoxPlot-GQYC22KY.js.map → BoxPlot-PDRYKWXF.js.map} +0 -0
  682. /package/dist/{CorrelationVolcano-5CWRWZTI.js.map → CorrelationVolcano-Z3ABRHL6.js.map} +0 -0
  683. /package/dist/{Cuminc-TYHKAPRK.js.map → Cuminc-ATQT3KDO.js.map} +0 -0
  684. /package/dist/{DE-UUFQGSOI.js.map → DE-5LMMF5QB.js.map} +0 -0
  685. /package/dist/{DEinput-DU7MF4YY.js.map → DEinput-Y2VXYH54.js.map} +0 -0
  686. /package/dist/{DM-SSI5KUBC.js.map → DM-ACIWRZS2.js.map} +0 -0
  687. /package/dist/{DifferentialAnalysis-G6FE2MXY.js.map → DifferentialAnalysis-23WQKT6I.js.map} +0 -0
  688. /package/dist/{Disco-B3KGNEAW.js.map → Disco-5UBCTVTY.js.map} +0 -0
  689. /package/dist/{Disco.UI-UNPUBQCN.js.map → Disco.UI-6YCIW3QK.js.map} +0 -0
  690. /package/dist/{GB-SXACUA4V.js.map → GB-QZZG4DHJ.js.map} +0 -0
  691. /package/dist/{GSEA-EHMBA3TF.js.map → GSEA-3WW4GEXE.js.map} +0 -0
  692. /package/dist/{GeneExpInput-NDXISF2U.js.map → GeneExpInput-PW6HP5LO.js.map} +0 -0
  693. /package/dist/{Geomap-3CNT227W.js.map → Geomap-YDUXJ65P.js.map} +0 -0
  694. /package/dist/{HicApp-VQBUB6EZ.js.map → HicApp-CXHLK5UM.js.map} +0 -0
  695. /package/dist/{IDCViewer-DTOE7KDX.js.map → IDCViewer-ID46XKWW.js.map} +0 -0
  696. /package/dist/{NumBinaryEditor-IVZ4MMQT.js.map → NumBinaryEditor-7HEQD3UO.js.map} +0 -0
  697. /package/dist/{NumBinaryEditor.unit.spec-3BSQ6FM4.js.map → NumBinaryEditor.unit.spec-CE5FZMLZ.js.map} +0 -0
  698. /package/dist/{NumContEditor-CUZHU3IO.js.map → NumContEditor-7J4IODVT.js.map} +0 -0
  699. /package/dist/{NumContEditor.unit.spec-SCQFD2Y7.js.map → NumContEditor.unit.spec-H3DEDHGO.js.map} +0 -0
  700. /package/dist/{NumCustomBinEditor-UEEYZ4ZO.js.map → NumCustomBinEditor-URE4NOZI.js.map} +0 -0
  701. /package/dist/{NumCustomBinEditor.unit.spec-GYS35OQV.js.map → NumCustomBinEditor.unit.spec-XE5AUM45.js.map} +0 -0
  702. /package/dist/{NumDiscreteEditor-IT7NIXTV.js.map → NumDiscreteEditor-PBV2QXRU.js.map} +0 -0
  703. /package/dist/{NumDiscreteEditor.unit.spec-LB6VLAWO.js.map → NumDiscreteEditor.unit.spec-2TWQ7DAZ.js.map} +0 -0
  704. /package/dist/{NumRegularBinEditor-FF6UXZWN.js.map → NumRegularBinEditor-MG27BRWO.js.map} +0 -0
  705. /package/dist/{NumRegularBinEditor.unit.spec-Z4S5LH2C.js.map → NumRegularBinEditor.unit.spec-6NJLP3BX.js.map} +0 -0
  706. /package/dist/{NumSplineEditor-IW5WEN3P.js.map → NumSplineEditor-ZZKMWU2V.js.map} +0 -0
  707. /package/dist/{NumSplineEditor.unit.spec-PAEN3SAD.js.map → NumSplineEditor.unit.spec-T3C2YPU5.js.map} +0 -0
  708. /package/dist/{NumericDensity-CPJIQLYT.js.map → NumericDensity-BUEAEQZD.js.map} +0 -0
  709. /package/dist/{NumericDensity.unit.spec-4KHECHVU.js.map → NumericDensity.unit.spec-XZ77VRO7.js.map} +0 -0
  710. /package/dist/{NumericHandler-SEFTQJDM.js.map → NumericHandler-RW2NAEBZ.js.map} +0 -0
  711. /package/dist/{NumericHandler.unit.spec-UGDR3476.js.map → NumericHandler.unit.spec-BQGTQBV6.js.map} +0 -0
  712. /package/dist/{ProteomeInput-NYPUYVN5.js.map → ProteomeInput-RL6IDTOA.js.map} +0 -0
  713. /package/dist/{Regression-WDSISHYL.js.map → Regression-EVGHTLUT.js.map} +0 -0
  714. /package/dist/{RunChart2-2NPADXUR.js.map → RunChart2-NK2KWOZ7.js.map} +0 -0
  715. /package/dist/{Violin-POGGPCZY.js.map → Violin-2HIRC6A2.js.map} +0 -0
  716. /package/dist/{adSandbox-SUCX6DAQ.js.map → adSandbox-T2HORPLC.js.map} +0 -0
  717. /package/dist/{animatedBubbleChart-SDBWJELZ.js.map → animatedBubbleChart-PS7KMVSY.js.map} +0 -0
  718. /package/dist/{app-ATQM5PKI.js.map → app-FKPGNJDN.js.map} +0 -0
  719. /package/dist/{app-BCKEWJCY.js.map → app-NPGVS6X4.js.map} +0 -0
  720. /package/dist/{bam-QK2ZLZDI.js.map → bam-QQ54FE3A.js.map} +0 -0
  721. /package/dist/{barchart-RHDKI3NZ.js.map → barchart-4DLCN7NL.js.map} +0 -0
  722. /package/dist/{barchart2-CS3E6FOY.js.map → barchart2-H65GFNNQ.js.map} +0 -0
  723. /package/dist/{block-RQ3HTJVP.js.map → block-RAYA73ZN.js.map} +0 -0
  724. /package/dist/{block.init-T33F47DO.js.map → block.init-VE3TQWH4.js.map} +0 -0
  725. /package/dist/{block.mds.expressionrank-LQD6MN6Z.js.map → block.mds.expressionrank-YLFQQHZJ.js.map} +0 -0
  726. /package/dist/{block.mds.geneboxplot-N5XHHVR7.js.map → block.mds.geneboxplot-6V44H7EC.js.map} +0 -0
  727. /package/dist/{block.mds.junction-JD4WQUSH.js.map → block.mds.junction-DEIUZOQK.js.map} +0 -0
  728. /package/dist/{block.mds.svcnv-LCTYWXL2.js.map → block.mds.svcnv-PTP7JYS2.js.map} +0 -0
  729. /package/dist/{block.svg-2F3RGTI3.js.map → block.svg-RGDXDKV6.js.map} +0 -0
  730. /package/dist/{block.tk.aicheck-BOF6WZ5E.js.map → block.tk.aicheck-MFXHYAIN.js.map} +0 -0
  731. /package/dist/{block.tk.bam-5GBYEQBM.js.map → block.tk.bam-ICTVSRQ6.js.map} +0 -0
  732. /package/dist/{block.tk.bedgraphdot-LVQEP4RS.js.map → block.tk.bedgraphdot-X5AYHRUJ.js.map} +0 -0
  733. /package/dist/{block.tk.bigwig.ui-HHBO4JAC.js.map → block.tk.bigwig.ui-FS3DA5JQ.js.map} +0 -0
  734. /package/dist/{block.tk.hicstraw-JBO4UEOA.js.map → block.tk.hicstraw-MBBA3H4E.js.map} +0 -0
  735. /package/dist/{block.tk.junction-S5S2N7FK.js.map → block.tk.junction-L3YVWWOR.js.map} +0 -0
  736. /package/dist/{block.tk.junction.textmatrixui-DNQL7WB5.js.map → block.tk.junction.textmatrixui-PU3C7W6B.js.map} +0 -0
  737. /package/dist/{block.tk.ld-JHQNR67E.js.map → block.tk.ld-SNKUZDPW.js.map} +0 -0
  738. /package/dist/{block.tk.menu-7JBJOY2O.js.map → block.tk.menu-NARHQW7Y.js.map} +0 -0
  739. /package/dist/{block.tk.pgv-FQPREV6P.js.map → block.tk.pgv-NVNFNJZ6.js.map} +0 -0
  740. /package/dist/{brainImaging-HEWGZZNY.js.map → brainImaging-KHFLAPHC.js.map} +0 -0
  741. /package/dist/{brainRegions-QUGB7YUW.js.map → brainRegions-MQL2KZOQ.js.map} +0 -0
  742. /package/dist/{bubbleHeatmap-OZRONGAX.js.map → bubbleHeatmap-U3GAF5AV.js.map} +0 -0
  743. /package/dist/{cellTypeBubbleHeatmap-N7NDE325.js.map → cellTypeBubbleHeatmap-5ENEMDCZ.js.map} +0 -0
  744. /package/dist/{chunk-3SPEW6R6.js.map → chunk-25Q4AX4L.js.map} +0 -0
  745. /package/dist/{chunk-VPMQDTYR.js.map → chunk-2WWCHIXZ.js.map} +0 -0
  746. /package/dist/{chunk-NYO7YANQ.js.map → chunk-3AO7OZLF.js.map} +0 -0
  747. /package/dist/{chunk-NULQJF73.js.map → chunk-3DZJ64RQ.js.map} +0 -0
  748. /package/dist/{chunk-F23EQSGU.js.map → chunk-3QZHRQ55.js.map} +0 -0
  749. /package/dist/{chunk-QLUTQPZE.js.map → chunk-3ZM5PZXA.js.map} +0 -0
  750. /package/dist/{chunk-6Q5SOSSU.js.map → chunk-43FVCJXV.js.map} +0 -0
  751. /package/dist/{chunk-C2TII2FF.js.map → chunk-43WVK5KI.js.map} +0 -0
  752. /package/dist/{chunk-RZ2THVK4.js.map → chunk-4ZOKEHK4.js.map} +0 -0
  753. /package/dist/{chunk-BU6PAOGA.js.map → chunk-5M4U6S3E.js.map} +0 -0
  754. /package/dist/{chunk-X77QVINS.js.map → chunk-5O4GAKJT.js.map} +0 -0
  755. /package/dist/{chunk-HJARHSDC.js.map → chunk-5Q6TANNH.js.map} +0 -0
  756. /package/dist/{chunk-PETYR7LC.js.map → chunk-5WBIVXMG.js.map} +0 -0
  757. /package/dist/{chunk-QYCPIVCX.js.map → chunk-65FN7LIA.js.map} +0 -0
  758. /package/dist/{chunk-DFZWE3TR.js.map → chunk-7HTMIFVR.js.map} +0 -0
  759. /package/dist/{chunk-GSVB4XNS.js.map → chunk-AOKINHUU.js.map} +0 -0
  760. /package/dist/{chunk-AJXP4AV7.js.map → chunk-APXULA6M.js.map} +0 -0
  761. /package/dist/{chunk-6D4HOTG7.js.map → chunk-C7O67FZJ.js.map} +0 -0
  762. /package/dist/{chunk-NHMIMTJA.js.map → chunk-CCNV3WJO.js.map} +0 -0
  763. /package/dist/{chunk-AV2IH5K2.js.map → chunk-DAKRDL76.js.map} +0 -0
  764. /package/dist/{chunk-7X347XMF.js.map → chunk-EGQVMN6S.js.map} +0 -0
  765. /package/dist/{chunk-WU3YXPRE.js.map → chunk-ERCLZ433.js.map} +0 -0
  766. /package/dist/{chunk-S4IZ4VM7.js.map → chunk-ESLXHJ7W.js.map} +0 -0
  767. /package/dist/{chunk-AMW5LCUB.js.map → chunk-ET2KFCXK.js.map} +0 -0
  768. /package/dist/{chunk-B3WLXXGY.js.map → chunk-EYIZTX33.js.map} +0 -0
  769. /package/dist/{chunk-AIC43DTG.js.map → chunk-F2PHTKCI.js.map} +0 -0
  770. /package/dist/{chunk-TEFWF3SK.js.map → chunk-FJXUMOVQ.js.map} +0 -0
  771. /package/dist/{chunk-H2FELGYK.js.map → chunk-HJCI33L4.js.map} +0 -0
  772. /package/dist/{chunk-J5KCTRJC.js.map → chunk-HKXBGMUT.js.map} +0 -0
  773. /package/dist/{chunk-QNQ2ZYT7.js.map → chunk-HNMKK33Y.js.map} +0 -0
  774. /package/dist/{chunk-X2HWRISK.js.map → chunk-IKZAWD7P.js.map} +0 -0
  775. /package/dist/{chunk-KGX2OIR4.js.map → chunk-ILPJAASI.js.map} +0 -0
  776. /package/dist/{chunk-LSQ5AQ6Q.js.map → chunk-JFZECJY2.js.map} +0 -0
  777. /package/dist/{chunk-PLFPXOGX.js.map → chunk-K6CZAEBF.js.map} +0 -0
  778. /package/dist/{chunk-BZV2BJDU.js.map → chunk-KXDK6ZOJ.js.map} +0 -0
  779. /package/dist/{chunk-V4ZKHM6D.js.map → chunk-L7LRBRUN.js.map} +0 -0
  780. /package/dist/{chunk-SUT75MRI.js.map → chunk-LO624OGK.js.map} +0 -0
  781. /package/dist/{chunk-CTFHEDG2.js.map → chunk-LPDQ26OP.js.map} +0 -0
  782. /package/dist/{chunk-MU4Z2MX2.js.map → chunk-M2XWAAIZ.js.map} +0 -0
  783. /package/dist/{chunk-E7XHA4YL.js.map → chunk-M37J6Z5U.js.map} +0 -0
  784. /package/dist/{chunk-F5FFI7Z7.js.map → chunk-M5SJ42E2.js.map} +0 -0
  785. /package/dist/{chunk-FVZTRWAO.js.map → chunk-MJREV2KW.js.map} +0 -0
  786. /package/dist/{chunk-LQKMDIRB.js.map → chunk-MRR5GPPP.js.map} +0 -0
  787. /package/dist/{chunk-SYLYLOHK.js.map → chunk-NSCNNQOY.js.map} +0 -0
  788. /package/dist/{chunk-EDFBRXX2.js.map → chunk-OAQLBII5.js.map} +0 -0
  789. /package/dist/{chunk-OBNHXAYG.js.map → chunk-OKHU7EJW.js.map} +0 -0
  790. /package/dist/{chunk-V7DNHPZD.js.map → chunk-OXVB4OZC.js.map} +0 -0
  791. /package/dist/{chunk-SFUDTUXF.js.map → chunk-PDZED3RR.js.map} +0 -0
  792. /package/dist/{chunk-HWNQOADC.js.map → chunk-PITPUAWX.js.map} +0 -0
  793. /package/dist/{chunk-JMFVXWDX.js.map → chunk-PVXG2BRT.js.map} +0 -0
  794. /package/dist/{chunk-FK5NL2DF.js.map → chunk-PX6MHRAN.js.map} +0 -0
  795. /package/dist/{chunk-7JHIUS54.js.map → chunk-REIPTX7J.js.map} +0 -0
  796. /package/dist/{chunk-ABLG7GUS.js.map → chunk-RFE2VG6T.js.map} +0 -0
  797. /package/dist/{chunk-GVAV4VRI.js.map → chunk-RPFQOIYX.js.map} +0 -0
  798. /package/dist/{chunk-HFKZGMVV.js.map → chunk-S2NAGL4V.js.map} +0 -0
  799. /package/dist/{chunk-GDHQVEIO.js.map → chunk-T24YYODE.js.map} +0 -0
  800. /package/dist/{chunk-5G6O5RYM.js.map → chunk-TDP4PX2S.js.map} +0 -0
  801. /package/dist/{chunk-65DO5IKM.js.map → chunk-TUPJEZSL.js.map} +0 -0
  802. /package/dist/{chunk-F2EEQ7KG.js.map → chunk-UNXVW5OT.js.map} +0 -0
  803. /package/dist/{chunk-VV6JIG4D.js.map → chunk-UOWUMUAX.js.map} +0 -0
  804. /package/dist/{chunk-CZK4EV3Y.js.map → chunk-V6EIPPMT.js.map} +0 -0
  805. /package/dist/{chunk-AFEFZ74T.js.map → chunk-VGUO2BQ7.js.map} +0 -0
  806. /package/dist/{chunk-CXEECHP5.js.map → chunk-VKWZPC73.js.map} +0 -0
  807. /package/dist/{chunk-PQVHRM4L.js.map → chunk-VQ5PDCAJ.js.map} +0 -0
  808. /package/dist/{chunk-HXRG7XYB.js.map → chunk-VQK3UKNA.js.map} +0 -0
  809. /package/dist/{chunk-XXFLJWTQ.js.map → chunk-WB5MHFHB.js.map} +0 -0
  810. /package/dist/{chunk-BG6GAROI.js.map → chunk-WK6CPMXR.js.map} +0 -0
  811. /package/dist/{chunk-DX23HAW7.js.map → chunk-WRYNE3Q4.js.map} +0 -0
  812. /package/dist/{chunk-2FWSNJEN.js.map → chunk-XA6LI63Y.js.map} +0 -0
  813. /package/dist/{chunk-TPSVPMAN.js.map → chunk-Y7Y6X6E5.js.map} +0 -0
  814. /package/dist/{chunk-L2NPLA43.js.map → chunk-YG57X4VD.js.map} +0 -0
  815. /package/dist/{chunk-2JIKMCJR.js.map → chunk-YPOIMSJR.js.map} +0 -0
  816. /package/dist/{chunk-MFR4WWDM.js.map → chunk-ZRLON6PP.js.map} +0 -0
  817. /package/dist/{chunk-L2WOLNZK.js.map → chunk-ZSNZPH6G.js.map} +0 -0
  818. /package/dist/{cohort-ATIZW34H.js.map → cohort-TPMJZ4OH.js.map} +0 -0
  819. /package/dist/{condition-SGJIDZNB.js.map → condition-QROUALBG.js.map} +0 -0
  820. /package/dist/{controls-JQCMGPXP.js.map → controls-GH37YWOP.js.map} +0 -0
  821. /package/dist/{controls.config-WQHVQAIJ.js.map → controls.config-ZYCDICYF.js.map} +0 -0
  822. /package/dist/{correlation-S3MN3L5Q.js.map → correlation-JESMUFS6.js.map} +0 -0
  823. /package/dist/{customdata.inputui-LGTGMJBZ.js.map → customdata.inputui-T2DLAZYJ.js.map} +0 -0
  824. /package/dist/{dataDownload-FAWN2WKE.js.map → dataDownload-Z7A6ZEH7.js.map} +0 -0
  825. /package/dist/{databrowser.ui-KF3LWQXG.js.map → databrowser.ui-ZVMGFYJ2.js.map} +0 -0
  826. /package/dist/{dictionary-EVLEOT72.js.map → dictionary-KXFUR3NL.js.map} +0 -0
  827. /package/dist/{dnaMethylation-J3SPEM4S.js.map → dnaMethylation-2YU2HDD4.js.map} +0 -0
  828. /package/dist/{dnaMethylation.integration.spec-CTA53YCT.js.map → dnaMethylation.integration.spec-75Y5RSDO.js.map} +0 -0
  829. /package/dist/{dofetch-3C3MI5NR.js.map → dofetch-G5ULIRMG.js.map} +0 -0
  830. /package/dist/{e2pca-PTWPY5WP.js.map → e2pca-75VDPO7P.js.map} +0 -0
  831. /package/dist/{expclust.gdc.spec-S5FE4MMD.js.map → expclust.gdc.spec-PB66FFWD.js.map} +0 -0
  832. /package/dist/{facet-FSOIZJCA.js.map → facet-2RY37EFR.js.map} +0 -0
  833. /package/dist/{gb-YDEOK7NW.js.map → gb-WQQFYFGF.js.map} +0 -0
  834. /package/dist/{geneExpClustering-37JKKFW3.js.map → geneExpClustering-ARVZDF6G.js.map} +0 -0
  835. /package/dist/{geneExpression-VQPRFNKE.js.map → geneExpression-FR33PKJW.js.map} +0 -0
  836. /package/dist/{geneExpression-G6ODP3VY.js.map → geneExpression-O7DR5SMR.js.map} +0 -0
  837. /package/dist/{geneExpression.unit.spec-ZHXCUG6Q.js.map → geneExpression.unit.spec-HGNDSTAI.js.map} +0 -0
  838. /package/dist/{geneORA-E3PSS3CI.js.map → geneORA-RXXQT44V.js.map} +0 -0
  839. /package/dist/{geneRanking-MK3YYINC.js.map → geneRanking-WDQZ7TI3.js.map} +0 -0
  840. /package/dist/{geneVariant-LEMAVFOY.js.map → geneVariant-6JYBWFEJ.js.map} +0 -0
  841. /package/dist/{geneVariant-NNSB7JLS.js.map → geneVariant-TKRG5VQN.js.map} +0 -0
  842. /package/dist/{geneVariant.integration.spec-6CC5UAOP.js.map → geneVariant.integration.spec-L2Q2DY67.js.map} +0 -0
  843. /package/dist/{genefusion.ui-5NCQIQPN.js.map → genefusion.ui-DBLMBU2D.js.map} +0 -0
  844. /package/dist/{geneset-ZX4V3CFB.js.map → geneset-2ZQF7FET.js.map} +0 -0
  845. /package/dist/{genomeBrowser.spec-J7ISXY6H.js.map → genomeBrowser.spec-E5RJD53Z.js.map} +0 -0
  846. /package/dist/{grin2-LBGBBB4L.js.map → grin2-MJ4SYAFO.js.map} +0 -0
  847. /package/dist/{grin2-GN3DQNON.js.map → grin2-VXRMV7VA.js.map} +0 -0
  848. /package/dist/{hierCluster-5JURTKAZ.js.map → hierCluster-44FPBMNL.js.map} +0 -0
  849. /package/dist/{hierCluster-BJ5VBPXR.js.map → hierCluster-SU4BDK6I.js.map} +0 -0
  850. /package/dist/{hierCluster.config-4EERP4KK.js.map → hierCluster.config-4OZ65GKH.js.map} +0 -0
  851. /package/dist/{hierCluster.integration.spec-VR4GULRV.js.map → hierCluster.integration.spec-CHNSKZD4.js.map} +0 -0
  852. /package/dist/{hierCluster.interactivity-SMTQOKUY.js.map → hierCluster.interactivity-M72CEGCW.js.map} +0 -0
  853. /package/dist/{hierCluster.renderers-PAME7BWU.js.map → hierCluster.renderers-RM43G7ZR.js.map} +0 -0
  854. /package/dist/{imagePlot-4LMIKBVE.js.map → imagePlot-UYMWFNI4.js.map} +0 -0
  855. /package/dist/{importPlot-3CG6ASNH.js.map → importPlot-W3HPE4LZ.js.map} +0 -0
  856. /package/dist/{isoformExpression-VCDNKTZ6.js.map → isoformExpression-JEMJE5WY.js.map} +0 -0
  857. /package/dist/{isoformExpression.unit.spec-ZXYY37TA.js.map → isoformExpression.unit.spec-GOK5LFME.js.map} +0 -0
  858. /package/dist/{jspdf.es.min-V7ONHJJV.js.map → jspdf.es.min-KB3HW45U.js.map} +0 -0
  859. /package/dist/{junction-5DXJO4PS.js.map → junction-2X4AS47T.js.map} +0 -0
  860. /package/dist/{junction.customTerm-UOPUSEOE.js.map → junction.customTerm-MVSIUY66.js.map} +0 -0
  861. /package/dist/{junction.unit.spec-F35E3GJW.js.map → junction.unit.spec-HA74XQYV.js.map} +0 -0
  862. /package/dist/{launch.adhoc-V2HTCQGD.js.map → launch.adhoc-PZAJ6J2S.js.map} +0 -0
  863. /package/dist/{leftlabel.sample-V7O2EC36.js.map → leftlabel.sample-7BZKFB3I.js.map} +0 -0
  864. /package/dist/{lollipop-RNRZLG64.js.map → lollipop-URSFH4ZE.js.map} +0 -0
  865. /package/dist/{maf-W6SF6BJS.js.map → maf-CM3ETF4N.js.map} +0 -0
  866. /package/dist/{maftimeline-NABCAMHG.js.map → maftimeline-CRQEUTRY.js.map} +0 -0
  867. /package/dist/{matrix-JC6AJT2N.js.map → matrix-IBWB4A3Z.js.map} +0 -0
  868. /package/dist/{matrix-UCHESWVK.js.map → matrix-SOBGWBTY.js.map} +0 -0
  869. /package/dist/{matrix.cells-B4L42TBM.js.map → matrix.cells-GSKC6FXI.js.map} +0 -0
  870. /package/dist/{matrix.config-6US3AAH7.js.map → matrix.config-4KU5X3LQ.js.map} +0 -0
  871. /package/dist/{matrix.data-FYFXYDA3.js.map → matrix.data-XC2OTBTR.js.map} +0 -0
  872. /package/dist/{matrix.groups-Y7DEG3GS.js.map → matrix.groups-THXKRQSD.js.map} +0 -0
  873. /package/dist/{matrix.integration.spec-KXX7SFX5.js.map → matrix.integration.spec-GKHH4RSR.js.map} +0 -0
  874. /package/dist/{matrix.interactivity-NHWG4WCC.js.map → matrix.interactivity-ITXMM2ZP.js.map} +0 -0
  875. /package/dist/{matrix.layout-5DQNT7DD.js.map → matrix.layout-D6SRLAXS.js.map} +0 -0
  876. /package/dist/{matrix.legend-OY7IF6AS.js.map → matrix.legend-OWQAMHI2.js.map} +0 -0
  877. /package/dist/{matrix.renderers-GYOXGHPU.js.map → matrix.renderers-J66OAQUZ.js.map} +0 -0
  878. /package/dist/{matrix.serieses-657TLDAV.js.map → matrix.serieses-P5I4E2NB.js.map} +0 -0
  879. /package/dist/{matrix.sort-IMA2ES3T.js.map → matrix.sort-CXBXF75N.js.map} +0 -0
  880. /package/dist/{matrix.sort.unit.spec-S6BAFYPR.js.map → matrix.sort.unit.spec-RSXBKXC5.js.map} +0 -0
  881. /package/dist/{matrix.sorterUi-77F36Q5H.js.map → matrix.sorterUi-WEZRKU63.js.map} +0 -0
  882. /package/dist/{matrix.sorterUi.unit.spec-V5NVQGD5.js.map → matrix.sorterUi.unit.spec-6EULDV43.js.map} +0 -0
  883. /package/dist/{matrix.unit.spec-R4NMTZYQ.js.map → matrix.unit.spec-D4ZLDVDT.js.map} +0 -0
  884. /package/dist/{mds.fimo-5DCH5BEM.js.map → mds.fimo-CQFREH3A.js.map} +0 -0
  885. /package/dist/{mds.samplescatterplot-VIBCS5M6.js.map → mds.samplescatterplot-XLJITURG.js.map} +0 -0
  886. /package/dist/{mds.survivalplot-AZ7LJDZZ.js.map → mds.survivalplot-MLRD27QP.js.map} +0 -0
  887. /package/dist/{multivalue-4QKGYYW2.js.map → multivalue-KJQCYBHA.js.map} +0 -0
  888. /package/dist/{numericDictTermCluster-GLLG6IK2.js.map → numericDictTermCluster-ZOU6R4XP.js.map} +0 -0
  889. /package/dist/{oncomatrix-R32ZPMX7.js.map → oncomatrix-4RHDDJDC.js.map} +0 -0
  890. /package/dist/{oncomatrix.spec-BMK6LMBS.js.map → oncomatrix.spec-JA6DT4PP.js.map} +0 -0
  891. /package/dist/{plot.2dvaf-46FT53MF.js.map → plot.2dvaf-VJWPWCOY.js.map} +0 -0
  892. /package/dist/{plot.app-7EE4YCV4.js.map → plot.app-JNEOGNVW.js.map} +0 -0
  893. /package/dist/{plot.barplot-FK4J2G7K.js.map → plot.barplot-YELRBXUB.js.map} +0 -0
  894. /package/dist/{plot.boxplot-ATY4LK3X.js.map → plot.boxplot-HNFOB3TV.js.map} +0 -0
  895. /package/dist/{plot.brainImaging-S7B547V4.js.map → plot.brainImaging-AZYEGF3U.js.map} +0 -0
  896. /package/dist/{plot.disco-K5MMC2GD.js.map → plot.disco-L6PGGZJI.js.map} +0 -0
  897. /package/dist/{plot.ssgq-B3OVMZFD.js.map → plot.ssgq-UM64SSXW.js.map} +0 -0
  898. /package/dist/{plot.vaf2cov-RBHDQULW.js.map → plot.vaf2cov-DKUKJRUP.js.map} +0 -0
  899. /package/dist/{polar2-GECELCTG.js.map → polar2-4YHPENAV.js.map} +0 -0
  900. /package/dist/{profileForms-2USYOA34.js.map → profileForms-KMECFO3K.js.map} +0 -0
  901. /package/dist/{profilePlot-YGD2CF6P.js.map → profilePlot-3AXSIXCK.js.map} +0 -0
  902. /package/dist/{proteinView-FCPWJLGU.js.map → proteinView-QWHOTL35.js.map} +0 -0
  903. /package/dist/{proteomeCohortCompare-TYYUF5A5.js.map → proteomeCohortCompare-DL2QLFL3.js.map} +0 -0
  904. /package/dist/{pseudbulk.unit.spec-UVVRP6NR.js.map → pseudbulk.unit.spec-IWR7EZ7O.js.map} +0 -0
  905. /package/dist/{pseudobulk-ZIN5VJGB.js.map → pseudobulk-IC525IZ2.js.map} +0 -0
  906. /package/dist/{qualitative-27BZGASV.js.map → qualitative-LK2QEYHU.js.map} +0 -0
  907. /package/dist/{qualitative-N4F6NITI.js.map → qualitative-YY4NQGO5.js.map} +0 -0
  908. /package/dist/{radar2-X465RPJX.js.map → radar2-TJUPENQF.js.map} +0 -0
  909. /package/dist/{radarFacility2-AE7BA62N.js.map → radarFacility2-Q7LBWLCV.js.map} +0 -0
  910. /package/dist/{rememberedGvQ.unit.spec-4PDIU5RY.js.map → rememberedGvQ.unit.spec-2GBLM5AO.js.map} +0 -0
  911. /package/dist/{render-TD2QWOHT.js.map → render-AHR6SCQX.js.map} +0 -0
  912. /package/dist/{report-3Y2OWDF7.js.map → report-BPHJTRTO.js.map} +0 -0
  913. /package/dist/{sampleView-BUMMYRHJ.js.map → sampleView-CS2FB3K3.js.map} +0 -0
  914. /package/dist/{samplelst-BWK53BLI.js.map → samplelst-A3DHKP6U.js.map} +0 -0
  915. /package/dist/{samplematrix-RQU43UYR.js.map → samplematrix-5X7MFT3G.js.map} +0 -0
  916. /package/dist/{sc-LCBFWCZZ.js.map → sc-RCYXZMN6.js.map} +0 -0
  917. /package/dist/{scatter-6S5I7OW3.js.map → scatter-2ITGMX5N.js.map} +0 -0
  918. /package/dist/{scatter-MJELX75N.js.map → scatter-OAL4YOCA.js.map} +0 -0
  919. /package/dist/{selectGenomeWithTklst-WAVXHXR5.js.map → selectGenomeWithTklst-PB5KDW2N.js.map} +0 -0
  920. /package/dist/{singleCellCellType-WMCAJ7JF.js.map → singleCellCellType-FEFNOHOP.js.map} +0 -0
  921. /package/dist/{singleCellCellType.unit.spec-4Z46ZT5Q.js.map → singleCellCellType.unit.spec-V2I32V23.js.map} +0 -0
  922. /package/dist/{singleCellGeneExpression-7Q5ZJT4R.js.map → singleCellGeneExpression-RUQQMKDE.js.map} +0 -0
  923. /package/dist/{singleCellGeneExpression.unit.spec-6C7PDGRH.js.map → singleCellGeneExpression.unit.spec-VCMJRMT7.js.map} +0 -0
  924. /package/dist/{singleCellNumericValue-QGYITZRC.js.map → singleCellNumericValue-JLXZQWNT.js.map} +0 -0
  925. /package/dist/{singleCellNumericValue.unit.spec-MQUKPEZJ.js.map → singleCellNumericValue.unit.spec-XVCZEN5K.js.map} +0 -0
  926. /package/dist/{singleCellPlot-JJMFJ2KQ.js.map → singleCellPlot-4EBYWOJ2.js.map} +0 -0
  927. /package/dist/{singlecell-J23S3JR2.js.map → singlecell-UKZJAYVH.js.map} +0 -0
  928. /package/dist/{singlecell-Y4OGUWEC.js.map → singlecell-VNRWPXGV.js.map} +0 -0
  929. /package/dist/{snp-IO6TKWGD.js.map → snp-2RJDJQZC.js.map} +0 -0
  930. /package/dist/{snp.unit.spec-X7ILEEPO.js.map → snp.unit.spec-Z4DNBFAH.js.map} +0 -0
  931. /package/dist/{snplocus-Z2NGIKMO.js.map → snplocus-OZLIZ7R7.js.map} +0 -0
  932. /package/dist/{snplst-XCS2FCQV.js.map → snplst-EVRJ4OCL.js.map} +0 -0
  933. /package/dist/{spliceevent.a53ss.diagram-F3S4BRVG.js.map → spliceevent.a53ss.diagram-N5UXX4OX.js.map} +0 -0
  934. /package/dist/{spliceevent.exonskip.diagram-AXCDJKH4.js.map → spliceevent.exonskip.diagram-WBNFLW4V.js.map} +0 -0
  935. /package/dist/{spliceevent.noeventdiagram-UK3X667E.js.map → spliceevent.noeventdiagram-EI72A6L3.js.map} +0 -0
  936. /package/dist/{ssGSEA-ZRPNQKJ5.js.map → ssGSEA-NONMMNF7.js.map} +0 -0
  937. /package/dist/{ssGSEA.unit.spec-DG5ZHLC7.js.map → ssGSEA.unit.spec-7JDPNLZA.js.map} +0 -0
  938. /package/dist/{stattable-XYSC3CYU.js.map → stattable-NNUHKPF4.js.map} +0 -0
  939. /package/dist/{studyCatalog-Y75LMI62.js.map → studyCatalog-KMLE7Q55.js.map} +0 -0
  940. /package/dist/{summarizeCnvGeneexp-H2NP7VLU.js.map → summarizeCnvGeneexp-AHCGPQLE.js.map} +0 -0
  941. /package/dist/{summarizeGeneexpSurvival-HTCD3VQQ.js.map → summarizeGeneexpSurvival-NCST7HDQ.js.map} +0 -0
  942. /package/dist/{summarizeMutationCnv-UEGXWK2P.js.map → summarizeMutationCnv-VUTQYXO6.js.map} +0 -0
  943. /package/dist/{summarizeMutationDiagnosis-MJGWP7IT.js.map → summarizeMutationDiagnosis-TFU2HUHQ.js.map} +0 -0
  944. /package/dist/{summarizeMutationSurvival-55JW5LA6.js.map → summarizeMutationSurvival-F4CJILS3.js.map} +0 -0
  945. /package/dist/{summary-HJO23RGB.js.map → summary-QQZW7BEE.js.map} +0 -0
  946. /package/dist/{summary.integration.spec-OWI2C2N5.js.map → summary.integration.spec-FILIPD3W.js.map} +0 -0
  947. /package/dist/{summaryInput-RL2JXRDE.js.map → summaryInput-RMY226Y3.js.map} +0 -0
  948. /package/dist/{sunburst-JFY6V5E2.js.map → sunburst-Y4LNCKMR.js.map} +0 -0
  949. /package/dist/{survival-PBBU6PA5.js.map → survival-4FYQHQHX.js.map} +0 -0
  950. /package/dist/{survival-6FLR4YCJ.js.map → survival-6GC267GY.js.map} +0 -0
  951. /package/dist/{survival.integration.spec-WAKTGYGP.js.map → survival.integration.spec-5ERXR6MG.js.map} +0 -0
  952. /package/dist/{svg2pdf.es.min-NIFE2BIE.js.map → svg2pdf.es.min-KKHWPFWG.js.map} +0 -0
  953. /package/dist/{svgraph-WD3DUZV7.js.map → svgraph-XIQIA7OJ.js.map} +0 -0
  954. /package/dist/{swimmer-VPKSBV6V.js.map → swimmer-643B5Q6F.js.map} +0 -0
  955. /package/dist/{table-GX3VJLPZ.js.map → table-JQIBRXTJ.js.map} +0 -0
  956. /package/dist/{termCollection-YQ332WKB.js.map → termCollection-LU5NW6KT.js.map} +0 -0
  957. /package/dist/{termCollection-QE7U5QBD.js.map → termCollection-XZCPBXRV.js.map} +0 -0
  958. /package/dist/{termCollection.unit.spec-ELLN7VRA.js.map → termCollection.unit.spec-H5LBV3N4.js.map} +0 -0
  959. /package/dist/{termCollectionFractionSelection-V3RP5KAT.js.map → termCollectionFractionSelection-3YHOFXEL.js.map} +0 -0
  960. /package/dist/{termCollectionFractionSelection.unit.spec-JR7Q7TJI.js.map → termCollectionFractionSelection.unit.spec-G5X3Y5YI.js.map} +0 -0
  961. /package/dist/{tk-J5VPFEX6.js.map → tk-NPWNBXLB.js.map} +0 -0
  962. /package/dist/{tk-GD2KJM5W.js.map → tk-YSW5NPW2.js.map} +0 -0
  963. /package/dist/{tvs.categorical-RPACB4VU.js.map → tvs.categorical-TUX6KRZI.js.map} +0 -0
  964. /package/dist/{tvs.condition-O6JBUM6D.js.map → tvs.condition-2CH25PLO.js.map} +0 -0
  965. /package/dist/{tvs.dt-5EVBSRX3.js.map → tvs.dt-YKP3F75O.js.map} +0 -0
  966. /package/dist/{tvs.dtcnv.categorical-Y5YHBZNC.js.map → tvs.dtcnv.categorical-QBJWJNHZ.js.map} +0 -0
  967. /package/dist/{tvs.dtcnv.continuous-WP322QUP.js.map → tvs.dtcnv.continuous-MV25OLBD.js.map} +0 -0
  968. /package/dist/{tvs.dtfusion-CCMUFDMQ.js.map → tvs.dtfusion-SJ64HNKE.js.map} +0 -0
  969. /package/dist/{tvs.dtitd-P3ED3MWA.js.map → tvs.dtitd-WQLHZK2P.js.map} +0 -0
  970. /package/dist/{tvs.dtsnvindel-X2MXPLC6.js.map → tvs.dtsnvindel-WMFJ7W7U.js.map} +0 -0
  971. /package/dist/{tvs.dtsv-4FOWFNVV.js.map → tvs.dtsv-GKEC5OGA.js.map} +0 -0
  972. /package/dist/{tvs.multivalue-IRF467ZK.js.map → tvs.multivalue-LFWMQETN.js.map} +0 -0
  973. /package/dist/{tvs.numeric-C7FDCGCS.js.map → tvs.numeric-63NVZG7U.js.map} +0 -0
  974. /package/dist/{tvs.samplelst-CBU6ATI5.js.map → tvs.samplelst-DEMMYRKK.js.map} +0 -0
  975. /package/dist/{tvs.survival-3K5ASAXV.js.map → tvs.survival-M4QUVP5L.js.map} +0 -0
  976. /package/dist/{tvs.termCollection-MXEWO6KJ.js.map → tvs.termCollection-J367GZY3.js.map} +0 -0
  977. /package/dist/{vocabulary-GQBHDP3K.js.map → vocabulary-RAVWS5IS.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(rows.map(r => r[def.key || '']).filter(v => v !== undefined && v !== null && v !== ''))\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-YS7Y257H.js";
8
+ import "./chunk-HJ6L54YS.js";
9
+ import "./chunk-PITPUAWX.js";
10
+ import "./chunk-CNFTQSNE.js";
11
+ import "./chunk-K6CZAEBF.js";
12
+ import "./chunk-EEB5VE2A.js";
13
+ import "./chunk-3CIL7KH7.js";
14
+ import "./chunk-T4XPCSLP.js";
15
+ import "./chunk-XJYVMXMZ.js";
16
+ import "./chunk-W5J3LTYS.js";
17
+ import "./chunk-ZSNZPH6G.js";
18
+ import "./chunk-ET2KFCXK.js";
19
+ import "./chunk-LMG7Y5IN.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-QROUALBG.js.map
@@ -0,0 +1,30 @@
1
+ import {
2
+ controlsInit,
3
+ renderTerm1Label
4
+ } from "./chunk-YS7Y257H.js";
5
+ import "./chunk-HJ6L54YS.js";
6
+ import "./chunk-PITPUAWX.js";
7
+ import "./chunk-CNFTQSNE.js";
8
+ import "./chunk-K6CZAEBF.js";
9
+ import "./chunk-EEB5VE2A.js";
10
+ import "./chunk-3CIL7KH7.js";
11
+ import "./chunk-T4XPCSLP.js";
12
+ import "./chunk-XJYVMXMZ.js";
13
+ import "./chunk-W5J3LTYS.js";
14
+ import "./chunk-ZSNZPH6G.js";
15
+ import "./chunk-ET2KFCXK.js";
16
+ import "./chunk-LMG7Y5IN.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-GH37YWOP.js.map
@@ -0,0 +1,30 @@
1
+ import {
2
+ configUiInit,
3
+ initByInput
4
+ } from "./chunk-YS7Y257H.js";
5
+ import "./chunk-HJ6L54YS.js";
6
+ import "./chunk-PITPUAWX.js";
7
+ import "./chunk-CNFTQSNE.js";
8
+ import "./chunk-K6CZAEBF.js";
9
+ import "./chunk-EEB5VE2A.js";
10
+ import "./chunk-3CIL7KH7.js";
11
+ import "./chunk-T4XPCSLP.js";
12
+ import "./chunk-XJYVMXMZ.js";
13
+ import "./chunk-W5J3LTYS.js";
14
+ import "./chunk-ZSNZPH6G.js";
15
+ import "./chunk-ET2KFCXK.js";
16
+ import "./chunk-LMG7Y5IN.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-ZYCDICYF.js.map
@@ -0,0 +1,91 @@
1
+ import {
2
+ appInit
3
+ } from "./chunk-M2XWAAIZ.js";
4
+ import "./chunk-M5SJ42E2.js";
5
+ import "./chunk-PVXG2BRT.js";
6
+ import "./chunk-C7O67FZJ.js";
7
+ import "./chunk-LPDQ26OP.js";
8
+ import "./chunk-HNMKK33Y.js";
9
+ import "./chunk-4E2F26CC.js";
10
+ import "./chunk-SKMFMGCD.js";
11
+ import "./chunk-3QZHRQ55.js";
12
+ import "./chunk-PRZWSBMA.js";
13
+ import "./chunk-YS7Y257H.js";
14
+ import "./chunk-HJ6L54YS.js";
15
+ import "./chunk-PITPUAWX.js";
16
+ import "./chunk-CNFTQSNE.js";
17
+ import "./chunk-K6CZAEBF.js";
18
+ import "./chunk-EEB5VE2A.js";
19
+ import "./chunk-3CIL7KH7.js";
20
+ import "./chunk-T4XPCSLP.js";
21
+ import "./chunk-XJYVMXMZ.js";
22
+ import "./chunk-W5J3LTYS.js";
23
+ import "./chunk-ZSNZPH6G.js";
24
+ import "./chunk-ET2KFCXK.js";
25
+ import "./chunk-LMG7Y5IN.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-JESMUFS6.js.map