@sjcrh/proteinpaint-client 2.226.0 → 2.227.1

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 (949) hide show
  1. package/dist/2dmaf-75YAQQ3P.js +1362 -0
  2. package/dist/AggMatrixInput-KYDS23KP.js +402 -0
  3. package/dist/AggregateMatrix-XGGF6KBX.js +37 -0
  4. package/dist/AppHeader-CNY5RTJN.js +826 -0
  5. package/dist/BoxPlot-OQIJJO66.js +1247 -0
  6. package/dist/CorrelationVolcano-QN5D37V7.js +613 -0
  7. package/dist/CorrelationVolcano-QN5D37V7.js.map +7 -0
  8. package/dist/Cuminc-J6DONJTA.js +1217 -0
  9. package/dist/DE-XUBJUUBB.js +85 -0
  10. package/dist/DEinput-DCOPTSWO.js +483 -0
  11. package/dist/DEinput-DCOPTSWO.js.map +7 -0
  12. package/dist/DM-2UUXUJOC.js +86 -0
  13. package/dist/DifferentialAnalysis-U6ZPFHNM.js +236 -0
  14. package/dist/Disco-RR2NN66T.js +3445 -0
  15. package/dist/Disco.UI-MQ7WZQOP.js +239 -0
  16. package/dist/DmrPlot-MKAKFUJR.js +366 -0
  17. package/dist/GB-2X3ZRFXN.js +1388 -0
  18. package/dist/GB-2X3ZRFXN.js.map +7 -0
  19. package/dist/GSEA-DTIA4MNS.js +870 -0
  20. package/dist/GeneExpInput-4GM5MBBX.js +38 -0
  21. package/dist/Geomap-FF6DBN7M.js +80 -0
  22. package/dist/HicApp-LGXNL36X.js +2240 -0
  23. package/dist/IDCViewer-FQABJNUI.js +10810 -0
  24. package/dist/NumBinaryEditor-7NOHUH76.js +274 -0
  25. package/dist/NumBinaryEditor.unit.spec-SVE5SZYB.js +308 -0
  26. package/dist/NumContEditor-MSWCQUKL.js +100 -0
  27. package/dist/NumContEditor.unit.spec-UFPASWBH.js +160 -0
  28. package/dist/NumCustomBinEditor-DF24SO2N.js +29 -0
  29. package/dist/NumCustomBinEditor.unit.spec-N3S3ROBI.js +393 -0
  30. package/dist/NumDiscreteEditor-HL257XGY.js +165 -0
  31. package/dist/NumDiscreteEditor.unit.spec-6PTPX547.js +229 -0
  32. package/dist/NumRegularBinEditor-EWCKTXWY.js +29 -0
  33. package/dist/NumRegularBinEditor.unit.spec-AMGPMY7U.js +274 -0
  34. package/dist/NumSplineEditor-YDNJ2DW2.js +205 -0
  35. package/dist/NumSplineEditor.unit.spec-L4JZ3OND.js +220 -0
  36. package/dist/NumericDensity-SQW67WKL.js +29 -0
  37. package/dist/NumericDensity.unit.spec-KBK3JZZG.js +414 -0
  38. package/dist/NumericHandler-HG7FK4D4.js +30 -0
  39. package/dist/NumericHandler.unit.spec-N7PYAGGF.js +225 -0
  40. package/dist/ProteomeInput-6XGREJFP.js +610 -0
  41. package/dist/Regression-4DDXNQNO.js +1412 -0
  42. package/dist/RunChart2-ARCUC4Z3.js +744 -0
  43. package/dist/SC-AV6COOPI.js +1290 -0
  44. package/dist/Violin-2P5I6NL5.js +1105 -0
  45. package/dist/Volcano-TZQF3HY6.js +2745 -0
  46. package/dist/Volcano-TZQF3HY6.js.map +7 -0
  47. package/dist/Wsi-KN26SIP3.js +650 -0
  48. package/dist/Wsi-KN26SIP3.js.map +7 -0
  49. package/dist/aboutSunburst-V557OK5L.js +93 -0
  50. package/dist/adSandbox-76PMWKTX.js +29 -0
  51. package/dist/animatedBubbleChart-CFRJJDAC.js +542 -0
  52. package/dist/app-2SUVPURX.js +38 -0
  53. package/dist/app-PR42RXHC.js +28 -0
  54. package/dist/app.js +12 -12
  55. package/dist/bam-AYHWKHXL.js +872 -0
  56. package/dist/barchart-S4CLMJO7.js +38 -0
  57. package/dist/barchart2-R2BGA2WO.js +305 -0
  58. package/dist/block-QKO2PO4A.js +6208 -0
  59. package/dist/block-QKO2PO4A.js.map +7 -0
  60. package/dist/block.init-SSWOFFJR.js +29 -0
  61. package/dist/block.mds.expressionrank-GJBLSUUM.js +350 -0
  62. package/dist/block.mds.geneboxplot-SAAU4OH5.js +819 -0
  63. package/dist/block.mds.junction-IIZPRLPH.js +1534 -0
  64. package/dist/block.mds.svcnv-KOG7O25F.js +6325 -0
  65. package/dist/block.svg-5GJ744H3.js +155 -0
  66. package/dist/block.tk.aicheck-CTIJCHIC.js +274 -0
  67. package/dist/block.tk.bam-RTB7C6CW.js +1906 -0
  68. package/dist/block.tk.bigwig.ui-OJVOCOWS.js +202 -0
  69. package/dist/block.tk.hicstraw-GUE6G2DA.js +814 -0
  70. package/dist/block.tk.junction-XILEKNJY.js +2353 -0
  71. package/dist/block.tk.junction.textmatrixui-OF6BW6OY.js +190 -0
  72. package/dist/block.tk.ld-QZVJUGZU.js +90 -0
  73. package/dist/block.tk.menu-B2NV6ZX3.js +1050 -0
  74. package/dist/block.tk.pgv-46OQHX7S.js +934 -0
  75. package/dist/brainImaging-TWTGRSHJ.js +550 -0
  76. package/dist/brainRegions-YTTLJMBU.js +213 -0
  77. package/dist/bubbleHeatmap-OZVG67KF.js +374 -0
  78. package/dist/bubbleHeatmap-OZVG67KF.js.map +7 -0
  79. package/dist/cellTypeBubbleHeatmap-4QFAAED5.js +274 -0
  80. package/dist/cellTypeBubbleHeatmap-4QFAAED5.js.map +7 -0
  81. package/dist/chunk-255OQYGC.js +267 -0
  82. package/dist/chunk-2B3CYHUF.js +30 -0
  83. package/dist/chunk-2BXMWQTJ.js +1339 -0
  84. package/dist/chunk-2E3AJFOA.js +550 -0
  85. package/dist/chunk-2IAELUCN.js +348 -0
  86. package/dist/chunk-2W6U53AG.js +195 -0
  87. package/dist/chunk-3R6VYZYB.js +96 -0
  88. package/dist/chunk-3YAQY5NZ.js +626 -0
  89. package/dist/chunk-52WVSXYC.js +305 -0
  90. package/dist/chunk-6CQ5ADIY.js +56 -0
  91. package/dist/chunk-6UHSGC6G.js +276 -0
  92. package/dist/chunk-6YRM7Z4F.js +4521 -0
  93. package/dist/chunk-6YRM7Z4F.js.map +7 -0
  94. package/dist/chunk-7E37WMAX.js +141 -0
  95. package/dist/chunk-7EP77LOA.js +194 -0
  96. package/dist/chunk-7LJ4LTD6.js +54 -0
  97. package/dist/chunk-7MEBMH77.js +14 -0
  98. package/dist/chunk-7NVFEGCE.js +30 -0
  99. package/dist/chunk-A52K2E32.js +340 -0
  100. package/dist/chunk-A6DDXPLN.js +961 -0
  101. package/dist/chunk-A6DDXPLN.js.map +7 -0
  102. package/dist/chunk-A7UNLPQQ.js +243 -0
  103. package/dist/chunk-BH4KIOUQ.js +480 -0
  104. package/dist/chunk-CFYWQJ7F.js +472 -0
  105. package/dist/chunk-CFYWQJ7F.js.map +7 -0
  106. package/dist/chunk-CG2H6EFQ.js +55 -0
  107. package/dist/chunk-CNDQFKUB.js +468 -0
  108. package/dist/chunk-CVLHDO2O.js +2685 -0
  109. package/dist/chunk-CVRTDBLZ.js +2008 -0
  110. package/dist/chunk-CXCAQOFB.js +26888 -0
  111. package/dist/chunk-CXCAQOFB.js.map +7 -0
  112. package/dist/chunk-DMG4ZMX5.js +830 -0
  113. package/dist/chunk-DMG4ZMX5.js.map +7 -0
  114. package/dist/chunk-DYX6B6RN.js +328 -0
  115. package/dist/chunk-FA2B6PKK.js +42 -0
  116. package/dist/chunk-FA6M7PSZ.js +134 -0
  117. package/dist/chunk-FCQPQD7Z.js +181 -0
  118. package/dist/chunk-FCQPQD7Z.js.map +7 -0
  119. package/dist/chunk-FF4J6QSF.js +240 -0
  120. package/dist/chunk-FYHUHKUC.js +6375 -0
  121. package/dist/chunk-G3CJDTG4.js +48 -0
  122. package/dist/chunk-HRD5MN33.js +1219 -0
  123. package/dist/chunk-HRD5MN33.js.map +7 -0
  124. package/dist/chunk-ILAYJZBC.js +184 -0
  125. package/dist/chunk-IT7EE7LY.js +2334 -0
  126. package/dist/chunk-JG5CF5Q3.js +397 -0
  127. package/dist/chunk-JI632MAR.js +400 -0
  128. package/dist/chunk-JI632MAR.js.map +7 -0
  129. package/dist/chunk-L3ORR2TC.js +2799 -0
  130. package/dist/chunk-L6BT6WZP.js +54 -0
  131. package/dist/chunk-LF2DWEKN.js +255 -0
  132. package/dist/chunk-MJZ66SUG.js +35 -0
  133. package/dist/chunk-N5T7TT5H.js +56 -0
  134. package/dist/chunk-NB4C446B.js +299 -0
  135. package/dist/chunk-NJYYF2LF.js +263 -0
  136. package/dist/chunk-NMVEXITA.js +379 -0
  137. package/dist/chunk-NS2H3C6X.js +182 -0
  138. package/dist/chunk-O7346S3P.js +1253 -0
  139. package/dist/chunk-OV3W5AMN.js +103 -0
  140. package/dist/chunk-PQDYA3ZQ.js +274 -0
  141. package/dist/chunk-QFRR3ZRE.js +466 -0
  142. package/dist/chunk-QLKEA3WE.js +102 -0
  143. package/dist/chunk-QM7CXRSF.js +96 -0
  144. package/dist/chunk-QV6VZLS5.js +2932 -0
  145. package/dist/chunk-RTE32A22.js +123 -0
  146. package/dist/chunk-RUFY5VCS.js +161 -0
  147. package/dist/chunk-RUFY5VCS.js.map +7 -0
  148. package/dist/chunk-SB5DR4NL.js +562 -0
  149. package/dist/chunk-SCATA75L.js +100 -0
  150. package/dist/chunk-SCATA75L.js.map +7 -0
  151. package/dist/chunk-SDUMZTIK.js +2095 -0
  152. package/dist/chunk-TIU2GGWN.js +5258 -0
  153. package/dist/chunk-TIU2GGWN.js.map +7 -0
  154. package/dist/chunk-TYLCIGGN.js +296 -0
  155. package/dist/chunk-UHZDDPUU.js +444 -0
  156. package/dist/chunk-UW6GRHZ4.js +516 -0
  157. package/dist/chunk-UYA5LCAR.js +281 -0
  158. package/dist/chunk-V7CB5D7A.js +50 -0
  159. package/dist/chunk-VBUDRJJG.js +203 -0
  160. package/dist/chunk-VVWZ4BOI.js +2349 -0
  161. package/dist/chunk-W3K3N275.js +418 -0
  162. package/dist/chunk-WENNRY5E.js +170 -0
  163. package/dist/chunk-Z4R7TCTB.js +257 -0
  164. package/dist/chunk-ZFNEHOW4.js +848 -0
  165. package/dist/chunk-ZLEGHQOO.js +217 -0
  166. package/dist/cohort-TLSGXKV5.js +66 -0
  167. package/dist/cohortSunburst-TNMXPHJW.js +402 -0
  168. package/dist/condition-NN7YK7AI.js +323 -0
  169. package/dist/controls-472G34VU.js +30 -0
  170. package/dist/controls.config-2BQ7QYOB.js +30 -0
  171. package/dist/correlation-5UPYEHC6.js +91 -0
  172. package/dist/customdata.inputui-EWYP4MRY.js +280 -0
  173. package/dist/dataDownload-X5UXBEK4.js +326 -0
  174. package/dist/databrowser.ui-PFHJKHIW.js +424 -0
  175. package/dist/dictionary-M2MCNRN2.js +109 -0
  176. package/dist/dnaMethylation-A7AWG2P5.js +29 -0
  177. package/dist/dnaMethylation.integration.spec-JWCMRFAM.js +194 -0
  178. package/dist/dnaMethylation.unit.spec-PIVJBW7Z.js +95 -0
  179. package/dist/dofetch-XID2XEJT.js +49 -0
  180. package/dist/e2pca-VJRNE6BU.js +340 -0
  181. package/dist/ep-BZE65IX2.js +1247 -0
  182. package/dist/expclust.gdc.spec-5BGBANUV.js +298 -0
  183. package/dist/facet-RXUO4LRY.js +556 -0
  184. package/dist/gb-NDRFDS5A.js +77 -0
  185. package/dist/geneExpClustering-ONJGTSGM.js +240 -0
  186. package/dist/geneExpression-NXDXXKEA.js +309 -0
  187. package/dist/geneExpression-PYI42HV6.js +29 -0
  188. package/dist/geneExpression.unit.spec-PTFHHTP7.js +150 -0
  189. package/dist/geneORA-SDR43UOL.js +269 -0
  190. package/dist/geneRanking-QI43IRNV.js +544 -0
  191. package/dist/geneVariant-OT4V554H.js +32 -0
  192. package/dist/geneVariant-V7EKM7RW.js +289 -0
  193. package/dist/geneVariant-V7EKM7RW.js.map +7 -0
  194. package/dist/geneVariant.integration.spec-6OE4HKYB.js +672 -0
  195. package/dist/genefusion.ui-IQDKCZPX.js +299 -0
  196. package/dist/geneset-TLZPZOQP.js +199 -0
  197. package/dist/genomeBrowser.spec-HIOTFKFK.js +272 -0
  198. package/dist/grin2-G2PVFRKR.js +945 -0
  199. package/dist/grin2-RJQZRVFF.js +66 -0
  200. package/dist/hierCluster-C6ICZSOB.js +51 -0
  201. package/dist/hierCluster-MESFVAO7.js +55 -0
  202. package/dist/hierCluster.config-7HROWR2T.js +32 -0
  203. package/dist/hierCluster.integration.spec-CJT22MJI.js +479 -0
  204. package/dist/hierCluster.interactivity-MDX5QSEF.js +45 -0
  205. package/dist/hierCluster.renderers-SU5IYI33.js +18 -0
  206. package/dist/imagePlot-3Y5FNIJL.js +152 -0
  207. package/dist/importPlot-WE5QSSFY.js +8 -0
  208. package/dist/isoformExpression-TMLFOZVK.js +31 -0
  209. package/dist/isoformExpression.unit.spec-MSVTQC3E.js +233 -0
  210. package/dist/junction-YKZV4LEL.js +32 -0
  211. package/dist/junction.unit.spec-3GPBCHXJ.js +224 -0
  212. package/dist/junction.unit.spec-3GPBCHXJ.js.map +7 -0
  213. package/dist/launch.adhoc-DS6UME2S.js +33 -0
  214. package/dist/leftlabel.sample-F6TEFWEW.js +260 -0
  215. package/dist/leftlabel.sample-F6TEFWEW.js.map +7 -0
  216. package/dist/lollipop-ZKDAU3O5.js +162 -0
  217. package/dist/maf-DKOORWGV.js +451 -0
  218. package/dist/maftimeline-EHJ2CWJJ.js +583 -0
  219. package/dist/matrix-7JDLGNU7.js +55 -0
  220. package/dist/matrix-EB7YOLMN.js +50 -0
  221. package/dist/matrix.cells-A5E63KDN.js +25 -0
  222. package/dist/matrix.config-GSW2WJM4.js +33 -0
  223. package/dist/matrix.data-R4FW2PQH.js +22 -0
  224. package/dist/matrix.groups-3UH2KOIY.js +25 -0
  225. package/dist/matrix.integration.spec-R32TIABT.js +3156 -0
  226. package/dist/matrix.interactivity-RDPMBDVK.js +33 -0
  227. package/dist/matrix.layout-FD275D3P.js +35 -0
  228. package/dist/matrix.legend-SE7SQTNN.js +19 -0
  229. package/dist/matrix.renderers-RK2BRCHZ.js +30 -0
  230. package/dist/matrix.serieses-BEZCQDLJ.js +18 -0
  231. package/dist/matrix.sort-KRNS4VPF.js +25 -0
  232. package/dist/matrix.sort.unit.spec-LZG3GOXM.js +464 -0
  233. package/dist/matrix.sorterUi.unit.spec-RR2KK4R5.js +334 -0
  234. package/dist/matrix.unit.spec-3PK6LUNE.js +146 -0
  235. package/dist/mavb-CUPAESFH.js +726 -0
  236. package/dist/mds.samplescatterplot-WGQ7A7UC.js +1545 -0
  237. package/dist/mds.survivalplot-ZEGSEJO2.js +472 -0
  238. package/dist/multivalue-DKUQCROX.js +79 -0
  239. package/dist/numericDictTermCluster-IFIEM3E4.js +62 -0
  240. package/dist/oncomatrix-WSPJAWHW.js +286 -0
  241. package/dist/oncomatrix.spec-LDWTZ7LO.js +439 -0
  242. package/dist/plot.2dvaf-N333YSMC.js +368 -0
  243. package/dist/plot.app-HU5RQS5I.js +32 -0
  244. package/dist/plot.barplot-4T2UEIYX.js +93 -0
  245. package/dist/plot.boxplot-C4OXCRFB.js +142 -0
  246. package/dist/plot.brainImaging-A6FEKFEA.js +51 -0
  247. package/dist/plot.disco-VDL7YKRX.js +100 -0
  248. package/dist/plot.ssgq-OII7PFPG.js +130 -0
  249. package/dist/plot.vaf2cov-RZ5JPWMC.js +249 -0
  250. package/dist/polar2-6KR2KX5D.js +228 -0
  251. package/dist/profileForms-YJDJIBSY.js +937 -0
  252. package/dist/profilePlot-U4U4AYMO.js +45 -0
  253. package/dist/proteinView-F5QEDDWR.js +1346 -0
  254. package/dist/proteinView-F5QEDDWR.js.map +7 -0
  255. package/dist/proteomeCohortCompare-QCXKLAWG.js +866 -0
  256. package/dist/pseudbulk.unit.spec-3A2FWQZI.js +82 -0
  257. package/dist/pseudobulk-WB6NXFJ6.js +31 -0
  258. package/dist/qualitative-CQUBCCGT.js +34 -0
  259. package/dist/qualitative-QQ3CWFVP.js +241 -0
  260. package/dist/radar2-FNC67FNX.js +323 -0
  261. package/dist/radarFacility2-3X77B4WP.js +331 -0
  262. package/dist/render-G5NCZTMW.js +29 -0
  263. package/dist/report-CR645KQ4.js +213 -0
  264. package/dist/sampleView-6PG2HJZL.js +39 -0
  265. package/dist/samplelst-FCQ7YPPQ.js +114 -0
  266. package/dist/samplematrix-GXMN5QTS.js +2188 -0
  267. package/dist/sc-4ZTSQOXC.js +77 -0
  268. package/dist/scatter-2PUQU22I.js +84 -0
  269. package/dist/scatter-ZSZTA37T.js +919 -0
  270. package/dist/selectGenomeWithTklst-XHWBEM2G.js +125 -0
  271. package/dist/singleCellCellType-NP7Y4N6Z.js +29 -0
  272. package/dist/singleCellCellType.unit.spec-5I3FECB4.js +150 -0
  273. package/dist/singleCellGeneExpression-7RWH633E.js +29 -0
  274. package/dist/singleCellGeneExpression.unit.spec-2X2BDTNO.js +144 -0
  275. package/dist/singleCellNumericValue-I6V4ME6T.js +29 -0
  276. package/dist/singleCellNumericValue.unit.spec-4HKAJXB3.js +412 -0
  277. package/dist/singleCellPlot-QRFR3AJH.js +44 -0
  278. package/dist/singlecell-AQEAB445.js +77 -0
  279. package/dist/singlecell-DX4EXNUV.js +1562 -0
  280. package/dist/snp-2URSYPBL.js +29 -0
  281. package/dist/snp.unit.spec-ZV2RCDT4.js +167 -0
  282. package/dist/snplocus-BB4I2QIP.js +200 -0
  283. package/dist/snplst-A5S7CQEM.js +36 -0
  284. package/dist/spliceevent.a53ss.diagram-6C4OQOVF.js +142 -0
  285. package/dist/spliceevent.exonskip.diagram-FKSR3JEL.js +274 -0
  286. package/dist/spliceevent.noeventdiagram-G3JQUZKK.js +451 -0
  287. package/dist/ssGSEA-KLMOSI53.js +29 -0
  288. package/dist/ssGSEA.unit.spec-HBALWLVB.js +79 -0
  289. package/dist/stattable-ZCMPIC3I.js +112 -0
  290. package/dist/studyCatalog-UZ4BSYY6.js +457 -0
  291. package/dist/summarizeCnvGeneexp-Z43GYKZB.js +154 -0
  292. package/dist/summarizeGeneexpSurvival-4OHRMCFV.js +101 -0
  293. package/dist/summarizeMutationCnv-EZXMLADC.js +155 -0
  294. package/dist/summarizeMutationDiagnosis-RPQP4TM5.js +31 -0
  295. package/dist/summarizeMutationSurvival-LX4TRGJZ.js +95 -0
  296. package/dist/summary-FZQVK5KR.js +40 -0
  297. package/dist/summary.integration.spec-46T65LR5.js +405 -0
  298. package/dist/summaryInput-BHU7G5FC.js +238 -0
  299. package/dist/sunburst-A5NS3KJQ.js +274 -0
  300. package/dist/sunburst-R5X2C7FK.js +34 -0
  301. package/dist/survival-MKW5J5ZH.js +1248 -0
  302. package/dist/survival-N2NKMVOV.js +49 -0
  303. package/dist/survival.integration.spec-K5FMOOTF.js +609 -0
  304. package/dist/svgraph-3WRCJA5D.js +1377 -0
  305. package/dist/svmr-TLMT7GE3.js +3574 -0
  306. package/dist/svmr-TLMT7GE3.js.map +7 -0
  307. package/dist/swimmer-XV5KVWEM.js +993 -0
  308. package/dist/table-XUGFZSGV.js +192 -0
  309. package/dist/termCollection-23ZRHZHF.js +247 -0
  310. package/dist/termCollection-NWTAUSSW.js +29 -0
  311. package/dist/termCollection.unit.spec-WE3JMSUI.js +295 -0
  312. package/dist/termCollectionFractionSelection-5FLFLMIY.js +38 -0
  313. package/dist/termCollectionFractionSelection.unit.spec-CCFGGXAA.js +184 -0
  314. package/dist/tk-CTHINOMN.js +1224 -0
  315. package/dist/tk-CTHINOMN.js.map +7 -0
  316. package/dist/tk-F3TSB4IB.js +38 -0
  317. package/dist/tp.ui-4QDX3FGM.js +1453 -0
  318. package/dist/tvs.categorical-24OT3XZI.js +28 -0
  319. package/dist/tvs.condition-X4SXCVGN.js +160 -0
  320. package/dist/tvs.dt-FRBJRSWI.js +34 -0
  321. package/dist/tvs.dtcnv.categorical-4RRSO735.js +31 -0
  322. package/dist/tvs.dtcnv.continuous-HXY2PBUA.js +72 -0
  323. package/dist/tvs.dtfusion-67LXBQA4.js +31 -0
  324. package/dist/tvs.dtitd-MCJZCNV2.js +31 -0
  325. package/dist/tvs.dtsnvindel-K5YIIBQJ.js +31 -0
  326. package/dist/tvs.dtsv-RP7FUB2N.js +31 -0
  327. package/dist/tvs.multivalue-CROMWUCP.js +84 -0
  328. package/dist/tvs.numeric-IYYYV6ZJ.js +32 -0
  329. package/dist/tvs.samplelst-5DXKRFYM.js +95 -0
  330. package/dist/tvs.survival-W5RXODBT.js +110 -0
  331. package/dist/tvs.termCollection-OSJYIWDX.js +118 -0
  332. package/dist/vocabulary-HTRYJUD7.js +32 -0
  333. package/dist/wsi.direct-UHVG525G.js +11600 -0
  334. package/dist/wsi.direct-UHVG525G.js.map +7 -0
  335. package/package.json +3 -3
  336. package/dist/2dmaf-CSBPMYHO.js +0 -1362
  337. package/dist/AggMatrixInput-2HST4LLJ.js +0 -402
  338. package/dist/AggregateMatrix-UPOAX44L.js +0 -37
  339. package/dist/AppHeader-H5QBVKUS.js +0 -826
  340. package/dist/BoxPlot-JTBQA6PL.js +0 -1247
  341. package/dist/CorrelationVolcano-AWBPVDMT.js +0 -613
  342. package/dist/CorrelationVolcano-AWBPVDMT.js.map +0 -7
  343. package/dist/Cuminc-3BXJVWIH.js +0 -1217
  344. package/dist/DE-237VV46D.js +0 -85
  345. package/dist/DEinput-W443UW5T.js +0 -479
  346. package/dist/DEinput-W443UW5T.js.map +0 -7
  347. package/dist/DM-TIW623IR.js +0 -86
  348. package/dist/DifferentialAnalysis-PHUA2GPK.js +0 -236
  349. package/dist/Disco-WHV52SCI.js +0 -3445
  350. package/dist/Disco.UI-UDUXNCZX.js +0 -239
  351. package/dist/DmrPlot-FZCD6FTX.js +0 -366
  352. package/dist/GB-6UW5LOUV.js +0 -1388
  353. package/dist/GB-6UW5LOUV.js.map +0 -7
  354. package/dist/GSEA-3CNHMK6M.js +0 -870
  355. package/dist/GeneExpInput-ZOVP7BFY.js +0 -38
  356. package/dist/Geomap-JREOIESM.js +0 -80
  357. package/dist/HicApp-RKAMIUXQ.js +0 -2240
  358. package/dist/IDCViewer-KXV4FU3V.js +0 -10810
  359. package/dist/NumBinaryEditor-FNVYUK2J.js +0 -274
  360. package/dist/NumBinaryEditor.unit.spec-PWR23U3J.js +0 -308
  361. package/dist/NumContEditor-YLBJW64K.js +0 -100
  362. package/dist/NumContEditor.unit.spec-6JWBCPFY.js +0 -160
  363. package/dist/NumCustomBinEditor-42AFCXRN.js +0 -29
  364. package/dist/NumCustomBinEditor.unit.spec-AFBTF2CL.js +0 -393
  365. package/dist/NumDiscreteEditor-FJIBZTBP.js +0 -165
  366. package/dist/NumDiscreteEditor.unit.spec-MC4INDCB.js +0 -229
  367. package/dist/NumRegularBinEditor-2WRE72TL.js +0 -29
  368. package/dist/NumRegularBinEditor.unit.spec-L3S6NRCM.js +0 -274
  369. package/dist/NumSplineEditor-TVMVAN7I.js +0 -205
  370. package/dist/NumSplineEditor.unit.spec-GEL36GZZ.js +0 -220
  371. package/dist/NumericDensity-BNFAVOFO.js +0 -29
  372. package/dist/NumericDensity.unit.spec-XBYUFBTQ.js +0 -414
  373. package/dist/NumericHandler-4VFFJNX6.js +0 -30
  374. package/dist/NumericHandler.unit.spec-76T2IVRS.js +0 -225
  375. package/dist/ProteomeInput-M5UIO73Q.js +0 -610
  376. package/dist/Regression-5LB5TLA6.js +0 -1412
  377. package/dist/RunChart2-HIFXOEKZ.js +0 -744
  378. package/dist/SC-SMMW5MJG.js +0 -1290
  379. package/dist/Violin-COAFYZOV.js +0 -1105
  380. package/dist/Volcano-62II76B4.js +0 -2748
  381. package/dist/Volcano-62II76B4.js.map +0 -7
  382. package/dist/Wsi-OYW2L7FR.js +0 -637
  383. package/dist/Wsi-OYW2L7FR.js.map +0 -7
  384. package/dist/aboutSunburst-3FYJGR6B.js +0 -93
  385. package/dist/adSandbox-4VHYWBQC.js +0 -29
  386. package/dist/animatedBubbleChart-QCCIC5IT.js +0 -542
  387. package/dist/app-IF7YPCGZ.js +0 -28
  388. package/dist/app-JZ43TSJP.js +0 -38
  389. package/dist/bam-2VPZGSW3.js +0 -872
  390. package/dist/barchart-VYTWYYGG.js +0 -38
  391. package/dist/barchart2-XC7J4VEO.js +0 -305
  392. package/dist/block-YGQFUK5L.js +0 -6203
  393. package/dist/block-YGQFUK5L.js.map +0 -7
  394. package/dist/block.init-BVP3YZHQ.js +0 -29
  395. package/dist/block.mds.expressionrank-RKDDKY4J.js +0 -350
  396. package/dist/block.mds.geneboxplot-3FZ3EZZ6.js +0 -819
  397. package/dist/block.mds.junction-MCOG37RA.js +0 -1534
  398. package/dist/block.mds.svcnv-IEOR5IQZ.js +0 -6325
  399. package/dist/block.svg-3XHRHYCV.js +0 -155
  400. package/dist/block.tk.aicheck-TMDUGNZX.js +0 -274
  401. package/dist/block.tk.bam-73KW4QEJ.js +0 -1906
  402. package/dist/block.tk.bigwig.ui-E5W6R7DQ.js +0 -202
  403. package/dist/block.tk.hicstraw-BNNE6ZMW.js +0 -814
  404. package/dist/block.tk.junction-DMPRZRNY.js +0 -2353
  405. package/dist/block.tk.junction.textmatrixui-XS2E7MQL.js +0 -190
  406. package/dist/block.tk.ld-QD3XDLO4.js +0 -90
  407. package/dist/block.tk.menu-S6XI732E.js +0 -1050
  408. package/dist/block.tk.pgv-KH4TMR3A.js +0 -934
  409. package/dist/brainImaging-NK4JENN3.js +0 -550
  410. package/dist/brainRegions-YUEMTKYH.js +0 -213
  411. package/dist/bubbleHeatmap-LQCVS4WK.js +0 -374
  412. package/dist/bubbleHeatmap-LQCVS4WK.js.map +0 -7
  413. package/dist/cellTypeBubbleHeatmap-DFRSPWAY.js +0 -274
  414. package/dist/cellTypeBubbleHeatmap-DFRSPWAY.js.map +0 -7
  415. package/dist/chunk-37ZEGLVY.js +0 -267
  416. package/dist/chunk-3RPX4ZVV.js +0 -2334
  417. package/dist/chunk-4LK5YFHF.js +0 -102
  418. package/dist/chunk-4WFG5Y3A.js +0 -2095
  419. package/dist/chunk-4WFXCUT4.js +0 -141
  420. package/dist/chunk-5LY2ASQX.js +0 -305
  421. package/dist/chunk-6V7ITU5F.js +0 -2349
  422. package/dist/chunk-7UK7CU4F.js +0 -398
  423. package/dist/chunk-7UK7CU4F.js.map +0 -7
  424. package/dist/chunk-AAQDXVQT.js +0 -134
  425. package/dist/chunk-ADJBQCFM.js +0 -243
  426. package/dist/chunk-ATIITEOR.js +0 -692
  427. package/dist/chunk-ATIITEOR.js.map +0 -7
  428. package/dist/chunk-BWVJAFEQ.js +0 -35
  429. package/dist/chunk-CDCNBN6G.js +0 -50
  430. package/dist/chunk-CGSBIFFO.js +0 -1339
  431. package/dist/chunk-DPWSIN62.js +0 -26787
  432. package/dist/chunk-DPWSIN62.js.map +0 -7
  433. package/dist/chunk-EARMOT6Q.js +0 -176
  434. package/dist/chunk-EARMOT6Q.js.map +0 -7
  435. package/dist/chunk-ECCXTB5S.js +0 -562
  436. package/dist/chunk-ECTOEM7X.js +0 -96
  437. package/dist/chunk-EKIWZUEO.js +0 -54
  438. package/dist/chunk-FALP6GXG.js +0 -96
  439. package/dist/chunk-FRD6LQF7.js +0 -103
  440. package/dist/chunk-FRPYXYYQ.js +0 -263
  441. package/dist/chunk-FV2GLMSI.js +0 -397
  442. package/dist/chunk-G6SP5IQT.js +0 -626
  443. package/dist/chunk-GZL6YFZJ.js +0 -30
  444. package/dist/chunk-H353EVLK.js +0 -240
  445. package/dist/chunk-HKR5R5YR.js +0 -466
  446. package/dist/chunk-HULTLO4D.js +0 -217
  447. package/dist/chunk-IIN4CG67.js +0 -56
  448. package/dist/chunk-ISWFHYEZ.js +0 -123
  449. package/dist/chunk-JBUTLI3V.js +0 -1253
  450. package/dist/chunk-JCNZJKLK.js +0 -55
  451. package/dist/chunk-JEVDRC64.js +0 -56
  452. package/dist/chunk-KBZAB2H2.js +0 -340
  453. package/dist/chunk-KDKJLITX.js +0 -54
  454. package/dist/chunk-KNFJN6CM.js +0 -299
  455. package/dist/chunk-KSYGLBZ4.js +0 -4389
  456. package/dist/chunk-KSYGLBZ4.js.map +0 -7
  457. package/dist/chunk-KUOXZIH4.js +0 -348
  458. package/dist/chunk-KZ54E2FU.js +0 -184
  459. package/dist/chunk-L7FMBWWK.js +0 -6375
  460. package/dist/chunk-LMONIWPI.js +0 -30
  461. package/dist/chunk-LTY7WOAT.js +0 -281
  462. package/dist/chunk-LYDN734A.js +0 -194
  463. package/dist/chunk-LYMYO6TY.js +0 -652
  464. package/dist/chunk-LYMYO6TY.js.map +0 -7
  465. package/dist/chunk-MRZUZDRA.js +0 -444
  466. package/dist/chunk-NGBI4FST.js +0 -195
  467. package/dist/chunk-OKM4ACTA.js +0 -170
  468. package/dist/chunk-OUDHHMZU.js +0 -159
  469. package/dist/chunk-OUDHHMZU.js.map +0 -7
  470. package/dist/chunk-OYXRYWGU.js +0 -2932
  471. package/dist/chunk-P2HMCEMM.js +0 -5254
  472. package/dist/chunk-P2HMCEMM.js.map +0 -7
  473. package/dist/chunk-P5FHYGJK.js +0 -848
  474. package/dist/chunk-P7QDNXSH.js +0 -276
  475. package/dist/chunk-Q7GK35TB.js +0 -257
  476. package/dist/chunk-QXRM5NMW.js +0 -274
  477. package/dist/chunk-RI3GAHQE.js +0 -255
  478. package/dist/chunk-SH7SL4I5.js +0 -1219
  479. package/dist/chunk-SH7SL4I5.js.map +0 -7
  480. package/dist/chunk-SJHWZZ4M.js +0 -70
  481. package/dist/chunk-SJHWZZ4M.js.map +0 -7
  482. package/dist/chunk-T2W4JHWJ.js +0 -472
  483. package/dist/chunk-T2W4JHWJ.js.map +0 -7
  484. package/dist/chunk-TDBS3UFZ.js +0 -379
  485. package/dist/chunk-THHYPA5K.js +0 -48
  486. package/dist/chunk-U2OB3S3M.js +0 -14
  487. package/dist/chunk-UA2ADBTO.js +0 -42
  488. package/dist/chunk-USGUVW5Q.js +0 -182
  489. package/dist/chunk-UWVDD4C2.js +0 -480
  490. package/dist/chunk-W2SBSEKT.js +0 -550
  491. package/dist/chunk-XAHZYGKW.js +0 -468
  492. package/dist/chunk-XKWLP433.js +0 -328
  493. package/dist/chunk-YWB2QHV2.js +0 -2799
  494. package/dist/chunk-Z6M77JDG.js +0 -2008
  495. package/dist/chunk-Z7RFFJXU.js +0 -516
  496. package/dist/chunk-ZG7EBTHK.js +0 -203
  497. package/dist/chunk-ZJLJHQWM.js +0 -418
  498. package/dist/chunk-ZKU6RST3.js +0 -2685
  499. package/dist/chunk-ZLWEUYPT.js +0 -296
  500. package/dist/cohort-X327AG3O.js +0 -66
  501. package/dist/cohortSunburst-GNWIVDNA.js +0 -402
  502. package/dist/condition-3M4L2HIM.js +0 -323
  503. package/dist/controls-OKNHZJOU.js +0 -30
  504. package/dist/controls.config-FUKM5LEP.js +0 -30
  505. package/dist/correlation-PC4MXCFM.js +0 -91
  506. package/dist/customdata.inputui-HCRTX56R.js +0 -280
  507. package/dist/dataDownload-HJO7UW7S.js +0 -326
  508. package/dist/databrowser.ui-EY3H6B4S.js +0 -424
  509. package/dist/dictionary-L6CTMFY7.js +0 -109
  510. package/dist/dnaMethylation-FEB5GGXK.js +0 -29
  511. package/dist/dnaMethylation.integration.spec-4DC6TJNZ.js +0 -194
  512. package/dist/dnaMethylation.unit.spec-REOHQOBC.js +0 -95
  513. package/dist/dofetch-YFGOKCKV.js +0 -49
  514. package/dist/e2pca-QSAVTCPL.js +0 -340
  515. package/dist/ep-LAFLKVSW.js +0 -1247
  516. package/dist/expclust.gdc.spec-OM4J6WBL.js +0 -298
  517. package/dist/facet-WHTV2VIX.js +0 -556
  518. package/dist/gb-DLXWWBB6.js +0 -77
  519. package/dist/geneExpClustering-KB2MB2VM.js +0 -240
  520. package/dist/geneExpression-3D7PDZ2I.js +0 -309
  521. package/dist/geneExpression-3RSRGYGQ.js +0 -29
  522. package/dist/geneExpression.unit.spec-EINAWLPR.js +0 -150
  523. package/dist/geneORA-J4KVSZT3.js +0 -269
  524. package/dist/geneRanking-HKLJ7CN6.js +0 -544
  525. package/dist/geneVariant-3BRGRFPT.js +0 -32
  526. package/dist/geneVariant-VI5DGDAB.js +0 -289
  527. package/dist/geneVariant-VI5DGDAB.js.map +0 -7
  528. package/dist/geneVariant.integration.spec-3IBX4NNE.js +0 -672
  529. package/dist/genefusion.ui-OESQL7TW.js +0 -299
  530. package/dist/geneset-3BMV3KP4.js +0 -199
  531. package/dist/genomeBrowser.spec-I3WKAITC.js +0 -272
  532. package/dist/grin2-4BBCH3H5.js +0 -66
  533. package/dist/grin2-5L2U32LY.js +0 -945
  534. package/dist/hierCluster-KM56NTN6.js +0 -51
  535. package/dist/hierCluster-XCJF5IQ6.js +0 -55
  536. package/dist/hierCluster.config-E2EYOXX6.js +0 -32
  537. package/dist/hierCluster.integration.spec-IIEJ2YEI.js +0 -479
  538. package/dist/hierCluster.interactivity-AJFEJTGX.js +0 -45
  539. package/dist/hierCluster.renderers-XKI344FM.js +0 -18
  540. package/dist/imagePlot-3B3BXI6I.js +0 -152
  541. package/dist/importPlot-JDVH7Q2Z.js +0 -8
  542. package/dist/isoformExpression-UFHY5LB2.js +0 -31
  543. package/dist/isoformExpression.unit.spec-U6GDCNQR.js +0 -233
  544. package/dist/junction-W2STW5WW.js +0 -32
  545. package/dist/junction.unit.spec-R4DIBFLB.js +0 -178
  546. package/dist/junction.unit.spec-R4DIBFLB.js.map +0 -7
  547. package/dist/launch.adhoc-KN7HFHJH.js +0 -33
  548. package/dist/leftlabel.sample-CK2EK7J6.js +0 -254
  549. package/dist/leftlabel.sample-CK2EK7J6.js.map +0 -7
  550. package/dist/lollipop-EKIGAAK6.js +0 -162
  551. package/dist/maf-MK2MM7J4.js +0 -451
  552. package/dist/maftimeline-7RTMXWFA.js +0 -583
  553. package/dist/matrix-UM2EZODJ.js +0 -50
  554. package/dist/matrix-YBL4FZYJ.js +0 -55
  555. package/dist/matrix.cells-45ZFADK5.js +0 -25
  556. package/dist/matrix.config-QTBIRXKU.js +0 -33
  557. package/dist/matrix.data-WAMOLSKW.js +0 -22
  558. package/dist/matrix.groups-RXFXZABD.js +0 -25
  559. package/dist/matrix.integration.spec-JZDZRVOK.js +0 -3156
  560. package/dist/matrix.interactivity-P4VYGTB2.js +0 -33
  561. package/dist/matrix.layout-WWPRXXHX.js +0 -35
  562. package/dist/matrix.legend-4MCMVVKO.js +0 -19
  563. package/dist/matrix.renderers-JQTUODDS.js +0 -30
  564. package/dist/matrix.serieses-3IDRKSGO.js +0 -18
  565. package/dist/matrix.sort-EAWOB56R.js +0 -25
  566. package/dist/matrix.sort.unit.spec-FOWLULHA.js +0 -464
  567. package/dist/matrix.sorterUi.unit.spec-U5CQDTMX.js +0 -334
  568. package/dist/matrix.unit.spec-VTLD4EOZ.js +0 -146
  569. package/dist/mavb-JIIXJHBK.js +0 -726
  570. package/dist/mds.samplescatterplot-PTWA2V6E.js +0 -1545
  571. package/dist/mds.survivalplot-XVZ66GP5.js +0 -472
  572. package/dist/multivalue-2H7QX7MG.js +0 -79
  573. package/dist/numericDictTermCluster-EHCDRT6J.js +0 -62
  574. package/dist/oncomatrix-RZLZUC32.js +0 -286
  575. package/dist/oncomatrix.spec-Z5UQGTW2.js +0 -439
  576. package/dist/plot.2dvaf-IRBZBJ6B.js +0 -368
  577. package/dist/plot.app-I23IAZ3Z.js +0 -32
  578. package/dist/plot.barplot-PYLRAZB7.js +0 -93
  579. package/dist/plot.boxplot-VBWU7DUG.js +0 -142
  580. package/dist/plot.brainImaging-HDJMEMTK.js +0 -51
  581. package/dist/plot.disco-5BVG3WMT.js +0 -100
  582. package/dist/plot.ssgq-S3BKXJMW.js +0 -130
  583. package/dist/plot.vaf2cov-VD7DU2XR.js +0 -249
  584. package/dist/polar2-PYLEVG7E.js +0 -228
  585. package/dist/profileForms-CI2YYD3Y.js +0 -937
  586. package/dist/profilePlot-UCC4ZVHQ.js +0 -45
  587. package/dist/proteinView-FBY6TK3S.js +0 -1346
  588. package/dist/proteinView-FBY6TK3S.js.map +0 -7
  589. package/dist/proteomeCohortCompare-2VUSLC6I.js +0 -866
  590. package/dist/pseudbulk.unit.spec-VPZWNTIA.js +0 -82
  591. package/dist/pseudobulk-RUXGZ7OY.js +0 -31
  592. package/dist/qualitative-3AVR4GRX.js +0 -34
  593. package/dist/qualitative-5QNBKDOZ.js +0 -241
  594. package/dist/radar2-AOYMS54Y.js +0 -323
  595. package/dist/radarFacility2-PP2MAXIP.js +0 -331
  596. package/dist/render-ASLVKYEX.js +0 -29
  597. package/dist/report-UVYKDMQC.js +0 -213
  598. package/dist/sampleView-6UHR7FSR.js +0 -39
  599. package/dist/samplelst-ABC2CCNN.js +0 -114
  600. package/dist/samplematrix-36UCHZLC.js +0 -2188
  601. package/dist/sc-XLSAM725.js +0 -77
  602. package/dist/scatter-ADOBAOW2.js +0 -84
  603. package/dist/scatter-ZNVLI627.js +0 -919
  604. package/dist/selectGenomeWithTklst-DPDBDYTR.js +0 -125
  605. package/dist/singleCellCellType-STVPYZD4.js +0 -29
  606. package/dist/singleCellCellType.unit.spec-ZLY37AXL.js +0 -150
  607. package/dist/singleCellGeneExpression-PCGLU35S.js +0 -29
  608. package/dist/singleCellGeneExpression.unit.spec-PSLKK362.js +0 -144
  609. package/dist/singleCellNumericValue-SR3SJEOB.js +0 -29
  610. package/dist/singleCellNumericValue.unit.spec-PXVXJ4HJ.js +0 -412
  611. package/dist/singleCellPlot-JXB7M6OH.js +0 -44
  612. package/dist/singlecell-EDSX56QO.js +0 -1562
  613. package/dist/singlecell-PH55NFRX.js +0 -77
  614. package/dist/snp-3VEYBTAQ.js +0 -29
  615. package/dist/snp.unit.spec-V7OB44US.js +0 -167
  616. package/dist/snplocus-HX67RBT5.js +0 -200
  617. package/dist/snplst-H5YXCY33.js +0 -36
  618. package/dist/spliceevent.a53ss.diagram-DBDEEHSK.js +0 -142
  619. package/dist/spliceevent.exonskip.diagram-EYEL6BY6.js +0 -274
  620. package/dist/spliceevent.noeventdiagram-64OEXK7U.js +0 -451
  621. package/dist/ssGSEA-3YWQH6KM.js +0 -29
  622. package/dist/ssGSEA.unit.spec-23V2IXP5.js +0 -79
  623. package/dist/stattable-GPSBCNYC.js +0 -112
  624. package/dist/studyCatalog-W5PATRNY.js +0 -457
  625. package/dist/summarizeCnvGeneexp-YGI23QH5.js +0 -154
  626. package/dist/summarizeGeneexpSurvival-KQ6OLWYR.js +0 -101
  627. package/dist/summarizeMutationCnv-XDHBNEPU.js +0 -155
  628. package/dist/summarizeMutationDiagnosis-VKIJRJ2Q.js +0 -31
  629. package/dist/summarizeMutationSurvival-57YKJGLE.js +0 -95
  630. package/dist/summary-4WQOVIUF.js +0 -40
  631. package/dist/summary.integration.spec-FRNWBU7F.js +0 -405
  632. package/dist/summaryInput-X7DS2YA7.js +0 -238
  633. package/dist/sunburst-3OEAQA3O.js +0 -34
  634. package/dist/sunburst-MSGTXYMM.js +0 -274
  635. package/dist/survival-5KC5CNZU.js +0 -1248
  636. package/dist/survival-QXDS6N46.js +0 -49
  637. package/dist/survival.integration.spec-PKENHLTZ.js +0 -609
  638. package/dist/svgraph-VJLB7BBN.js +0 -1377
  639. package/dist/svmr-6BDEZAS6.js +0 -3834
  640. package/dist/svmr-6BDEZAS6.js.map +0 -7
  641. package/dist/swimmer-R3DN7N36.js +0 -993
  642. package/dist/table-YF5VORU6.js +0 -192
  643. package/dist/termCollection-3KGLZFDW.js +0 -29
  644. package/dist/termCollection-KSHVOPS5.js +0 -247
  645. package/dist/termCollection.unit.spec-HTBDG5PL.js +0 -295
  646. package/dist/termCollectionFractionSelection-MK4NKWUX.js +0 -38
  647. package/dist/termCollectionFractionSelection.unit.spec-AMF32FDN.js +0 -184
  648. package/dist/tk-FDHBAKXQ.js +0 -1198
  649. package/dist/tk-FDHBAKXQ.js.map +0 -7
  650. package/dist/tk-Z54DOECH.js +0 -38
  651. package/dist/tp.ui-M4TZVT53.js +0 -1453
  652. package/dist/tvs.categorical-HY3BWCZR.js +0 -28
  653. package/dist/tvs.condition-Y36TRIX4.js +0 -160
  654. package/dist/tvs.dt-XKVJZP7Y.js +0 -34
  655. package/dist/tvs.dtcnv.categorical-OMRZR4Y7.js +0 -31
  656. package/dist/tvs.dtcnv.continuous-AGYOBI5K.js +0 -72
  657. package/dist/tvs.dtfusion-2JX5Y2IH.js +0 -31
  658. package/dist/tvs.dtitd-SDSLBBWC.js +0 -31
  659. package/dist/tvs.dtsnvindel-LI7K464K.js +0 -31
  660. package/dist/tvs.dtsv-VRCLX7QY.js +0 -31
  661. package/dist/tvs.multivalue-4OTY6J2S.js +0 -84
  662. package/dist/tvs.numeric-CDATYOR2.js +0 -32
  663. package/dist/tvs.samplelst-76JOJG2M.js +0 -95
  664. package/dist/tvs.survival-WTFJOKIZ.js +0 -110
  665. package/dist/tvs.termCollection-QQXAS7PE.js +0 -118
  666. package/dist/vocabulary-6ACAEFTL.js +0 -32
  667. package/dist/wsi.direct-OS32TQRM.js +0 -11515
  668. package/dist/wsi.direct-OS32TQRM.js.map +0 -7
  669. /package/dist/{2dmaf-CSBPMYHO.js.map → 2dmaf-75YAQQ3P.js.map} +0 -0
  670. /package/dist/{AggMatrixInput-2HST4LLJ.js.map → AggMatrixInput-KYDS23KP.js.map} +0 -0
  671. /package/dist/{AggregateMatrix-UPOAX44L.js.map → AggregateMatrix-XGGF6KBX.js.map} +0 -0
  672. /package/dist/{AppHeader-H5QBVKUS.js.map → AppHeader-CNY5RTJN.js.map} +0 -0
  673. /package/dist/{BoxPlot-JTBQA6PL.js.map → BoxPlot-OQIJJO66.js.map} +0 -0
  674. /package/dist/{Cuminc-3BXJVWIH.js.map → Cuminc-J6DONJTA.js.map} +0 -0
  675. /package/dist/{DE-237VV46D.js.map → DE-XUBJUUBB.js.map} +0 -0
  676. /package/dist/{DM-TIW623IR.js.map → DM-2UUXUJOC.js.map} +0 -0
  677. /package/dist/{DifferentialAnalysis-PHUA2GPK.js.map → DifferentialAnalysis-U6ZPFHNM.js.map} +0 -0
  678. /package/dist/{Disco-WHV52SCI.js.map → Disco-RR2NN66T.js.map} +0 -0
  679. /package/dist/{Disco.UI-UDUXNCZX.js.map → Disco.UI-MQ7WZQOP.js.map} +0 -0
  680. /package/dist/{DmrPlot-FZCD6FTX.js.map → DmrPlot-MKAKFUJR.js.map} +0 -0
  681. /package/dist/{GSEA-3CNHMK6M.js.map → GSEA-DTIA4MNS.js.map} +0 -0
  682. /package/dist/{GeneExpInput-ZOVP7BFY.js.map → GeneExpInput-4GM5MBBX.js.map} +0 -0
  683. /package/dist/{Geomap-JREOIESM.js.map → Geomap-FF6DBN7M.js.map} +0 -0
  684. /package/dist/{HicApp-RKAMIUXQ.js.map → HicApp-LGXNL36X.js.map} +0 -0
  685. /package/dist/{IDCViewer-KXV4FU3V.js.map → IDCViewer-FQABJNUI.js.map} +0 -0
  686. /package/dist/{NumBinaryEditor-FNVYUK2J.js.map → NumBinaryEditor-7NOHUH76.js.map} +0 -0
  687. /package/dist/{NumBinaryEditor.unit.spec-PWR23U3J.js.map → NumBinaryEditor.unit.spec-SVE5SZYB.js.map} +0 -0
  688. /package/dist/{NumContEditor-YLBJW64K.js.map → NumContEditor-MSWCQUKL.js.map} +0 -0
  689. /package/dist/{NumContEditor.unit.spec-6JWBCPFY.js.map → NumContEditor.unit.spec-UFPASWBH.js.map} +0 -0
  690. /package/dist/{NumCustomBinEditor-42AFCXRN.js.map → NumCustomBinEditor-DF24SO2N.js.map} +0 -0
  691. /package/dist/{NumCustomBinEditor.unit.spec-AFBTF2CL.js.map → NumCustomBinEditor.unit.spec-N3S3ROBI.js.map} +0 -0
  692. /package/dist/{NumDiscreteEditor-FJIBZTBP.js.map → NumDiscreteEditor-HL257XGY.js.map} +0 -0
  693. /package/dist/{NumDiscreteEditor.unit.spec-MC4INDCB.js.map → NumDiscreteEditor.unit.spec-6PTPX547.js.map} +0 -0
  694. /package/dist/{NumRegularBinEditor-2WRE72TL.js.map → NumRegularBinEditor-EWCKTXWY.js.map} +0 -0
  695. /package/dist/{NumRegularBinEditor.unit.spec-L3S6NRCM.js.map → NumRegularBinEditor.unit.spec-AMGPMY7U.js.map} +0 -0
  696. /package/dist/{NumSplineEditor-TVMVAN7I.js.map → NumSplineEditor-YDNJ2DW2.js.map} +0 -0
  697. /package/dist/{NumSplineEditor.unit.spec-GEL36GZZ.js.map → NumSplineEditor.unit.spec-L4JZ3OND.js.map} +0 -0
  698. /package/dist/{NumericDensity-BNFAVOFO.js.map → NumericDensity-SQW67WKL.js.map} +0 -0
  699. /package/dist/{NumericDensity.unit.spec-XBYUFBTQ.js.map → NumericDensity.unit.spec-KBK3JZZG.js.map} +0 -0
  700. /package/dist/{NumericHandler-4VFFJNX6.js.map → NumericHandler-HG7FK4D4.js.map} +0 -0
  701. /package/dist/{NumericHandler.unit.spec-76T2IVRS.js.map → NumericHandler.unit.spec-N7PYAGGF.js.map} +0 -0
  702. /package/dist/{ProteomeInput-M5UIO73Q.js.map → ProteomeInput-6XGREJFP.js.map} +0 -0
  703. /package/dist/{Regression-5LB5TLA6.js.map → Regression-4DDXNQNO.js.map} +0 -0
  704. /package/dist/{RunChart2-HIFXOEKZ.js.map → RunChart2-ARCUC4Z3.js.map} +0 -0
  705. /package/dist/{SC-SMMW5MJG.js.map → SC-AV6COOPI.js.map} +0 -0
  706. /package/dist/{Violin-COAFYZOV.js.map → Violin-2P5I6NL5.js.map} +0 -0
  707. /package/dist/{aboutSunburst-3FYJGR6B.js.map → aboutSunburst-V557OK5L.js.map} +0 -0
  708. /package/dist/{adSandbox-4VHYWBQC.js.map → adSandbox-76PMWKTX.js.map} +0 -0
  709. /package/dist/{animatedBubbleChart-QCCIC5IT.js.map → animatedBubbleChart-CFRJJDAC.js.map} +0 -0
  710. /package/dist/{app-IF7YPCGZ.js.map → app-2SUVPURX.js.map} +0 -0
  711. /package/dist/{app-JZ43TSJP.js.map → app-PR42RXHC.js.map} +0 -0
  712. /package/dist/{bam-2VPZGSW3.js.map → bam-AYHWKHXL.js.map} +0 -0
  713. /package/dist/{barchart-VYTWYYGG.js.map → barchart-S4CLMJO7.js.map} +0 -0
  714. /package/dist/{barchart2-XC7J4VEO.js.map → barchart2-R2BGA2WO.js.map} +0 -0
  715. /package/dist/{block.init-BVP3YZHQ.js.map → block.init-SSWOFFJR.js.map} +0 -0
  716. /package/dist/{block.mds.expressionrank-RKDDKY4J.js.map → block.mds.expressionrank-GJBLSUUM.js.map} +0 -0
  717. /package/dist/{block.mds.geneboxplot-3FZ3EZZ6.js.map → block.mds.geneboxplot-SAAU4OH5.js.map} +0 -0
  718. /package/dist/{block.mds.junction-MCOG37RA.js.map → block.mds.junction-IIZPRLPH.js.map} +0 -0
  719. /package/dist/{block.mds.svcnv-IEOR5IQZ.js.map → block.mds.svcnv-KOG7O25F.js.map} +0 -0
  720. /package/dist/{block.svg-3XHRHYCV.js.map → block.svg-5GJ744H3.js.map} +0 -0
  721. /package/dist/{block.tk.aicheck-TMDUGNZX.js.map → block.tk.aicheck-CTIJCHIC.js.map} +0 -0
  722. /package/dist/{block.tk.bam-73KW4QEJ.js.map → block.tk.bam-RTB7C6CW.js.map} +0 -0
  723. /package/dist/{block.tk.bigwig.ui-E5W6R7DQ.js.map → block.tk.bigwig.ui-OJVOCOWS.js.map} +0 -0
  724. /package/dist/{block.tk.hicstraw-BNNE6ZMW.js.map → block.tk.hicstraw-GUE6G2DA.js.map} +0 -0
  725. /package/dist/{block.tk.junction-DMPRZRNY.js.map → block.tk.junction-XILEKNJY.js.map} +0 -0
  726. /package/dist/{block.tk.junction.textmatrixui-XS2E7MQL.js.map → block.tk.junction.textmatrixui-OF6BW6OY.js.map} +0 -0
  727. /package/dist/{block.tk.ld-QD3XDLO4.js.map → block.tk.ld-QZVJUGZU.js.map} +0 -0
  728. /package/dist/{block.tk.menu-S6XI732E.js.map → block.tk.menu-B2NV6ZX3.js.map} +0 -0
  729. /package/dist/{block.tk.pgv-KH4TMR3A.js.map → block.tk.pgv-46OQHX7S.js.map} +0 -0
  730. /package/dist/{brainImaging-NK4JENN3.js.map → brainImaging-TWTGRSHJ.js.map} +0 -0
  731. /package/dist/{brainRegions-YUEMTKYH.js.map → brainRegions-YTTLJMBU.js.map} +0 -0
  732. /package/dist/{chunk-37ZEGLVY.js.map → chunk-255OQYGC.js.map} +0 -0
  733. /package/dist/{chunk-GZL6YFZJ.js.map → chunk-2B3CYHUF.js.map} +0 -0
  734. /package/dist/{chunk-CGSBIFFO.js.map → chunk-2BXMWQTJ.js.map} +0 -0
  735. /package/dist/{chunk-W2SBSEKT.js.map → chunk-2E3AJFOA.js.map} +0 -0
  736. /package/dist/{chunk-KUOXZIH4.js.map → chunk-2IAELUCN.js.map} +0 -0
  737. /package/dist/{chunk-NGBI4FST.js.map → chunk-2W6U53AG.js.map} +0 -0
  738. /package/dist/{chunk-FALP6GXG.js.map → chunk-3R6VYZYB.js.map} +0 -0
  739. /package/dist/{chunk-G6SP5IQT.js.map → chunk-3YAQY5NZ.js.map} +0 -0
  740. /package/dist/{chunk-5LY2ASQX.js.map → chunk-52WVSXYC.js.map} +0 -0
  741. /package/dist/{chunk-JEVDRC64.js.map → chunk-6CQ5ADIY.js.map} +0 -0
  742. /package/dist/{chunk-P7QDNXSH.js.map → chunk-6UHSGC6G.js.map} +0 -0
  743. /package/dist/{chunk-4WFXCUT4.js.map → chunk-7E37WMAX.js.map} +0 -0
  744. /package/dist/{chunk-LYDN734A.js.map → chunk-7EP77LOA.js.map} +0 -0
  745. /package/dist/{chunk-KDKJLITX.js.map → chunk-7LJ4LTD6.js.map} +0 -0
  746. /package/dist/{chunk-U2OB3S3M.js.map → chunk-7MEBMH77.js.map} +0 -0
  747. /package/dist/{chunk-LMONIWPI.js.map → chunk-7NVFEGCE.js.map} +0 -0
  748. /package/dist/{chunk-KBZAB2H2.js.map → chunk-A52K2E32.js.map} +0 -0
  749. /package/dist/{chunk-ADJBQCFM.js.map → chunk-A7UNLPQQ.js.map} +0 -0
  750. /package/dist/{chunk-UWVDD4C2.js.map → chunk-BH4KIOUQ.js.map} +0 -0
  751. /package/dist/{chunk-JCNZJKLK.js.map → chunk-CG2H6EFQ.js.map} +0 -0
  752. /package/dist/{chunk-XAHZYGKW.js.map → chunk-CNDQFKUB.js.map} +0 -0
  753. /package/dist/{chunk-ZKU6RST3.js.map → chunk-CVLHDO2O.js.map} +0 -0
  754. /package/dist/{chunk-Z6M77JDG.js.map → chunk-CVRTDBLZ.js.map} +0 -0
  755. /package/dist/{chunk-XKWLP433.js.map → chunk-DYX6B6RN.js.map} +0 -0
  756. /package/dist/{chunk-UA2ADBTO.js.map → chunk-FA2B6PKK.js.map} +0 -0
  757. /package/dist/{chunk-AAQDXVQT.js.map → chunk-FA6M7PSZ.js.map} +0 -0
  758. /package/dist/{chunk-H353EVLK.js.map → chunk-FF4J6QSF.js.map} +0 -0
  759. /package/dist/{chunk-L7FMBWWK.js.map → chunk-FYHUHKUC.js.map} +0 -0
  760. /package/dist/{chunk-THHYPA5K.js.map → chunk-G3CJDTG4.js.map} +0 -0
  761. /package/dist/{chunk-KZ54E2FU.js.map → chunk-ILAYJZBC.js.map} +0 -0
  762. /package/dist/{chunk-3RPX4ZVV.js.map → chunk-IT7EE7LY.js.map} +0 -0
  763. /package/dist/{chunk-FV2GLMSI.js.map → chunk-JG5CF5Q3.js.map} +0 -0
  764. /package/dist/{chunk-YWB2QHV2.js.map → chunk-L3ORR2TC.js.map} +0 -0
  765. /package/dist/{chunk-EKIWZUEO.js.map → chunk-L6BT6WZP.js.map} +0 -0
  766. /package/dist/{chunk-RI3GAHQE.js.map → chunk-LF2DWEKN.js.map} +0 -0
  767. /package/dist/{chunk-BWVJAFEQ.js.map → chunk-MJZ66SUG.js.map} +0 -0
  768. /package/dist/{chunk-IIN4CG67.js.map → chunk-N5T7TT5H.js.map} +0 -0
  769. /package/dist/{chunk-KNFJN6CM.js.map → chunk-NB4C446B.js.map} +0 -0
  770. /package/dist/{chunk-FRPYXYYQ.js.map → chunk-NJYYF2LF.js.map} +0 -0
  771. /package/dist/{chunk-TDBS3UFZ.js.map → chunk-NMVEXITA.js.map} +0 -0
  772. /package/dist/{chunk-USGUVW5Q.js.map → chunk-NS2H3C6X.js.map} +0 -0
  773. /package/dist/{chunk-JBUTLI3V.js.map → chunk-O7346S3P.js.map} +0 -0
  774. /package/dist/{chunk-FRD6LQF7.js.map → chunk-OV3W5AMN.js.map} +0 -0
  775. /package/dist/{chunk-QXRM5NMW.js.map → chunk-PQDYA3ZQ.js.map} +0 -0
  776. /package/dist/{chunk-HKR5R5YR.js.map → chunk-QFRR3ZRE.js.map} +0 -0
  777. /package/dist/{chunk-4LK5YFHF.js.map → chunk-QLKEA3WE.js.map} +0 -0
  778. /package/dist/{chunk-ECTOEM7X.js.map → chunk-QM7CXRSF.js.map} +0 -0
  779. /package/dist/{chunk-OYXRYWGU.js.map → chunk-QV6VZLS5.js.map} +0 -0
  780. /package/dist/{chunk-ISWFHYEZ.js.map → chunk-RTE32A22.js.map} +0 -0
  781. /package/dist/{chunk-ECCXTB5S.js.map → chunk-SB5DR4NL.js.map} +0 -0
  782. /package/dist/{chunk-4WFG5Y3A.js.map → chunk-SDUMZTIK.js.map} +0 -0
  783. /package/dist/{chunk-ZLWEUYPT.js.map → chunk-TYLCIGGN.js.map} +0 -0
  784. /package/dist/{chunk-MRZUZDRA.js.map → chunk-UHZDDPUU.js.map} +0 -0
  785. /package/dist/{chunk-Z7RFFJXU.js.map → chunk-UW6GRHZ4.js.map} +0 -0
  786. /package/dist/{chunk-LTY7WOAT.js.map → chunk-UYA5LCAR.js.map} +0 -0
  787. /package/dist/{chunk-CDCNBN6G.js.map → chunk-V7CB5D7A.js.map} +0 -0
  788. /package/dist/{chunk-ZG7EBTHK.js.map → chunk-VBUDRJJG.js.map} +0 -0
  789. /package/dist/{chunk-6V7ITU5F.js.map → chunk-VVWZ4BOI.js.map} +0 -0
  790. /package/dist/{chunk-ZJLJHQWM.js.map → chunk-W3K3N275.js.map} +0 -0
  791. /package/dist/{chunk-OKM4ACTA.js.map → chunk-WENNRY5E.js.map} +0 -0
  792. /package/dist/{chunk-Q7GK35TB.js.map → chunk-Z4R7TCTB.js.map} +0 -0
  793. /package/dist/{chunk-P5FHYGJK.js.map → chunk-ZFNEHOW4.js.map} +0 -0
  794. /package/dist/{chunk-HULTLO4D.js.map → chunk-ZLEGHQOO.js.map} +0 -0
  795. /package/dist/{cohort-X327AG3O.js.map → cohort-TLSGXKV5.js.map} +0 -0
  796. /package/dist/{cohortSunburst-GNWIVDNA.js.map → cohortSunburst-TNMXPHJW.js.map} +0 -0
  797. /package/dist/{condition-3M4L2HIM.js.map → condition-NN7YK7AI.js.map} +0 -0
  798. /package/dist/{controls-OKNHZJOU.js.map → controls-472G34VU.js.map} +0 -0
  799. /package/dist/{controls.config-FUKM5LEP.js.map → controls.config-2BQ7QYOB.js.map} +0 -0
  800. /package/dist/{correlation-PC4MXCFM.js.map → correlation-5UPYEHC6.js.map} +0 -0
  801. /package/dist/{customdata.inputui-HCRTX56R.js.map → customdata.inputui-EWYP4MRY.js.map} +0 -0
  802. /package/dist/{dataDownload-HJO7UW7S.js.map → dataDownload-X5UXBEK4.js.map} +0 -0
  803. /package/dist/{databrowser.ui-EY3H6B4S.js.map → databrowser.ui-PFHJKHIW.js.map} +0 -0
  804. /package/dist/{dictionary-L6CTMFY7.js.map → dictionary-M2MCNRN2.js.map} +0 -0
  805. /package/dist/{dnaMethylation-FEB5GGXK.js.map → dnaMethylation-A7AWG2P5.js.map} +0 -0
  806. /package/dist/{dnaMethylation.integration.spec-4DC6TJNZ.js.map → dnaMethylation.integration.spec-JWCMRFAM.js.map} +0 -0
  807. /package/dist/{dnaMethylation.unit.spec-REOHQOBC.js.map → dnaMethylation.unit.spec-PIVJBW7Z.js.map} +0 -0
  808. /package/dist/{dofetch-YFGOKCKV.js.map → dofetch-XID2XEJT.js.map} +0 -0
  809. /package/dist/{e2pca-QSAVTCPL.js.map → e2pca-VJRNE6BU.js.map} +0 -0
  810. /package/dist/{ep-LAFLKVSW.js.map → ep-BZE65IX2.js.map} +0 -0
  811. /package/dist/{expclust.gdc.spec-OM4J6WBL.js.map → expclust.gdc.spec-5BGBANUV.js.map} +0 -0
  812. /package/dist/{facet-WHTV2VIX.js.map → facet-RXUO4LRY.js.map} +0 -0
  813. /package/dist/{gb-DLXWWBB6.js.map → gb-NDRFDS5A.js.map} +0 -0
  814. /package/dist/{geneExpClustering-KB2MB2VM.js.map → geneExpClustering-ONJGTSGM.js.map} +0 -0
  815. /package/dist/{geneExpression-3D7PDZ2I.js.map → geneExpression-NXDXXKEA.js.map} +0 -0
  816. /package/dist/{geneExpression-3RSRGYGQ.js.map → geneExpression-PYI42HV6.js.map} +0 -0
  817. /package/dist/{geneExpression.unit.spec-EINAWLPR.js.map → geneExpression.unit.spec-PTFHHTP7.js.map} +0 -0
  818. /package/dist/{geneORA-J4KVSZT3.js.map → geneORA-SDR43UOL.js.map} +0 -0
  819. /package/dist/{geneRanking-HKLJ7CN6.js.map → geneRanking-QI43IRNV.js.map} +0 -0
  820. /package/dist/{geneVariant-3BRGRFPT.js.map → geneVariant-OT4V554H.js.map} +0 -0
  821. /package/dist/{geneVariant.integration.spec-3IBX4NNE.js.map → geneVariant.integration.spec-6OE4HKYB.js.map} +0 -0
  822. /package/dist/{genefusion.ui-OESQL7TW.js.map → genefusion.ui-IQDKCZPX.js.map} +0 -0
  823. /package/dist/{geneset-3BMV3KP4.js.map → geneset-TLZPZOQP.js.map} +0 -0
  824. /package/dist/{genomeBrowser.spec-I3WKAITC.js.map → genomeBrowser.spec-HIOTFKFK.js.map} +0 -0
  825. /package/dist/{grin2-5L2U32LY.js.map → grin2-G2PVFRKR.js.map} +0 -0
  826. /package/dist/{grin2-4BBCH3H5.js.map → grin2-RJQZRVFF.js.map} +0 -0
  827. /package/dist/{hierCluster-KM56NTN6.js.map → hierCluster-C6ICZSOB.js.map} +0 -0
  828. /package/dist/{hierCluster-XCJF5IQ6.js.map → hierCluster-MESFVAO7.js.map} +0 -0
  829. /package/dist/{hierCluster.config-E2EYOXX6.js.map → hierCluster.config-7HROWR2T.js.map} +0 -0
  830. /package/dist/{hierCluster.integration.spec-IIEJ2YEI.js.map → hierCluster.integration.spec-CJT22MJI.js.map} +0 -0
  831. /package/dist/{hierCluster.interactivity-AJFEJTGX.js.map → hierCluster.interactivity-MDX5QSEF.js.map} +0 -0
  832. /package/dist/{hierCluster.renderers-XKI344FM.js.map → hierCluster.renderers-SU5IYI33.js.map} +0 -0
  833. /package/dist/{imagePlot-3B3BXI6I.js.map → imagePlot-3Y5FNIJL.js.map} +0 -0
  834. /package/dist/{importPlot-JDVH7Q2Z.js.map → importPlot-WE5QSSFY.js.map} +0 -0
  835. /package/dist/{isoformExpression-UFHY5LB2.js.map → isoformExpression-TMLFOZVK.js.map} +0 -0
  836. /package/dist/{isoformExpression.unit.spec-U6GDCNQR.js.map → isoformExpression.unit.spec-MSVTQC3E.js.map} +0 -0
  837. /package/dist/{junction-W2STW5WW.js.map → junction-YKZV4LEL.js.map} +0 -0
  838. /package/dist/{launch.adhoc-KN7HFHJH.js.map → launch.adhoc-DS6UME2S.js.map} +0 -0
  839. /package/dist/{lollipop-EKIGAAK6.js.map → lollipop-ZKDAU3O5.js.map} +0 -0
  840. /package/dist/{maf-MK2MM7J4.js.map → maf-DKOORWGV.js.map} +0 -0
  841. /package/dist/{maftimeline-7RTMXWFA.js.map → maftimeline-EHJ2CWJJ.js.map} +0 -0
  842. /package/dist/{matrix-UM2EZODJ.js.map → matrix-7JDLGNU7.js.map} +0 -0
  843. /package/dist/{matrix-YBL4FZYJ.js.map → matrix-EB7YOLMN.js.map} +0 -0
  844. /package/dist/{matrix.cells-45ZFADK5.js.map → matrix.cells-A5E63KDN.js.map} +0 -0
  845. /package/dist/{matrix.config-QTBIRXKU.js.map → matrix.config-GSW2WJM4.js.map} +0 -0
  846. /package/dist/{matrix.data-WAMOLSKW.js.map → matrix.data-R4FW2PQH.js.map} +0 -0
  847. /package/dist/{matrix.groups-RXFXZABD.js.map → matrix.groups-3UH2KOIY.js.map} +0 -0
  848. /package/dist/{matrix.integration.spec-JZDZRVOK.js.map → matrix.integration.spec-R32TIABT.js.map} +0 -0
  849. /package/dist/{matrix.interactivity-P4VYGTB2.js.map → matrix.interactivity-RDPMBDVK.js.map} +0 -0
  850. /package/dist/{matrix.layout-WWPRXXHX.js.map → matrix.layout-FD275D3P.js.map} +0 -0
  851. /package/dist/{matrix.legend-4MCMVVKO.js.map → matrix.legend-SE7SQTNN.js.map} +0 -0
  852. /package/dist/{matrix.renderers-JQTUODDS.js.map → matrix.renderers-RK2BRCHZ.js.map} +0 -0
  853. /package/dist/{matrix.serieses-3IDRKSGO.js.map → matrix.serieses-BEZCQDLJ.js.map} +0 -0
  854. /package/dist/{matrix.sort-EAWOB56R.js.map → matrix.sort-KRNS4VPF.js.map} +0 -0
  855. /package/dist/{matrix.sort.unit.spec-FOWLULHA.js.map → matrix.sort.unit.spec-LZG3GOXM.js.map} +0 -0
  856. /package/dist/{matrix.sorterUi.unit.spec-U5CQDTMX.js.map → matrix.sorterUi.unit.spec-RR2KK4R5.js.map} +0 -0
  857. /package/dist/{matrix.unit.spec-VTLD4EOZ.js.map → matrix.unit.spec-3PK6LUNE.js.map} +0 -0
  858. /package/dist/{mavb-JIIXJHBK.js.map → mavb-CUPAESFH.js.map} +0 -0
  859. /package/dist/{mds.samplescatterplot-PTWA2V6E.js.map → mds.samplescatterplot-WGQ7A7UC.js.map} +0 -0
  860. /package/dist/{mds.survivalplot-XVZ66GP5.js.map → mds.survivalplot-ZEGSEJO2.js.map} +0 -0
  861. /package/dist/{multivalue-2H7QX7MG.js.map → multivalue-DKUQCROX.js.map} +0 -0
  862. /package/dist/{numericDictTermCluster-EHCDRT6J.js.map → numericDictTermCluster-IFIEM3E4.js.map} +0 -0
  863. /package/dist/{oncomatrix-RZLZUC32.js.map → oncomatrix-WSPJAWHW.js.map} +0 -0
  864. /package/dist/{oncomatrix.spec-Z5UQGTW2.js.map → oncomatrix.spec-LDWTZ7LO.js.map} +0 -0
  865. /package/dist/{plot.2dvaf-IRBZBJ6B.js.map → plot.2dvaf-N333YSMC.js.map} +0 -0
  866. /package/dist/{plot.app-I23IAZ3Z.js.map → plot.app-HU5RQS5I.js.map} +0 -0
  867. /package/dist/{plot.barplot-PYLRAZB7.js.map → plot.barplot-4T2UEIYX.js.map} +0 -0
  868. /package/dist/{plot.boxplot-VBWU7DUG.js.map → plot.boxplot-C4OXCRFB.js.map} +0 -0
  869. /package/dist/{plot.brainImaging-HDJMEMTK.js.map → plot.brainImaging-A6FEKFEA.js.map} +0 -0
  870. /package/dist/{plot.disco-5BVG3WMT.js.map → plot.disco-VDL7YKRX.js.map} +0 -0
  871. /package/dist/{plot.ssgq-S3BKXJMW.js.map → plot.ssgq-OII7PFPG.js.map} +0 -0
  872. /package/dist/{plot.vaf2cov-VD7DU2XR.js.map → plot.vaf2cov-RZ5JPWMC.js.map} +0 -0
  873. /package/dist/{polar2-PYLEVG7E.js.map → polar2-6KR2KX5D.js.map} +0 -0
  874. /package/dist/{profileForms-CI2YYD3Y.js.map → profileForms-YJDJIBSY.js.map} +0 -0
  875. /package/dist/{profilePlot-UCC4ZVHQ.js.map → profilePlot-U4U4AYMO.js.map} +0 -0
  876. /package/dist/{proteomeCohortCompare-2VUSLC6I.js.map → proteomeCohortCompare-QCXKLAWG.js.map} +0 -0
  877. /package/dist/{pseudbulk.unit.spec-VPZWNTIA.js.map → pseudbulk.unit.spec-3A2FWQZI.js.map} +0 -0
  878. /package/dist/{pseudobulk-RUXGZ7OY.js.map → pseudobulk-WB6NXFJ6.js.map} +0 -0
  879. /package/dist/{qualitative-3AVR4GRX.js.map → qualitative-CQUBCCGT.js.map} +0 -0
  880. /package/dist/{qualitative-5QNBKDOZ.js.map → qualitative-QQ3CWFVP.js.map} +0 -0
  881. /package/dist/{radar2-AOYMS54Y.js.map → radar2-FNC67FNX.js.map} +0 -0
  882. /package/dist/{radarFacility2-PP2MAXIP.js.map → radarFacility2-3X77B4WP.js.map} +0 -0
  883. /package/dist/{render-ASLVKYEX.js.map → render-G5NCZTMW.js.map} +0 -0
  884. /package/dist/{report-UVYKDMQC.js.map → report-CR645KQ4.js.map} +0 -0
  885. /package/dist/{sampleView-6UHR7FSR.js.map → sampleView-6PG2HJZL.js.map} +0 -0
  886. /package/dist/{samplelst-ABC2CCNN.js.map → samplelst-FCQ7YPPQ.js.map} +0 -0
  887. /package/dist/{samplematrix-36UCHZLC.js.map → samplematrix-GXMN5QTS.js.map} +0 -0
  888. /package/dist/{sc-XLSAM725.js.map → sc-4ZTSQOXC.js.map} +0 -0
  889. /package/dist/{scatter-ADOBAOW2.js.map → scatter-2PUQU22I.js.map} +0 -0
  890. /package/dist/{scatter-ZNVLI627.js.map → scatter-ZSZTA37T.js.map} +0 -0
  891. /package/dist/{selectGenomeWithTklst-DPDBDYTR.js.map → selectGenomeWithTklst-XHWBEM2G.js.map} +0 -0
  892. /package/dist/{singleCellCellType-STVPYZD4.js.map → singleCellCellType-NP7Y4N6Z.js.map} +0 -0
  893. /package/dist/{singleCellCellType.unit.spec-ZLY37AXL.js.map → singleCellCellType.unit.spec-5I3FECB4.js.map} +0 -0
  894. /package/dist/{singleCellGeneExpression-PCGLU35S.js.map → singleCellGeneExpression-7RWH633E.js.map} +0 -0
  895. /package/dist/{singleCellGeneExpression.unit.spec-PSLKK362.js.map → singleCellGeneExpression.unit.spec-2X2BDTNO.js.map} +0 -0
  896. /package/dist/{singleCellNumericValue-SR3SJEOB.js.map → singleCellNumericValue-I6V4ME6T.js.map} +0 -0
  897. /package/dist/{singleCellNumericValue.unit.spec-PXVXJ4HJ.js.map → singleCellNumericValue.unit.spec-4HKAJXB3.js.map} +0 -0
  898. /package/dist/{singleCellPlot-JXB7M6OH.js.map → singleCellPlot-QRFR3AJH.js.map} +0 -0
  899. /package/dist/{singlecell-PH55NFRX.js.map → singlecell-AQEAB445.js.map} +0 -0
  900. /package/dist/{singlecell-EDSX56QO.js.map → singlecell-DX4EXNUV.js.map} +0 -0
  901. /package/dist/{snp-3VEYBTAQ.js.map → snp-2URSYPBL.js.map} +0 -0
  902. /package/dist/{snp.unit.spec-V7OB44US.js.map → snp.unit.spec-ZV2RCDT4.js.map} +0 -0
  903. /package/dist/{snplocus-HX67RBT5.js.map → snplocus-BB4I2QIP.js.map} +0 -0
  904. /package/dist/{snplst-H5YXCY33.js.map → snplst-A5S7CQEM.js.map} +0 -0
  905. /package/dist/{spliceevent.a53ss.diagram-DBDEEHSK.js.map → spliceevent.a53ss.diagram-6C4OQOVF.js.map} +0 -0
  906. /package/dist/{spliceevent.exonskip.diagram-EYEL6BY6.js.map → spliceevent.exonskip.diagram-FKSR3JEL.js.map} +0 -0
  907. /package/dist/{spliceevent.noeventdiagram-64OEXK7U.js.map → spliceevent.noeventdiagram-G3JQUZKK.js.map} +0 -0
  908. /package/dist/{ssGSEA-3YWQH6KM.js.map → ssGSEA-KLMOSI53.js.map} +0 -0
  909. /package/dist/{ssGSEA.unit.spec-23V2IXP5.js.map → ssGSEA.unit.spec-HBALWLVB.js.map} +0 -0
  910. /package/dist/{stattable-GPSBCNYC.js.map → stattable-ZCMPIC3I.js.map} +0 -0
  911. /package/dist/{studyCatalog-W5PATRNY.js.map → studyCatalog-UZ4BSYY6.js.map} +0 -0
  912. /package/dist/{summarizeCnvGeneexp-YGI23QH5.js.map → summarizeCnvGeneexp-Z43GYKZB.js.map} +0 -0
  913. /package/dist/{summarizeGeneexpSurvival-KQ6OLWYR.js.map → summarizeGeneexpSurvival-4OHRMCFV.js.map} +0 -0
  914. /package/dist/{summarizeMutationCnv-XDHBNEPU.js.map → summarizeMutationCnv-EZXMLADC.js.map} +0 -0
  915. /package/dist/{summarizeMutationDiagnosis-VKIJRJ2Q.js.map → summarizeMutationDiagnosis-RPQP4TM5.js.map} +0 -0
  916. /package/dist/{summarizeMutationSurvival-57YKJGLE.js.map → summarizeMutationSurvival-LX4TRGJZ.js.map} +0 -0
  917. /package/dist/{summary-4WQOVIUF.js.map → summary-FZQVK5KR.js.map} +0 -0
  918. /package/dist/{summary.integration.spec-FRNWBU7F.js.map → summary.integration.spec-46T65LR5.js.map} +0 -0
  919. /package/dist/{summaryInput-X7DS2YA7.js.map → summaryInput-BHU7G5FC.js.map} +0 -0
  920. /package/dist/{sunburst-MSGTXYMM.js.map → sunburst-A5NS3KJQ.js.map} +0 -0
  921. /package/dist/{sunburst-3OEAQA3O.js.map → sunburst-R5X2C7FK.js.map} +0 -0
  922. /package/dist/{survival-5KC5CNZU.js.map → survival-MKW5J5ZH.js.map} +0 -0
  923. /package/dist/{survival-QXDS6N46.js.map → survival-N2NKMVOV.js.map} +0 -0
  924. /package/dist/{survival.integration.spec-PKENHLTZ.js.map → survival.integration.spec-K5FMOOTF.js.map} +0 -0
  925. /package/dist/{svgraph-VJLB7BBN.js.map → svgraph-3WRCJA5D.js.map} +0 -0
  926. /package/dist/{swimmer-R3DN7N36.js.map → swimmer-XV5KVWEM.js.map} +0 -0
  927. /package/dist/{table-YF5VORU6.js.map → table-XUGFZSGV.js.map} +0 -0
  928. /package/dist/{termCollection-KSHVOPS5.js.map → termCollection-23ZRHZHF.js.map} +0 -0
  929. /package/dist/{termCollection-3KGLZFDW.js.map → termCollection-NWTAUSSW.js.map} +0 -0
  930. /package/dist/{termCollection.unit.spec-HTBDG5PL.js.map → termCollection.unit.spec-WE3JMSUI.js.map} +0 -0
  931. /package/dist/{termCollectionFractionSelection-MK4NKWUX.js.map → termCollectionFractionSelection-5FLFLMIY.js.map} +0 -0
  932. /package/dist/{termCollectionFractionSelection.unit.spec-AMF32FDN.js.map → termCollectionFractionSelection.unit.spec-CCFGGXAA.js.map} +0 -0
  933. /package/dist/{tk-Z54DOECH.js.map → tk-F3TSB4IB.js.map} +0 -0
  934. /package/dist/{tp.ui-M4TZVT53.js.map → tp.ui-4QDX3FGM.js.map} +0 -0
  935. /package/dist/{tvs.categorical-HY3BWCZR.js.map → tvs.categorical-24OT3XZI.js.map} +0 -0
  936. /package/dist/{tvs.condition-Y36TRIX4.js.map → tvs.condition-X4SXCVGN.js.map} +0 -0
  937. /package/dist/{tvs.dt-XKVJZP7Y.js.map → tvs.dt-FRBJRSWI.js.map} +0 -0
  938. /package/dist/{tvs.dtcnv.categorical-OMRZR4Y7.js.map → tvs.dtcnv.categorical-4RRSO735.js.map} +0 -0
  939. /package/dist/{tvs.dtcnv.continuous-AGYOBI5K.js.map → tvs.dtcnv.continuous-HXY2PBUA.js.map} +0 -0
  940. /package/dist/{tvs.dtfusion-2JX5Y2IH.js.map → tvs.dtfusion-67LXBQA4.js.map} +0 -0
  941. /package/dist/{tvs.dtitd-SDSLBBWC.js.map → tvs.dtitd-MCJZCNV2.js.map} +0 -0
  942. /package/dist/{tvs.dtsnvindel-LI7K464K.js.map → tvs.dtsnvindel-K5YIIBQJ.js.map} +0 -0
  943. /package/dist/{tvs.dtsv-VRCLX7QY.js.map → tvs.dtsv-RP7FUB2N.js.map} +0 -0
  944. /package/dist/{tvs.multivalue-4OTY6J2S.js.map → tvs.multivalue-CROMWUCP.js.map} +0 -0
  945. /package/dist/{tvs.numeric-CDATYOR2.js.map → tvs.numeric-IYYYV6ZJ.js.map} +0 -0
  946. /package/dist/{tvs.samplelst-76JOJG2M.js.map → tvs.samplelst-5DXKRFYM.js.map} +0 -0
  947. /package/dist/{tvs.survival-WTFJOKIZ.js.map → tvs.survival-W5RXODBT.js.map} +0 -0
  948. /package/dist/{tvs.termCollection-QQXAS7PE.js.map → tvs.termCollection-OSJYIWDX.js.map} +0 -0
  949. /package/dist/{vocabulary-6ACAEFTL.js.map → vocabulary-HTRYJUD7.js.map} +0 -0
