@sjcrh/proteinpaint-client 2.219.1 → 2.220.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (969) hide show
  1. package/dist/2dmaf-KRIX5DBS.js +1362 -0
  2. package/dist/AggMatrixInput-GBQD74NV.js +402 -0
  3. package/dist/AggregateMatrix-U2MOQOSZ.js +37 -0
  4. package/dist/AppHeader-OBZWUCOD.js +826 -0
  5. package/dist/BoxPlot-ZK6Q5JGE.js +1229 -0
  6. package/dist/CorrelationVolcano-WGR4JIGK.js +613 -0
  7. package/dist/Cuminc-I6D6YSIL.js +1217 -0
  8. package/dist/DE-HO7UBKPC.js +85 -0
  9. package/dist/DEinput-6LX4I65N.js +479 -0
  10. package/dist/DM-WYKLX4IC.js +86 -0
  11. package/dist/DifferentialAnalysis-L5VVBCVZ.js +236 -0
  12. package/dist/Disco-HLARIYXU.js +3384 -0
  13. package/dist/Disco.UI-W64WFVC3.js +239 -0
  14. package/dist/DmrPlot-BKQOT4JM.js +361 -0
  15. package/dist/GB-WKFGDJYW.js +1388 -0
  16. package/dist/GSEA-DCCJI5JE.js +870 -0
  17. package/dist/GeneExpInput-APLFNE6N.js +38 -0
  18. package/dist/Geomap-FTKWCV4J.js +80 -0
  19. package/dist/HicApp-ZGZKO4Y4.js +2240 -0
  20. package/dist/IDCViewer-MXB3OZUZ.js +10808 -0
  21. package/dist/NumBinaryEditor-S3MHUVZ5.js +274 -0
  22. package/dist/NumBinaryEditor.unit.spec-264X5ULG.js +308 -0
  23. package/dist/NumContEditor-MKEZCZMR.js +100 -0
  24. package/dist/NumContEditor.unit.spec-KBRAIU7M.js +160 -0
  25. package/dist/NumCustomBinEditor-OSF64BFC.js +29 -0
  26. package/dist/NumCustomBinEditor.unit.spec-T2SRBXTV.js +393 -0
  27. package/dist/NumDiscreteEditor-PVW5HRRQ.js +165 -0
  28. package/dist/NumDiscreteEditor.unit.spec-GUK7VWMR.js +229 -0
  29. package/dist/NumRegularBinEditor-757VRGFQ.js +29 -0
  30. package/dist/NumRegularBinEditor.unit.spec-JUIGEH3Z.js +274 -0
  31. package/dist/NumSplineEditor-U6MVFSCZ.js +205 -0
  32. package/dist/NumSplineEditor.unit.spec-PSH6YENX.js +220 -0
  33. package/dist/NumericDensity-YIP25Z4Y.js +29 -0
  34. package/dist/NumericDensity.unit.spec-3OSIZJHH.js +414 -0
  35. package/dist/NumericHandler-D2CO3FTS.js +30 -0
  36. package/dist/NumericHandler.unit.spec-RNFVGO2I.js +225 -0
  37. package/dist/ProteomeInput-ZOBJ2VU6.js +610 -0
  38. package/dist/Regression-ABKJOOMQ.js +1412 -0
  39. package/dist/RunChart2-D5CEEFEE.js +744 -0
  40. package/dist/SC-RLVEECU5.js +1290 -0
  41. package/dist/Violin-PCNX2CWV.js +1092 -0
  42. package/dist/Volcano-NVFNO7NE.js +2661 -0
  43. package/dist/Volcano-NVFNO7NE.js.map +7 -0
  44. package/dist/Wsi-MAMCK5YZ.js +636 -0
  45. package/dist/aboutSunburst-VSQADTFD.js +86 -0
  46. package/dist/aboutSunburst-VSQADTFD.js.map +7 -0
  47. package/dist/adSandbox-5YFAQZO6.js +29 -0
  48. package/dist/animatedBubbleChart-GM2GXDP3.js +542 -0
  49. package/dist/app-FNNCH37H.js +28 -0
  50. package/dist/app-ID5S5FUP.js +38 -0
  51. package/dist/app.js +14 -14
  52. package/dist/bam-JZLYXHMF.js +872 -0
  53. package/dist/barchart-EAXXILCH.js +38 -0
  54. package/dist/barchart2-E6A4UMUB.js +305 -0
  55. package/dist/block-VMVJH77F.js +6203 -0
  56. package/dist/block-VMVJH77F.js.map +7 -0
  57. package/dist/block.init-TUCGKLXG.js +29 -0
  58. package/dist/block.mds.expressionrank-YVROHZVX.js +350 -0
  59. package/dist/block.mds.geneboxplot-TQNEWBJY.js +819 -0
  60. package/dist/block.mds.junction-ZOSTZQF5.js +1534 -0
  61. package/dist/block.mds.svcnv-XSTSJ4ZD.js +6413 -0
  62. package/dist/block.svg-D6HXL4SC.js +155 -0
  63. package/dist/block.tk.aicheck-7RNC4HRR.js +274 -0
  64. package/dist/block.tk.bam-L3U5YH3F.js +1897 -0
  65. package/dist/block.tk.bigwig.ui-UVSZ7LWQ.js +202 -0
  66. package/dist/block.tk.hicstraw-YFBJR5LO.js +814 -0
  67. package/dist/block.tk.junction-DNRK2JNQ.js +2353 -0
  68. package/dist/block.tk.junction.textmatrixui-EN4ADCAU.js +190 -0
  69. package/dist/block.tk.ld-I5CTAJ4K.js +90 -0
  70. package/dist/block.tk.menu-HUZBY7OM.js +1050 -0
  71. package/dist/block.tk.pgv-KA6BFYPY.js +934 -0
  72. package/dist/brainImaging-OQB2ZHCU.js +550 -0
  73. package/dist/brainRegions-2CRVMS24.js +213 -0
  74. package/dist/bubbleHeatmap-MANNFEG2.js +374 -0
  75. package/dist/cellTypeBubbleHeatmap-LRK4R4EC.js +274 -0
  76. package/dist/chunk-2NB5HVXB.js +159 -0
  77. package/dist/chunk-2OMX5AYB.js +195 -0
  78. package/dist/chunk-3E26ITYK.js +55 -0
  79. package/dist/chunk-3H4FCRAN.js +266 -0
  80. package/dist/chunk-4GKC43U3.js +480 -0
  81. package/dist/chunk-4NQS45KH.js +302 -0
  82. package/dist/chunk-4TJO2DGU.js +2297 -0
  83. package/dist/chunk-4TJO2DGU.js.map +7 -0
  84. package/dist/chunk-4ZV6SE4B.js +240 -0
  85. package/dist/chunk-5DI4UNH5.js +562 -0
  86. package/dist/chunk-5TA5LHPW.js +54 -0
  87. package/dist/chunk-5YQXNW6Y.js +1339 -0
  88. package/dist/chunk-67MD4UES.js +848 -0
  89. package/dist/chunk-6BBUIRHA.js +123 -0
  90. package/dist/chunk-6DESNDD5.js +468 -0
  91. package/dist/chunk-6DRRN5XP.js +243 -0
  92. package/dist/chunk-6T4MN7LV.js +397 -0
  93. package/dist/chunk-7SFK32JP.js +398 -0
  94. package/dist/chunk-7SFK32JP.js.map +7 -0
  95. package/dist/chunk-7TLUQH7J.js +82 -0
  96. package/dist/chunk-7YMZSVWW.js +1219 -0
  97. package/dist/chunk-AENUJ7UO.js +299 -0
  98. package/dist/chunk-AZSWQWKL.js +263 -0
  99. package/dist/chunk-B5IJAQG4.js +2054 -0
  100. package/dist/chunk-B5IJAQG4.js.map +7 -0
  101. package/dist/chunk-BOCU6PXO.js +257 -0
  102. package/dist/chunk-C7KUMZQM.js +59 -0
  103. package/dist/chunk-C7ROKWV2.js +140 -0
  104. package/dist/chunk-C7ZPDNOJ.js +70 -0
  105. package/dist/chunk-CAH6LJ5Z.js +31 -0
  106. package/dist/chunk-DEQREL5P.js +692 -0
  107. package/dist/chunk-DXKZBSSD.js +2799 -0
  108. package/dist/chunk-DZBPF5QI.js +550 -0
  109. package/dist/chunk-DZDK64XY.js +516 -0
  110. package/dist/chunk-E6C2EWHU.js +176 -0
  111. package/dist/chunk-EYKJQJ7R.js +382 -0
  112. package/dist/chunk-FE5TCBIT.js +30 -0
  113. package/dist/chunk-FJ2JV2VK.js +217 -0
  114. package/dist/chunk-FZYVPRVQ.js +38 -0
  115. package/dist/chunk-GBKQHVKJ.js +274 -0
  116. package/dist/chunk-GK5QS5BR.js +2685 -0
  117. package/dist/chunk-GLAR6VNF.js +626 -0
  118. package/dist/chunk-GUW7VTUL.js +281 -0
  119. package/dist/chunk-H6YM4NKS.js +134 -0
  120. package/dist/chunk-HJKVYTYK.js +379 -0
  121. package/dist/chunk-HN67TOA7.js +2008 -0
  122. package/dist/chunk-IXV7FX5B.js +255 -0
  123. package/dist/chunk-IZ4IPYQY.js +466 -0
  124. package/dist/chunk-JHLF2ZC2.js +472 -0
  125. package/dist/chunk-JPPNQVKA.js +56 -0
  126. package/dist/chunk-K2ARLT2A.js +26 -0
  127. package/dist/chunk-KCVBFXGO.js +2941 -0
  128. package/dist/chunk-KCVBFXGO.js.map +7 -0
  129. package/dist/chunk-LOX5GAVG.js +103 -0
  130. package/dist/chunk-M6OSJMVD.js +536 -0
  131. package/dist/chunk-M6OSJMVD.js.map +7 -0
  132. package/dist/chunk-MANAUI7R.js +54 -0
  133. package/dist/chunk-MEUSRAOE.js +170 -0
  134. package/dist/chunk-MHWYRNGA.js +348 -0
  135. package/dist/chunk-NX5IB4IY.js +37 -0
  136. package/dist/chunk-PEKCVKJK.js +26621 -0
  137. package/dist/chunk-PEKCVKJK.js.map +7 -0
  138. package/dist/chunk-PIGTIWSK.js +34 -0
  139. package/dist/chunk-PIN5YUVJ.js +6375 -0
  140. package/dist/chunk-PV7AYYRZ.js +50 -0
  141. package/dist/chunk-QI7OWVFY.js +54 -0
  142. package/dist/chunk-QWBNQYIF.js +182 -0
  143. package/dist/chunk-RIHO7ZD5.js +119 -0
  144. package/dist/chunk-S6WRMFWQ.js +418 -0
  145. package/dist/chunk-SUOEFEJO.js +96 -0
  146. package/dist/chunk-TVSNHVWX.js +194 -0
  147. package/dist/chunk-U3CWWOHL.js +340 -0
  148. package/dist/chunk-VGC4STKW.js +56 -0
  149. package/dist/chunk-VHC4FDEJ.js +141 -0
  150. package/dist/chunk-VLIOMJDR.js +276 -0
  151. package/dist/chunk-VSDJEPDN.js +5214 -0
  152. package/dist/chunk-WJLRU5OF.js +5786 -0
  153. package/dist/chunk-WJLRU5OF.js.map +7 -0
  154. package/dist/chunk-WTWHUZ4O.js +203 -0
  155. package/dist/chunk-XHZ723K4.js +2334 -0
  156. package/dist/chunk-XP4P55IC.js +14 -0
  157. package/dist/chunk-XVPPM25G.js +1253 -0
  158. package/dist/chunk-XYUERIZ6.js +4389 -0
  159. package/dist/chunk-XYUERIZ6.js.map +7 -0
  160. package/dist/chunk-YDIIKD7O.js +102 -0
  161. package/dist/chunk-YLGSRK75.js +102 -0
  162. package/dist/chunk-YR6EXI2K.js +184 -0
  163. package/dist/chunk-Z53VY5JV.js +296 -0
  164. package/dist/chunk-Z5ECCUNG.js +444 -0
  165. package/dist/chunk-Z7Q2O5Y7.js +237 -0
  166. package/dist/cohort-ERDL7EJU.js +66 -0
  167. package/dist/cohortSunburst-KSTVS3OQ.js +402 -0
  168. package/dist/condition-CTJYHRJG.js +323 -0
  169. package/dist/controls-MMMRBTZL.js +30 -0
  170. package/dist/controls.config-ZKMQI27Q.js +30 -0
  171. package/dist/correlation-NEQNBQTT.js +91 -0
  172. package/dist/customdata.inputui-THUR7DF5.js +280 -0
  173. package/dist/dataDownload-ZMAJUKBX.js +326 -0
  174. package/dist/dataDownload-ZMAJUKBX.js.map +7 -0
  175. package/dist/databrowser.ui-A6ZSIUG4.js +421 -0
  176. package/dist/dictionary-TQUVCHIN.js +109 -0
  177. package/dist/dnaMethylation-ZMJYY3ML.js +29 -0
  178. package/dist/dnaMethylation.integration.spec-5DTBGTYB.js +194 -0
  179. package/dist/dofetch-KBTN6OW4.js +49 -0
  180. package/dist/e2pca-DNWBF545.js +340 -0
  181. package/dist/ep-JNH3HMY4.js +1247 -0
  182. package/dist/expclust.gdc.spec-2NJ7JVJW.js +298 -0
  183. package/dist/facet-RWQFAVVU.js +556 -0
  184. package/dist/gb-OT2Z3Y7J.js +77 -0
  185. package/dist/geneExpClustering-TPYGSTMO.js +240 -0
  186. package/dist/geneExpression-4K3OTXBZ.js +29 -0
  187. package/dist/geneExpression-KPUOZ4PT.js +309 -0
  188. package/dist/geneExpression.unit.spec-26MCGRAP.js +151 -0
  189. package/dist/geneORA-GNXKCN45.js +269 -0
  190. package/dist/geneRanking-LV6W6TT7.js +544 -0
  191. package/dist/geneVariant-B2SYTHG6.js +289 -0
  192. package/dist/geneVariant-O4XG5VEM.js +32 -0
  193. package/dist/geneVariant.integration.spec-YYVPAFXT.js +672 -0
  194. package/dist/genefusion.ui-CVGGYVV3.js +299 -0
  195. package/dist/geneset-MBMCJNXT.js +199 -0
  196. package/dist/genomeBrowser.spec-OVXFKEIU.js +272 -0
  197. package/dist/grin2-OXRU465E.js +945 -0
  198. package/dist/grin2-YCJGBRFG.js +66 -0
  199. package/dist/hierCluster-KNPWL5KD.js +51 -0
  200. package/dist/hierCluster-L3LYQZQL.js +55 -0
  201. package/dist/hierCluster.config-VZBV5QIO.js +32 -0
  202. package/dist/hierCluster.integration.spec-ZM7K7WI4.js +479 -0
  203. package/dist/hierCluster.interactivity-EA7WVIQR.js +45 -0
  204. package/dist/hierCluster.renderers-YGX6MZZW.js +18 -0
  205. package/dist/imagePlot-OLVI26S5.js +152 -0
  206. package/dist/importPlot-3SSCNROC.js +8 -0
  207. package/dist/isoformExpression-BTMJNAAO.js +31 -0
  208. package/dist/isoformExpression.unit.spec-S2W5T42Z.js +233 -0
  209. package/dist/junction-GIS5OCRO.js +32 -0
  210. package/dist/junction.customTerm-3R2GNE3A.js +15 -0
  211. package/dist/junction.unit.spec-MSILW6QZ.js +178 -0
  212. package/dist/launch.adhoc-LLJY4LA5.js +33 -0
  213. package/dist/leftlabel.sample-P6DDVCOW.js +253 -0
  214. package/dist/lollipop-J34YCYIP.js +162 -0
  215. package/dist/maf-MFEEYT5P.js +451 -0
  216. package/dist/maftimeline-TGJ37QYA.js +583 -0
  217. package/dist/matrix-A6BNFCIH.js +55 -0
  218. package/dist/matrix-XTKRVPMQ.js +50 -0
  219. package/dist/matrix.cells-5RTZUJVN.js +25 -0
  220. package/dist/matrix.config-RMDDMOZ5.js +33 -0
  221. package/dist/matrix.data-Y5TPRGMW.js +22 -0
  222. package/dist/matrix.groups-6DXCAY4P.js +25 -0
  223. package/dist/matrix.integration.spec-2DVRXVNH.js +3156 -0
  224. package/dist/matrix.interactivity-MGOYEKDN.js +33 -0
  225. package/dist/matrix.layout-T7EC5ZC2.js +35 -0
  226. package/dist/matrix.legend-S3E76TVO.js +19 -0
  227. package/dist/matrix.renderers-GR77V3RL.js +30 -0
  228. package/dist/matrix.serieses-3UGLZW25.js +18 -0
  229. package/dist/matrix.sort-A7CNLDUJ.js +25 -0
  230. package/dist/matrix.sort.unit.spec-YUCV7G5L.js +464 -0
  231. package/dist/matrix.sorterUi-6PZR3YOD.js +15 -0
  232. package/dist/matrix.sorterUi.unit.spec-FESIQ2RC.js +334 -0
  233. package/dist/matrix.unit.spec-6QF3WKM7.js +146 -0
  234. package/dist/mavb-UXJBITZM.js +726 -0
  235. package/dist/mds.fimo-IPNWVBO4.js +509 -0
  236. package/dist/mds.samplescatterplot-KEG7RSN3.js +1545 -0
  237. package/dist/mds.survivalplot-LJF2CD33.js +472 -0
  238. package/dist/multivalue-YRQZ73DI.js +79 -0
  239. package/dist/numericDictTermCluster-6XDVVWLE.js +62 -0
  240. package/dist/oncomatrix-TIMH5JKS.js +286 -0
  241. package/dist/oncomatrix.spec-MUOKKCJN.js +439 -0
  242. package/dist/plot.2dvaf-3OL4S6QG.js +368 -0
  243. package/dist/plot.app-CMLHZV5F.js +32 -0
  244. package/dist/plot.barplot-NRYMIPK6.js +93 -0
  245. package/dist/plot.boxplot-ANGW3WUC.js +142 -0
  246. package/dist/plot.brainImaging-YUDBYKX5.js +51 -0
  247. package/dist/plot.disco-LV7RE3YO.js +98 -0
  248. package/dist/plot.ssgq-F2LOQFYD.js +130 -0
  249. package/dist/plot.vaf2cov-5OKC7X6D.js +249 -0
  250. package/dist/polar2-BGJA2GHZ.js +228 -0
  251. package/dist/profileForms-BKP3OBKV.js +937 -0
  252. package/dist/profilePlot-5PRRNUKD.js +45 -0
  253. package/dist/proteinView-VZIWIZZY.js +1346 -0
  254. package/dist/proteomeCohortCompare-XZI5OI4X.js +866 -0
  255. package/dist/pseudbulk.unit.spec-DXJQV7JQ.js +82 -0
  256. package/dist/pseudobulk-FCH3WW6O.js +31 -0
  257. package/dist/qualitative-ATX53V44.js +34 -0
  258. package/dist/qualitative-BRKLVRKW.js +241 -0
  259. package/dist/radar2-6BBT2FBT.js +323 -0
  260. package/dist/radarFacility2-76Q3IYP2.js +331 -0
  261. package/dist/rememberedGvQ.unit.spec-SHTMMZGG.js +210 -0
  262. package/dist/render-KUC3QH36.js +29 -0
  263. package/dist/report-KB4K7ZXC.js +213 -0
  264. package/dist/sampleView-QD2JLZ4T.js +39 -0
  265. package/dist/samplelst-6R5RYHNV.js +114 -0
  266. package/dist/samplematrix-NGORNBTR.js +2188 -0
  267. package/dist/sc-27AHZZDK.js +77 -0
  268. package/dist/scatter-FXLZMWD6.js +84 -0
  269. package/dist/scatter-OWFYLMSJ.js +919 -0
  270. package/dist/selectGenomeWithTklst-ZTGABCXC.js +125 -0
  271. package/dist/singleCellCellType-7XXJ5NWC.js +29 -0
  272. package/dist/singleCellCellType.unit.spec-Y3TEYYCF.js +150 -0
  273. package/dist/singleCellGeneExpression-EUAIEIYJ.js +29 -0
  274. package/dist/singleCellGeneExpression.unit.spec-JVHPFLML.js +144 -0
  275. package/dist/singleCellNumericValue-FHIECJDK.js +29 -0
  276. package/dist/singleCellNumericValue.unit.spec-ZFG56MIO.js +412 -0
  277. package/dist/singleCellPlot-NDGIW32L.js +44 -0
  278. package/dist/singlecell-JPWVPZEF.js +1562 -0
  279. package/dist/singlecell-N7RJMWZ2.js +77 -0
  280. package/dist/snp-APUTOL2F.js +29 -0
  281. package/dist/snp.unit.spec-4AN7AJKO.js +167 -0
  282. package/dist/snplocus-WIMFAMBE.js +200 -0
  283. package/dist/snplst-SUJ5AK4E.js +36 -0
  284. package/dist/spliceevent.a53ss.diagram-4UBI7PFJ.js +142 -0
  285. package/dist/spliceevent.exonskip.diagram-NVEXVRIC.js +274 -0
  286. package/dist/spliceevent.noeventdiagram-CKEWNLVF.js +451 -0
  287. package/dist/ssGSEA-CJOVXTAW.js +29 -0
  288. package/dist/ssGSEA.unit.spec-A7VRVJSF.js +79 -0
  289. package/dist/stattable-JBJVVLQE.js +112 -0
  290. package/dist/studyCatalog-NEL7XSIP.js +457 -0
  291. package/dist/summarizeCnvGeneexp-BZSCTA5W.js +154 -0
  292. package/dist/summarizeGeneexpSurvival-743KXNV7.js +101 -0
  293. package/dist/summarizeMutationCnv-CALMSQGV.js +155 -0
  294. package/dist/summarizeMutationDiagnosis-OTE7O4AS.js +31 -0
  295. package/dist/summarizeMutationSurvival-VOZOFTFM.js +95 -0
  296. package/dist/summary-XJKCD35N.js +40 -0
  297. package/dist/summary.integration.spec-OOEU6WNB.js +405 -0
  298. package/dist/summaryInput-JSOXVSMY.js +238 -0
  299. package/dist/sunburst-J3QHMYKW.js +34 -0
  300. package/dist/sunburst-LZPP6NPV.js +274 -0
  301. package/dist/survival-5GWRVTQ6.js +49 -0
  302. package/dist/survival-FW7N3YXZ.js +1248 -0
  303. package/dist/survival.integration.spec-WN36VUHL.js +609 -0
  304. package/dist/svgraph-N35EMK3G.js +1377 -0
  305. package/dist/svmr-EWL5WDDD.js +3834 -0
  306. package/dist/swimmer-Z6FUH4CD.js +993 -0
  307. package/dist/swimmer-Z6FUH4CD.js.map +7 -0
  308. package/dist/table-EI2OIRGE.js +192 -0
  309. package/dist/termCollection-K3EX5P3F.js +29 -0
  310. package/dist/termCollection-TBTAHLVH.js +247 -0
  311. package/dist/termCollection.unit.spec-ZVNAIPHZ.js +295 -0
  312. package/dist/termCollectionFractionSelection-ATNIPWVX.js +38 -0
  313. package/dist/termCollectionFractionSelection.unit.spec-VBRWWBML.js +184 -0
  314. package/dist/tk-P3RPLUVH.js +1193 -0
  315. package/dist/tk-P3RPLUVH.js.map +7 -0
  316. package/dist/tk-U6CYISBH.js +37 -0
  317. package/dist/tp.ui-KBFYUSWS.js +1453 -0
  318. package/dist/tvs.categorical-5USP772O.js +28 -0
  319. package/dist/tvs.condition-652MAA2Z.js +160 -0
  320. package/dist/tvs.dt-7BTARQUS.js +34 -0
  321. package/dist/tvs.dtcnv.categorical-GAOO3DGO.js +31 -0
  322. package/dist/tvs.dtcnv.continuous-P2QRD45O.js +72 -0
  323. package/dist/tvs.dtfusion-L3I65W7L.js +31 -0
  324. package/dist/tvs.dtitd-B3JPW6OL.js +31 -0
  325. package/dist/tvs.dtsnvindel-6Y6CJBZV.js +31 -0
  326. package/dist/tvs.dtsv-GL7CPATL.js +31 -0
  327. package/dist/tvs.multivalue-75IM23FZ.js +84 -0
  328. package/dist/tvs.numeric-XB3GBPHE.js +32 -0
  329. package/dist/tvs.samplelst-QUA45UE7.js +95 -0
  330. package/dist/tvs.survival-EKSDZZIO.js +110 -0
  331. package/dist/tvs.termCollection-5ATMDC7O.js +118 -0
  332. package/dist/vocabulary-5QBBQAYC.js +32 -0
  333. package/dist/vocabulary-5QBBQAYC.js.map +7 -0
  334. package/dist/wsi.direct-BU6BL5UR.js +11514 -0
  335. package/package.json +3 -3
  336. package/dist/2dmaf-O2SQ5RGD.js +0 -1362
  337. package/dist/AggMatrixInput-LUCTWXHU.js +0 -402
  338. package/dist/AggregateMatrix-JVMF27YL.js +0 -37
  339. package/dist/AppHeader-DJU6HRKO.js +0 -826
  340. package/dist/BoxPlot-22RXMPRL.js +0 -1229
  341. package/dist/CorrelationVolcano-PBZWPFSN.js +0 -613
  342. package/dist/Cuminc-EL74X5GY.js +0 -1217
  343. package/dist/DE-W5SAMMRW.js +0 -85
  344. package/dist/DEinput-ZKEFJZQU.js +0 -479
  345. package/dist/DM-ABKDXMDG.js +0 -86
  346. package/dist/DifferentialAnalysis-3JTZ5WCQ.js +0 -236
  347. package/dist/Disco-ME53U25C.js +0 -3384
  348. package/dist/Disco.UI-F7XKJMKR.js +0 -239
  349. package/dist/DmrPlot-OWBXUTON.js +0 -361
  350. package/dist/GB-7X6DBWKS.js +0 -1388
  351. package/dist/GSEA-GAZIEGD7.js +0 -870
  352. package/dist/GeneExpInput-BAOC6ICV.js +0 -38
  353. package/dist/Geomap-OZERLL7V.js +0 -80
  354. package/dist/HicApp-WDH5LVTD.js +0 -2240
  355. package/dist/IDCViewer-XBZFU3BU.js +0 -10808
  356. package/dist/NumBinaryEditor-5R4EUQOZ.js +0 -274
  357. package/dist/NumBinaryEditor.unit.spec-ULBXMOYY.js +0 -308
  358. package/dist/NumContEditor-EN6V4FLQ.js +0 -100
  359. package/dist/NumContEditor.unit.spec-VDWKNIFN.js +0 -160
  360. package/dist/NumCustomBinEditor-UB34ALNZ.js +0 -29
  361. package/dist/NumCustomBinEditor.unit.spec-WZXJ7GEC.js +0 -393
  362. package/dist/NumDiscreteEditor-H6J67YEL.js +0 -165
  363. package/dist/NumDiscreteEditor.unit.spec-KJ7YU22W.js +0 -229
  364. package/dist/NumRegularBinEditor-R5JVUG7J.js +0 -29
  365. package/dist/NumRegularBinEditor.unit.spec-RZ73FMNO.js +0 -274
  366. package/dist/NumSplineEditor-AOR6OAJA.js +0 -205
  367. package/dist/NumSplineEditor.unit.spec-Z6ZEI3UO.js +0 -220
  368. package/dist/NumericDensity-SRTFTDQA.js +0 -29
  369. package/dist/NumericDensity.unit.spec-MRREBAYU.js +0 -414
  370. package/dist/NumericHandler-7RALUACA.js +0 -30
  371. package/dist/NumericHandler.unit.spec-MDO23WRB.js +0 -225
  372. package/dist/ProteomeInput-MOBXHRD5.js +0 -610
  373. package/dist/Regression-XWT4NNTG.js +0 -1412
  374. package/dist/RunChart2-Q7W5MWJS.js +0 -744
  375. package/dist/SC-MM3JTEVL.js +0 -1290
  376. package/dist/Violin-XNTBDUPG.js +0 -1092
  377. package/dist/Volcano-GRKXU3WL.js +0 -2619
  378. package/dist/Volcano-GRKXU3WL.js.map +0 -7
  379. package/dist/Wsi-22KJSFVH.js +0 -636
  380. package/dist/adSandbox-TLYWQOOA.js +0 -29
  381. package/dist/animatedBubbleChart-67SY5JGP.js +0 -542
  382. package/dist/app-FG3KPE4R.js +0 -28
  383. package/dist/app-VK5LYO6B.js +0 -38
  384. package/dist/bam-TNLNISLV.js +0 -872
  385. package/dist/barchart-IGWRVB6W.js +0 -38
  386. package/dist/barchart2-TT6OBJJP.js +0 -305
  387. package/dist/block-5PV2TYWJ.js +0 -6232
  388. package/dist/block-5PV2TYWJ.js.map +0 -7
  389. package/dist/block.init-2Y6CNK7H.js +0 -29
  390. package/dist/block.mds.expressionrank-VZ4JVPTG.js +0 -350
  391. package/dist/block.mds.geneboxplot-NYMS32JP.js +0 -819
  392. package/dist/block.mds.junction-3R6C3B5W.js +0 -1534
  393. package/dist/block.mds.svcnv-SO5CYYIQ.js +0 -6413
  394. package/dist/block.svg-R4ASXXNW.js +0 -155
  395. package/dist/block.tk.aicheck-LYRTDZRA.js +0 -274
  396. package/dist/block.tk.bam-GR7CHGGQ.js +0 -1897
  397. package/dist/block.tk.bedgraphdot-GERXK2O6.js +0 -375
  398. package/dist/block.tk.bedgraphdot-GERXK2O6.js.map +0 -7
  399. package/dist/block.tk.bigwig.ui-3KMMZX2M.js +0 -202
  400. package/dist/block.tk.hicstraw-7HH4PGFY.js +0 -814
  401. package/dist/block.tk.junction-BPEKLYS2.js +0 -2353
  402. package/dist/block.tk.junction.textmatrixui-2QU5DL2X.js +0 -190
  403. package/dist/block.tk.ld-TJREYPNY.js +0 -90
  404. package/dist/block.tk.menu-HDBZK4YP.js +0 -1050
  405. package/dist/block.tk.pgv-G5GCYBK2.js +0 -934
  406. package/dist/brainImaging-ODWHF7WZ.js +0 -550
  407. package/dist/brainRegions-DC7DEA7N.js +0 -213
  408. package/dist/bubbleHeatmap-T5ACULRL.js +0 -374
  409. package/dist/cellTypeBubbleHeatmap-RQINXXTK.js +0 -274
  410. package/dist/chunk-24ZS2XWC.js +0 -176
  411. package/dist/chunk-2EPEWVKQ.js +0 -4378
  412. package/dist/chunk-2EPEWVKQ.js.map +0 -7
  413. package/dist/chunk-2PHFY3VP.js +0 -195
  414. package/dist/chunk-2QFMKWNS.js +0 -281
  415. package/dist/chunk-2UB6JZ3I.js +0 -466
  416. package/dist/chunk-3GQ54XTJ.js +0 -70
  417. package/dist/chunk-3IE6FDVA.js +0 -1253
  418. package/dist/chunk-4OOQ52ET.js +0 -182
  419. package/dist/chunk-5NI77Z3O.js +0 -119
  420. package/dist/chunk-5TPWMYBG.js +0 -274
  421. package/dist/chunk-64JHE3GV.js +0 -50
  422. package/dist/chunk-6MUJGVOH.js +0 -140
  423. package/dist/chunk-6YGSVJJD.js +0 -54
  424. package/dist/chunk-7PQVNQFR.js +0 -255
  425. package/dist/chunk-7XW4JWMJ.js +0 -170
  426. package/dist/chunk-7ZEJKFGW.js +0 -55
  427. package/dist/chunk-A6ZUYQHO.js +0 -159
  428. package/dist/chunk-ALIMVUHR.js +0 -1219
  429. package/dist/chunk-ANBGNYNP.js +0 -1339
  430. package/dist/chunk-ATZNXW5F.js +0 -237
  431. package/dist/chunk-AUPTEHV7.js +0 -257
  432. package/dist/chunk-B2KYLEYM.js +0 -30
  433. package/dist/chunk-BJCET6RU.js +0 -263
  434. package/dist/chunk-BKW35Z4U.js +0 -26619
  435. package/dist/chunk-BKW35Z4U.js.map +0 -7
  436. package/dist/chunk-CJHNPYFQ.js +0 -2292
  437. package/dist/chunk-CJHNPYFQ.js.map +0 -7
  438. package/dist/chunk-CTVPW77S.js +0 -194
  439. package/dist/chunk-D6U65W7Q.js +0 -626
  440. package/dist/chunk-DJMDETVU.js +0 -2685
  441. package/dist/chunk-DKPAOVJH.js +0 -243
  442. package/dist/chunk-DRESQF33.js +0 -38
  443. package/dist/chunk-DXM5MQCZ.js +0 -382
  444. package/dist/chunk-ETXOEP4N.js +0 -184
  445. package/dist/chunk-FOUMNTII.js +0 -134
  446. package/dist/chunk-FTGLS763.js +0 -56
  447. package/dist/chunk-GN2A5NL5.js +0 -472
  448. package/dist/chunk-GWNCQ5YI.js +0 -468
  449. package/dist/chunk-GX6G2SSW.js +0 -26
  450. package/dist/chunk-H3YF55ZI.js +0 -848
  451. package/dist/chunk-IANE75G3.js +0 -444
  452. package/dist/chunk-IKZQST6E.js +0 -5213
  453. package/dist/chunk-IPRYYK26.js +0 -96
  454. package/dist/chunk-JL3PYV5F.js +0 -6375
  455. package/dist/chunk-K6VYSDB5.js +0 -276
  456. package/dist/chunk-KSS26PXB.js +0 -54
  457. package/dist/chunk-LO2QBHP6.js +0 -418
  458. package/dist/chunk-LSRFRZNP.js +0 -59
  459. package/dist/chunk-LYX4S6WA.js +0 -266
  460. package/dist/chunk-ME3HB3V6.js +0 -5787
  461. package/dist/chunk-ME3HB3V6.js.map +0 -7
  462. package/dist/chunk-MP7BA3GK.js +0 -14
  463. package/dist/chunk-MVSUESEV.js +0 -141
  464. package/dist/chunk-NQMS7WV3.js +0 -2799
  465. package/dist/chunk-NR6WFCPF.js +0 -348
  466. package/dist/chunk-NS2MZN3C.js +0 -562
  467. package/dist/chunk-NUA66GW7.js +0 -37
  468. package/dist/chunk-NYEFSOKD.js +0 -550
  469. package/dist/chunk-OVHQFZAE.js +0 -34
  470. package/dist/chunk-QM724EG2.js +0 -103
  471. package/dist/chunk-RIL33JCW.js +0 -102
  472. package/dist/chunk-RJAJG5KN.js +0 -2954
  473. package/dist/chunk-RJAJG5KN.js.map +0 -7
  474. package/dist/chunk-SLHXR4BZ.js +0 -82
  475. package/dist/chunk-SO76DLSZ.js +0 -299
  476. package/dist/chunk-T7CKGRGP.js +0 -398
  477. package/dist/chunk-T7CKGRGP.js.map +0 -7
  478. package/dist/chunk-TUO5I6LP.js +0 -123
  479. package/dist/chunk-TWTPWEYL.js +0 -240
  480. package/dist/chunk-U2GHNZ4N.js +0 -54
  481. package/dist/chunk-UAB5PGOP.js +0 -56
  482. package/dist/chunk-UCB3W3OT.js +0 -217
  483. package/dist/chunk-UJIB7QM3.js +0 -2334
  484. package/dist/chunk-UYQGTW7I.js +0 -1857
  485. package/dist/chunk-UYQGTW7I.js.map +0 -7
  486. package/dist/chunk-VBDJG6GZ.js +0 -2008
  487. package/dist/chunk-VOXUMZMG.js +0 -379
  488. package/dist/chunk-WCNMP54T.js +0 -516
  489. package/dist/chunk-WETOH7YW.js +0 -692
  490. package/dist/chunk-WKGKKM6F.js +0 -480
  491. package/dist/chunk-WV44DGEJ.js +0 -397
  492. package/dist/chunk-XVEEMQAT.js +0 -31
  493. package/dist/chunk-YBOHXANC.js +0 -302
  494. package/dist/chunk-YNQFOPS6.js +0 -203
  495. package/dist/chunk-YVQ4USPP.js +0 -340
  496. package/dist/chunk-ZWLT5QS3.js +0 -102
  497. package/dist/chunk-ZYAZHJPZ.js +0 -296
  498. package/dist/cohort-QSLKB4ZO.js +0 -66
  499. package/dist/cohortSunburst-AQFSNJ5K.js +0 -402
  500. package/dist/condition-MLS6TJHV.js +0 -323
  501. package/dist/controls-ZT3GZ667.js +0 -30
  502. package/dist/controls.config-F7NIPLKB.js +0 -30
  503. package/dist/correlation-ZEIQJGSQ.js +0 -91
  504. package/dist/customdata.inputui-6PJSAJK2.js +0 -280
  505. package/dist/dataDownload-CHMPXHBY.js +0 -325
  506. package/dist/dataDownload-CHMPXHBY.js.map +0 -7
  507. package/dist/databrowser.ui-EMZ5L2Y7.js +0 -421
  508. package/dist/dictionary-U2BWGY6B.js +0 -109
  509. package/dist/dnaMethylation-R34E2XNC.js +0 -29
  510. package/dist/dnaMethylation.integration.spec-4Z2AJHWY.js +0 -194
  511. package/dist/dofetch-JY4A7BYI.js +0 -47
  512. package/dist/e2pca-WSSCXX6A.js +0 -340
  513. package/dist/ep-ATUWEHDJ.js +0 -1247
  514. package/dist/expclust.gdc.spec-QRIRRPO7.js +0 -298
  515. package/dist/facet-5VDCSP3S.js +0 -556
  516. package/dist/gb-Y4UG6LFA.js +0 -77
  517. package/dist/geneExpClustering-OO67JNJ2.js +0 -240
  518. package/dist/geneExpression-5KGV3MAA.js +0 -29
  519. package/dist/geneExpression-KPRFXKU7.js +0 -309
  520. package/dist/geneExpression.unit.spec-YV45EZ5O.js +0 -151
  521. package/dist/geneORA-R74JPUTC.js +0 -269
  522. package/dist/geneRanking-IJTXNMHV.js +0 -544
  523. package/dist/geneVariant-HBAHT6LU.js +0 -32
  524. package/dist/geneVariant-JT3EGAIH.js +0 -289
  525. package/dist/geneVariant.integration.spec-TFQYPUAS.js +0 -672
  526. package/dist/genefusion.ui-MMTQMTHC.js +0 -299
  527. package/dist/geneset-VMBICNCZ.js +0 -199
  528. package/dist/genomeBrowser.spec-2XLLIYGA.js +0 -272
  529. package/dist/grin2-2RYPEUWV.js +0 -66
  530. package/dist/grin2-Y6KAFVV2.js +0 -945
  531. package/dist/hierCluster-EKGFBQT4.js +0 -51
  532. package/dist/hierCluster-Z4PVNMGS.js +0 -55
  533. package/dist/hierCluster.config-Q6WUNK2K.js +0 -32
  534. package/dist/hierCluster.integration.spec-2LHSHNFC.js +0 -479
  535. package/dist/hierCluster.interactivity-OGQ3KUY6.js +0 -45
  536. package/dist/hierCluster.renderers-3GJZXG75.js +0 -18
  537. package/dist/imagePlot-ZJEZPBX7.js +0 -152
  538. package/dist/importPlot-GFEFYEHZ.js +0 -8
  539. package/dist/isoformExpression-A2X3DSR6.js +0 -31
  540. package/dist/isoformExpression.unit.spec-VKMEGCL4.js +0 -233
  541. package/dist/junction-HWIHLQU2.js +0 -32
  542. package/dist/junction.customTerm-C3VWXEYH.js +0 -15
  543. package/dist/junction.unit.spec-ZYJGDOXJ.js +0 -178
  544. package/dist/launch.adhoc-HW5AZM4T.js +0 -33
  545. package/dist/leftlabel.sample-MTW2HRRQ.js +0 -253
  546. package/dist/lollipop-VWW5H6CR.js +0 -162
  547. package/dist/maf-KEJYO3H4.js +0 -451
  548. package/dist/maftimeline-MJZDSGSR.js +0 -583
  549. package/dist/matrix-3UJW6LOA.js +0 -50
  550. package/dist/matrix-W4AX5OBM.js +0 -55
  551. package/dist/matrix.cells-5DAIZ3E5.js +0 -25
  552. package/dist/matrix.config-PK26VPQT.js +0 -33
  553. package/dist/matrix.data-UK5DGKBK.js +0 -22
  554. package/dist/matrix.groups-NM4Q5YDN.js +0 -25
  555. package/dist/matrix.integration.spec-FGWNBCRR.js +0 -3156
  556. package/dist/matrix.interactivity-4C37PII5.js +0 -33
  557. package/dist/matrix.layout-ODV7WXUP.js +0 -35
  558. package/dist/matrix.legend-5MY7OXWN.js +0 -19
  559. package/dist/matrix.renderers-QA7W7ZUL.js +0 -30
  560. package/dist/matrix.serieses-4FSFJPCK.js +0 -18
  561. package/dist/matrix.sort-3QLFMBJ5.js +0 -25
  562. package/dist/matrix.sort.unit.spec-HVOC6IYT.js +0 -464
  563. package/dist/matrix.sorterUi-EY3SA6CG.js +0 -15
  564. package/dist/matrix.sorterUi.unit.spec-OAXWPZZI.js +0 -334
  565. package/dist/matrix.unit.spec-RAL7AU22.js +0 -146
  566. package/dist/mavb-KIM63AC4.js +0 -726
  567. package/dist/mds.fimo-DMAVM56P.js +0 -509
  568. package/dist/mds.samplescatterplot-KILTR2C7.js +0 -1545
  569. package/dist/mds.survivalplot-PV76ANBP.js +0 -472
  570. package/dist/multivalue-2V5LMQY7.js +0 -79
  571. package/dist/numericDictTermCluster-TGL4X6UC.js +0 -62
  572. package/dist/oncomatrix-2O7SLXHX.js +0 -286
  573. package/dist/oncomatrix.spec-HZJKOF5G.js +0 -439
  574. package/dist/plot.2dvaf-424NNMMA.js +0 -368
  575. package/dist/plot.app-YBZDNST2.js +0 -32
  576. package/dist/plot.barplot-YZQBYJUY.js +0 -93
  577. package/dist/plot.boxplot-5OW6IBQL.js +0 -142
  578. package/dist/plot.brainImaging-H3ABPPD3.js +0 -51
  579. package/dist/plot.disco-X7KCDWGX.js +0 -98
  580. package/dist/plot.ssgq-GYRVHTC7.js +0 -130
  581. package/dist/plot.vaf2cov-B2TELPHL.js +0 -249
  582. package/dist/polar2-5KNZRLXY.js +0 -228
  583. package/dist/profileForms-FY34KXCL.js +0 -937
  584. package/dist/profilePlot-3FX2TPYC.js +0 -45
  585. package/dist/proteinView-WSEO3LD3.js +0 -1346
  586. package/dist/proteomeCohortCompare-KA2DF3EE.js +0 -866
  587. package/dist/pseudbulk.unit.spec-AT3TFCOW.js +0 -82
  588. package/dist/pseudobulk-4ZRHUC7W.js +0 -31
  589. package/dist/qualitative-3OBGJRP6.js +0 -241
  590. package/dist/qualitative-FHJD44OA.js +0 -34
  591. package/dist/radar2-X757WR6V.js +0 -323
  592. package/dist/radarFacility2-GUBAK4Y3.js +0 -331
  593. package/dist/rememberedGvQ.unit.spec-ADO4Y2OE.js +0 -210
  594. package/dist/render-MZEPNEMU.js +0 -29
  595. package/dist/report-TUAFDGAE.js +0 -213
  596. package/dist/sampleView-X6YKCBE7.js +0 -39
  597. package/dist/samplelst-UPNRALBH.js +0 -114
  598. package/dist/samplematrix-W3HZK3IS.js +0 -2188
  599. package/dist/sc-UL7233UR.js +0 -77
  600. package/dist/scatter-FTJ77NUM.js +0 -919
  601. package/dist/scatter-VQQRIW6N.js +0 -84
  602. package/dist/selectGenomeWithTklst-HPYPSPFI.js +0 -125
  603. package/dist/singleCellCellType-XTKGOH6H.js +0 -29
  604. package/dist/singleCellCellType.unit.spec-A62GT72A.js +0 -150
  605. package/dist/singleCellGeneExpression-X7H5GTU3.js +0 -29
  606. package/dist/singleCellGeneExpression.unit.spec-2KQBHG7O.js +0 -144
  607. package/dist/singleCellNumericValue-6YS42PZ2.js +0 -29
  608. package/dist/singleCellNumericValue.unit.spec-DNVXQFKI.js +0 -412
  609. package/dist/singleCellPlot-MGOQ7EQV.js +0 -44
  610. package/dist/singlecell-CIOB5XON.js +0 -77
  611. package/dist/singlecell-QW3SLQD6.js +0 -1562
  612. package/dist/snp-6B4MIPKL.js +0 -29
  613. package/dist/snp.unit.spec-HNILS56E.js +0 -167
  614. package/dist/snplocus-DDFLYZ2Y.js +0 -200
  615. package/dist/snplst-JYKOV73J.js +0 -36
  616. package/dist/spliceevent.a53ss.diagram-IBD5ITXR.js +0 -142
  617. package/dist/spliceevent.exonskip.diagram-ZJGEVUYW.js +0 -274
  618. package/dist/spliceevent.noeventdiagram-RNLNTFOW.js +0 -451
  619. package/dist/ssGSEA-42VQLAXL.js +0 -29
  620. package/dist/ssGSEA.unit.spec-FBJANIKG.js +0 -79
  621. package/dist/stattable-FROSNTJY.js +0 -112
  622. package/dist/studyCatalog-XIYNJ24U.js +0 -457
  623. package/dist/summarizeCnvGeneexp-N3OFI24L.js +0 -154
  624. package/dist/summarizeGeneexpSurvival-J4DO2AL4.js +0 -101
  625. package/dist/summarizeMutationCnv-Y43BBSI4.js +0 -155
  626. package/dist/summarizeMutationDiagnosis-JAEAUFCA.js +0 -31
  627. package/dist/summarizeMutationSurvival-4QZDDXDV.js +0 -95
  628. package/dist/summary-DTJZ7NNA.js +0 -40
  629. package/dist/summary.integration.spec-HRRE3J45.js +0 -405
  630. package/dist/summaryInput-WCADUZBK.js +0 -238
  631. package/dist/sunburst-BGXSCB63.js +0 -274
  632. package/dist/sunburst-DSFFFP33.js +0 -504
  633. package/dist/sunburst-DSFFFP33.js.map +0 -7
  634. package/dist/survival-LFXQIWRT.js +0 -49
  635. package/dist/survival-ONWZ5RFM.js +0 -1248
  636. package/dist/survival.integration.spec-ZP7XWHQH.js +0 -609
  637. package/dist/svgraph-2SL2SJVU.js +0 -1377
  638. package/dist/svmr-ONIPMLC2.js +0 -3834
  639. package/dist/swimmer-2EJZH5PP.js +0 -785
  640. package/dist/swimmer-2EJZH5PP.js.map +0 -7
  641. package/dist/table-LLCFO4KK.js +0 -192
  642. package/dist/termCollection-DAHJGR5P.js +0 -247
  643. package/dist/termCollection-QIN53TIL.js +0 -29
  644. package/dist/termCollection.unit.spec-FQOX2IVP.js +0 -295
  645. package/dist/termCollectionFractionSelection-UKEVVZXL.js +0 -38
  646. package/dist/termCollectionFractionSelection.unit.spec-URGEYBU2.js +0 -184
  647. package/dist/tk-4PYQ6WJQ.js +0 -1116
  648. package/dist/tk-4PYQ6WJQ.js.map +0 -7
  649. package/dist/tk-GM7CJ2LU.js +0 -37
  650. package/dist/tp.ui-TRUHW6GP.js +0 -1453
  651. package/dist/tvs.categorical-IY6YSFVN.js +0 -28
  652. package/dist/tvs.condition-YTD7GOPW.js +0 -160
  653. package/dist/tvs.dt-AQQIZD5Z.js +0 -34
  654. package/dist/tvs.dtcnv.categorical-WOAOGJSW.js +0 -31
  655. package/dist/tvs.dtcnv.continuous-TJBEPJGO.js +0 -72
  656. package/dist/tvs.dtfusion-SFMZQKKU.js +0 -31
  657. package/dist/tvs.dtitd-Q5RQTCLD.js +0 -31
  658. package/dist/tvs.dtsnvindel-UEK4O6WI.js +0 -31
  659. package/dist/tvs.dtsv-ECS4KEYG.js +0 -31
  660. package/dist/tvs.multivalue-CJIZ3I54.js +0 -84
  661. package/dist/tvs.numeric-UFAOJR2B.js +0 -32
  662. package/dist/tvs.samplelst-BVFY2P7Q.js +0 -95
  663. package/dist/tvs.survival-L56B3I55.js +0 -110
  664. package/dist/tvs.termCollection-BFIBVBSA.js +0 -118
  665. package/dist/vocabulary-MTKDDDGB.js +0 -32
  666. package/dist/wsi.direct-OSHY7VL4.js +0 -11514
  667. /package/dist/{2dmaf-O2SQ5RGD.js.map → 2dmaf-KRIX5DBS.js.map} +0 -0
  668. /package/dist/{AggMatrixInput-LUCTWXHU.js.map → AggMatrixInput-GBQD74NV.js.map} +0 -0
  669. /package/dist/{AggregateMatrix-JVMF27YL.js.map → AggregateMatrix-U2MOQOSZ.js.map} +0 -0
  670. /package/dist/{AppHeader-DJU6HRKO.js.map → AppHeader-OBZWUCOD.js.map} +0 -0
  671. /package/dist/{BoxPlot-22RXMPRL.js.map → BoxPlot-ZK6Q5JGE.js.map} +0 -0
  672. /package/dist/{CorrelationVolcano-PBZWPFSN.js.map → CorrelationVolcano-WGR4JIGK.js.map} +0 -0
  673. /package/dist/{Cuminc-EL74X5GY.js.map → Cuminc-I6D6YSIL.js.map} +0 -0
  674. /package/dist/{DE-W5SAMMRW.js.map → DE-HO7UBKPC.js.map} +0 -0
  675. /package/dist/{DEinput-ZKEFJZQU.js.map → DEinput-6LX4I65N.js.map} +0 -0
  676. /package/dist/{DM-ABKDXMDG.js.map → DM-WYKLX4IC.js.map} +0 -0
  677. /package/dist/{DifferentialAnalysis-3JTZ5WCQ.js.map → DifferentialAnalysis-L5VVBCVZ.js.map} +0 -0
  678. /package/dist/{Disco-ME53U25C.js.map → Disco-HLARIYXU.js.map} +0 -0
  679. /package/dist/{Disco.UI-F7XKJMKR.js.map → Disco.UI-W64WFVC3.js.map} +0 -0
  680. /package/dist/{DmrPlot-OWBXUTON.js.map → DmrPlot-BKQOT4JM.js.map} +0 -0
  681. /package/dist/{GB-7X6DBWKS.js.map → GB-WKFGDJYW.js.map} +0 -0
  682. /package/dist/{GSEA-GAZIEGD7.js.map → GSEA-DCCJI5JE.js.map} +0 -0
  683. /package/dist/{GeneExpInput-BAOC6ICV.js.map → GeneExpInput-APLFNE6N.js.map} +0 -0
  684. /package/dist/{Geomap-OZERLL7V.js.map → Geomap-FTKWCV4J.js.map} +0 -0
  685. /package/dist/{HicApp-WDH5LVTD.js.map → HicApp-ZGZKO4Y4.js.map} +0 -0
  686. /package/dist/{IDCViewer-XBZFU3BU.js.map → IDCViewer-MXB3OZUZ.js.map} +0 -0
  687. /package/dist/{NumBinaryEditor-5R4EUQOZ.js.map → NumBinaryEditor-S3MHUVZ5.js.map} +0 -0
  688. /package/dist/{NumBinaryEditor.unit.spec-ULBXMOYY.js.map → NumBinaryEditor.unit.spec-264X5ULG.js.map} +0 -0
  689. /package/dist/{NumContEditor-EN6V4FLQ.js.map → NumContEditor-MKEZCZMR.js.map} +0 -0
  690. /package/dist/{NumContEditor.unit.spec-VDWKNIFN.js.map → NumContEditor.unit.spec-KBRAIU7M.js.map} +0 -0
  691. /package/dist/{NumCustomBinEditor-UB34ALNZ.js.map → NumCustomBinEditor-OSF64BFC.js.map} +0 -0
  692. /package/dist/{NumCustomBinEditor.unit.spec-WZXJ7GEC.js.map → NumCustomBinEditor.unit.spec-T2SRBXTV.js.map} +0 -0
  693. /package/dist/{NumDiscreteEditor-H6J67YEL.js.map → NumDiscreteEditor-PVW5HRRQ.js.map} +0 -0
  694. /package/dist/{NumDiscreteEditor.unit.spec-KJ7YU22W.js.map → NumDiscreteEditor.unit.spec-GUK7VWMR.js.map} +0 -0
  695. /package/dist/{NumRegularBinEditor-R5JVUG7J.js.map → NumRegularBinEditor-757VRGFQ.js.map} +0 -0
  696. /package/dist/{NumRegularBinEditor.unit.spec-RZ73FMNO.js.map → NumRegularBinEditor.unit.spec-JUIGEH3Z.js.map} +0 -0
  697. /package/dist/{NumSplineEditor-AOR6OAJA.js.map → NumSplineEditor-U6MVFSCZ.js.map} +0 -0
  698. /package/dist/{NumSplineEditor.unit.spec-Z6ZEI3UO.js.map → NumSplineEditor.unit.spec-PSH6YENX.js.map} +0 -0
  699. /package/dist/{NumericDensity-SRTFTDQA.js.map → NumericDensity-YIP25Z4Y.js.map} +0 -0
  700. /package/dist/{NumericDensity.unit.spec-MRREBAYU.js.map → NumericDensity.unit.spec-3OSIZJHH.js.map} +0 -0
  701. /package/dist/{NumericHandler-7RALUACA.js.map → NumericHandler-D2CO3FTS.js.map} +0 -0
  702. /package/dist/{NumericHandler.unit.spec-MDO23WRB.js.map → NumericHandler.unit.spec-RNFVGO2I.js.map} +0 -0
  703. /package/dist/{ProteomeInput-MOBXHRD5.js.map → ProteomeInput-ZOBJ2VU6.js.map} +0 -0
  704. /package/dist/{Regression-XWT4NNTG.js.map → Regression-ABKJOOMQ.js.map} +0 -0
  705. /package/dist/{RunChart2-Q7W5MWJS.js.map → RunChart2-D5CEEFEE.js.map} +0 -0
  706. /package/dist/{SC-MM3JTEVL.js.map → SC-RLVEECU5.js.map} +0 -0
  707. /package/dist/{Violin-XNTBDUPG.js.map → Violin-PCNX2CWV.js.map} +0 -0
  708. /package/dist/{Wsi-22KJSFVH.js.map → Wsi-MAMCK5YZ.js.map} +0 -0
  709. /package/dist/{adSandbox-TLYWQOOA.js.map → adSandbox-5YFAQZO6.js.map} +0 -0
  710. /package/dist/{animatedBubbleChart-67SY5JGP.js.map → animatedBubbleChart-GM2GXDP3.js.map} +0 -0
  711. /package/dist/{app-FG3KPE4R.js.map → app-FNNCH37H.js.map} +0 -0
  712. /package/dist/{app-VK5LYO6B.js.map → app-ID5S5FUP.js.map} +0 -0
  713. /package/dist/{bam-TNLNISLV.js.map → bam-JZLYXHMF.js.map} +0 -0
  714. /package/dist/{barchart-IGWRVB6W.js.map → barchart-EAXXILCH.js.map} +0 -0
  715. /package/dist/{barchart2-TT6OBJJP.js.map → barchart2-E6A4UMUB.js.map} +0 -0
  716. /package/dist/{block.init-2Y6CNK7H.js.map → block.init-TUCGKLXG.js.map} +0 -0
  717. /package/dist/{block.mds.expressionrank-VZ4JVPTG.js.map → block.mds.expressionrank-YVROHZVX.js.map} +0 -0
  718. /package/dist/{block.mds.geneboxplot-NYMS32JP.js.map → block.mds.geneboxplot-TQNEWBJY.js.map} +0 -0
  719. /package/dist/{block.mds.junction-3R6C3B5W.js.map → block.mds.junction-ZOSTZQF5.js.map} +0 -0
  720. /package/dist/{block.mds.svcnv-SO5CYYIQ.js.map → block.mds.svcnv-XSTSJ4ZD.js.map} +0 -0
  721. /package/dist/{block.svg-R4ASXXNW.js.map → block.svg-D6HXL4SC.js.map} +0 -0
  722. /package/dist/{block.tk.aicheck-LYRTDZRA.js.map → block.tk.aicheck-7RNC4HRR.js.map} +0 -0
  723. /package/dist/{block.tk.bam-GR7CHGGQ.js.map → block.tk.bam-L3U5YH3F.js.map} +0 -0
  724. /package/dist/{block.tk.bigwig.ui-3KMMZX2M.js.map → block.tk.bigwig.ui-UVSZ7LWQ.js.map} +0 -0
  725. /package/dist/{block.tk.hicstraw-7HH4PGFY.js.map → block.tk.hicstraw-YFBJR5LO.js.map} +0 -0
  726. /package/dist/{block.tk.junction-BPEKLYS2.js.map → block.tk.junction-DNRK2JNQ.js.map} +0 -0
  727. /package/dist/{block.tk.junction.textmatrixui-2QU5DL2X.js.map → block.tk.junction.textmatrixui-EN4ADCAU.js.map} +0 -0
  728. /package/dist/{block.tk.ld-TJREYPNY.js.map → block.tk.ld-I5CTAJ4K.js.map} +0 -0
  729. /package/dist/{block.tk.menu-HDBZK4YP.js.map → block.tk.menu-HUZBY7OM.js.map} +0 -0
  730. /package/dist/{block.tk.pgv-G5GCYBK2.js.map → block.tk.pgv-KA6BFYPY.js.map} +0 -0
  731. /package/dist/{brainImaging-ODWHF7WZ.js.map → brainImaging-OQB2ZHCU.js.map} +0 -0
  732. /package/dist/{brainRegions-DC7DEA7N.js.map → brainRegions-2CRVMS24.js.map} +0 -0
  733. /package/dist/{bubbleHeatmap-T5ACULRL.js.map → bubbleHeatmap-MANNFEG2.js.map} +0 -0
  734. /package/dist/{cellTypeBubbleHeatmap-RQINXXTK.js.map → cellTypeBubbleHeatmap-LRK4R4EC.js.map} +0 -0
  735. /package/dist/{chunk-A6ZUYQHO.js.map → chunk-2NB5HVXB.js.map} +0 -0
  736. /package/dist/{chunk-2PHFY3VP.js.map → chunk-2OMX5AYB.js.map} +0 -0
  737. /package/dist/{chunk-7ZEJKFGW.js.map → chunk-3E26ITYK.js.map} +0 -0
  738. /package/dist/{chunk-LYX4S6WA.js.map → chunk-3H4FCRAN.js.map} +0 -0
  739. /package/dist/{chunk-WKGKKM6F.js.map → chunk-4GKC43U3.js.map} +0 -0
  740. /package/dist/{chunk-YBOHXANC.js.map → chunk-4NQS45KH.js.map} +0 -0
  741. /package/dist/{chunk-TWTPWEYL.js.map → chunk-4ZV6SE4B.js.map} +0 -0
  742. /package/dist/{chunk-NS2MZN3C.js.map → chunk-5DI4UNH5.js.map} +0 -0
  743. /package/dist/{chunk-KSS26PXB.js.map → chunk-5TA5LHPW.js.map} +0 -0
  744. /package/dist/{chunk-ANBGNYNP.js.map → chunk-5YQXNW6Y.js.map} +0 -0
  745. /package/dist/{chunk-H3YF55ZI.js.map → chunk-67MD4UES.js.map} +0 -0
  746. /package/dist/{chunk-TUO5I6LP.js.map → chunk-6BBUIRHA.js.map} +0 -0
  747. /package/dist/{chunk-GWNCQ5YI.js.map → chunk-6DESNDD5.js.map} +0 -0
  748. /package/dist/{chunk-DKPAOVJH.js.map → chunk-6DRRN5XP.js.map} +0 -0
  749. /package/dist/{chunk-WV44DGEJ.js.map → chunk-6T4MN7LV.js.map} +0 -0
  750. /package/dist/{chunk-SLHXR4BZ.js.map → chunk-7TLUQH7J.js.map} +0 -0
  751. /package/dist/{chunk-ALIMVUHR.js.map → chunk-7YMZSVWW.js.map} +0 -0
  752. /package/dist/{chunk-SO76DLSZ.js.map → chunk-AENUJ7UO.js.map} +0 -0
  753. /package/dist/{chunk-BJCET6RU.js.map → chunk-AZSWQWKL.js.map} +0 -0
  754. /package/dist/{chunk-AUPTEHV7.js.map → chunk-BOCU6PXO.js.map} +0 -0
  755. /package/dist/{chunk-LSRFRZNP.js.map → chunk-C7KUMZQM.js.map} +0 -0
  756. /package/dist/{chunk-6MUJGVOH.js.map → chunk-C7ROKWV2.js.map} +0 -0
  757. /package/dist/{chunk-3GQ54XTJ.js.map → chunk-C7ZPDNOJ.js.map} +0 -0
  758. /package/dist/{chunk-XVEEMQAT.js.map → chunk-CAH6LJ5Z.js.map} +0 -0
  759. /package/dist/{chunk-WETOH7YW.js.map → chunk-DEQREL5P.js.map} +0 -0
  760. /package/dist/{chunk-NQMS7WV3.js.map → chunk-DXKZBSSD.js.map} +0 -0
  761. /package/dist/{chunk-NYEFSOKD.js.map → chunk-DZBPF5QI.js.map} +0 -0
  762. /package/dist/{chunk-WCNMP54T.js.map → chunk-DZDK64XY.js.map} +0 -0
  763. /package/dist/{chunk-24ZS2XWC.js.map → chunk-E6C2EWHU.js.map} +0 -0
  764. /package/dist/{chunk-DXM5MQCZ.js.map → chunk-EYKJQJ7R.js.map} +0 -0
  765. /package/dist/{chunk-B2KYLEYM.js.map → chunk-FE5TCBIT.js.map} +0 -0
  766. /package/dist/{chunk-UCB3W3OT.js.map → chunk-FJ2JV2VK.js.map} +0 -0
  767. /package/dist/{chunk-DRESQF33.js.map → chunk-FZYVPRVQ.js.map} +0 -0
  768. /package/dist/{chunk-5TPWMYBG.js.map → chunk-GBKQHVKJ.js.map} +0 -0
  769. /package/dist/{chunk-DJMDETVU.js.map → chunk-GK5QS5BR.js.map} +0 -0
  770. /package/dist/{chunk-D6U65W7Q.js.map → chunk-GLAR6VNF.js.map} +0 -0
  771. /package/dist/{chunk-2QFMKWNS.js.map → chunk-GUW7VTUL.js.map} +0 -0
  772. /package/dist/{chunk-FOUMNTII.js.map → chunk-H6YM4NKS.js.map} +0 -0
  773. /package/dist/{chunk-VOXUMZMG.js.map → chunk-HJKVYTYK.js.map} +0 -0
  774. /package/dist/{chunk-VBDJG6GZ.js.map → chunk-HN67TOA7.js.map} +0 -0
  775. /package/dist/{chunk-7PQVNQFR.js.map → chunk-IXV7FX5B.js.map} +0 -0
  776. /package/dist/{chunk-2UB6JZ3I.js.map → chunk-IZ4IPYQY.js.map} +0 -0
  777. /package/dist/{chunk-GN2A5NL5.js.map → chunk-JHLF2ZC2.js.map} +0 -0
  778. /package/dist/{chunk-FTGLS763.js.map → chunk-JPPNQVKA.js.map} +0 -0
  779. /package/dist/{chunk-GX6G2SSW.js.map → chunk-K2ARLT2A.js.map} +0 -0
  780. /package/dist/{chunk-QM724EG2.js.map → chunk-LOX5GAVG.js.map} +0 -0
  781. /package/dist/{chunk-6YGSVJJD.js.map → chunk-MANAUI7R.js.map} +0 -0
  782. /package/dist/{chunk-7XW4JWMJ.js.map → chunk-MEUSRAOE.js.map} +0 -0
  783. /package/dist/{chunk-NR6WFCPF.js.map → chunk-MHWYRNGA.js.map} +0 -0
  784. /package/dist/{chunk-NUA66GW7.js.map → chunk-NX5IB4IY.js.map} +0 -0
  785. /package/dist/{chunk-OVHQFZAE.js.map → chunk-PIGTIWSK.js.map} +0 -0
  786. /package/dist/{chunk-JL3PYV5F.js.map → chunk-PIN5YUVJ.js.map} +0 -0
  787. /package/dist/{chunk-64JHE3GV.js.map → chunk-PV7AYYRZ.js.map} +0 -0
  788. /package/dist/{chunk-U2GHNZ4N.js.map → chunk-QI7OWVFY.js.map} +0 -0
  789. /package/dist/{chunk-4OOQ52ET.js.map → chunk-QWBNQYIF.js.map} +0 -0
  790. /package/dist/{chunk-5NI77Z3O.js.map → chunk-RIHO7ZD5.js.map} +0 -0
  791. /package/dist/{chunk-LO2QBHP6.js.map → chunk-S6WRMFWQ.js.map} +0 -0
  792. /package/dist/{chunk-IPRYYK26.js.map → chunk-SUOEFEJO.js.map} +0 -0
  793. /package/dist/{chunk-CTVPW77S.js.map → chunk-TVSNHVWX.js.map} +0 -0
  794. /package/dist/{chunk-YVQ4USPP.js.map → chunk-U3CWWOHL.js.map} +0 -0
  795. /package/dist/{chunk-UAB5PGOP.js.map → chunk-VGC4STKW.js.map} +0 -0
  796. /package/dist/{chunk-MVSUESEV.js.map → chunk-VHC4FDEJ.js.map} +0 -0
  797. /package/dist/{chunk-K6VYSDB5.js.map → chunk-VLIOMJDR.js.map} +0 -0
  798. /package/dist/{chunk-IKZQST6E.js.map → chunk-VSDJEPDN.js.map} +0 -0
  799. /package/dist/{chunk-YNQFOPS6.js.map → chunk-WTWHUZ4O.js.map} +0 -0
  800. /package/dist/{chunk-UJIB7QM3.js.map → chunk-XHZ723K4.js.map} +0 -0
  801. /package/dist/{chunk-MP7BA3GK.js.map → chunk-XP4P55IC.js.map} +0 -0
  802. /package/dist/{chunk-3IE6FDVA.js.map → chunk-XVPPM25G.js.map} +0 -0
  803. /package/dist/{chunk-RIL33JCW.js.map → chunk-YDIIKD7O.js.map} +0 -0
  804. /package/dist/{chunk-ZWLT5QS3.js.map → chunk-YLGSRK75.js.map} +0 -0
  805. /package/dist/{chunk-ETXOEP4N.js.map → chunk-YR6EXI2K.js.map} +0 -0
  806. /package/dist/{chunk-ZYAZHJPZ.js.map → chunk-Z53VY5JV.js.map} +0 -0
  807. /package/dist/{chunk-IANE75G3.js.map → chunk-Z5ECCUNG.js.map} +0 -0
  808. /package/dist/{chunk-ATZNXW5F.js.map → chunk-Z7Q2O5Y7.js.map} +0 -0
  809. /package/dist/{cohort-QSLKB4ZO.js.map → cohort-ERDL7EJU.js.map} +0 -0
  810. /package/dist/{cohortSunburst-AQFSNJ5K.js.map → cohortSunburst-KSTVS3OQ.js.map} +0 -0
  811. /package/dist/{condition-MLS6TJHV.js.map → condition-CTJYHRJG.js.map} +0 -0
  812. /package/dist/{controls-ZT3GZ667.js.map → controls-MMMRBTZL.js.map} +0 -0
  813. /package/dist/{controls.config-F7NIPLKB.js.map → controls.config-ZKMQI27Q.js.map} +0 -0
  814. /package/dist/{correlation-ZEIQJGSQ.js.map → correlation-NEQNBQTT.js.map} +0 -0
  815. /package/dist/{customdata.inputui-6PJSAJK2.js.map → customdata.inputui-THUR7DF5.js.map} +0 -0
  816. /package/dist/{databrowser.ui-EMZ5L2Y7.js.map → databrowser.ui-A6ZSIUG4.js.map} +0 -0
  817. /package/dist/{dictionary-U2BWGY6B.js.map → dictionary-TQUVCHIN.js.map} +0 -0
  818. /package/dist/{dnaMethylation-R34E2XNC.js.map → dnaMethylation-ZMJYY3ML.js.map} +0 -0
  819. /package/dist/{dnaMethylation.integration.spec-4Z2AJHWY.js.map → dnaMethylation.integration.spec-5DTBGTYB.js.map} +0 -0
  820. /package/dist/{dofetch-JY4A7BYI.js.map → dofetch-KBTN6OW4.js.map} +0 -0
  821. /package/dist/{e2pca-WSSCXX6A.js.map → e2pca-DNWBF545.js.map} +0 -0
  822. /package/dist/{ep-ATUWEHDJ.js.map → ep-JNH3HMY4.js.map} +0 -0
  823. /package/dist/{expclust.gdc.spec-QRIRRPO7.js.map → expclust.gdc.spec-2NJ7JVJW.js.map} +0 -0
  824. /package/dist/{facet-5VDCSP3S.js.map → facet-RWQFAVVU.js.map} +0 -0
  825. /package/dist/{gb-Y4UG6LFA.js.map → gb-OT2Z3Y7J.js.map} +0 -0
  826. /package/dist/{geneExpClustering-OO67JNJ2.js.map → geneExpClustering-TPYGSTMO.js.map} +0 -0
  827. /package/dist/{geneExpression-5KGV3MAA.js.map → geneExpression-4K3OTXBZ.js.map} +0 -0
  828. /package/dist/{geneExpression-KPRFXKU7.js.map → geneExpression-KPUOZ4PT.js.map} +0 -0
  829. /package/dist/{geneExpression.unit.spec-YV45EZ5O.js.map → geneExpression.unit.spec-26MCGRAP.js.map} +0 -0
  830. /package/dist/{geneORA-R74JPUTC.js.map → geneORA-GNXKCN45.js.map} +0 -0
  831. /package/dist/{geneRanking-IJTXNMHV.js.map → geneRanking-LV6W6TT7.js.map} +0 -0
  832. /package/dist/{geneVariant-JT3EGAIH.js.map → geneVariant-B2SYTHG6.js.map} +0 -0
  833. /package/dist/{geneVariant-HBAHT6LU.js.map → geneVariant-O4XG5VEM.js.map} +0 -0
  834. /package/dist/{geneVariant.integration.spec-TFQYPUAS.js.map → geneVariant.integration.spec-YYVPAFXT.js.map} +0 -0
  835. /package/dist/{genefusion.ui-MMTQMTHC.js.map → genefusion.ui-CVGGYVV3.js.map} +0 -0
  836. /package/dist/{geneset-VMBICNCZ.js.map → geneset-MBMCJNXT.js.map} +0 -0
  837. /package/dist/{genomeBrowser.spec-2XLLIYGA.js.map → genomeBrowser.spec-OVXFKEIU.js.map} +0 -0
  838. /package/dist/{grin2-Y6KAFVV2.js.map → grin2-OXRU465E.js.map} +0 -0
  839. /package/dist/{grin2-2RYPEUWV.js.map → grin2-YCJGBRFG.js.map} +0 -0
  840. /package/dist/{hierCluster-EKGFBQT4.js.map → hierCluster-KNPWL5KD.js.map} +0 -0
  841. /package/dist/{hierCluster-Z4PVNMGS.js.map → hierCluster-L3LYQZQL.js.map} +0 -0
  842. /package/dist/{hierCluster.config-Q6WUNK2K.js.map → hierCluster.config-VZBV5QIO.js.map} +0 -0
  843. /package/dist/{hierCluster.integration.spec-2LHSHNFC.js.map → hierCluster.integration.spec-ZM7K7WI4.js.map} +0 -0
  844. /package/dist/{hierCluster.interactivity-OGQ3KUY6.js.map → hierCluster.interactivity-EA7WVIQR.js.map} +0 -0
  845. /package/dist/{hierCluster.renderers-3GJZXG75.js.map → hierCluster.renderers-YGX6MZZW.js.map} +0 -0
  846. /package/dist/{imagePlot-ZJEZPBX7.js.map → imagePlot-OLVI26S5.js.map} +0 -0
  847. /package/dist/{importPlot-GFEFYEHZ.js.map → importPlot-3SSCNROC.js.map} +0 -0
  848. /package/dist/{isoformExpression-A2X3DSR6.js.map → isoformExpression-BTMJNAAO.js.map} +0 -0
  849. /package/dist/{isoformExpression.unit.spec-VKMEGCL4.js.map → isoformExpression.unit.spec-S2W5T42Z.js.map} +0 -0
  850. /package/dist/{junction-HWIHLQU2.js.map → junction-GIS5OCRO.js.map} +0 -0
  851. /package/dist/{junction.customTerm-C3VWXEYH.js.map → junction.customTerm-3R2GNE3A.js.map} +0 -0
  852. /package/dist/{junction.unit.spec-ZYJGDOXJ.js.map → junction.unit.spec-MSILW6QZ.js.map} +0 -0
  853. /package/dist/{launch.adhoc-HW5AZM4T.js.map → launch.adhoc-LLJY4LA5.js.map} +0 -0
  854. /package/dist/{leftlabel.sample-MTW2HRRQ.js.map → leftlabel.sample-P6DDVCOW.js.map} +0 -0
  855. /package/dist/{lollipop-VWW5H6CR.js.map → lollipop-J34YCYIP.js.map} +0 -0
  856. /package/dist/{maf-KEJYO3H4.js.map → maf-MFEEYT5P.js.map} +0 -0
  857. /package/dist/{maftimeline-MJZDSGSR.js.map → maftimeline-TGJ37QYA.js.map} +0 -0
  858. /package/dist/{matrix-3UJW6LOA.js.map → matrix-A6BNFCIH.js.map} +0 -0
  859. /package/dist/{matrix-W4AX5OBM.js.map → matrix-XTKRVPMQ.js.map} +0 -0
  860. /package/dist/{matrix.cells-5DAIZ3E5.js.map → matrix.cells-5RTZUJVN.js.map} +0 -0
  861. /package/dist/{matrix.config-PK26VPQT.js.map → matrix.config-RMDDMOZ5.js.map} +0 -0
  862. /package/dist/{matrix.data-UK5DGKBK.js.map → matrix.data-Y5TPRGMW.js.map} +0 -0
  863. /package/dist/{matrix.groups-NM4Q5YDN.js.map → matrix.groups-6DXCAY4P.js.map} +0 -0
  864. /package/dist/{matrix.integration.spec-FGWNBCRR.js.map → matrix.integration.spec-2DVRXVNH.js.map} +0 -0
  865. /package/dist/{matrix.interactivity-4C37PII5.js.map → matrix.interactivity-MGOYEKDN.js.map} +0 -0
  866. /package/dist/{matrix.layout-ODV7WXUP.js.map → matrix.layout-T7EC5ZC2.js.map} +0 -0
  867. /package/dist/{matrix.legend-5MY7OXWN.js.map → matrix.legend-S3E76TVO.js.map} +0 -0
  868. /package/dist/{matrix.renderers-QA7W7ZUL.js.map → matrix.renderers-GR77V3RL.js.map} +0 -0
  869. /package/dist/{matrix.serieses-4FSFJPCK.js.map → matrix.serieses-3UGLZW25.js.map} +0 -0
  870. /package/dist/{matrix.sort-3QLFMBJ5.js.map → matrix.sort-A7CNLDUJ.js.map} +0 -0
  871. /package/dist/{matrix.sort.unit.spec-HVOC6IYT.js.map → matrix.sort.unit.spec-YUCV7G5L.js.map} +0 -0
  872. /package/dist/{matrix.sorterUi-EY3SA6CG.js.map → matrix.sorterUi-6PZR3YOD.js.map} +0 -0
  873. /package/dist/{matrix.sorterUi.unit.spec-OAXWPZZI.js.map → matrix.sorterUi.unit.spec-FESIQ2RC.js.map} +0 -0
  874. /package/dist/{matrix.unit.spec-RAL7AU22.js.map → matrix.unit.spec-6QF3WKM7.js.map} +0 -0
  875. /package/dist/{mavb-KIM63AC4.js.map → mavb-UXJBITZM.js.map} +0 -0
  876. /package/dist/{mds.fimo-DMAVM56P.js.map → mds.fimo-IPNWVBO4.js.map} +0 -0
  877. /package/dist/{mds.samplescatterplot-KILTR2C7.js.map → mds.samplescatterplot-KEG7RSN3.js.map} +0 -0
  878. /package/dist/{mds.survivalplot-PV76ANBP.js.map → mds.survivalplot-LJF2CD33.js.map} +0 -0
  879. /package/dist/{multivalue-2V5LMQY7.js.map → multivalue-YRQZ73DI.js.map} +0 -0
  880. /package/dist/{numericDictTermCluster-TGL4X6UC.js.map → numericDictTermCluster-6XDVVWLE.js.map} +0 -0
  881. /package/dist/{oncomatrix-2O7SLXHX.js.map → oncomatrix-TIMH5JKS.js.map} +0 -0
  882. /package/dist/{oncomatrix.spec-HZJKOF5G.js.map → oncomatrix.spec-MUOKKCJN.js.map} +0 -0
  883. /package/dist/{plot.2dvaf-424NNMMA.js.map → plot.2dvaf-3OL4S6QG.js.map} +0 -0
  884. /package/dist/{plot.app-YBZDNST2.js.map → plot.app-CMLHZV5F.js.map} +0 -0
  885. /package/dist/{plot.barplot-YZQBYJUY.js.map → plot.barplot-NRYMIPK6.js.map} +0 -0
  886. /package/dist/{plot.boxplot-5OW6IBQL.js.map → plot.boxplot-ANGW3WUC.js.map} +0 -0
  887. /package/dist/{plot.brainImaging-H3ABPPD3.js.map → plot.brainImaging-YUDBYKX5.js.map} +0 -0
  888. /package/dist/{plot.disco-X7KCDWGX.js.map → plot.disco-LV7RE3YO.js.map} +0 -0
  889. /package/dist/{plot.ssgq-GYRVHTC7.js.map → plot.ssgq-F2LOQFYD.js.map} +0 -0
  890. /package/dist/{plot.vaf2cov-B2TELPHL.js.map → plot.vaf2cov-5OKC7X6D.js.map} +0 -0
  891. /package/dist/{polar2-5KNZRLXY.js.map → polar2-BGJA2GHZ.js.map} +0 -0
  892. /package/dist/{profileForms-FY34KXCL.js.map → profileForms-BKP3OBKV.js.map} +0 -0
  893. /package/dist/{profilePlot-3FX2TPYC.js.map → profilePlot-5PRRNUKD.js.map} +0 -0
  894. /package/dist/{proteinView-WSEO3LD3.js.map → proteinView-VZIWIZZY.js.map} +0 -0
  895. /package/dist/{proteomeCohortCompare-KA2DF3EE.js.map → proteomeCohortCompare-XZI5OI4X.js.map} +0 -0
  896. /package/dist/{pseudbulk.unit.spec-AT3TFCOW.js.map → pseudbulk.unit.spec-DXJQV7JQ.js.map} +0 -0
  897. /package/dist/{pseudobulk-4ZRHUC7W.js.map → pseudobulk-FCH3WW6O.js.map} +0 -0
  898. /package/dist/{qualitative-FHJD44OA.js.map → qualitative-ATX53V44.js.map} +0 -0
  899. /package/dist/{qualitative-3OBGJRP6.js.map → qualitative-BRKLVRKW.js.map} +0 -0
  900. /package/dist/{radar2-X757WR6V.js.map → radar2-6BBT2FBT.js.map} +0 -0
  901. /package/dist/{radarFacility2-GUBAK4Y3.js.map → radarFacility2-76Q3IYP2.js.map} +0 -0
  902. /package/dist/{rememberedGvQ.unit.spec-ADO4Y2OE.js.map → rememberedGvQ.unit.spec-SHTMMZGG.js.map} +0 -0
  903. /package/dist/{render-MZEPNEMU.js.map → render-KUC3QH36.js.map} +0 -0
  904. /package/dist/{report-TUAFDGAE.js.map → report-KB4K7ZXC.js.map} +0 -0
  905. /package/dist/{sampleView-X6YKCBE7.js.map → sampleView-QD2JLZ4T.js.map} +0 -0
  906. /package/dist/{samplelst-UPNRALBH.js.map → samplelst-6R5RYHNV.js.map} +0 -0
  907. /package/dist/{samplematrix-W3HZK3IS.js.map → samplematrix-NGORNBTR.js.map} +0 -0
  908. /package/dist/{sc-UL7233UR.js.map → sc-27AHZZDK.js.map} +0 -0
  909. /package/dist/{scatter-VQQRIW6N.js.map → scatter-FXLZMWD6.js.map} +0 -0
  910. /package/dist/{scatter-FTJ77NUM.js.map → scatter-OWFYLMSJ.js.map} +0 -0
  911. /package/dist/{selectGenomeWithTklst-HPYPSPFI.js.map → selectGenomeWithTklst-ZTGABCXC.js.map} +0 -0
  912. /package/dist/{singleCellCellType-XTKGOH6H.js.map → singleCellCellType-7XXJ5NWC.js.map} +0 -0
  913. /package/dist/{singleCellCellType.unit.spec-A62GT72A.js.map → singleCellCellType.unit.spec-Y3TEYYCF.js.map} +0 -0
  914. /package/dist/{singleCellGeneExpression-X7H5GTU3.js.map → singleCellGeneExpression-EUAIEIYJ.js.map} +0 -0
  915. /package/dist/{singleCellGeneExpression.unit.spec-2KQBHG7O.js.map → singleCellGeneExpression.unit.spec-JVHPFLML.js.map} +0 -0
  916. /package/dist/{singleCellNumericValue-6YS42PZ2.js.map → singleCellNumericValue-FHIECJDK.js.map} +0 -0
  917. /package/dist/{singleCellNumericValue.unit.spec-DNVXQFKI.js.map → singleCellNumericValue.unit.spec-ZFG56MIO.js.map} +0 -0
  918. /package/dist/{singleCellPlot-MGOQ7EQV.js.map → singleCellPlot-NDGIW32L.js.map} +0 -0
  919. /package/dist/{singlecell-QW3SLQD6.js.map → singlecell-JPWVPZEF.js.map} +0 -0
  920. /package/dist/{singlecell-CIOB5XON.js.map → singlecell-N7RJMWZ2.js.map} +0 -0
  921. /package/dist/{snp-6B4MIPKL.js.map → snp-APUTOL2F.js.map} +0 -0
  922. /package/dist/{snp.unit.spec-HNILS56E.js.map → snp.unit.spec-4AN7AJKO.js.map} +0 -0
  923. /package/dist/{snplocus-DDFLYZ2Y.js.map → snplocus-WIMFAMBE.js.map} +0 -0
  924. /package/dist/{snplst-JYKOV73J.js.map → snplst-SUJ5AK4E.js.map} +0 -0
  925. /package/dist/{spliceevent.a53ss.diagram-IBD5ITXR.js.map → spliceevent.a53ss.diagram-4UBI7PFJ.js.map} +0 -0
  926. /package/dist/{spliceevent.exonskip.diagram-ZJGEVUYW.js.map → spliceevent.exonskip.diagram-NVEXVRIC.js.map} +0 -0
  927. /package/dist/{spliceevent.noeventdiagram-RNLNTFOW.js.map → spliceevent.noeventdiagram-CKEWNLVF.js.map} +0 -0
  928. /package/dist/{ssGSEA-42VQLAXL.js.map → ssGSEA-CJOVXTAW.js.map} +0 -0
  929. /package/dist/{ssGSEA.unit.spec-FBJANIKG.js.map → ssGSEA.unit.spec-A7VRVJSF.js.map} +0 -0
  930. /package/dist/{stattable-FROSNTJY.js.map → stattable-JBJVVLQE.js.map} +0 -0
  931. /package/dist/{studyCatalog-XIYNJ24U.js.map → studyCatalog-NEL7XSIP.js.map} +0 -0
  932. /package/dist/{summarizeCnvGeneexp-N3OFI24L.js.map → summarizeCnvGeneexp-BZSCTA5W.js.map} +0 -0
  933. /package/dist/{summarizeGeneexpSurvival-J4DO2AL4.js.map → summarizeGeneexpSurvival-743KXNV7.js.map} +0 -0
  934. /package/dist/{summarizeMutationCnv-Y43BBSI4.js.map → summarizeMutationCnv-CALMSQGV.js.map} +0 -0
  935. /package/dist/{summarizeMutationDiagnosis-JAEAUFCA.js.map → summarizeMutationDiagnosis-OTE7O4AS.js.map} +0 -0
  936. /package/dist/{summarizeMutationSurvival-4QZDDXDV.js.map → summarizeMutationSurvival-VOZOFTFM.js.map} +0 -0
  937. /package/dist/{summary-DTJZ7NNA.js.map → summary-XJKCD35N.js.map} +0 -0
  938. /package/dist/{summary.integration.spec-HRRE3J45.js.map → summary.integration.spec-OOEU6WNB.js.map} +0 -0
  939. /package/dist/{summaryInput-WCADUZBK.js.map → summaryInput-JSOXVSMY.js.map} +0 -0
  940. /package/dist/{termCollection-QIN53TIL.js.map → sunburst-J3QHMYKW.js.map} +0 -0
  941. /package/dist/{sunburst-BGXSCB63.js.map → sunburst-LZPP6NPV.js.map} +0 -0
  942. /package/dist/{survival-LFXQIWRT.js.map → survival-5GWRVTQ6.js.map} +0 -0
  943. /package/dist/{survival-ONWZ5RFM.js.map → survival-FW7N3YXZ.js.map} +0 -0
  944. /package/dist/{survival.integration.spec-ZP7XWHQH.js.map → survival.integration.spec-WN36VUHL.js.map} +0 -0
  945. /package/dist/{svgraph-2SL2SJVU.js.map → svgraph-N35EMK3G.js.map} +0 -0
  946. /package/dist/{svmr-ONIPMLC2.js.map → svmr-EWL5WDDD.js.map} +0 -0
  947. /package/dist/{table-LLCFO4KK.js.map → table-EI2OIRGE.js.map} +0 -0
  948. /package/dist/{termCollectionFractionSelection-UKEVVZXL.js.map → termCollection-K3EX5P3F.js.map} +0 -0
  949. /package/dist/{termCollection-DAHJGR5P.js.map → termCollection-TBTAHLVH.js.map} +0 -0
  950. /package/dist/{termCollection.unit.spec-FQOX2IVP.js.map → termCollection.unit.spec-ZVNAIPHZ.js.map} +0 -0
  951. /package/dist/{tk-GM7CJ2LU.js.map → termCollectionFractionSelection-ATNIPWVX.js.map} +0 -0
  952. /package/dist/{termCollectionFractionSelection.unit.spec-URGEYBU2.js.map → termCollectionFractionSelection.unit.spec-VBRWWBML.js.map} +0 -0
  953. /package/dist/{tvs.categorical-IY6YSFVN.js.map → tk-U6CYISBH.js.map} +0 -0
  954. /package/dist/{tp.ui-TRUHW6GP.js.map → tp.ui-KBFYUSWS.js.map} +0 -0
  955. /package/dist/{tvs.dt-AQQIZD5Z.js.map → tvs.categorical-5USP772O.js.map} +0 -0
  956. /package/dist/{tvs.condition-YTD7GOPW.js.map → tvs.condition-652MAA2Z.js.map} +0 -0
  957. /package/dist/{tvs.numeric-UFAOJR2B.js.map → tvs.dt-7BTARQUS.js.map} +0 -0
  958. /package/dist/{tvs.dtcnv.categorical-WOAOGJSW.js.map → tvs.dtcnv.categorical-GAOO3DGO.js.map} +0 -0
  959. /package/dist/{tvs.dtcnv.continuous-TJBEPJGO.js.map → tvs.dtcnv.continuous-P2QRD45O.js.map} +0 -0
  960. /package/dist/{tvs.dtfusion-SFMZQKKU.js.map → tvs.dtfusion-L3I65W7L.js.map} +0 -0
  961. /package/dist/{tvs.dtitd-Q5RQTCLD.js.map → tvs.dtitd-B3JPW6OL.js.map} +0 -0
  962. /package/dist/{tvs.dtsnvindel-UEK4O6WI.js.map → tvs.dtsnvindel-6Y6CJBZV.js.map} +0 -0
  963. /package/dist/{tvs.dtsv-ECS4KEYG.js.map → tvs.dtsv-GL7CPATL.js.map} +0 -0
  964. /package/dist/{tvs.multivalue-CJIZ3I54.js.map → tvs.multivalue-75IM23FZ.js.map} +0 -0
  965. /package/dist/{vocabulary-MTKDDDGB.js.map → tvs.numeric-XB3GBPHE.js.map} +0 -0
  966. /package/dist/{tvs.samplelst-BVFY2P7Q.js.map → tvs.samplelst-QUA45UE7.js.map} +0 -0
  967. /package/dist/{tvs.survival-L56B3I55.js.map → tvs.survival-EKSDZZIO.js.map} +0 -0
  968. /package/dist/{tvs.termCollection-BFIBVBSA.js.map → tvs.termCollection-5ATMDC7O.js.map} +0 -0
  969. /package/dist/{wsi.direct-OSHY7VL4.js.map → wsi.direct-BU6BL5UR.js.map} +0 -0
@@ -0,0 +1,398 @@
1
+ import {
2
+ Menu
3
+ } from "./chunk-CNFTQSNE.js";
4
+ import {
5
+ Tableau10_default,
6
+ arc_default
7
+ } from "./chunk-WJLRU5OF.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");
67
+ const right = layout.append("div").style("flex", "0 0 300px").style("min-width", "0").style("display", "flex").style("flex-direction", "column").style("gap", "12px");
68
+ const stats = right.append("div").style("display", "grid").style("grid-template-columns", "1fr 1fr").style("gap", "8px");
69
+ this.dom = {
70
+ pathCard,
71
+ left,
72
+ crumbs,
73
+ toolbar,
74
+ reset: void 0,
75
+ svg,
76
+ g: svg.append("g").attr("transform", `translate(${SIZE / 2},${SIZE / 2})`),
77
+ centre: void 0,
78
+ centreText: void 0,
79
+ paths: void 0,
80
+ labels: void 0,
81
+ stats,
82
+ right,
83
+ tip: new Menu({ padding: "" })
84
+ };
85
+ 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", () => {
86
+ if (this.focus?.depth) this.zoomTo(this.root);
87
+ });
88
+ for (const label of opts.statLabels || []) {
89
+ const box = card(stats, label);
90
+ box.box.style("padding", "6px 10px");
91
+ box.title.style("margin-bottom", "0").style("white-space", "nowrap").style("overflow", "hidden").style("text-overflow", "ellipsis").attr("title", label);
92
+ 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");
93
+ this.statValues.set(label, { el: num, value: 0, title: box.title });
94
+ }
95
+ }
96
+ /** a control in the toolbar above the chart */
97
+ addControl() {
98
+ 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");
99
+ }
100
+ unitText(n) {
101
+ return `${n.toLocaleString()} ${n === 1 ? this.opts.unit.one : this.opts.unit.many}`;
102
+ }
103
+ /** (re)draw the chart for a new tree, centred on the root */
104
+ setTree(tree) {
105
+ this.root = hierarchy(tree).sum((d) => d.value || 0).sort(() => 0);
106
+ partition_default().size([2 * Math.PI, this.root.height + 1])(this.root);
107
+ this.focus = this.root;
108
+ this.baseColor.clear();
109
+ let pi = 0;
110
+ for (const c of this.root.children || []) {
111
+ this.baseColor.set(
112
+ c.data.name,
113
+ this.opts.colors?.[c.data.name] || c.data.color || Tableau10_default[pi++ % Tableau10_default.length]
114
+ );
115
+ }
116
+ this.buildChart();
117
+ this.hooks.onFocus(this.focus);
118
+ }
119
+ /************ colours ************/
120
+ /** the hue of a wedge: its own colour or its nearest ancestor's, down to the first ring's */
121
+ hue(d) {
122
+ let n = d;
123
+ while (n.depth > 1) {
124
+ if (n.data.color) return n.data.color;
125
+ n = n.parent;
126
+ }
127
+ return n.depth === 1 ? this.baseColor.get(n.data.name) || NO_HUE : NO_HUE;
128
+ }
129
+ /** the hue, shaded by the ring the wedge occupies around the current centre (so a wedge keeps its
130
+ * hue at every zoom level), faded when dimmed */
131
+ color(d) {
132
+ if (d.depth === 0) return CENTRE_FILL;
133
+ const ring = Math.max(0, Math.min(RING_SHADE.length - 1, d.depth - (this.focus?.depth ?? 0) - 1));
134
+ const c = rgb(this.hue(d)).brighter(RING_SHADE[ring]).formatHex();
135
+ return d.dim ? rgb(value_default(c, "#ffffff")(DIM)).formatHex() : c;
136
+ }
137
+ hoverColor(d) {
138
+ return rgb(this.color(d)).darker(HOVER_DARKEN).formatHex();
139
+ }
140
+ /** build every wedge and label once; zoomTo() then only animates their attributes */
141
+ buildChart() {
142
+ const g = this.dom.g;
143
+ g.selectAll("*").remove();
144
+ const root = this.root;
145
+ root.each((d) => d.current = { x0: d.x0, x1: d.x1, y0: d.y0, y1: d.y1 });
146
+ const nodes = root.descendants().slice(1);
147
+ this.dom.centre = g.append("g");
148
+ this.dom.centre.append("circle").attr("r", R0 - 3).attr("fill", CENTRE_FILL).attr("stroke", CENTRE_STROKE).attr("stroke-width", 1.5).on("click", () => {
149
+ if (this.focus.depth) this.zoomTo(this.focus.parent);
150
+ });
151
+ this.dom.centreText = this.dom.centre.append("g").attr("pointer-events", "none");
152
+ 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) => {
153
+ select_default(event.currentTarget).attr("fill", this.hoverColor(d));
154
+ this.showTip(event, d);
155
+ }).on("mouseleave", (event, d) => {
156
+ select_default(event.currentTarget).attr("fill", this.color(d));
157
+ this.dom.tip.hide();
158
+ }).on("click", (event, d) => this.hooks.onClick(d, event));
159
+ 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));
160
+ this.refresh();
161
+ this.renderCentre();
162
+ }
163
+ /** a label shows only where its wedge is visible and at least one line fits along the arc */
164
+ labelVisible(g) {
165
+ return arcVisible(g, RINGS) && (g.x1 - g.x0) * midRadius(g) >= LABEL_LINE_H + 2;
166
+ }
167
+ /** along the wedge's mid radius, reading outward; flipped in the left half so it is upright */
168
+ labelTransform(g) {
169
+ const a = (g.x0 + g.x1) / 2 * (180 / Math.PI);
170
+ return `rotate(${a - 90}) translate(${midRadius(g)},0) rotate(${a < 180 ? 0 : 180})`;
171
+ }
172
+ /** wrap the node name into as many lines as the wedge's arc length allows (max 2), each
173
+ * no longer than the ring is thick */
174
+ setLabelText(text, d, g) {
175
+ const arcLen = (g.x1 - g.x0) * midRadius(g);
176
+ const nLines = Math.max(1, Math.min(LABEL_MAX_LINES, Math.floor(arcLen / LABEL_LINE_H)));
177
+ const maxChars = Math.floor((RING_W - 8) / LABEL_CHAR_W);
178
+ const lines = splitLabel(d.data.name, maxChars, nLines);
179
+ text.selectAll("tspan").remove();
180
+ lines.forEach((l, i) => {
181
+ text.append("tspan").attr("x", 0).attr("dy", i === 0 ? `${-(lines.length - 1) * LABEL_LINE_H / 2}px` : `${LABEL_LINE_H}px`).text(l);
182
+ });
183
+ }
184
+ /** name, count and Back on the centre disc */
185
+ renderCentre() {
186
+ const focus = this.focus;
187
+ const t = this.dom.centreText;
188
+ t.selectAll("*").remove();
189
+ this.dom.centre.select("circle").style("cursor", focus.depth ? "pointer" : "default");
190
+ const name = focus.depth ? focus.data.name : this.opts.rootName;
191
+ const nameLines = splitLabel(name, Math.floor(2 * (R0 - 16) / (15 * 0.6)), 2);
192
+ const rows = [
193
+ ...nameLines.map((l) => ({ text: l, size: 15, weight: "bold", color: TEXT_DARK, h: 18 })),
194
+ { text: this.unitText(focus.value || 0), size: 12, color: TEXT_MUTED, h: 16 }
195
+ ];
196
+ if (focus.depth) rows.push({ text: "\u2039 BACK", size: 12, weight: "bold", color: LINK, h: 22 });
197
+ const total = rows.reduce((s, r) => s + r.h, 0);
198
+ let y = -total / 2;
199
+ for (const r of rows) {
200
+ 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);
201
+ y += r.h;
202
+ }
203
+ }
204
+ /** re-apply selection strokes, dimming and the path card after the caller's selection changed;
205
+ * no geometry changes */
206
+ refresh() {
207
+ this.root.each((d) => d.dim = !!this.hooks.isDimmed?.(d));
208
+ 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");
209
+ this.dom.labels.attr("fill", (d) => d.dim ? TEXT_MUTED : "#fff");
210
+ this.renderReset();
211
+ this.renderPath();
212
+ }
213
+ /** reset is only active when zoomed in */
214
+ renderReset() {
215
+ const zoomed = !!this.focus?.depth;
216
+ this.dom.reset.style("opacity", zoomed ? 1 : 0.35).style("cursor", zoomed ? "pointer" : "default");
217
+ }
218
+ /** the path of clicked wedges, as the path card or the breadcrumb */
219
+ renderPath() {
220
+ if (this.dom.pathCard) this.renderPathCard(this.dom.pathCard);
221
+ else this.renderCrumbs();
222
+ }
223
+ /** root › … › centre, each earlier step clickable to zoom back to it */
224
+ renderCrumbs() {
225
+ const box = this.dom.crumbs;
226
+ box.selectAll("*").remove();
227
+ const focus = this.focus;
228
+ const steps = focus.ancestors().reverse();
229
+ steps.forEach((d, i) => {
230
+ if (i) box.append("span").style("color", "#9ca3af").style("margin", "0 6px").text("\u203A");
231
+ const isFocus = d === focus;
232
+ 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", () => {
233
+ if (!isFocus) this.zoomTo(d);
234
+ });
235
+ });
236
+ }
237
+ /** the path card: at the root it lists the first ring to click into; once zoomed it shows the path
238
+ * of clicked wedges, each with a colour-coded badge, and clicking a line zooms back to it */
239
+ renderPathCard(pathCard) {
240
+ const box = pathCard.body;
241
+ box.selectAll("*").remove();
242
+ const focus = this.focus;
243
+ const atRoot = !focus.depth;
244
+ pathCard.title.text(atRoot ? this.opts.rootPathTitle || "Selection" : "Selection");
245
+ const nodes = atRoot ? this.root.children || [] : focus.ancestors().reverse().slice(1);
246
+ const STEP = 7;
247
+ nodes.forEach((d, i) => {
248
+ const isFocus = d === focus;
249
+ const indent = atRoot ? 0 : i * STEP;
250
+ const row = box.append("div").style("position", "relative").style("margin-left", `${indent}px`);
251
+ if (indent) {
252
+ 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");
253
+ }
254
+ 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", () => {
255
+ if (!isFocus) this.zoomTo(d);
256
+ }).on("mouseenter", (event) => {
257
+ if (!isFocus) select_default(event.currentTarget).style("background", "#f3f4f6");
258
+ }).on("mouseleave", (event) => {
259
+ if (!isFocus) select_default(event.currentTarget).style("background", "transparent");
260
+ });
261
+ badge(line, d.data.name, this.color(d));
262
+ const text = line.append("div").style("flex", "1 1 auto").style("min-width", "0").style("line-height", "1.2");
263
+ 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);
264
+ text.append("div").style("font-size", "0.7em").style("color", "#6b7280").text(`${d.data.level} \xB7 ${this.unitText(d.value || 0)}`);
265
+ });
266
+ }
267
+ /** shown title of a stat box, which keeps `label` as its key */
268
+ setStatTitle(label, text) {
269
+ this.statValues.get(label)?.title.text(text).attr("title", text);
270
+ }
271
+ /** stat box values, by label; null shows a dash with `nullTitle` as its tooltip. Numbers roll from
272
+ * the previous value */
273
+ setStats(values, nullTitle = (_label) => "") {
274
+ for (const [label, v] of values) {
275
+ const box = this.statValues.get(label);
276
+ if (!box) continue;
277
+ if (v === null) {
278
+ box.el.interrupt().text("\u2014").attr("title", nullTitle(label) || null);
279
+ box.value = 0;
280
+ continue;
281
+ }
282
+ box.el.attr("title", null);
283
+ const from = box.value;
284
+ box.value = v;
285
+ const i = value_default(from, v);
286
+ box.el.transition().duration(DURATION).tween("text", () => (t) => box.el.text(Math.round(i(t)).toLocaleString()));
287
+ }
288
+ }
289
+ /************ interaction ************/
290
+ /** animate every wedge from its current geometry to where it sits with `p` at the centre */
291
+ zoomTo(p) {
292
+ this.focus = p;
293
+ this.dom.tip.hide();
294
+ const root = this.root;
295
+ root.each((d) => d.target = zoomTarget(d, p));
296
+ const t = this.dom.g.transition().duration(DURATION);
297
+ this.dom.paths.attr("pointer-events", "none");
298
+ t.on(
299
+ "end",
300
+ () => this.dom.paths.attr("pointer-events", (d) => arcVisible(d.target, RINGS) ? "auto" : "none")
301
+ );
302
+ this.dom.paths.transition(t).tween("data", (d) => {
303
+ const i = value_default(d.current, d.target);
304
+ return (k) => d.current = i(k);
305
+ }).filter(function(d) {
306
+ return +this.getAttribute("fill-opacity") || arcVisible(d.target, RINGS);
307
+ }).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));
308
+ 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));
309
+ this.renderCentre();
310
+ this.dom.centreText.attr("opacity", 0).transition(t).attr("opacity", 1);
311
+ this.renderReset();
312
+ this.renderPath();
313
+ this.hooks.onFocus(p);
314
+ }
315
+ showTip(event, d) {
316
+ this.dom.tip.clear().show(event.clientX, event.clientY);
317
+ 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");
318
+ box.append("div").style("font-weight", "bold").style("font-size", "14px").text(d.data.name);
319
+ this.hooks.tooltip(d, box);
320
+ }
321
+ destroy() {
322
+ this.dom.tip.destroy?.();
323
+ }
324
+ };
325
+ function card(holder, title) {
326
+ const box = holder.append("div").style("border", `1px solid ${CARD_BORDER}`).style("border-radius", "10px").style("padding", "10px 12px").style("box-sizing", "border-box");
327
+ const head = box.append("div").style("display", "flex").style("align-items", "center").style("justify-content", "space-between").style("gap", "8px");
328
+ 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);
329
+ const headRight = head.append("div").style("display", "flex").style("align-items", "center").style("gap", "8px");
330
+ return { box, title: titleDiv, headRight, body: box.append("div") };
331
+ }
332
+ function badge(holder, name, color, size = 30) {
333
+ 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));
334
+ }
335
+ function pill(holder, opts = {}) {
336
+ const el = holder.append(opts.button ? "button" : "span").style("border-radius", "999px").style("font-weight", "bold").style("font-variant-numeric", "tabular-nums");
337
+ if (opts.button)
338
+ 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");
339
+ else el.style("background", PILL_BG).style("color", TEXT_DARK).style("font-size", "11px").style("padding", "1px 8px");
340
+ return el;
341
+ }
342
+ function badgeCode(name) {
343
+ if (name.length <= 5 && name === name.toUpperCase()) return name;
344
+ const words = name.split(/[\s()]+/).filter(Boolean);
345
+ if (/^[<>≤≥]?[\d.]+$/.test(words[0] || "")) return words[0].slice(0, 5);
346
+ if (words.length > 1)
347
+ return words.map((w) => w[0]).join("").toUpperCase().slice(0, 3);
348
+ return name.slice(0, 2).toUpperCase();
349
+ }
350
+ function zoomTarget(d, focus) {
351
+ const span = focus.x1 - focus.x0 || 1;
352
+ const ang = (x) => Math.max(0, Math.min(1, (x - focus.x0) / span)) * 2 * Math.PI;
353
+ return {
354
+ x0: ang(d.x0),
355
+ x1: ang(d.x1),
356
+ y0: Math.max(0, d.y0 - focus.depth),
357
+ y1: Math.max(0, d.y1 - focus.depth)
358
+ };
359
+ }
360
+ function arcVisible(g, rings) {
361
+ return g.y0 >= 1 && g.y1 <= rings + 1 && g.x1 > g.x0;
362
+ }
363
+ function splitLabel(text, maxChars, maxLines) {
364
+ const words = text.split(/\s+/).filter(Boolean);
365
+ const lines = [];
366
+ let cur = "";
367
+ for (const w of words) {
368
+ if (!cur) cur = w;
369
+ else if ((cur + " " + w).length <= maxChars) cur += " " + w;
370
+ else {
371
+ lines.push(cur);
372
+ cur = w;
373
+ }
374
+ }
375
+ if (cur) lines.push(cur);
376
+ if (lines.length > maxLines) {
377
+ const rest = lines.slice(maxLines - 1).join(" ");
378
+ lines.length = maxLines - 1;
379
+ lines.push(rest);
380
+ }
381
+ return lines.map((l) => l.length > maxChars ? l.slice(0, Math.max(1, maxChars - 1)) + "\u2026" : l);
382
+ }
383
+
384
+ export {
385
+ SIZE,
386
+ WARN,
387
+ SELECT_STROKE,
388
+ TEXT_DARK,
389
+ TEXT_MUTED,
390
+ LINK,
391
+ RULE,
392
+ icon,
393
+ SunburstRenderer,
394
+ card,
395
+ badge,
396
+ pill
397
+ };
398
+ //# sourceMappingURL=chunk-7SFK32JP.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.append('svg').attr('width', SIZE).attr('height', SIZE).style('display', 'block')\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
+ }
@@ -0,0 +1,82 @@
1
+ import {
2
+ addGeneSearchbox,
3
+ getGEunit,
4
+ getSelectedSampleTypes,
5
+ mayGetSampleTypeLabel,
6
+ renderSampleTypeSelect,
7
+ renderSampleTypesByTermsSelect,
8
+ table2col
9
+ } from "./chunk-PEKCVKJK.js";
10
+ import {
11
+ Menu
12
+ } from "./chunk-CNFTQSNE.js";
13
+ import {
14
+ TermTypes
15
+ } from "./chunk-WJLRU5OF.js";
16
+
17
+ // termdb/handlers/geneExpression.ts
18
+ var SearchHandler = class {
19
+ init(opts) {
20
+ this.callback = opts.callback;
21
+ this.app = opts.app;
22
+ this.dom = {};
23
+ const holder = opts.holder.append("div").style("padding", "10px 0px");
24
+ this.dom.sampleTypeDiv = holder.append("div");
25
+ this.mayRenderSampleTypeSelect();
26
+ const geneSearch = addGeneSearchbox({
27
+ tip: new Menu({ padding: "0px" }),
28
+ genome: opts.genomeObj,
29
+ row: holder,
30
+ searchOnly: "gene",
31
+ callback: () => this.selectGene(geneSearch)
32
+ });
33
+ holder.select(".sja_genesearchinput").style("margin", "0px");
34
+ }
35
+ mayRenderSampleTypeSelect() {
36
+ this.dom.sampleTypeDiv.selectAll("*").remove();
37
+ this.querySampleTypes = this.app.vocabApi.termdbConfig?.queries.geneExpression.sampleTypes;
38
+ this.querySampleTypesByTerms = this.app.vocabApi.termdbConfig?.queries.geneExpression.sampleTypesByTerms;
39
+ if (Array.isArray(this.querySampleTypes) && this.querySampleTypes.length >= 2 || this.querySampleTypesByTerms) {
40
+ const table = table2col({ holder: this.dom.sampleTypeDiv, margin: "0px 0px 15px 0px" });
41
+ const [td1, td2] = table.addRow();
42
+ td1.text("Sample Type");
43
+ td2.style("padding-left", "10px");
44
+ if (this.querySampleTypesByTerms) {
45
+ this.sampleTypeSelect = renderSampleTypesByTermsSelect(
46
+ td2,
47
+ this.querySampleTypesByTerms,
48
+ this.app.vocabApi.termdbConfig
49
+ );
50
+ } else {
51
+ this.sampleTypeSelect = renderSampleTypeSelect(td2, this.querySampleTypes, this.app.vocabApi.termdbConfig);
52
+ }
53
+ }
54
+ }
55
+ async selectGene(geneSearch) {
56
+ const gene = geneSearch?.geneSymbol;
57
+ if (!gene) throw new Error("No gene selected");
58
+ const sampleTypes = getSelectedSampleTypes({
59
+ sampleTypeSelect: this.sampleTypeSelect,
60
+ querySampleTypes: this.querySampleTypes,
61
+ querySampleTypesByTerms: this.querySampleTypesByTerms
62
+ });
63
+ if (this.sampleTypeSelect && !sampleTypes?.length) {
64
+ return;
65
+ }
66
+ const unit = getGEunit(this.app.vocabApi);
67
+ const name = `${gene} ${unit}`;
68
+ const term = { gene, name, type: TermTypes.GENE_EXPRESSION, sampleTypes };
69
+ term.sampleTypeLabel = mayGetSampleTypeLabel({
70
+ sampleTypeSelect: this.sampleTypeSelect,
71
+ querySampleTypes: this.querySampleTypes,
72
+ querySampleTypesByTerms: this.querySampleTypesByTerms,
73
+ termdbConfig: this.app.vocabApi.termdbConfig
74
+ });
75
+ this.callback(term);
76
+ }
77
+ };
78
+
79
+ export {
80
+ SearchHandler
81
+ };
82
+ //# sourceMappingURL=chunk-7TLUQH7J.js.map