@@ -0,0 +1,400 @@
1
+ import {
2
+ Menu
3
+ } from "./chunk-CNFTQSNE.js";
4
+ import {
5
+ Tableau10_default,
6
+ arc_default
7
+ } from "./chunk-2N345NXD.js";
8
+ import {
9
+ hierarchy,
10
+ partition_default
11
+ } from "./chunk-4OLM3KSB.js";
12
+ import {
13
+ select_default
14
+ } from "./chunk-I6Y4O3RR.js";
15
+ import {
16
+ rgb,
17
+ value_default
18
+ } from "./chunk-Q5RDQNIT.js";
19
+
20
+ // plots/sunburst/SunburstRenderer.ts
21
+ var RINGS = 2;
22
+ var R0 = 74;
23
+ var RING_W = 74;
24
+ var RADIUS = R0 + RINGS * RING_W;
25
+ var SIZE = RADIUS * 2 + 12;
26
+ var DURATION = 750;
27
+ var HOVER_DARKEN = 0.5;
28
+ var DIM = 0.65;
29
+ var WARN = "#b45309";
30
+ var DIVIDER = "#ffffff";
31
+ var SELECT_STROKE = "#111827";
32
+ var CENTRE_FILL = "#f8fafc";
33
+ var CENTRE_STROKE = "#cbd5e1";
34
+ var TEXT_DARK = "#111827";
35
+ var TEXT_MUTED = "#4b5563";
36
+ var LINK = "#2563eb";
37
+ var CARD_BORDER = "#d1d5db";
38
+ var PILL_BG = "#e5e7eb";
39
+ var RULE = "#e5e7eb";
40
+ var RING_SHADE = [-0.35, 0];
41
+ var LABEL_FONT = 12;
42
+ var LABEL_LINE_H = LABEL_FONT * 1.15;
43
+ var LABEL_CHAR_W = LABEL_FONT * 0.55;
44
+ var LABEL_MAX_LINES = 2;
45
+ var NO_HUE = "#9ca3af";
46
+ var radius = (y) => y < 1 ? y * R0 : R0 + (y - 1) * RING_W;
47
+ var midRadius = (g) => (radius(g.y0) + radius(g.y1)) / 2;
48
+ var icon = (paths) => `<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>`;
49
+ var SunburstRenderer = class {
50
+ constructor(opts) {
51
+ /** stat box elements and the value they currently show, for the count animation */
52
+ this.statValues = /* @__PURE__ */ new Map();
53
+ this.baseColor = /* @__PURE__ */ new Map();
54
+ /************ rendering ************/
55
+ this.arc = arc_default().startAngle((d) => d.x0).endAngle((d) => d.x1).innerRadius((d) => radius(d.y0)).outerRadius((d) => Math.max(radius(d.y0), radius(d.y1)));
56
+ this.opts = opts;
57
+ this.hooks = opts.hooks;
58
+ const layout = opts.holder.append("div").style("display", "flex").style("gap", `${opts.gap ?? 24}px`).style("align-items", "flex-start");
59
+ const withPathCard = opts.pathCard !== false;
60
+ const pathCard = withPathCard ? card(layout, "Selection") : void 0;
61
+ pathCard?.box.style("flex", "0 0 230px");
62
+ const left = withPathCard ? void 0 : layout.append("div").style("flex", "0 0 260px").style("min-width", "0").style("display", "flex").style("flex-direction", "column").style("gap", "12px");
63
+ const panel = layout.append("div").append("div").style("width", `${SIZE}px`);
64
+ const toolbar = panel.append("div").style("display", "flex").style("justify-content", "center").style("gap", "28px").style("min-height", "20px");
65
+ const crumbs = withPathCard ? void 0 : panel.append("div").attr("data-testid", "sjpp-sunburst-crumbs").style("text-align", "center").style("font-size", "12px").style("margin-top", "6px").style("min-height", "16px");
66
+ const svg = panel.append("svg").attr("width", SIZE).attr("height", SIZE).style("display", "block").style("user-select", "none").on("mousedown", (event) => {
67
+ if (event.shiftKey && event.button == 0) event.preventDefault();
68
+ });
69
+ const right = layout.append("div").style("flex", "0 0 300px").style("min-width", "0").style("display", "flex").style("flex-direction", "column").style("gap", "12px");
70
+ const stats = right.append("div").style("display", "grid").style("grid-template-columns", "1fr 1fr").style("gap", "8px");
71
+ this.dom = {
72
+ pathCard,
73
+ left,
74
+ crumbs,
75
+ toolbar,
76
+ reset: void 0,
77
+ svg,
78
+ g: svg.append("g").attr("transform", `translate(${SIZE / 2},${SIZE / 2})`),
79
+ centre: void 0,
80
+ centreText: void 0,
81
+ paths: void 0,
82
+ labels: void 0,
83
+ stats,
84
+ right,
85
+ tip: new Menu({ padding: "" })
86
+ };
87
+ this.dom.reset = this.addControl().html(`${icon('<path d="M3 12a9 9 0 1 0 3-6.7"/><polyline points="3 3 3 9 9 9"/>')}RESET`).on("click", () => {
88
+ if (this.focus?.depth) this.zoomTo(this.root);
89
+ });
90
+ for (const label of opts.statLabels || []) {
91
+ const box = card(stats, label);
92
+ box.box.style("padding", "6px 10px");
93
+ box.title.style("margin-bottom", "0").style("white-space", "nowrap").style("overflow", "hidden").style("text-overflow", "ellipsis").attr("title", label);
94
+ const num = box.body.append("div").style("font-size", "20px").style("line-height", "1.2").style("font-weight", "500").style("color", TEXT_DARK).style("font-variant-numeric", "tabular-nums").text("0");
95
+ this.statValues.set(label, { el: num, value: 0, title: box.title });
96
+ }
97
+ }
98
+ /** a control in the toolbar above the chart */
99
+ addControl() {
100
+ return this.dom.toolbar.append("div").style("letter-spacing", "0.15em").style("font-size", "11px").style("font-weight", "bold").style("color", TEXT_MUTED).style("cursor", "pointer").style("user-select", "none").style("white-space", "nowrap");
101
+ }
102
+ unitText(n) {
103
+ return `${n.toLocaleString()} ${n === 1 ? this.opts.unit.one : this.opts.unit.many}`;
104
+ }
105
+ /** (re)draw the chart for a new tree, centred on the root */
106
+ setTree(tree) {
107
+ this.root = hierarchy(tree).sum((d) => d.value || 0).sort(() => 0);
108
+ partition_default().size([2 * Math.PI, this.root.height + 1])(this.root);
109
+ this.focus = this.root;
110
+ this.baseColor.clear();
111
+ let pi = 0;
112
+ for (const c of this.root.children || []) {
113
+ this.baseColor.set(
114
+ c.data.name,
115
+ this.opts.colors?.[c.data.name] || c.data.color || Tableau10_default[pi++ % Tableau10_default.length]
116
+ );
117
+ }
118
+ this.buildChart();
119
+ this.hooks.onFocus(this.focus);
120
+ }
121
+ /************ colours ************/
122
+ /** the hue of a wedge: its own colour or its nearest ancestor's, down to the first ring's */
123
+ hue(d) {
124
+ let n = d;
125
+ while (n.depth > 1) {
126
+ if (n.data.color) return n.data.color;
127
+ n = n.parent;
128
+ }
129
+ return n.depth === 1 ? this.baseColor.get(n.data.name) || NO_HUE : NO_HUE;
130
+ }
131
+ /** the hue, shaded by the ring the wedge occupies around the current centre (so a wedge keeps its
132
+ * hue at every zoom level), faded when dimmed */
133
+ color(d) {
134
+ if (d.depth === 0) return CENTRE_FILL;
135
+ const ring = Math.max(0, Math.min(RING_SHADE.length - 1, d.depth - (this.focus?.depth ?? 0) - 1));
136
+ const c = rgb(this.hue(d)).brighter(RING_SHADE[ring]).formatHex();
137
+ return d.dim ? rgb(value_default(c, "#ffffff")(DIM)).formatHex() : c;
138
+ }
139
+ hoverColor(d) {
140
+ return rgb(this.color(d)).darker(HOVER_DARKEN).formatHex();
141
+ }
142
+ /** build every wedge and label once; zoomTo() then only animates their attributes */
143
+ buildChart() {
144
+ const g = this.dom.g;
145
+ g.selectAll("*").remove();
146
+ const root = this.root;
147
+ root.each((d) => d.current = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 });
148
+ const nodes = root.descendants().slice(1);
149
+ this.dom.centre = g.append("g");
150
+ this.dom.centre.append("circle").attr("r", R0 - 3).attr("fill", CENTRE_FILL).attr("stroke", CENTRE_STROKE).attr("stroke-width", 1.5).on("click", () => {
151
+ if (this.focus.depth) this.zoomTo(this.focus.parent);
152
+ });
153
+ this.dom.centreText = this.dom.centre.append("g").attr("pointer-events", "none");
154
+ this.dom.paths = g.append("g").selectAll("path").data(nodes).join("path").attr("class", "sjpp-sunburst-wedge").attr("fill", (d) => this.color(d)).attr("fill-opacity", (d) => arcVisible(d.current, RINGS) ? 1 : 0).attr("stroke-opacity", (d) => arcVisible(d.current, RINGS) ? 1 : 0).attr("pointer-events", (d) => arcVisible(d.current, RINGS) ? "auto" : "none").attr("d", (d) => this.arc(d.current)).style("cursor", "pointer").on("mouseenter", (event, d) => {
155
+ select_default(event.currentTarget).attr("fill", this.hoverColor(d));
156
+ this.showTip(event, d);
157
+ }).on("mouseleave", (event, d) => {
158
+ select_default(event.currentTarget).attr("fill", this.color(d));
159
+ this.dom.tip.hide();
160
+ }).on("click", (event, d) => this.hooks.onClick(d, event));
161
+ this.dom.labels = g.append("g").attr("pointer-events", "none").attr("text-anchor", "middle").style("user-select", "none").selectAll("text").data(nodes).join("text").attr("font-size", `${LABEL_FONT}px`).attr("font-weight", "bold").attr("fill", "#fff").attr("dominant-baseline", "middle").attr("fill-opacity", (d) => this.labelVisible(d.current) ? 1 : 0).attr("transform", (d) => this.labelTransform(d.current)).each((d, i, els) => this.setLabelText(select_default(els[i]), d, d.current));
162
+ this.refresh();
163
+ this.renderCentre();
164
+ }
165
+ /** a label shows only where its wedge is visible and at least one line fits along the arc */
166
+ labelVisible(g) {
167
+ return arcVisible(g, RINGS) && (g.x1 - g.x0) * midRadius(g) >= LABEL_LINE_H + 2;
168
+ }
169
+ /** along the wedge's mid radius, reading outward; flipped in the left half so it is upright */
170
+ labelTransform(g) {
171
+ const a = (g.x0 + g.x1) / 2 * (180 / Math.PI);
172
+ return `rotate(${a - 90}) translate(${midRadius(g)},0) rotate(${a < 180 ? 0 : 180})`;
173
+ }
174
+ /** wrap the node name into as many lines as the wedge's arc length allows (max 2), each
175
+ * no longer than the ring is thick */
176
+ setLabelText(text, d, g) {
177
+ const arcLen = (g.x1 - g.x0) * midRadius(g);
178
+ const nLines = Math.max(1, Math.min(LABEL_MAX_LINES, Math.floor(arcLen / LABEL_LINE_H)));
179
+ const maxChars = Math.floor((RING_W - 8) / LABEL_CHAR_W);
180
+ const lines = splitLabel(d.data.name, maxChars, nLines);
181
+ text.selectAll("tspan").remove();
182
+ lines.forEach((l, i) => {
183
+ text.append("tspan").attr("x", 0).attr("dy", i === 0 ? `${-(lines.length - 1) * LABEL_LINE_H / 2}px` : `${LABEL_LINE_H}px`).text(l);
184
+ });
185
+ }
186
+ /** name, count and Back on the centre disc */
187
+ renderCentre() {
188
+ const focus = this.focus;
189
+ const t = this.dom.centreText;
190
+ t.selectAll("*").remove();
191
+ this.dom.centre.select("circle").style("cursor", focus.depth ? "pointer" : "default");
192
+ const name = focus.depth ? focus.data.name : this.opts.rootName;
193
+ const nameLines = splitLabel(name, Math.floor(2 * (R0 - 16) / (15 * 0.6)), 2);
194
+ const rows = [
195
+ ...nameLines.map((l) => ({ text: l, size: 15, weight: "bold", color: TEXT_DARK, h: 18 })),
196
+ { text: this.unitText(focus.value || 0), size: 12, color: TEXT_MUTED, h: 16 }
197
+ ];
198
+ if (focus.depth) rows.push({ text: "\u2039 BACK", size: 12, weight: "bold", color: LINK, h: 22 });
199
+ const total = rows.reduce((s, r) => s + r.h, 0);
200
+ let y = -total / 2;
201
+ for (const r of rows) {
202
+ t.append("text").attr("text-anchor", "middle").attr("dominant-baseline", "middle").attr("y", y + r.h / 2).attr("font-size", `${r.size}px`).attr("font-weight", r.weight || "normal").attr("fill", r.color).attr("letter-spacing", r.text.endsWith("BACK") ? "0.12em" : null).text(r.text);
203
+ y += r.h;
204
+ }
205
+ }
206
+ /** re-apply selection strokes, dimming and the path card after the caller's selection changed;
207
+ * no geometry changes */
208
+ refresh() {
209
+ this.root.each((d) => d.dim = !!this.hooks.isDimmed?.(d));
210
+ this.dom.paths.attr("fill", (d) => this.color(d)).attr("stroke", (d) => this.hooks.isSelected(d) ? SELECT_STROKE : DIVIDER).attr("stroke-width", (d) => this.hooks.isSelected(d) ? 3 : 1).attr("stroke-linejoin", "round").style("cursor", (d) => this.hooks.cursor?.(d) || "pointer");
211
+ this.dom.labels.attr("fill", (d) => d.dim ? TEXT_MUTED : "#fff");
212
+ this.renderReset();
213
+ this.renderPath();
214
+ }
215
+ /** reset is only active when zoomed in */
216
+ renderReset() {
217
+ const zoomed = !!this.focus?.depth;
218
+ this.dom.reset.style("opacity", zoomed ? 1 : 0.35).style("cursor", zoomed ? "pointer" : "default");
219
+ }
220
+ /** the path of clicked wedges, as the path card or the breadcrumb */
221
+ renderPath() {
222
+ if (this.dom.pathCard) this.renderPathCard(this.dom.pathCard);
223
+ else this.renderCrumbs();
224
+ }
225
+ /** root › … › centre, each earlier step clickable to zoom back to it */
226
+ renderCrumbs() {
227
+ const box = this.dom.crumbs;
228
+ box.selectAll("*").remove();
229
+ const focus = this.focus;
230
+ const steps = focus.ancestors().reverse();
231
+ steps.forEach((d, i) => {
232
+ if (i) box.append("span").style("color", "#9ca3af").style("margin", "0 6px").text("\u203A");
233
+ const isFocus = d === focus;
234
+ box.append("span").attr("class", "sjpp-sunburst-crumb").style("color", isFocus ? TEXT_DARK : LINK).style("font-weight", isFocus ? "bold" : "normal").style("cursor", isFocus ? "default" : "pointer").attr("title", isFocus ? null : `Go to ${d.depth ? d.data.name : this.opts.rootName}`).text(d.depth ? d.data.name : this.opts.rootName).on("click", () => {
235
+ if (!isFocus) this.zoomTo(d);
236
+ });
237
+ });
238
+ }
239
+ /** the path card: at the root it lists the first ring to click into; once zoomed it shows the path
240
+ * of clicked wedges, each with a colour-coded badge, and clicking a line zooms back to it */
241
+ renderPathCard(pathCard) {
242
+ const box = pathCard.body;
243
+ box.selectAll("*").remove();
244
+ const focus = this.focus;
245
+ const atRoot = !focus.depth;
246
+ pathCard.title.text(atRoot ? this.opts.rootPathTitle || "Selection" : "Selection");
247
+ const nodes = atRoot ? this.root.children || [] : focus.ancestors().reverse().slice(1);
248
+ const STEP = 7;
249
+ nodes.forEach((d, i) => {
250
+ const isFocus = d === focus;
251
+ const indent = atRoot ? 0 : i * STEP;
252
+ const row = box.append("div").style("position", "relative").style("margin-left", `${indent}px`);
253
+ if (indent) {
254
+ row.append("div").style("position", "absolute").style("left", `${-STEP + 2}px`).style("top", "-6px").style("width", `${STEP - 4}px`).style("height", "22px").style("border-left", "1px solid #cbd5e1").style("border-bottom", "1px solid #cbd5e1").style("border-bottom-left-radius", "4px");
255
+ }
256
+ const line = row.append("div").attr("class", "sjpp-sunburst-pathrow").style("display", "flex").style("align-items", "center").style("gap", "8px").style("padding", "4px 6px").style("margin", "2px 0").style("border-radius", "6px").style("background", isFocus ? "#eef2ff" : "transparent").style("cursor", isFocus ? "default" : "pointer").attr("title", isFocus ? d.data.name : `Go to ${d.data.name}`).on("click", () => {
257
+ if (!isFocus) this.zoomTo(d);
258
+ }).on("mouseenter", (event) => {
259
+ if (!isFocus) select_default(event.currentTarget).style("background", "#f3f4f6");
260
+ }).on("mouseleave", (event) => {
261
+ if (!isFocus) select_default(event.currentTarget).style("background", "transparent");
262
+ });
263
+ badge(line, d.data.name, this.color(d));
264
+ const text = line.append("div").style("flex", "1 1 auto").style("min-width", "0").style("line-height", "1.2");
265
+ text.append("div").style("font-size", "0.9em").style("font-weight", isFocus ? "bold" : "normal").style("color", "#111827").style("overflow", "hidden").style("text-overflow", "ellipsis").style("white-space", "nowrap").text(d.data.name);
266
+ text.append("div").style("font-size", "0.7em").style("color", "#6b7280").text(`${d.data.level} \xB7 ${this.unitText(d.value || 0)}`);
267
+ });
268
+ }
269
+ /** shown title of a stat box, which keeps `label` as its key */
270
+ setStatTitle(label, text) {
271
+ this.statValues.get(label)?.title.text(text).attr("title", text);
272
+ }
273
+ /** stat box values, by label; null shows a dash with `nullTitle` as its tooltip. Numbers roll from
274
+ * the previous value */
275
+ setStats(values, nullTitle = (_label) => "") {
276
+ for (const [label, v] of values) {
277
+ const box = this.statValues.get(label);
278
+ if (!box) continue;
279
+ if (v === null) {
280
+ box.el.interrupt().text("\u2014").attr("title", nullTitle(label) || null);
281
+ box.value = 0;
282
+ continue;
283
+ }
284
+ box.el.attr("title", null);
285
+ const from = box.value;
286
+ box.value = v;
287
+ const i = value_default(from, v);
288
+ box.el.transition().duration(DURATION).tween("text", () => (t) => box.el.text(Math.round(i(t)).toLocaleString()));
289
+ }
290
+ }
291
+ /************ interaction ************/
292
+ /** animate every wedge from its current geometry to where it sits with `p` at the centre */
293
+ zoomTo(p) {
294
+ this.focus = p;
295
+ this.dom.tip.hide();
296
+ const root = this.root;
297
+ root.each((d) => d.target = zoomTarget(d, p));
298
+ const t = this.dom.g.transition().duration(DURATION);
299
+ this.dom.paths.attr("pointer-events", "none");
300
+ t.on(
301
+ "end",
302
+ () => this.dom.paths.attr("pointer-events", (d) => arcVisible(d.target, RINGS) ? "auto" : "none")
303
+ );
304
+ this.dom.paths.transition(t).tween("data", (d) => {
305
+ const i = value_default(d.current, d.target);
306
+ return (k) => d.current = i(k);
307
+ }).filter(function(d) {
308
+ return +this.getAttribute("fill-opacity") || arcVisible(d.target, RINGS);
309
+ }).attr("fill-opacity", (d) => arcVisible(d.target, RINGS) ? 1 : 0).attr("stroke-opacity", (d) => arcVisible(d.target, RINGS) ? 1 : 0).attr("fill", (d) => this.color(d)).attrTween("d", (d) => () => this.arc(d.current));
310
+ this.dom.labels.filter((d, i, els) => +els[i].getAttribute("fill-opacity") || this.labelVisible(d.target)).each((d, i, els) => this.setLabelText(select_default(els[i]), d, d.target)).transition(t).attr("fill-opacity", (d) => this.labelVisible(d.target) ? 1 : 0).attrTween("transform", (d) => () => this.labelTransform(d.current));
311
+ this.renderCentre();
312
+ this.dom.centreText.attr("opacity", 0).transition(t).attr("opacity", 1);
313
+ this.renderReset();
314
+ this.renderPath();
315
+ this.hooks.onFocus(p);
316
+ }
317
+ showTip(event, d) {
318
+ this.dom.tip.clear().show(event.clientX, event.clientY);
319
+ const box = this.dom.tip.d.append("div").style("padding", "10px 14px").style("min-width", "170px").style("font-size", "13px").style("line-height", "1.45");
320
+ box.append("div").style("font-weight", "bold").style("font-size", "14px").text(d.data.name);
321
+ this.hooks.tooltip(d, box);
322
+ }
323
+ destroy() {
324
+ this.dom.tip.destroy?.();
325
+ }
326
+ };
327
+ function card(holder, title) {
328
+ const box = holder.append("div").style("border", `1px solid ${CARD_BORDER}`).style("border-radius", "10px").style("padding", "10px 12px").style("box-sizing", "border-box");
329
+ const head = box.append("div").style("display", "flex").style("align-items", "center").style("justify-content", "space-between").style("gap", "8px");
330
+ const titleDiv = head.append("div").style("font-size", "10px").style("font-weight", "bold").style("letter-spacing", "0.12em").style("text-transform", "uppercase").style("color", TEXT_MUTED).style("margin-bottom", "8px").text(title);
331
+ const headRight = head.append("div").style("display", "flex").style("align-items", "center").style("gap", "8px");
332
+ return { box, title: titleDiv, headRight, body: box.append("div") };
333
+ }
334
+ function badge(holder, name, color, size = 30) {
335
+ return holder.append("span").style("flex", "0 0 auto").style("min-width", `${size}px`).style("height", `${size}px`).style("line-height", `${size}px`).style("padding", "0 4px").style("box-sizing", "border-box").style("border-radius", "6px").style("background", color).style("color", "#fff").style("font-weight", "bold").style("font-size", size >= 30 ? "0.8em" : "0.7em").style("text-align", "center").text(badgeCode(name));
336
+ }
337
+ function pill(holder, opts = {}) {
338
+ const el = holder.append(opts.button ? "button" : "span").style("border-radius", "999px").style("font-weight", "bold").style("font-variant-numeric", "tabular-nums");
339
+ if (opts.button)
340
+ el.style("border", "none").style("background", SELECT_STROKE).style("color", "#fff").style("font-size", "13px").style("padding", "8px 16px").style("width", "100%").style("cursor", "pointer");
341
+ else el.style("background", PILL_BG).style("color", TEXT_DARK).style("font-size", "11px").style("padding", "1px 8px");
342
+ return el;
343
+ }
344
+ function badgeCode(name) {
345
+ if (name.length <= 5 && name === name.toUpperCase()) return name;
346
+ const words = name.split(/[\s()]+/).filter(Boolean);
347
+ if (/^[<>≤≥]?[\d.]+$/.test(words[0] || "")) return words[0].slice(0, 5);
348
+ if (words.length > 1)
349
+ return words.map((w) => w[0]).join("").toUpperCase().slice(0, 3);
350
+ return name.slice(0, 2).toUpperCase();
351
+ }
352
+ function zoomTarget(d, focus) {
353
+ const span = focus.x1 - focus.x0 || 1;
354
+ const ang = (x) => Math.max(0, Math.min(1, (x - focus.x0) / span)) * 2 * Math.PI;
355
+ return {
356
+ x0: ang(d.x0),
357
+ x1: ang(d.x1),
358
+ y0: Math.max(0, d.y0 - focus.depth),
359
+ y1: Math.max(0, d.y1 - focus.depth)
360
+ };
361
+ }
362
+ function arcVisible(g, rings) {
363
+ return g.y0 >= 1 && g.y1 <= rings + 1 && g.x1 > g.x0;
364
+ }
365
+ function splitLabel(text, maxChars, maxLines) {
366
+ const words = text.split(/\s+/).filter(Boolean);
367
+ const lines = [];
368
+ let cur = "";
369
+ for (const w of words) {
370
+ if (!cur) cur = w;
371
+ else if ((cur + " " + w).length <= maxChars) cur += " " + w;
372
+ else {
373
+ lines.push(cur);
374
+ cur = w;
375
+ }
376
+ }
377
+ if (cur) lines.push(cur);
378
+ if (lines.length > maxLines) {
379
+ const rest = lines.slice(maxLines - 1).join(" ");
380
+ lines.length = maxLines - 1;
381
+ lines.push(rest);
382
+ }
383
+ return lines.map((l) => l.length > maxChars ? l.slice(0, Math.max(1, maxChars - 1)) + "\u2026" : l);
384
+ }
385
+
386
+ export {
387
+ SIZE,
388
+ WARN,
389
+ SELECT_STROKE,
390
+ TEXT_DARK,
391
+ TEXT_MUTED,
392
+ LINK,
393
+ RULE,
394
+ icon,
395
+ SunburstRenderer,
396
+ card,
397
+ badge,
398
+ pill
399
+ };
400
+ //# sourceMappingURL=chunk-JI632MAR.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/sunburst/SunburstRenderer.ts"],
4
+ "sourcesContent": ["import { 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'\n\n/*\nZoomable sunburst renderer, shared by the term-based sunburst chart and the panNDA cohort sunburst.\n\nDraws a tree of SunNode: each wedge is sized by the summed `value` of its subtree. Two rings are shown\naround the centre; zoomTo() makes a wedge the centre so the next two rings appear, and the centre\noffers Back. The renderer owns the chart, the path card on the left (or, with pathCard: false, a\nbreadcrumb above the chart and an empty left column for the caller), the controls above the chart and\nthe stat boxes on the right; what a click does, what is selected or dimmed, the tooltip body and the\nstat values come from the caller's hooks, so the caller decides what the wedges mean.\n\nZooming is animated the way d3's zoomable sunburst does it: every node keeps a `current` geometry\n(angles + ring units, see Geom); zoomTo() assigns each node a `target` relative to the new centre, and\none transition interpolates current \u2192 target while re-drawing arcs and label positions each frame. The\nclicked wedge's target is the full centre disc (y 0..1), so it visibly sweeps round into a circle and\nfades as its children unfold into the rings; Back runs the same interpolation the other way. The\nwedges are created once per setTree() and only their attributes change afterwards.\n*/\n\nconst RINGS = 2\nconst R0 = 74 // centre radius\nconst RING_W = 74\nconst RADIUS = R0 + RINGS * RING_W\nexport const 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 dimmed wedge fades towards white */\nconst DIM = 0.65\nexport const 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'\nexport const SELECT_STROKE = '#111827'\nconst CENTRE_FILL = '#f8fafc'\nconst CENTRE_STROKE = '#cbd5e1'\nexport const TEXT_DARK = '#111827'\nexport const TEXT_MUTED = '#4b5563'\nexport const LINK = '#2563eb'\nconst CARD_BORDER = '#d1d5db'\nconst PILL_BG = '#e5e7eb'\nexport const RULE = '#e5e7eb'\n/** shade of a ring relative to the centre: the inner ring a touch darker than its hue */\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\nconst NO_HUE = '#9ca3af'\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 */\nexport const 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\n/** one wedge. `value` is the node's own weight (e.g. 1 for a sample-set leaf, or the samples that end\n * at this node); d3 adds the subtree's weights to it, so a node's size is value + its children's */\nexport type SunNode = {\n\tname: string\n\t/** ring name; undefined for the root and for leaves that are not on a ring */\n\tlevel?: string\n\tvalue?: number\n\tchildren?: SunNode[]\n\t/** the wedge's own hue (e.g. a term category colour); otherwise it takes its nearest ancestor's */\n\tcolor?: string\n\t[payload: string]: any\n}\n\nexport type HNode = any // d3 HierarchyRectangularNode<SunNode>\n/** a card: rounded box with a spaced-capitals title and an optional right-hand slot in its head */\nexport type Card = { box: any; title: any; headRight: any; body: any }\n\nexport type SunburstHooks = {\n\t/** a wedge was clicked; the caller zooms (renderer.zoomTo) and/or selects */\n\tonClick: (d: HNode, event: any) => void\n\tisSelected: (d: HNode) => boolean\n\tisDimmed?: (d: HNode) => boolean\n\t/** css cursor of a visible wedge, default pointer */\n\tcursor?: (d: HNode) => string\n\t/** fills the tooltip below the wedge name */\n\ttooltip: (d: HNode, box: any) => void\n\t/** the centre changed (after setTree and every zoomTo): update stats, toolbar and side panels */\n\tonFocus: (focus: HNode) => void\n}\n\nexport type SunburstRendererOpts = {\n\tholder: any\n\t/** the counted unit, e.g. sample set(s) or sample(s) */\n\tunit: { one: string; many: string }\n\t/** centre text at the root */\n\trootName: string\n\t/** title of the path card at the root, e.g. 'Species selection' */\n\trootPathTitle?: string\n\t/** base colour per first-ring value, before the node's own colour and the default palette */\n\tcolors?: { [value: string]: string }\n\t/** stat box labels, values come from setStats() */\n\tstatLabels?: string[]\n\t/** false: show the path as a breadcrumb above the chart, and leave the left column (dom.left)\n\t * to the caller; default true */\n\tpathCard?: boolean\n\t/** px between the chart and the columns beside it, default 24; the chart has 6px of its own */\n\tgap?: number\n\thooks: SunburstHooks\n}\n\nexport class SunburstRenderer {\n\topts: SunburstRendererOpts\n\thooks: SunburstHooks\n\tdom: {\n\t\t/** path box: the first ring at the start, then the path of clicked wedges */\n\t\tpathCard?: Card\n\t\t/** left column for the caller's cards, when there is no path card */\n\t\tleft?: any\n\t\t/** path line below the toolbar, when there is no path card */\n\t\tcrumbs?: any\n\t\ttoolbar: any\n\t\treset: 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\t/** column right of the chart, below the stat boxes, for the caller's cards */\n\t\tright: any\n\t\ttip: Menu\n\t}\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; title: any }> = new Map()\n\tbaseColor: Map<string, string> = new Map()\n\n\tconstructor(opts: SunburstRendererOpts) {\n\t\tthis.opts = opts\n\t\tthis.hooks = opts.hooks\n\t\tconst layout = opts.holder\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('gap', `${opts.gap ?? 24}px`)\n\t\t\t.style('align-items', 'flex-start')\n\t\t// path box, or the caller's column, to the left of the chart\n\t\tconst withPathCard = opts.pathCard !== false\n\t\tconst pathCard = withPathCard ? card(layout, 'Selection') : undefined\n\t\tpathCard?.box.style('flex', '0 0 230px')\n\t\tconst left = withPathCard\n\t\t\t? undefined\n\t\t\t: layout\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('flex', '0 0 260px')\n\t\t\t\t\t.style('min-width', '0')\n\t\t\t\t\t.style('display', 'flex')\n\t\t\t\t\t.style('flex-direction', 'column')\n\t\t\t\t\t.style('gap', '12px')\n\t\tconst panel = layout.append('div').append('div').style('width', `${SIZE}px`)\n\t\t// controls above the chart, in spaced capitals: reset, then any of the caller's (addControl)\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 crumbs = withPathCard\n\t\t\t? undefined\n\t\t\t: panel\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr('data-testid', 'sjpp-sunburst-crumbs')\n\t\t\t\t\t.style('text-align', 'center')\n\t\t\t\t\t.style('font-size', '12px')\n\t\t\t\t\t.style('margin-top', '6px')\n\t\t\t\t\t.style('min-height', '16px')\n\t\tconst svg = panel\n\t\t\t.append('svg')\n\t\t\t.attr('width', SIZE)\n\t\t\t.attr('height', SIZE)\n\t\t\t.style('display', 'block')\n\t\t\t.style('user-select', 'none')\n\t\t\t.on('mousedown', (event: MouseEvent) => {\n\t\t\t\t// Stop Shift+click from extending a browser text selection outside the chart.\n\t\t\t\tif (event.shiftKey && event.button == 0) event.preventDefault()\n\t\t\t})\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\tconst 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.dom = {\n\t\t\tpathCard,\n\t\t\tleft,\n\t\t\tcrumbs,\n\t\t\ttoolbar,\n\t\t\treset: undefined,\n\t\t\tsvg,\n\t\t\tg: svg.append('g').attr('transform', `translate(${SIZE / 2},${SIZE / 2})`),\n\t\t\tcentre: undefined,\n\t\t\tcentreText: undefined,\n\t\t\tpaths: undefined,\n\t\t\tlabels: undefined,\n\t\t\tstats,\n\t\t\tright,\n\t\t\ttip: new Menu({ padding: '' })\n\t\t}\n\t\tthis.dom.reset = this.addControl()\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\tfor (const label of opts.statLabels || []) {\n\t\t\tconst box = card(stats, label)\n\t\t\tbox.box.style('padding', '6px 10px')\n\t\t\t// the label on one line, so the box stays short\n\t\t\tbox.title\n\t\t\t\t.style('margin-bottom', '0')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.style('overflow', 'hidden')\n\t\t\t\t.style('text-overflow', 'ellipsis')\n\t\t\t\t.attr('title', label)\n\t\t\tconst num = box.body\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '20px')\n\t\t\t\t.style('line-height', '1.2')\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(label, { el: num, value: 0, title: box.title })\n\t\t}\n\t}\n\n\t/** a control in the toolbar above the chart */\n\taddControl() {\n\t\treturn this.dom.toolbar\n\t\t\t.append('div')\n\t\t\t.style('letter-spacing', '0.15em')\n\t\t\t.style('font-size', '11px')\n\t\t\t.style('font-weight', 'bold')\n\t\t\t.style('color', TEXT_MUTED)\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.style('user-select', 'none')\n\t\t\t.style('white-space', 'nowrap')\n\t}\n\n\tunitText(n: number): string {\n\t\treturn `${n.toLocaleString()} ${n === 1 ? this.opts.unit.one : this.opts.unit.many}`\n\t}\n\n\t/** (re)draw the chart for a new tree, centred on the root */\n\tsetTree(tree: SunNode) {\n\t\tthis.root = hierarchy<SunNode>(tree)\n\t\t\t.sum(d => d.value || 0)\n\t\t\t.sort(() => 0)\n\t\tpartition<SunNode>().size([2 * Math.PI, this.root.height + 1])(this.root)\n\t\tthis.focus = this.root\n\t\t// first-ring colours: the dataset colours, the node's own, 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(\n\t\t\t\tc.data.name,\n\t\t\t\tthis.opts.colors?.[c.data.name] || c.data.color || schemeTableau10[pi++ % schemeTableau10.length]\n\t\t\t)\n\t\t}\n\t\tthis.buildChart()\n\t\tthis.hooks.onFocus(this.focus)\n\t}\n\n\t/************ colours ************/\n\n\t/** the hue of a wedge: its own colour or its nearest ancestor's, down to the first ring's */\n\thue(d: HNode): string {\n\t\tlet n = d\n\t\twhile (n.depth > 1) {\n\t\t\tif (n.data.color) return n.data.color\n\t\t\tn = n.parent\n\t\t}\n\t\treturn n.depth === 1 ? this.baseColor.get(n.data.name) || NO_HUE : NO_HUE\n\t}\n\n\t/** the hue, shaded by the ring the wedge occupies around the current centre (so a wedge keeps its\n\t * hue at every zoom level), faded when dimmed */\n\tcolor(d: HNode): string {\n\t\tif (d.depth === 0) return CENTRE_FILL\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(this.hue(d)).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', (event: any, d: HNode) => this.hooks.onClick(d, event))\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.refresh()\n\t\tthis.renderCentre()\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, 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 : this.opts.rootName\n\t\tconst nameLines = splitLabel(name, Math.floor((2 * (R0 - 16)) / (15 * 0.6)), 2)\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: this.unitText(focus.value || 0), 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/** re-apply selection strokes, dimming and the path card after the caller's selection changed;\n\t * no geometry changes */\n\trefresh() {\n\t\tthis.root!.each((d: HNode) => (d.dim = !!this.hooks.isDimmed?.(d)))\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.hooks.isSelected(d) ? SELECT_STROKE : DIVIDER))\n\t\t\t.attr('stroke-width', (d: HNode) => (this.hooks.isSelected(d) ? 3 : 1))\n\t\t\t.attr('stroke-linejoin', 'round')\n\t\t\t.style('cursor', (d: HNode) => this.hooks.cursor?.(d) || 'pointer')\n\t\tthis.dom.labels.attr('fill', (d: HNode) => (d.dim ? TEXT_MUTED : '#fff'))\n\t\tthis.renderReset()\n\t\tthis.renderPath()\n\t}\n\n\t/** reset is only active when zoomed in */\n\trenderReset() {\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}\n\n\t/** the path of clicked wedges, as the path card or the breadcrumb */\n\trenderPath() {\n\t\tif (this.dom.pathCard) this.renderPathCard(this.dom.pathCard)\n\t\telse this.renderCrumbs()\n\t}\n\n\t/** root \u203A \u2026 \u203A centre, each earlier step clickable to zoom back to it */\n\trenderCrumbs() {\n\t\tconst box = this.dom.crumbs\n\t\tbox.selectAll('*').remove()\n\t\tconst focus = this.focus!\n\t\tconst steps: HNode[] = focus.ancestors().reverse()\n\t\tsteps.forEach((d: HNode, i: number) => {\n\t\t\tif (i) box.append('span').style('color', '#9ca3af').style('margin', '0 6px').text('\u203A')\n\t\t\tconst isFocus = d === focus\n\t\t\tbox\n\t\t\t\t.append('span')\n\t\t\t\t.attr('class', 'sjpp-sunburst-crumb')\n\t\t\t\t.style('color', isFocus ? TEXT_DARK : LINK)\n\t\t\t\t.style('font-weight', isFocus ? 'bold' : 'normal')\n\t\t\t\t.style('cursor', isFocus ? 'default' : 'pointer')\n\t\t\t\t.attr('title', isFocus ? null : `Go to ${d.depth ? d.data.name : this.opts.rootName}`)\n\t\t\t\t.text(d.depth ? d.data.name : this.opts.rootName)\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})\n\t}\n\n\t/** the path card: at the root it lists the first ring to click into; once zoomed it shows the path\n\t * of clicked wedges, each with a colour-coded badge, and clicking a line zooms back to it */\n\trenderPathCard(pathCard: Card) {\n\t\tconst box = pathCard.body\n\t\tbox.selectAll('*').remove()\n\t\tconst focus = this.focus!\n\t\tconst atRoot = !focus.depth\n\t\tpathCard.title.text(atRoot ? this.opts.rootPathTitle || 'Selection' : '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.attr('class', 'sjpp-sunburst-pathrow')\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\tbadge(line, d.data.name, this.color(d))\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('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\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 ${this.unitText(d.value || 0)}`)\n\t\t})\n\t}\n\n\t/** shown title of a stat box, which keeps `label` as its key */\n\tsetStatTitle(label: string, text: string) {\n\t\tthis.statValues.get(label)?.title.text(text).attr('title', text)\n\t}\n\n\t/** stat box values, by label; null shows a dash with `nullTitle` as its tooltip. Numbers roll from\n\t * the previous value */\n\tsetStats(values: Map<string, number | null>, nullTitle = (_label: string) => '') {\n\t\tfor (const [label, v] of values) {\n\t\t\tconst box = this.statValues.get(label)\n\t\t\tif (!box) continue\n\t\t\tif (v === null) {\n\t\t\t\tbox.el\n\t\t\t\t\t.interrupt()\n\t\t\t\t\t.text('\u2014')\n\t\t\t\t\t.attr('title', nullTitle(label) || null)\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/************ interaction ************/\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.renderReset()\n\t\tthis.renderPath()\n\t\tthis.hooks.onFocus(p)\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\tthis.hooks.tooltip(d, box)\n\t}\n\n\tdestroy() {\n\t\tthis.dom.tip.destroy?.()\n\t}\n}\n\n/************ shared pieces ************/\n\n/** the card every box on the page is built from: rounded border, spaced-capitals title,\n * a right-hand slot in the head for a count or control, and a body */\nexport function card(holder: any, title: string): Card {\n\tconst box = holder\n\t\t.append('div')\n\t\t.style('border', `1px solid ${CARD_BORDER}`)\n\t\t.style('border-radius', '10px')\n\t\t.style('padding', '10px 12px')\n\t\t.style('box-sizing', 'border-box')\n\tconst head = box\n\t\t.append('div')\n\t\t.style('display', 'flex')\n\t\t.style('align-items', 'center')\n\t\t.style('justify-content', 'space-between')\n\t\t.style('gap', '8px')\n\tconst titleDiv = head\n\t\t.append('div')\n\t\t.style('font-size', '10px')\n\t\t.style('font-weight', 'bold')\n\t\t.style('letter-spacing', '0.12em')\n\t\t.style('text-transform', 'uppercase')\n\t\t.style('color', TEXT_MUTED)\n\t\t.style('margin-bottom', '8px')\n\t\t.text(title)\n\tconst headRight = head.append('div').style('display', 'flex').style('align-items', 'center').style('gap', '8px')\n\treturn { box, title: titleDiv, headRight, body: box.append('div') }\n}\n\n/** colour-coded square with the short code of a name */\nexport function badge(holder: any, name: string, color: string, size = 30) {\n\treturn holder\n\t\t.append('span')\n\t\t.style('flex', '0 0 auto')\n\t\t.style('min-width', `${size}px`)\n\t\t.style('height', `${size}px`)\n\t\t.style('line-height', `${size}px`)\n\t\t.style('padding', '0 4px')\n\t\t.style('box-sizing', 'border-box')\n\t\t.style('border-radius', '6px')\n\t\t.style('background', color)\n\t\t.style('color', '#fff')\n\t\t.style('font-weight', 'bold')\n\t\t.style('font-size', size >= 30 ? '0.8em' : '0.7em')\n\t\t.style('text-align', 'center')\n\t\t.text(badgeCode(name))\n}\n\n/** rounded pill: the primary action button, or a count */\nexport function pill(holder: any, opts: { button?: boolean } = {}) {\n\tconst el = holder\n\t\t.append(opts.button ? 'button' : 'span')\n\t\t.style('border-radius', '999px')\n\t\t.style('font-weight', 'bold')\n\t\t.style('font-variant-numeric', 'tabular-nums')\n\tif (opts.button)\n\t\tel.style('border', 'none')\n\t\t\t.style('background', SELECT_STROKE)\n\t\t\t.style('color', '#fff')\n\t\t\t.style('font-size', '13px')\n\t\t\t.style('padding', '8px 16px')\n\t\t\t.style('width', '100%')\n\t\t\t.style('cursor', 'pointer')\n\telse el.style('background', PILL_BG).style('color', TEXT_DARK).style('font-size', '11px').style('padding', '1px 8px')\n\treturn el\n}\n\n/** short code for a badge: short upper-case names as they are (AD, CSF, T-ALL), the leading number\n * of a bin label (10 to <20 \u2192 10), initials of multi-word names (Frontal Cortex \u2192 FC), else the\n * first two letters (Human \u2192 HU) */\nexport function badgeCode(name: string): string {\n\tif (name.length <= 5 && name === name.toUpperCase()) return name\n\tconst words = name.split(/[\\s()]+/).filter(Boolean)\n\tif (/^[<>\u2264\u2265]?[\\d.]+$/.test(words[0] || '')) return words[0].slice(0, 5)\n\tif (words.length > 1)\n\t\treturn words\n\t\t\t.map(w => w[0])\n\t\t\t.join('')\n\t\t\t.toUpperCase()\n\t\t\t.slice(0, 3)\n\treturn name.slice(0, 2).toUpperCase()\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 */\nexport function 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"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }