@sjcrh/proteinpaint-client 2.226.0 → 2.227.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.
- package/dist/2dmaf-B34EJADN.js +1362 -0
- package/dist/AggMatrixInput-USCXGZT2.js +402 -0
- package/dist/AggregateMatrix-VLCSBD65.js +37 -0
- package/dist/AppHeader-KE7QVEW5.js +826 -0
- package/dist/BoxPlot-3H5QKYRD.js +1247 -0
- package/dist/CorrelationVolcano-ACEJOJS6.js +613 -0
- package/dist/CorrelationVolcano-ACEJOJS6.js.map +7 -0
- package/dist/Cuminc-6LPS4LR7.js +1217 -0
- package/dist/DE-TTKEQYC7.js +85 -0
- package/dist/DEinput-W7WEO2NO.js +483 -0
- package/dist/DEinput-W7WEO2NO.js.map +7 -0
- package/dist/DM-2TUF6Q3C.js +86 -0
- package/dist/DifferentialAnalysis-3LP4RAWF.js +236 -0
- package/dist/Disco-UP5C7UWX.js +3445 -0
- package/dist/Disco.UI-V4I4LOMF.js +239 -0
- package/dist/DmrPlot-TZR2NGIH.js +366 -0
- package/dist/GB-4NRY4YMF.js +1388 -0
- package/dist/GB-4NRY4YMF.js.map +7 -0
- package/dist/GSEA-YGKBRJJO.js +870 -0
- package/dist/GeneExpInput-L3J2ECVQ.js +38 -0
- package/dist/Geomap-4MHU6F57.js +80 -0
- package/dist/HicApp-27VGP5F6.js +2240 -0
- package/dist/IDCViewer-37GJPPUY.js +10810 -0
- package/dist/NumBinaryEditor-SEC2NDGG.js +274 -0
- package/dist/NumBinaryEditor.unit.spec-UDYSUC4S.js +308 -0
- package/dist/NumContEditor-YPSYWU2A.js +100 -0
- package/dist/NumContEditor.unit.spec-NHFBMHQ5.js +160 -0
- package/dist/NumCustomBinEditor-N7US5Q64.js +29 -0
- package/dist/NumCustomBinEditor.unit.spec-2BMMUBYU.js +393 -0
- package/dist/NumDiscreteEditor-BLQ5DEB7.js +165 -0
- package/dist/NumDiscreteEditor.unit.spec-JOFPUFU5.js +229 -0
- package/dist/NumRegularBinEditor-7BFPBUW2.js +29 -0
- package/dist/NumRegularBinEditor.unit.spec-6GZMNRHA.js +274 -0
- package/dist/NumSplineEditor-LO3ZR3T3.js +205 -0
- package/dist/NumSplineEditor.unit.spec-MRA3DQSB.js +220 -0
- package/dist/NumericDensity-NUCVJZ74.js +29 -0
- package/dist/NumericDensity.unit.spec-TZLKWH4U.js +414 -0
- package/dist/NumericHandler-NH533VBN.js +30 -0
- package/dist/NumericHandler.unit.spec-V7MNEHML.js +225 -0
- package/dist/ProteomeInput-FEXWZOA2.js +610 -0
- package/dist/Regression-NJAPUGT7.js +1412 -0
- package/dist/RunChart2-QIJ6NUWY.js +744 -0
- package/dist/SC-5NWBVOEE.js +1290 -0
- package/dist/Violin-TMACI43Q.js +1105 -0
- package/dist/Volcano-BMLHQEXU.js +2745 -0
- package/dist/Volcano-BMLHQEXU.js.map +7 -0
- package/dist/Wsi-5TWAOBFG.js +650 -0
- package/dist/Wsi-5TWAOBFG.js.map +7 -0
- package/dist/aboutSunburst-53YAWTV5.js +93 -0
- package/dist/adSandbox-7VHXEI7W.js +29 -0
- package/dist/animatedBubbleChart-CTFGJIRR.js +542 -0
- package/dist/app-AQAQAPUN.js +38 -0
- package/dist/app-SZDIV5U4.js +28 -0
- package/dist/app.js +12 -12
- package/dist/bam-3U5R2KNC.js +872 -0
- package/dist/barchart-ZL5VSR7P.js +38 -0
- package/dist/barchart2-YELP2HI7.js +305 -0
- package/dist/block-AGX6Z4BR.js +6208 -0
- package/dist/block-AGX6Z4BR.js.map +7 -0
- package/dist/block.init-IBITFICI.js +29 -0
- package/dist/block.mds.expressionrank-4L76ILD4.js +350 -0
- package/dist/block.mds.geneboxplot-XA7DFHPV.js +819 -0
- package/dist/block.mds.junction-GTZD3HEN.js +1534 -0
- package/dist/block.mds.svcnv-HTXQ3LGR.js +6325 -0
- package/dist/block.svg-BM6OMVRF.js +155 -0
- package/dist/block.tk.aicheck-CV53ULEP.js +274 -0
- package/dist/block.tk.bam-KJYFNJCX.js +1906 -0
- package/dist/block.tk.bigwig.ui-A352D6PT.js +202 -0
- package/dist/block.tk.hicstraw-QAFTQESL.js +814 -0
- package/dist/block.tk.junction-XURB4RWZ.js +2353 -0
- package/dist/block.tk.junction.textmatrixui-RNRWWNGY.js +190 -0
- package/dist/block.tk.ld-GWJMVPX3.js +90 -0
- package/dist/block.tk.menu-BJZYFMQX.js +1050 -0
- package/dist/block.tk.pgv-7XNJTHEW.js +934 -0
- package/dist/brainImaging-37EDZLGN.js +550 -0
- package/dist/brainRegions-FEW52QUB.js +213 -0
- package/dist/bubbleHeatmap-YN34AA4H.js +374 -0
- package/dist/bubbleHeatmap-YN34AA4H.js.map +7 -0
- package/dist/cellTypeBubbleHeatmap-X4K63FOK.js +274 -0
- package/dist/cellTypeBubbleHeatmap-X4K63FOK.js.map +7 -0
- package/dist/chunk-24CVFDVW.js +1219 -0
- package/dist/chunk-24CVFDVW.js.map +7 -0
- package/dist/chunk-2B3CYHUF.js +30 -0
- package/dist/chunk-2IAELUCN.js +348 -0
- package/dist/chunk-2W6U53AG.js +195 -0
- package/dist/chunk-46GCGTHJ.js +1339 -0
- package/dist/chunk-4ZX5KHD7.js +96 -0
- package/dist/chunk-544DSOC3.js +466 -0
- package/dist/chunk-6CV3YVJD.js +194 -0
- package/dist/chunk-6UHSGC6G.js +276 -0
- package/dist/chunk-6ZZGFZV2.js +35 -0
- package/dist/chunk-72FUMSAN.js +6375 -0
- package/dist/chunk-7DC4PD5R.js +182 -0
- package/dist/chunk-7ISYXUJ7.js +243 -0
- package/dist/chunk-7NVFEGCE.js +30 -0
- package/dist/chunk-7PQ6MLKG.js +1253 -0
- package/dist/chunk-BGPRKPKH.js +56 -0
- package/dist/chunk-BILGOVOR.js +480 -0
- package/dist/chunk-BKJLRLQQ.js +2008 -0
- package/dist/chunk-BQYMKS7S.js +4521 -0
- package/dist/chunk-BQYMKS7S.js.map +7 -0
- package/dist/chunk-C4BKP67I.js +123 -0
- package/dist/chunk-CFYWQJ7F.js +472 -0
- package/dist/chunk-CFYWQJ7F.js.map +7 -0
- package/dist/chunk-CQNTAIM3.js +328 -0
- package/dist/chunk-CW3IVTRX.js +2685 -0
- package/dist/chunk-D7KZWYP5.js +516 -0
- package/dist/chunk-DFHERVYA.js +961 -0
- package/dist/chunk-DFHERVYA.js.map +7 -0
- package/dist/chunk-DNXOZATD.js +848 -0
- package/dist/chunk-DXF3YDRG.js +2334 -0
- package/dist/chunk-ECBVUPDE.js +626 -0
- package/dist/chunk-ES22B563.js +257 -0
- package/dist/chunk-FA2B6PKK.js +42 -0
- package/dist/chunk-FMHSDIVG.js +2932 -0
- package/dist/chunk-G5UFOMON.js +255 -0
- package/dist/chunk-GKA6USKV.js +550 -0
- package/dist/chunk-HGIPR72Y.js +299 -0
- package/dist/chunk-IBUDYN5E.js +468 -0
- package/dist/chunk-J37WYVIZ.js +418 -0
- package/dist/chunk-JG5CF5Q3.js +397 -0
- package/dist/chunk-JI632MAR.js +400 -0
- package/dist/chunk-JI632MAR.js.map +7 -0
- package/dist/chunk-JKPMBNRM.js +100 -0
- package/dist/chunk-JKPMBNRM.js.map +7 -0
- package/dist/chunk-JSQH233D.js +263 -0
- package/dist/chunk-JWWLSDVM.js +296 -0
- package/dist/chunk-KGK4JJ4L.js +830 -0
- package/dist/chunk-KGK4JJ4L.js.map +7 -0
- package/dist/chunk-KTJUDDVQ.js +340 -0
- package/dist/chunk-MY5MF4RI.js +55 -0
- package/dist/chunk-P4ZGUPGA.js +56 -0
- package/dist/chunk-PQDYA3ZQ.js +274 -0
- package/dist/chunk-PVJ6IIFA.js +176 -0
- package/dist/chunk-QGG5MTIL.js +161 -0
- package/dist/chunk-QGG5MTIL.js.map +7 -0
- package/dist/chunk-QKVKQD6S.js +184 -0
- package/dist/chunk-QNACCFOA.js +48 -0
- package/dist/chunk-R6O3FLKW.js +141 -0
- package/dist/chunk-RFQQRF6Q.js +54 -0
- package/dist/chunk-RG27DDKN.js +267 -0
- package/dist/chunk-SB5DR4NL.js +562 -0
- package/dist/chunk-SF42FFDZ.js +2799 -0
- package/dist/chunk-SORR4JHU.js +14 -0
- package/dist/chunk-SZEBQMZW.js +50 -0
- package/dist/chunk-THDOHHDN.js +102 -0
- package/dist/chunk-TXDCZOPG.js +305 -0
- package/dist/chunk-U6GSEOBY.js +54 -0
- package/dist/chunk-UBTNM5RO.js +203 -0
- package/dist/chunk-UHZDDPUU.js +444 -0
- package/dist/chunk-UVES3USV.js +134 -0
- package/dist/chunk-UYA5LCAR.js +281 -0
- package/dist/chunk-VHEXNBCO.js +379 -0
- package/dist/chunk-VJJJFEOU.js +96 -0
- package/dist/chunk-VPRP24DY.js +2095 -0
- package/dist/chunk-VVWZ4BOI.js +2349 -0
- package/dist/chunk-WENNRY5E.js +170 -0
- package/dist/chunk-WTLUZOBK.js +103 -0
- package/dist/chunk-YBXQBSFY.js +26888 -0
- package/dist/chunk-YBXQBSFY.js.map +7 -0
- package/dist/chunk-ZLEGHQOO.js +217 -0
- package/dist/chunk-ZO7KUAIF.js +5258 -0
- package/dist/chunk-ZO7KUAIF.js.map +7 -0
- package/dist/chunk-ZX7527EE.js +240 -0
- package/dist/cohort-NKRTCX5Z.js +66 -0
- package/dist/cohortSunburst-DFJW6WXU.js +402 -0
- package/dist/condition-PYFOEVX5.js +323 -0
- package/dist/controls-RVNIN66W.js +30 -0
- package/dist/controls.config-XVEYYBI4.js +30 -0
- package/dist/correlation-MNL4DGSW.js +91 -0
- package/dist/customdata.inputui-WFIIJATQ.js +280 -0
- package/dist/dataDownload-CMSP5FA4.js +326 -0
- package/dist/databrowser.ui-FYZPXXEJ.js +424 -0
- package/dist/dictionary-76BXY6WU.js +109 -0
- package/dist/dnaMethylation-WTIJVNIU.js +29 -0
- package/dist/dnaMethylation.integration.spec-YXQEFLC5.js +194 -0
- package/dist/dnaMethylation.unit.spec-22FLJWVB.js +95 -0
- package/dist/dofetch-XID2XEJT.js +49 -0
- package/dist/e2pca-DD6DA7X3.js +340 -0
- package/dist/ep-S4PI4AUJ.js +1247 -0
- package/dist/expclust.gdc.spec-BDV4RJO6.js +298 -0
- package/dist/facet-EOXEW2LN.js +556 -0
- package/dist/gb-AKE7RDPB.js +77 -0
- package/dist/geneExpClustering-73ED7HIN.js +240 -0
- package/dist/geneExpression-AEJILDKJ.js +29 -0
- package/dist/geneExpression-NXDXXKEA.js +309 -0
- package/dist/geneExpression.unit.spec-VUJWR4TA.js +150 -0
- package/dist/geneORA-7KFQ4PW2.js +269 -0
- package/dist/geneRanking-RKJU4PM2.js +544 -0
- package/dist/geneVariant-2AGC3ECG.js +32 -0
- package/dist/geneVariant-PWMXP6H4.js +289 -0
- package/dist/geneVariant-PWMXP6H4.js.map +7 -0
- package/dist/geneVariant.integration.spec-UJXGQEZG.js +672 -0
- package/dist/genefusion.ui-KEBOA3TK.js +299 -0
- package/dist/geneset-BU6V3CB5.js +199 -0
- package/dist/genomeBrowser.spec-BGQHJZKH.js +272 -0
- package/dist/grin2-OUZN5LOU.js +66 -0
- package/dist/grin2-WRGQ7BDG.js +945 -0
- package/dist/hierCluster-3ERW47JJ.js +51 -0
- package/dist/hierCluster-JAFKBC6C.js +55 -0
- package/dist/hierCluster.config-QIJNY5OD.js +32 -0
- package/dist/hierCluster.integration.spec-XA4K3UU6.js +479 -0
- package/dist/hierCluster.interactivity-RDFPQOOP.js +45 -0
- package/dist/hierCluster.renderers-SU5IYI33.js +18 -0
- package/dist/imagePlot-J4PHG7V2.js +152 -0
- package/dist/importPlot-U67MZZXY.js +8 -0
- package/dist/isoformExpression-K5BCDJLL.js +31 -0
- package/dist/isoformExpression.unit.spec-35FHEO27.js +233 -0
- package/dist/junction-6GGWFF2J.js +32 -0
- package/dist/junction.unit.spec-7EJK4HML.js +224 -0
- package/dist/junction.unit.spec-7EJK4HML.js.map +7 -0
- package/dist/launch.adhoc-ONCSL65L.js +33 -0
- package/dist/leftlabel.sample-H5G3U7AA.js +260 -0
- package/dist/leftlabel.sample-H5G3U7AA.js.map +7 -0
- package/dist/lollipop-BWP4BG7Q.js +162 -0
- package/dist/maf-GV6JHWYK.js +451 -0
- package/dist/maftimeline-HE7XLJWG.js +583 -0
- package/dist/matrix-IAM6SA7K.js +50 -0
- package/dist/matrix-QF5MBV5Y.js +55 -0
- package/dist/matrix.cells-A5E63KDN.js +25 -0
- package/dist/matrix.config-VLRMO7J2.js +33 -0
- package/dist/matrix.data-R4FW2PQH.js +22 -0
- package/dist/matrix.groups-3UH2KOIY.js +25 -0
- package/dist/matrix.integration.spec-57YYARQU.js +3156 -0
- package/dist/matrix.interactivity-KNRJSSTQ.js +33 -0
- package/dist/matrix.layout-OMNDDITA.js +35 -0
- package/dist/matrix.legend-SE7SQTNN.js +19 -0
- package/dist/matrix.renderers-6MMW7XMU.js +30 -0
- package/dist/matrix.serieses-BEZCQDLJ.js +18 -0
- package/dist/matrix.sort-KRNS4VPF.js +25 -0
- package/dist/matrix.sort.unit.spec-UXTQPKVV.js +464 -0
- package/dist/matrix.sorterUi.unit.spec-LJJ7GCEB.js +334 -0
- package/dist/matrix.unit.spec-2OSFPN5T.js +146 -0
- package/dist/mavb-CZAZO6AO.js +726 -0
- package/dist/mds.samplescatterplot-ENSEO2VX.js +1545 -0
- package/dist/mds.survivalplot-QSKD6FSX.js +472 -0
- package/dist/multivalue-FZTFADA2.js +79 -0
- package/dist/numericDictTermCluster-IFIEM3E4.js +62 -0
- package/dist/oncomatrix-GZKCAMSR.js +286 -0
- package/dist/oncomatrix.spec-FTLMVGTH.js +439 -0
- package/dist/plot.2dvaf-PWO4XOFU.js +368 -0
- package/dist/plot.app-JYBZEBHK.js +32 -0
- package/dist/plot.barplot-PA2PDVOB.js +93 -0
- package/dist/plot.boxplot-IHIEWQWG.js +142 -0
- package/dist/plot.brainImaging-WQ2WWEW3.js +51 -0
- package/dist/plot.disco-QIURLAHA.js +100 -0
- package/dist/plot.ssgq-T27XDC4K.js +130 -0
- package/dist/plot.vaf2cov-Y2DJRQED.js +249 -0
- package/dist/polar2-3MFBRZ4G.js +228 -0
- package/dist/profileForms-J3O7XDHY.js +937 -0
- package/dist/profilePlot-C45ERAOZ.js +45 -0
- package/dist/proteinView-F2EVY7V5.js +1346 -0
- package/dist/proteinView-F2EVY7V5.js.map +7 -0
- package/dist/proteomeCohortCompare-2IS7GNJZ.js +866 -0
- package/dist/pseudbulk.unit.spec-SY3ATAPK.js +82 -0
- package/dist/pseudobulk-N6WNHKAC.js +31 -0
- package/dist/qualitative-SKUTWJLA.js +34 -0
- package/dist/qualitative-XWN5V3EE.js +241 -0
- package/dist/radar2-AHZME5CF.js +323 -0
- package/dist/radarFacility2-CVEVC4U5.js +331 -0
- package/dist/render-S47OJIIP.js +29 -0
- package/dist/report-IPX3PKSW.js +213 -0
- package/dist/sampleView-OZQUKPVV.js +39 -0
- package/dist/samplelst-7XXJTJ4J.js +114 -0
- package/dist/samplematrix-JN35HJBG.js +2188 -0
- package/dist/sc-6ZHDNPYP.js +77 -0
- package/dist/scatter-4MP6TG67.js +84 -0
- package/dist/scatter-TRMY47CC.js +919 -0
- package/dist/selectGenomeWithTklst-UDNTL544.js +125 -0
- package/dist/singleCellCellType-UXABRPQQ.js +29 -0
- package/dist/singleCellCellType.unit.spec-N22EQMZW.js +150 -0
- package/dist/singleCellGeneExpression-OBPVP6IU.js +29 -0
- package/dist/singleCellGeneExpression.unit.spec-NVCFU5B4.js +144 -0
- package/dist/singleCellNumericValue-Z2X3LLRB.js +29 -0
- package/dist/singleCellNumericValue.unit.spec-Q7DCQHEE.js +412 -0
- package/dist/singleCellPlot-S5N6ZEEA.js +44 -0
- package/dist/singlecell-OK2P4AS2.js +1562 -0
- package/dist/singlecell-RI6HA3NI.js +77 -0
- package/dist/snp-XRM2UAEJ.js +29 -0
- package/dist/snp.unit.spec-CDTYGH4K.js +167 -0
- package/dist/snplocus-CAUGDRZE.js +200 -0
- package/dist/snplst-DP533FL2.js +36 -0
- package/dist/spliceevent.a53ss.diagram-XWEN4UMO.js +142 -0
- package/dist/spliceevent.exonskip.diagram-HBXQOUT4.js +274 -0
- package/dist/spliceevent.noeventdiagram-ORQJ62ON.js +451 -0
- package/dist/ssGSEA-PLDZ2556.js +29 -0
- package/dist/ssGSEA.unit.spec-ORFJFZJY.js +79 -0
- package/dist/stattable-GVRVRO2Y.js +112 -0
- package/dist/studyCatalog-K46WJHC6.js +457 -0
- package/dist/summarizeCnvGeneexp-7WSJTWKH.js +154 -0
- package/dist/summarizeGeneexpSurvival-H3TW7I4I.js +101 -0
- package/dist/summarizeMutationCnv-JOYXEMFP.js +155 -0
- package/dist/summarizeMutationDiagnosis-GBIGXFY5.js +31 -0
- package/dist/summarizeMutationSurvival-3RULG3KW.js +95 -0
- package/dist/summary-VKLFTPC2.js +40 -0
- package/dist/summary.integration.spec-EK3MPFVD.js +405 -0
- package/dist/summaryInput-POI5KQSP.js +238 -0
- package/dist/sunburst-BIVYHF5R.js +274 -0
- package/dist/sunburst-SYHQOCGQ.js +34 -0
- package/dist/survival-CG2GQ4YY.js +1248 -0
- package/dist/survival-NEO3E2HS.js +49 -0
- package/dist/survival.integration.spec-PPK5KO4V.js +609 -0
- package/dist/svgraph-Q2U2HEMF.js +1377 -0
- package/dist/svmr-HKFHKGLI.js +3574 -0
- package/dist/svmr-HKFHKGLI.js.map +7 -0
- package/dist/swimmer-GA4C6YH7.js +993 -0
- package/dist/table-DJJIES6L.js +192 -0
- package/dist/termCollection-CHVUM5C6.js +247 -0
- package/dist/termCollection-R3LTBPJ4.js +29 -0
- package/dist/termCollection.unit.spec-B7KAAOFT.js +295 -0
- package/dist/termCollectionFractionSelection-A72QM36J.js +38 -0
- package/dist/termCollectionFractionSelection.unit.spec-JR77QEIG.js +184 -0
- package/dist/tk-GRGKFATN.js +38 -0
- package/dist/tk-WV2G2UPY.js +1224 -0
- package/dist/tk-WV2G2UPY.js.map +7 -0
- package/dist/tp.ui-NATRJ5EN.js +1453 -0
- package/dist/tvs.categorical-U2ZYLPSW.js +28 -0
- package/dist/tvs.condition-6EBZALR4.js +160 -0
- package/dist/tvs.dt-H626ESMQ.js +34 -0
- package/dist/tvs.dtcnv.categorical-6S7INDYC.js +31 -0
- package/dist/tvs.dtcnv.continuous-MLYNEMHI.js +72 -0
- package/dist/tvs.dtfusion-2OLY6X7G.js +31 -0
- package/dist/tvs.dtitd-Z6MEL5SH.js +31 -0
- package/dist/tvs.dtsnvindel-HPBQSCYV.js +31 -0
- package/dist/tvs.dtsv-BRRNX64J.js +31 -0
- package/dist/tvs.multivalue-H2G7WKAL.js +84 -0
- package/dist/tvs.numeric-OKYGMQSK.js +32 -0
- package/dist/tvs.samplelst-46FGACU7.js +95 -0
- package/dist/tvs.survival-QL4KC3SQ.js +110 -0
- package/dist/tvs.termCollection-22DFW3PF.js +118 -0
- package/dist/vocabulary-LJEERZJ6.js +32 -0
- package/dist/wsi.direct-3GGVEVQ4.js +11600 -0
- package/dist/wsi.direct-3GGVEVQ4.js.map +7 -0
- package/package.json +3 -3
- package/dist/2dmaf-CSBPMYHO.js +0 -1362
- package/dist/AggMatrixInput-2HST4LLJ.js +0 -402
- package/dist/AggregateMatrix-UPOAX44L.js +0 -37
- package/dist/AppHeader-H5QBVKUS.js +0 -826
- package/dist/BoxPlot-JTBQA6PL.js +0 -1247
- package/dist/CorrelationVolcano-AWBPVDMT.js +0 -613
- package/dist/CorrelationVolcano-AWBPVDMT.js.map +0 -7
- package/dist/Cuminc-3BXJVWIH.js +0 -1217
- package/dist/DE-237VV46D.js +0 -85
- package/dist/DEinput-W443UW5T.js +0 -479
- package/dist/DEinput-W443UW5T.js.map +0 -7
- package/dist/DM-TIW623IR.js +0 -86
- package/dist/DifferentialAnalysis-PHUA2GPK.js +0 -236
- package/dist/Disco-WHV52SCI.js +0 -3445
- package/dist/Disco.UI-UDUXNCZX.js +0 -239
- package/dist/DmrPlot-FZCD6FTX.js +0 -366
- package/dist/GB-6UW5LOUV.js +0 -1388
- package/dist/GB-6UW5LOUV.js.map +0 -7
- package/dist/GSEA-3CNHMK6M.js +0 -870
- package/dist/GeneExpInput-ZOVP7BFY.js +0 -38
- package/dist/Geomap-JREOIESM.js +0 -80
- package/dist/HicApp-RKAMIUXQ.js +0 -2240
- package/dist/IDCViewer-KXV4FU3V.js +0 -10810
- package/dist/NumBinaryEditor-FNVYUK2J.js +0 -274
- package/dist/NumBinaryEditor.unit.spec-PWR23U3J.js +0 -308
- package/dist/NumContEditor-YLBJW64K.js +0 -100
- package/dist/NumContEditor.unit.spec-6JWBCPFY.js +0 -160
- package/dist/NumCustomBinEditor-42AFCXRN.js +0 -29
- package/dist/NumCustomBinEditor.unit.spec-AFBTF2CL.js +0 -393
- package/dist/NumDiscreteEditor-FJIBZTBP.js +0 -165
- package/dist/NumDiscreteEditor.unit.spec-MC4INDCB.js +0 -229
- package/dist/NumRegularBinEditor-2WRE72TL.js +0 -29
- package/dist/NumRegularBinEditor.unit.spec-L3S6NRCM.js +0 -274
- package/dist/NumSplineEditor-TVMVAN7I.js +0 -205
- package/dist/NumSplineEditor.unit.spec-GEL36GZZ.js +0 -220
- package/dist/NumericDensity-BNFAVOFO.js +0 -29
- package/dist/NumericDensity.unit.spec-XBYUFBTQ.js +0 -414
- package/dist/NumericHandler-4VFFJNX6.js +0 -30
- package/dist/NumericHandler.unit.spec-76T2IVRS.js +0 -225
- package/dist/ProteomeInput-M5UIO73Q.js +0 -610
- package/dist/Regression-5LB5TLA6.js +0 -1412
- package/dist/RunChart2-HIFXOEKZ.js +0 -744
- package/dist/SC-SMMW5MJG.js +0 -1290
- package/dist/Violin-COAFYZOV.js +0 -1105
- package/dist/Volcano-62II76B4.js +0 -2748
- package/dist/Volcano-62II76B4.js.map +0 -7
- package/dist/Wsi-OYW2L7FR.js +0 -637
- package/dist/Wsi-OYW2L7FR.js.map +0 -7
- package/dist/aboutSunburst-3FYJGR6B.js +0 -93
- package/dist/adSandbox-4VHYWBQC.js +0 -29
- package/dist/animatedBubbleChart-QCCIC5IT.js +0 -542
- package/dist/app-IF7YPCGZ.js +0 -28
- package/dist/app-JZ43TSJP.js +0 -38
- package/dist/bam-2VPZGSW3.js +0 -872
- package/dist/barchart-VYTWYYGG.js +0 -38
- package/dist/barchart2-XC7J4VEO.js +0 -305
- package/dist/block-YGQFUK5L.js +0 -6203
- package/dist/block-YGQFUK5L.js.map +0 -7
- package/dist/block.init-BVP3YZHQ.js +0 -29
- package/dist/block.mds.expressionrank-RKDDKY4J.js +0 -350
- package/dist/block.mds.geneboxplot-3FZ3EZZ6.js +0 -819
- package/dist/block.mds.junction-MCOG37RA.js +0 -1534
- package/dist/block.mds.svcnv-IEOR5IQZ.js +0 -6325
- package/dist/block.svg-3XHRHYCV.js +0 -155
- package/dist/block.tk.aicheck-TMDUGNZX.js +0 -274
- package/dist/block.tk.bam-73KW4QEJ.js +0 -1906
- package/dist/block.tk.bigwig.ui-E5W6R7DQ.js +0 -202
- package/dist/block.tk.hicstraw-BNNE6ZMW.js +0 -814
- package/dist/block.tk.junction-DMPRZRNY.js +0 -2353
- package/dist/block.tk.junction.textmatrixui-XS2E7MQL.js +0 -190
- package/dist/block.tk.ld-QD3XDLO4.js +0 -90
- package/dist/block.tk.menu-S6XI732E.js +0 -1050
- package/dist/block.tk.pgv-KH4TMR3A.js +0 -934
- package/dist/brainImaging-NK4JENN3.js +0 -550
- package/dist/brainRegions-YUEMTKYH.js +0 -213
- package/dist/bubbleHeatmap-LQCVS4WK.js +0 -374
- package/dist/bubbleHeatmap-LQCVS4WK.js.map +0 -7
- package/dist/cellTypeBubbleHeatmap-DFRSPWAY.js +0 -274
- package/dist/cellTypeBubbleHeatmap-DFRSPWAY.js.map +0 -7
- package/dist/chunk-37ZEGLVY.js +0 -267
- package/dist/chunk-3RPX4ZVV.js +0 -2334
- package/dist/chunk-4LK5YFHF.js +0 -102
- package/dist/chunk-4WFG5Y3A.js +0 -2095
- package/dist/chunk-4WFXCUT4.js +0 -141
- package/dist/chunk-5LY2ASQX.js +0 -305
- package/dist/chunk-6V7ITU5F.js +0 -2349
- package/dist/chunk-7UK7CU4F.js +0 -398
- package/dist/chunk-7UK7CU4F.js.map +0 -7
- package/dist/chunk-AAQDXVQT.js +0 -134
- package/dist/chunk-ADJBQCFM.js +0 -243
- package/dist/chunk-ATIITEOR.js +0 -692
- package/dist/chunk-ATIITEOR.js.map +0 -7
- package/dist/chunk-BWVJAFEQ.js +0 -35
- package/dist/chunk-CDCNBN6G.js +0 -50
- package/dist/chunk-CGSBIFFO.js +0 -1339
- package/dist/chunk-DPWSIN62.js +0 -26787
- package/dist/chunk-DPWSIN62.js.map +0 -7
- package/dist/chunk-EARMOT6Q.js +0 -176
- package/dist/chunk-ECCXTB5S.js +0 -562
- package/dist/chunk-ECTOEM7X.js +0 -96
- package/dist/chunk-EKIWZUEO.js +0 -54
- package/dist/chunk-FALP6GXG.js +0 -96
- package/dist/chunk-FRD6LQF7.js +0 -103
- package/dist/chunk-FRPYXYYQ.js +0 -263
- package/dist/chunk-FV2GLMSI.js +0 -397
- package/dist/chunk-G6SP5IQT.js +0 -626
- package/dist/chunk-GZL6YFZJ.js +0 -30
- package/dist/chunk-H353EVLK.js +0 -240
- package/dist/chunk-HKR5R5YR.js +0 -466
- package/dist/chunk-HULTLO4D.js +0 -217
- package/dist/chunk-IIN4CG67.js +0 -56
- package/dist/chunk-ISWFHYEZ.js +0 -123
- package/dist/chunk-JBUTLI3V.js +0 -1253
- package/dist/chunk-JCNZJKLK.js +0 -55
- package/dist/chunk-JEVDRC64.js +0 -56
- package/dist/chunk-KBZAB2H2.js +0 -340
- package/dist/chunk-KDKJLITX.js +0 -54
- package/dist/chunk-KNFJN6CM.js +0 -299
- package/dist/chunk-KSYGLBZ4.js +0 -4389
- package/dist/chunk-KSYGLBZ4.js.map +0 -7
- package/dist/chunk-KUOXZIH4.js +0 -348
- package/dist/chunk-KZ54E2FU.js +0 -184
- package/dist/chunk-L7FMBWWK.js +0 -6375
- package/dist/chunk-LMONIWPI.js +0 -30
- package/dist/chunk-LTY7WOAT.js +0 -281
- package/dist/chunk-LYDN734A.js +0 -194
- package/dist/chunk-LYMYO6TY.js +0 -652
- package/dist/chunk-LYMYO6TY.js.map +0 -7
- package/dist/chunk-MRZUZDRA.js +0 -444
- package/dist/chunk-NGBI4FST.js +0 -195
- package/dist/chunk-OKM4ACTA.js +0 -170
- package/dist/chunk-OUDHHMZU.js +0 -159
- package/dist/chunk-OUDHHMZU.js.map +0 -7
- package/dist/chunk-OYXRYWGU.js +0 -2932
- package/dist/chunk-P2HMCEMM.js +0 -5254
- package/dist/chunk-P2HMCEMM.js.map +0 -7
- package/dist/chunk-P5FHYGJK.js +0 -848
- package/dist/chunk-P7QDNXSH.js +0 -276
- package/dist/chunk-Q7GK35TB.js +0 -257
- package/dist/chunk-QXRM5NMW.js +0 -274
- package/dist/chunk-RI3GAHQE.js +0 -255
- package/dist/chunk-SH7SL4I5.js +0 -1219
- package/dist/chunk-SH7SL4I5.js.map +0 -7
- package/dist/chunk-SJHWZZ4M.js +0 -70
- package/dist/chunk-SJHWZZ4M.js.map +0 -7
- package/dist/chunk-T2W4JHWJ.js +0 -472
- package/dist/chunk-T2W4JHWJ.js.map +0 -7
- package/dist/chunk-TDBS3UFZ.js +0 -379
- package/dist/chunk-THHYPA5K.js +0 -48
- package/dist/chunk-U2OB3S3M.js +0 -14
- package/dist/chunk-UA2ADBTO.js +0 -42
- package/dist/chunk-USGUVW5Q.js +0 -182
- package/dist/chunk-UWVDD4C2.js +0 -480
- package/dist/chunk-W2SBSEKT.js +0 -550
- package/dist/chunk-XAHZYGKW.js +0 -468
- package/dist/chunk-XKWLP433.js +0 -328
- package/dist/chunk-YWB2QHV2.js +0 -2799
- package/dist/chunk-Z6M77JDG.js +0 -2008
- package/dist/chunk-Z7RFFJXU.js +0 -516
- package/dist/chunk-ZG7EBTHK.js +0 -203
- package/dist/chunk-ZJLJHQWM.js +0 -418
- package/dist/chunk-ZKU6RST3.js +0 -2685
- package/dist/chunk-ZLWEUYPT.js +0 -296
- package/dist/cohort-X327AG3O.js +0 -66
- package/dist/cohortSunburst-GNWIVDNA.js +0 -402
- package/dist/condition-3M4L2HIM.js +0 -323
- package/dist/controls-OKNHZJOU.js +0 -30
- package/dist/controls.config-FUKM5LEP.js +0 -30
- package/dist/correlation-PC4MXCFM.js +0 -91
- package/dist/customdata.inputui-HCRTX56R.js +0 -280
- package/dist/dataDownload-HJO7UW7S.js +0 -326
- package/dist/databrowser.ui-EY3H6B4S.js +0 -424
- package/dist/dictionary-L6CTMFY7.js +0 -109
- package/dist/dnaMethylation-FEB5GGXK.js +0 -29
- package/dist/dnaMethylation.integration.spec-4DC6TJNZ.js +0 -194
- package/dist/dnaMethylation.unit.spec-REOHQOBC.js +0 -95
- package/dist/dofetch-YFGOKCKV.js +0 -49
- package/dist/e2pca-QSAVTCPL.js +0 -340
- package/dist/ep-LAFLKVSW.js +0 -1247
- package/dist/expclust.gdc.spec-OM4J6WBL.js +0 -298
- package/dist/facet-WHTV2VIX.js +0 -556
- package/dist/gb-DLXWWBB6.js +0 -77
- package/dist/geneExpClustering-KB2MB2VM.js +0 -240
- package/dist/geneExpression-3D7PDZ2I.js +0 -309
- package/dist/geneExpression-3RSRGYGQ.js +0 -29
- package/dist/geneExpression.unit.spec-EINAWLPR.js +0 -150
- package/dist/geneORA-J4KVSZT3.js +0 -269
- package/dist/geneRanking-HKLJ7CN6.js +0 -544
- package/dist/geneVariant-3BRGRFPT.js +0 -32
- package/dist/geneVariant-VI5DGDAB.js +0 -289
- package/dist/geneVariant-VI5DGDAB.js.map +0 -7
- package/dist/geneVariant.integration.spec-3IBX4NNE.js +0 -672
- package/dist/genefusion.ui-OESQL7TW.js +0 -299
- package/dist/geneset-3BMV3KP4.js +0 -199
- package/dist/genomeBrowser.spec-I3WKAITC.js +0 -272
- package/dist/grin2-4BBCH3H5.js +0 -66
- package/dist/grin2-5L2U32LY.js +0 -945
- package/dist/hierCluster-KM56NTN6.js +0 -51
- package/dist/hierCluster-XCJF5IQ6.js +0 -55
- package/dist/hierCluster.config-E2EYOXX6.js +0 -32
- package/dist/hierCluster.integration.spec-IIEJ2YEI.js +0 -479
- package/dist/hierCluster.interactivity-AJFEJTGX.js +0 -45
- package/dist/hierCluster.renderers-XKI344FM.js +0 -18
- package/dist/imagePlot-3B3BXI6I.js +0 -152
- package/dist/importPlot-JDVH7Q2Z.js +0 -8
- package/dist/isoformExpression-UFHY5LB2.js +0 -31
- package/dist/isoformExpression.unit.spec-U6GDCNQR.js +0 -233
- package/dist/junction-W2STW5WW.js +0 -32
- package/dist/junction.unit.spec-R4DIBFLB.js +0 -178
- package/dist/junction.unit.spec-R4DIBFLB.js.map +0 -7
- package/dist/launch.adhoc-KN7HFHJH.js +0 -33
- package/dist/leftlabel.sample-CK2EK7J6.js +0 -254
- package/dist/leftlabel.sample-CK2EK7J6.js.map +0 -7
- package/dist/lollipop-EKIGAAK6.js +0 -162
- package/dist/maf-MK2MM7J4.js +0 -451
- package/dist/maftimeline-7RTMXWFA.js +0 -583
- package/dist/matrix-UM2EZODJ.js +0 -50
- package/dist/matrix-YBL4FZYJ.js +0 -55
- package/dist/matrix.cells-45ZFADK5.js +0 -25
- package/dist/matrix.config-QTBIRXKU.js +0 -33
- package/dist/matrix.data-WAMOLSKW.js +0 -22
- package/dist/matrix.groups-RXFXZABD.js +0 -25
- package/dist/matrix.integration.spec-JZDZRVOK.js +0 -3156
- package/dist/matrix.interactivity-P4VYGTB2.js +0 -33
- package/dist/matrix.layout-WWPRXXHX.js +0 -35
- package/dist/matrix.legend-4MCMVVKO.js +0 -19
- package/dist/matrix.renderers-JQTUODDS.js +0 -30
- package/dist/matrix.serieses-3IDRKSGO.js +0 -18
- package/dist/matrix.sort-EAWOB56R.js +0 -25
- package/dist/matrix.sort.unit.spec-FOWLULHA.js +0 -464
- package/dist/matrix.sorterUi.unit.spec-U5CQDTMX.js +0 -334
- package/dist/matrix.unit.spec-VTLD4EOZ.js +0 -146
- package/dist/mavb-JIIXJHBK.js +0 -726
- package/dist/mds.samplescatterplot-PTWA2V6E.js +0 -1545
- package/dist/mds.survivalplot-XVZ66GP5.js +0 -472
- package/dist/multivalue-2H7QX7MG.js +0 -79
- package/dist/numericDictTermCluster-EHCDRT6J.js +0 -62
- package/dist/oncomatrix-RZLZUC32.js +0 -286
- package/dist/oncomatrix.spec-Z5UQGTW2.js +0 -439
- package/dist/plot.2dvaf-IRBZBJ6B.js +0 -368
- package/dist/plot.app-I23IAZ3Z.js +0 -32
- package/dist/plot.barplot-PYLRAZB7.js +0 -93
- package/dist/plot.boxplot-VBWU7DUG.js +0 -142
- package/dist/plot.brainImaging-HDJMEMTK.js +0 -51
- package/dist/plot.disco-5BVG3WMT.js +0 -100
- package/dist/plot.ssgq-S3BKXJMW.js +0 -130
- package/dist/plot.vaf2cov-VD7DU2XR.js +0 -249
- package/dist/polar2-PYLEVG7E.js +0 -228
- package/dist/profileForms-CI2YYD3Y.js +0 -937
- package/dist/profilePlot-UCC4ZVHQ.js +0 -45
- package/dist/proteinView-FBY6TK3S.js +0 -1346
- package/dist/proteinView-FBY6TK3S.js.map +0 -7
- package/dist/proteomeCohortCompare-2VUSLC6I.js +0 -866
- package/dist/pseudbulk.unit.spec-VPZWNTIA.js +0 -82
- package/dist/pseudobulk-RUXGZ7OY.js +0 -31
- package/dist/qualitative-3AVR4GRX.js +0 -34
- package/dist/qualitative-5QNBKDOZ.js +0 -241
- package/dist/radar2-AOYMS54Y.js +0 -323
- package/dist/radarFacility2-PP2MAXIP.js +0 -331
- package/dist/render-ASLVKYEX.js +0 -29
- package/dist/report-UVYKDMQC.js +0 -213
- package/dist/sampleView-6UHR7FSR.js +0 -39
- package/dist/samplelst-ABC2CCNN.js +0 -114
- package/dist/samplematrix-36UCHZLC.js +0 -2188
- package/dist/sc-XLSAM725.js +0 -77
- package/dist/scatter-ADOBAOW2.js +0 -84
- package/dist/scatter-ZNVLI627.js +0 -919
- package/dist/selectGenomeWithTklst-DPDBDYTR.js +0 -125
- package/dist/singleCellCellType-STVPYZD4.js +0 -29
- package/dist/singleCellCellType.unit.spec-ZLY37AXL.js +0 -150
- package/dist/singleCellGeneExpression-PCGLU35S.js +0 -29
- package/dist/singleCellGeneExpression.unit.spec-PSLKK362.js +0 -144
- package/dist/singleCellNumericValue-SR3SJEOB.js +0 -29
- package/dist/singleCellNumericValue.unit.spec-PXVXJ4HJ.js +0 -412
- package/dist/singleCellPlot-JXB7M6OH.js +0 -44
- package/dist/singlecell-EDSX56QO.js +0 -1562
- package/dist/singlecell-PH55NFRX.js +0 -77
- package/dist/snp-3VEYBTAQ.js +0 -29
- package/dist/snp.unit.spec-V7OB44US.js +0 -167
- package/dist/snplocus-HX67RBT5.js +0 -200
- package/dist/snplst-H5YXCY33.js +0 -36
- package/dist/spliceevent.a53ss.diagram-DBDEEHSK.js +0 -142
- package/dist/spliceevent.exonskip.diagram-EYEL6BY6.js +0 -274
- package/dist/spliceevent.noeventdiagram-64OEXK7U.js +0 -451
- package/dist/ssGSEA-3YWQH6KM.js +0 -29
- package/dist/ssGSEA.unit.spec-23V2IXP5.js +0 -79
- package/dist/stattable-GPSBCNYC.js +0 -112
- package/dist/studyCatalog-W5PATRNY.js +0 -457
- package/dist/summarizeCnvGeneexp-YGI23QH5.js +0 -154
- package/dist/summarizeGeneexpSurvival-KQ6OLWYR.js +0 -101
- package/dist/summarizeMutationCnv-XDHBNEPU.js +0 -155
- package/dist/summarizeMutationDiagnosis-VKIJRJ2Q.js +0 -31
- package/dist/summarizeMutationSurvival-57YKJGLE.js +0 -95
- package/dist/summary-4WQOVIUF.js +0 -40
- package/dist/summary.integration.spec-FRNWBU7F.js +0 -405
- package/dist/summaryInput-X7DS2YA7.js +0 -238
- package/dist/sunburst-3OEAQA3O.js +0 -34
- package/dist/sunburst-MSGTXYMM.js +0 -274
- package/dist/survival-5KC5CNZU.js +0 -1248
- package/dist/survival-QXDS6N46.js +0 -49
- package/dist/survival.integration.spec-PKENHLTZ.js +0 -609
- package/dist/svgraph-VJLB7BBN.js +0 -1377
- package/dist/svmr-6BDEZAS6.js +0 -3834
- package/dist/svmr-6BDEZAS6.js.map +0 -7
- package/dist/swimmer-R3DN7N36.js +0 -993
- package/dist/table-YF5VORU6.js +0 -192
- package/dist/termCollection-3KGLZFDW.js +0 -29
- package/dist/termCollection-KSHVOPS5.js +0 -247
- package/dist/termCollection.unit.spec-HTBDG5PL.js +0 -295
- package/dist/termCollectionFractionSelection-MK4NKWUX.js +0 -38
- package/dist/termCollectionFractionSelection.unit.spec-AMF32FDN.js +0 -184
- package/dist/tk-FDHBAKXQ.js +0 -1198
- package/dist/tk-FDHBAKXQ.js.map +0 -7
- package/dist/tk-Z54DOECH.js +0 -38
- package/dist/tp.ui-M4TZVT53.js +0 -1453
- package/dist/tvs.categorical-HY3BWCZR.js +0 -28
- package/dist/tvs.condition-Y36TRIX4.js +0 -160
- package/dist/tvs.dt-XKVJZP7Y.js +0 -34
- package/dist/tvs.dtcnv.categorical-OMRZR4Y7.js +0 -31
- package/dist/tvs.dtcnv.continuous-AGYOBI5K.js +0 -72
- package/dist/tvs.dtfusion-2JX5Y2IH.js +0 -31
- package/dist/tvs.dtitd-SDSLBBWC.js +0 -31
- package/dist/tvs.dtsnvindel-LI7K464K.js +0 -31
- package/dist/tvs.dtsv-VRCLX7QY.js +0 -31
- package/dist/tvs.multivalue-4OTY6J2S.js +0 -84
- package/dist/tvs.numeric-CDATYOR2.js +0 -32
- package/dist/tvs.samplelst-76JOJG2M.js +0 -95
- package/dist/tvs.survival-WTFJOKIZ.js +0 -110
- package/dist/tvs.termCollection-QQXAS7PE.js +0 -118
- package/dist/vocabulary-6ACAEFTL.js +0 -32
- package/dist/wsi.direct-OS32TQRM.js +0 -11515
- package/dist/wsi.direct-OS32TQRM.js.map +0 -7
- /package/dist/{2dmaf-CSBPMYHO.js.map → 2dmaf-B34EJADN.js.map} +0 -0
- /package/dist/{AggMatrixInput-2HST4LLJ.js.map → AggMatrixInput-USCXGZT2.js.map} +0 -0
- /package/dist/{AggregateMatrix-UPOAX44L.js.map → AggregateMatrix-VLCSBD65.js.map} +0 -0
- /package/dist/{AppHeader-H5QBVKUS.js.map → AppHeader-KE7QVEW5.js.map} +0 -0
- /package/dist/{BoxPlot-JTBQA6PL.js.map → BoxPlot-3H5QKYRD.js.map} +0 -0
- /package/dist/{Cuminc-3BXJVWIH.js.map → Cuminc-6LPS4LR7.js.map} +0 -0
- /package/dist/{DE-237VV46D.js.map → DE-TTKEQYC7.js.map} +0 -0
- /package/dist/{DM-TIW623IR.js.map → DM-2TUF6Q3C.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-PHUA2GPK.js.map → DifferentialAnalysis-3LP4RAWF.js.map} +0 -0
- /package/dist/{Disco-WHV52SCI.js.map → Disco-UP5C7UWX.js.map} +0 -0
- /package/dist/{Disco.UI-UDUXNCZX.js.map → Disco.UI-V4I4LOMF.js.map} +0 -0
- /package/dist/{DmrPlot-FZCD6FTX.js.map → DmrPlot-TZR2NGIH.js.map} +0 -0
- /package/dist/{GSEA-3CNHMK6M.js.map → GSEA-YGKBRJJO.js.map} +0 -0
- /package/dist/{GeneExpInput-ZOVP7BFY.js.map → GeneExpInput-L3J2ECVQ.js.map} +0 -0
- /package/dist/{Geomap-JREOIESM.js.map → Geomap-4MHU6F57.js.map} +0 -0
- /package/dist/{HicApp-RKAMIUXQ.js.map → HicApp-27VGP5F6.js.map} +0 -0
- /package/dist/{IDCViewer-KXV4FU3V.js.map → IDCViewer-37GJPPUY.js.map} +0 -0
- /package/dist/{NumBinaryEditor-FNVYUK2J.js.map → NumBinaryEditor-SEC2NDGG.js.map} +0 -0
- /package/dist/{NumBinaryEditor.unit.spec-PWR23U3J.js.map → NumBinaryEditor.unit.spec-UDYSUC4S.js.map} +0 -0
- /package/dist/{NumContEditor-YLBJW64K.js.map → NumContEditor-YPSYWU2A.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-6JWBCPFY.js.map → NumContEditor.unit.spec-NHFBMHQ5.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-42AFCXRN.js.map → NumCustomBinEditor-N7US5Q64.js.map} +0 -0
- /package/dist/{NumCustomBinEditor.unit.spec-AFBTF2CL.js.map → NumCustomBinEditor.unit.spec-2BMMUBYU.js.map} +0 -0
- /package/dist/{NumDiscreteEditor-FJIBZTBP.js.map → NumDiscreteEditor-BLQ5DEB7.js.map} +0 -0
- /package/dist/{NumDiscreteEditor.unit.spec-MC4INDCB.js.map → NumDiscreteEditor.unit.spec-JOFPUFU5.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-2WRE72TL.js.map → NumRegularBinEditor-7BFPBUW2.js.map} +0 -0
- /package/dist/{NumRegularBinEditor.unit.spec-L3S6NRCM.js.map → NumRegularBinEditor.unit.spec-6GZMNRHA.js.map} +0 -0
- /package/dist/{NumSplineEditor-TVMVAN7I.js.map → NumSplineEditor-LO3ZR3T3.js.map} +0 -0
- /package/dist/{NumSplineEditor.unit.spec-GEL36GZZ.js.map → NumSplineEditor.unit.spec-MRA3DQSB.js.map} +0 -0
- /package/dist/{NumericDensity-BNFAVOFO.js.map → NumericDensity-NUCVJZ74.js.map} +0 -0
- /package/dist/{NumericDensity.unit.spec-XBYUFBTQ.js.map → NumericDensity.unit.spec-TZLKWH4U.js.map} +0 -0
- /package/dist/{NumericHandler-4VFFJNX6.js.map → NumericHandler-NH533VBN.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-76T2IVRS.js.map → NumericHandler.unit.spec-V7MNEHML.js.map} +0 -0
- /package/dist/{ProteomeInput-M5UIO73Q.js.map → ProteomeInput-FEXWZOA2.js.map} +0 -0
- /package/dist/{Regression-5LB5TLA6.js.map → Regression-NJAPUGT7.js.map} +0 -0
- /package/dist/{RunChart2-HIFXOEKZ.js.map → RunChart2-QIJ6NUWY.js.map} +0 -0
- /package/dist/{SC-SMMW5MJG.js.map → SC-5NWBVOEE.js.map} +0 -0
- /package/dist/{Violin-COAFYZOV.js.map → Violin-TMACI43Q.js.map} +0 -0
- /package/dist/{aboutSunburst-3FYJGR6B.js.map → aboutSunburst-53YAWTV5.js.map} +0 -0
- /package/dist/{adSandbox-4VHYWBQC.js.map → adSandbox-7VHXEI7W.js.map} +0 -0
- /package/dist/{animatedBubbleChart-QCCIC5IT.js.map → animatedBubbleChart-CTFGJIRR.js.map} +0 -0
- /package/dist/{app-IF7YPCGZ.js.map → app-AQAQAPUN.js.map} +0 -0
- /package/dist/{app-JZ43TSJP.js.map → app-SZDIV5U4.js.map} +0 -0
- /package/dist/{bam-2VPZGSW3.js.map → bam-3U5R2KNC.js.map} +0 -0
- /package/dist/{barchart-VYTWYYGG.js.map → barchart-ZL5VSR7P.js.map} +0 -0
- /package/dist/{barchart2-XC7J4VEO.js.map → barchart2-YELP2HI7.js.map} +0 -0
- /package/dist/{block.init-BVP3YZHQ.js.map → block.init-IBITFICI.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-RKDDKY4J.js.map → block.mds.expressionrank-4L76ILD4.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-3FZ3EZZ6.js.map → block.mds.geneboxplot-XA7DFHPV.js.map} +0 -0
- /package/dist/{block.mds.junction-MCOG37RA.js.map → block.mds.junction-GTZD3HEN.js.map} +0 -0
- /package/dist/{block.mds.svcnv-IEOR5IQZ.js.map → block.mds.svcnv-HTXQ3LGR.js.map} +0 -0
- /package/dist/{block.svg-3XHRHYCV.js.map → block.svg-BM6OMVRF.js.map} +0 -0
- /package/dist/{block.tk.aicheck-TMDUGNZX.js.map → block.tk.aicheck-CV53ULEP.js.map} +0 -0
- /package/dist/{block.tk.bam-73KW4QEJ.js.map → block.tk.bam-KJYFNJCX.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-E5W6R7DQ.js.map → block.tk.bigwig.ui-A352D6PT.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-BNNE6ZMW.js.map → block.tk.hicstraw-QAFTQESL.js.map} +0 -0
- /package/dist/{block.tk.junction-DMPRZRNY.js.map → block.tk.junction-XURB4RWZ.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-XS2E7MQL.js.map → block.tk.junction.textmatrixui-RNRWWNGY.js.map} +0 -0
- /package/dist/{block.tk.ld-QD3XDLO4.js.map → block.tk.ld-GWJMVPX3.js.map} +0 -0
- /package/dist/{block.tk.menu-S6XI732E.js.map → block.tk.menu-BJZYFMQX.js.map} +0 -0
- /package/dist/{block.tk.pgv-KH4TMR3A.js.map → block.tk.pgv-7XNJTHEW.js.map} +0 -0
- /package/dist/{brainImaging-NK4JENN3.js.map → brainImaging-37EDZLGN.js.map} +0 -0
- /package/dist/{brainRegions-YUEMTKYH.js.map → brainRegions-FEW52QUB.js.map} +0 -0
- /package/dist/{chunk-GZL6YFZJ.js.map → chunk-2B3CYHUF.js.map} +0 -0
- /package/dist/{chunk-KUOXZIH4.js.map → chunk-2IAELUCN.js.map} +0 -0
- /package/dist/{chunk-NGBI4FST.js.map → chunk-2W6U53AG.js.map} +0 -0
- /package/dist/{chunk-CGSBIFFO.js.map → chunk-46GCGTHJ.js.map} +0 -0
- /package/dist/{chunk-FALP6GXG.js.map → chunk-4ZX5KHD7.js.map} +0 -0
- /package/dist/{chunk-HKR5R5YR.js.map → chunk-544DSOC3.js.map} +0 -0
- /package/dist/{chunk-LYDN734A.js.map → chunk-6CV3YVJD.js.map} +0 -0
- /package/dist/{chunk-P7QDNXSH.js.map → chunk-6UHSGC6G.js.map} +0 -0
- /package/dist/{chunk-BWVJAFEQ.js.map → chunk-6ZZGFZV2.js.map} +0 -0
- /package/dist/{chunk-L7FMBWWK.js.map → chunk-72FUMSAN.js.map} +0 -0
- /package/dist/{chunk-USGUVW5Q.js.map → chunk-7DC4PD5R.js.map} +0 -0
- /package/dist/{chunk-ADJBQCFM.js.map → chunk-7ISYXUJ7.js.map} +0 -0
- /package/dist/{chunk-LMONIWPI.js.map → chunk-7NVFEGCE.js.map} +0 -0
- /package/dist/{chunk-JBUTLI3V.js.map → chunk-7PQ6MLKG.js.map} +0 -0
- /package/dist/{chunk-IIN4CG67.js.map → chunk-BGPRKPKH.js.map} +0 -0
- /package/dist/{chunk-UWVDD4C2.js.map → chunk-BILGOVOR.js.map} +0 -0
- /package/dist/{chunk-Z6M77JDG.js.map → chunk-BKJLRLQQ.js.map} +0 -0
- /package/dist/{chunk-ISWFHYEZ.js.map → chunk-C4BKP67I.js.map} +0 -0
- /package/dist/{chunk-XKWLP433.js.map → chunk-CQNTAIM3.js.map} +0 -0
- /package/dist/{chunk-ZKU6RST3.js.map → chunk-CW3IVTRX.js.map} +0 -0
- /package/dist/{chunk-Z7RFFJXU.js.map → chunk-D7KZWYP5.js.map} +0 -0
- /package/dist/{chunk-P5FHYGJK.js.map → chunk-DNXOZATD.js.map} +0 -0
- /package/dist/{chunk-3RPX4ZVV.js.map → chunk-DXF3YDRG.js.map} +0 -0
- /package/dist/{chunk-G6SP5IQT.js.map → chunk-ECBVUPDE.js.map} +0 -0
- /package/dist/{chunk-Q7GK35TB.js.map → chunk-ES22B563.js.map} +0 -0
- /package/dist/{chunk-UA2ADBTO.js.map → chunk-FA2B6PKK.js.map} +0 -0
- /package/dist/{chunk-OYXRYWGU.js.map → chunk-FMHSDIVG.js.map} +0 -0
- /package/dist/{chunk-RI3GAHQE.js.map → chunk-G5UFOMON.js.map} +0 -0
- /package/dist/{chunk-W2SBSEKT.js.map → chunk-GKA6USKV.js.map} +0 -0
- /package/dist/{chunk-KNFJN6CM.js.map → chunk-HGIPR72Y.js.map} +0 -0
- /package/dist/{chunk-XAHZYGKW.js.map → chunk-IBUDYN5E.js.map} +0 -0
- /package/dist/{chunk-ZJLJHQWM.js.map → chunk-J37WYVIZ.js.map} +0 -0
- /package/dist/{chunk-FV2GLMSI.js.map → chunk-JG5CF5Q3.js.map} +0 -0
- /package/dist/{chunk-FRPYXYYQ.js.map → chunk-JSQH233D.js.map} +0 -0
- /package/dist/{chunk-ZLWEUYPT.js.map → chunk-JWWLSDVM.js.map} +0 -0
- /package/dist/{chunk-KBZAB2H2.js.map → chunk-KTJUDDVQ.js.map} +0 -0
- /package/dist/{chunk-JCNZJKLK.js.map → chunk-MY5MF4RI.js.map} +0 -0
- /package/dist/{chunk-JEVDRC64.js.map → chunk-P4ZGUPGA.js.map} +0 -0
- /package/dist/{chunk-QXRM5NMW.js.map → chunk-PQDYA3ZQ.js.map} +0 -0
- /package/dist/{chunk-EARMOT6Q.js.map → chunk-PVJ6IIFA.js.map} +0 -0
- /package/dist/{chunk-KZ54E2FU.js.map → chunk-QKVKQD6S.js.map} +0 -0
- /package/dist/{chunk-THHYPA5K.js.map → chunk-QNACCFOA.js.map} +0 -0
- /package/dist/{chunk-4WFXCUT4.js.map → chunk-R6O3FLKW.js.map} +0 -0
- /package/dist/{chunk-KDKJLITX.js.map → chunk-RFQQRF6Q.js.map} +0 -0
- /package/dist/{chunk-37ZEGLVY.js.map → chunk-RG27DDKN.js.map} +0 -0
- /package/dist/{chunk-ECCXTB5S.js.map → chunk-SB5DR4NL.js.map} +0 -0
- /package/dist/{chunk-YWB2QHV2.js.map → chunk-SF42FFDZ.js.map} +0 -0
- /package/dist/{chunk-U2OB3S3M.js.map → chunk-SORR4JHU.js.map} +0 -0
- /package/dist/{chunk-CDCNBN6G.js.map → chunk-SZEBQMZW.js.map} +0 -0
- /package/dist/{chunk-4LK5YFHF.js.map → chunk-THDOHHDN.js.map} +0 -0
- /package/dist/{chunk-5LY2ASQX.js.map → chunk-TXDCZOPG.js.map} +0 -0
- /package/dist/{chunk-EKIWZUEO.js.map → chunk-U6GSEOBY.js.map} +0 -0
- /package/dist/{chunk-ZG7EBTHK.js.map → chunk-UBTNM5RO.js.map} +0 -0
- /package/dist/{chunk-MRZUZDRA.js.map → chunk-UHZDDPUU.js.map} +0 -0
- /package/dist/{chunk-AAQDXVQT.js.map → chunk-UVES3USV.js.map} +0 -0
- /package/dist/{chunk-LTY7WOAT.js.map → chunk-UYA5LCAR.js.map} +0 -0
- /package/dist/{chunk-TDBS3UFZ.js.map → chunk-VHEXNBCO.js.map} +0 -0
- /package/dist/{chunk-ECTOEM7X.js.map → chunk-VJJJFEOU.js.map} +0 -0
- /package/dist/{chunk-4WFG5Y3A.js.map → chunk-VPRP24DY.js.map} +0 -0
- /package/dist/{chunk-6V7ITU5F.js.map → chunk-VVWZ4BOI.js.map} +0 -0
- /package/dist/{chunk-OKM4ACTA.js.map → chunk-WENNRY5E.js.map} +0 -0
- /package/dist/{chunk-FRD6LQF7.js.map → chunk-WTLUZOBK.js.map} +0 -0
- /package/dist/{chunk-HULTLO4D.js.map → chunk-ZLEGHQOO.js.map} +0 -0
- /package/dist/{chunk-H353EVLK.js.map → chunk-ZX7527EE.js.map} +0 -0
- /package/dist/{cohort-X327AG3O.js.map → cohort-NKRTCX5Z.js.map} +0 -0
- /package/dist/{cohortSunburst-GNWIVDNA.js.map → cohortSunburst-DFJW6WXU.js.map} +0 -0
- /package/dist/{condition-3M4L2HIM.js.map → condition-PYFOEVX5.js.map} +0 -0
- /package/dist/{controls-OKNHZJOU.js.map → controls-RVNIN66W.js.map} +0 -0
- /package/dist/{controls.config-FUKM5LEP.js.map → controls.config-XVEYYBI4.js.map} +0 -0
- /package/dist/{correlation-PC4MXCFM.js.map → correlation-MNL4DGSW.js.map} +0 -0
- /package/dist/{customdata.inputui-HCRTX56R.js.map → customdata.inputui-WFIIJATQ.js.map} +0 -0
- /package/dist/{dataDownload-HJO7UW7S.js.map → dataDownload-CMSP5FA4.js.map} +0 -0
- /package/dist/{databrowser.ui-EY3H6B4S.js.map → databrowser.ui-FYZPXXEJ.js.map} +0 -0
- /package/dist/{dictionary-L6CTMFY7.js.map → dictionary-76BXY6WU.js.map} +0 -0
- /package/dist/{dnaMethylation-FEB5GGXK.js.map → dnaMethylation-WTIJVNIU.js.map} +0 -0
- /package/dist/{dnaMethylation.integration.spec-4DC6TJNZ.js.map → dnaMethylation.integration.spec-YXQEFLC5.js.map} +0 -0
- /package/dist/{dnaMethylation.unit.spec-REOHQOBC.js.map → dnaMethylation.unit.spec-22FLJWVB.js.map} +0 -0
- /package/dist/{dofetch-YFGOKCKV.js.map → dofetch-XID2XEJT.js.map} +0 -0
- /package/dist/{e2pca-QSAVTCPL.js.map → e2pca-DD6DA7X3.js.map} +0 -0
- /package/dist/{ep-LAFLKVSW.js.map → ep-S4PI4AUJ.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-OM4J6WBL.js.map → expclust.gdc.spec-BDV4RJO6.js.map} +0 -0
- /package/dist/{facet-WHTV2VIX.js.map → facet-EOXEW2LN.js.map} +0 -0
- /package/dist/{gb-DLXWWBB6.js.map → gb-AKE7RDPB.js.map} +0 -0
- /package/dist/{geneExpClustering-KB2MB2VM.js.map → geneExpClustering-73ED7HIN.js.map} +0 -0
- /package/dist/{geneExpression-3RSRGYGQ.js.map → geneExpression-AEJILDKJ.js.map} +0 -0
- /package/dist/{geneExpression-3D7PDZ2I.js.map → geneExpression-NXDXXKEA.js.map} +0 -0
- /package/dist/{geneExpression.unit.spec-EINAWLPR.js.map → geneExpression.unit.spec-VUJWR4TA.js.map} +0 -0
- /package/dist/{geneORA-J4KVSZT3.js.map → geneORA-7KFQ4PW2.js.map} +0 -0
- /package/dist/{geneRanking-HKLJ7CN6.js.map → geneRanking-RKJU4PM2.js.map} +0 -0
- /package/dist/{geneVariant-3BRGRFPT.js.map → geneVariant-2AGC3ECG.js.map} +0 -0
- /package/dist/{geneVariant.integration.spec-3IBX4NNE.js.map → geneVariant.integration.spec-UJXGQEZG.js.map} +0 -0
- /package/dist/{genefusion.ui-OESQL7TW.js.map → genefusion.ui-KEBOA3TK.js.map} +0 -0
- /package/dist/{geneset-3BMV3KP4.js.map → geneset-BU6V3CB5.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-I3WKAITC.js.map → genomeBrowser.spec-BGQHJZKH.js.map} +0 -0
- /package/dist/{grin2-4BBCH3H5.js.map → grin2-OUZN5LOU.js.map} +0 -0
- /package/dist/{grin2-5L2U32LY.js.map → grin2-WRGQ7BDG.js.map} +0 -0
- /package/dist/{hierCluster-KM56NTN6.js.map → hierCluster-3ERW47JJ.js.map} +0 -0
- /package/dist/{hierCluster-XCJF5IQ6.js.map → hierCluster-JAFKBC6C.js.map} +0 -0
- /package/dist/{hierCluster.config-E2EYOXX6.js.map → hierCluster.config-QIJNY5OD.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-IIEJ2YEI.js.map → hierCluster.integration.spec-XA4K3UU6.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-AJFEJTGX.js.map → hierCluster.interactivity-RDFPQOOP.js.map} +0 -0
- /package/dist/{hierCluster.renderers-XKI344FM.js.map → hierCluster.renderers-SU5IYI33.js.map} +0 -0
- /package/dist/{imagePlot-3B3BXI6I.js.map → imagePlot-J4PHG7V2.js.map} +0 -0
- /package/dist/{importPlot-JDVH7Q2Z.js.map → importPlot-U67MZZXY.js.map} +0 -0
- /package/dist/{isoformExpression-UFHY5LB2.js.map → isoformExpression-K5BCDJLL.js.map} +0 -0
- /package/dist/{isoformExpression.unit.spec-U6GDCNQR.js.map → isoformExpression.unit.spec-35FHEO27.js.map} +0 -0
- /package/dist/{junction-W2STW5WW.js.map → junction-6GGWFF2J.js.map} +0 -0
- /package/dist/{launch.adhoc-KN7HFHJH.js.map → launch.adhoc-ONCSL65L.js.map} +0 -0
- /package/dist/{lollipop-EKIGAAK6.js.map → lollipop-BWP4BG7Q.js.map} +0 -0
- /package/dist/{maf-MK2MM7J4.js.map → maf-GV6JHWYK.js.map} +0 -0
- /package/dist/{maftimeline-7RTMXWFA.js.map → maftimeline-HE7XLJWG.js.map} +0 -0
- /package/dist/{matrix-UM2EZODJ.js.map → matrix-IAM6SA7K.js.map} +0 -0
- /package/dist/{matrix-YBL4FZYJ.js.map → matrix-QF5MBV5Y.js.map} +0 -0
- /package/dist/{matrix.cells-45ZFADK5.js.map → matrix.cells-A5E63KDN.js.map} +0 -0
- /package/dist/{matrix.config-QTBIRXKU.js.map → matrix.config-VLRMO7J2.js.map} +0 -0
- /package/dist/{matrix.data-WAMOLSKW.js.map → matrix.data-R4FW2PQH.js.map} +0 -0
- /package/dist/{matrix.groups-RXFXZABD.js.map → matrix.groups-3UH2KOIY.js.map} +0 -0
- /package/dist/{matrix.integration.spec-JZDZRVOK.js.map → matrix.integration.spec-57YYARQU.js.map} +0 -0
- /package/dist/{matrix.interactivity-P4VYGTB2.js.map → matrix.interactivity-KNRJSSTQ.js.map} +0 -0
- /package/dist/{matrix.layout-WWPRXXHX.js.map → matrix.layout-OMNDDITA.js.map} +0 -0
- /package/dist/{matrix.legend-4MCMVVKO.js.map → matrix.legend-SE7SQTNN.js.map} +0 -0
- /package/dist/{matrix.renderers-JQTUODDS.js.map → matrix.renderers-6MMW7XMU.js.map} +0 -0
- /package/dist/{matrix.serieses-3IDRKSGO.js.map → matrix.serieses-BEZCQDLJ.js.map} +0 -0
- /package/dist/{matrix.sort-EAWOB56R.js.map → matrix.sort-KRNS4VPF.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-FOWLULHA.js.map → matrix.sort.unit.spec-UXTQPKVV.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-U5CQDTMX.js.map → matrix.sorterUi.unit.spec-LJJ7GCEB.js.map} +0 -0
- /package/dist/{matrix.unit.spec-VTLD4EOZ.js.map → matrix.unit.spec-2OSFPN5T.js.map} +0 -0
- /package/dist/{mavb-JIIXJHBK.js.map → mavb-CZAZO6AO.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-PTWA2V6E.js.map → mds.samplescatterplot-ENSEO2VX.js.map} +0 -0
- /package/dist/{mds.survivalplot-XVZ66GP5.js.map → mds.survivalplot-QSKD6FSX.js.map} +0 -0
- /package/dist/{multivalue-2H7QX7MG.js.map → multivalue-FZTFADA2.js.map} +0 -0
- /package/dist/{numericDictTermCluster-EHCDRT6J.js.map → numericDictTermCluster-IFIEM3E4.js.map} +0 -0
- /package/dist/{oncomatrix-RZLZUC32.js.map → oncomatrix-GZKCAMSR.js.map} +0 -0
- /package/dist/{oncomatrix.spec-Z5UQGTW2.js.map → oncomatrix.spec-FTLMVGTH.js.map} +0 -0
- /package/dist/{plot.2dvaf-IRBZBJ6B.js.map → plot.2dvaf-PWO4XOFU.js.map} +0 -0
- /package/dist/{plot.app-I23IAZ3Z.js.map → plot.app-JYBZEBHK.js.map} +0 -0
- /package/dist/{plot.barplot-PYLRAZB7.js.map → plot.barplot-PA2PDVOB.js.map} +0 -0
- /package/dist/{plot.boxplot-VBWU7DUG.js.map → plot.boxplot-IHIEWQWG.js.map} +0 -0
- /package/dist/{plot.brainImaging-HDJMEMTK.js.map → plot.brainImaging-WQ2WWEW3.js.map} +0 -0
- /package/dist/{plot.disco-5BVG3WMT.js.map → plot.disco-QIURLAHA.js.map} +0 -0
- /package/dist/{plot.ssgq-S3BKXJMW.js.map → plot.ssgq-T27XDC4K.js.map} +0 -0
- /package/dist/{plot.vaf2cov-VD7DU2XR.js.map → plot.vaf2cov-Y2DJRQED.js.map} +0 -0
- /package/dist/{polar2-PYLEVG7E.js.map → polar2-3MFBRZ4G.js.map} +0 -0
- /package/dist/{profileForms-CI2YYD3Y.js.map → profileForms-J3O7XDHY.js.map} +0 -0
- /package/dist/{profilePlot-UCC4ZVHQ.js.map → profilePlot-C45ERAOZ.js.map} +0 -0
- /package/dist/{proteomeCohortCompare-2VUSLC6I.js.map → proteomeCohortCompare-2IS7GNJZ.js.map} +0 -0
- /package/dist/{pseudbulk.unit.spec-VPZWNTIA.js.map → pseudbulk.unit.spec-SY3ATAPK.js.map} +0 -0
- /package/dist/{pseudobulk-RUXGZ7OY.js.map → pseudobulk-N6WNHKAC.js.map} +0 -0
- /package/dist/{qualitative-3AVR4GRX.js.map → qualitative-SKUTWJLA.js.map} +0 -0
- /package/dist/{qualitative-5QNBKDOZ.js.map → qualitative-XWN5V3EE.js.map} +0 -0
- /package/dist/{radar2-AOYMS54Y.js.map → radar2-AHZME5CF.js.map} +0 -0
- /package/dist/{radarFacility2-PP2MAXIP.js.map → radarFacility2-CVEVC4U5.js.map} +0 -0
- /package/dist/{render-ASLVKYEX.js.map → render-S47OJIIP.js.map} +0 -0
- /package/dist/{report-UVYKDMQC.js.map → report-IPX3PKSW.js.map} +0 -0
- /package/dist/{sampleView-6UHR7FSR.js.map → sampleView-OZQUKPVV.js.map} +0 -0
- /package/dist/{samplelst-ABC2CCNN.js.map → samplelst-7XXJTJ4J.js.map} +0 -0
- /package/dist/{samplematrix-36UCHZLC.js.map → samplematrix-JN35HJBG.js.map} +0 -0
- /package/dist/{sc-XLSAM725.js.map → sc-6ZHDNPYP.js.map} +0 -0
- /package/dist/{scatter-ADOBAOW2.js.map → scatter-4MP6TG67.js.map} +0 -0
- /package/dist/{scatter-ZNVLI627.js.map → scatter-TRMY47CC.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-DPDBDYTR.js.map → selectGenomeWithTklst-UDNTL544.js.map} +0 -0
- /package/dist/{singleCellCellType-STVPYZD4.js.map → singleCellCellType-UXABRPQQ.js.map} +0 -0
- /package/dist/{singleCellCellType.unit.spec-ZLY37AXL.js.map → singleCellCellType.unit.spec-N22EQMZW.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-PCGLU35S.js.map → singleCellGeneExpression-OBPVP6IU.js.map} +0 -0
- /package/dist/{singleCellGeneExpression.unit.spec-PSLKK362.js.map → singleCellGeneExpression.unit.spec-NVCFU5B4.js.map} +0 -0
- /package/dist/{singleCellNumericValue-SR3SJEOB.js.map → singleCellNumericValue-Z2X3LLRB.js.map} +0 -0
- /package/dist/{singleCellNumericValue.unit.spec-PXVXJ4HJ.js.map → singleCellNumericValue.unit.spec-Q7DCQHEE.js.map} +0 -0
- /package/dist/{singleCellPlot-JXB7M6OH.js.map → singleCellPlot-S5N6ZEEA.js.map} +0 -0
- /package/dist/{singlecell-EDSX56QO.js.map → singlecell-OK2P4AS2.js.map} +0 -0
- /package/dist/{singlecell-PH55NFRX.js.map → singlecell-RI6HA3NI.js.map} +0 -0
- /package/dist/{snp-3VEYBTAQ.js.map → snp-XRM2UAEJ.js.map} +0 -0
- /package/dist/{snp.unit.spec-V7OB44US.js.map → snp.unit.spec-CDTYGH4K.js.map} +0 -0
- /package/dist/{snplocus-HX67RBT5.js.map → snplocus-CAUGDRZE.js.map} +0 -0
- /package/dist/{snplst-H5YXCY33.js.map → snplst-DP533FL2.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-DBDEEHSK.js.map → spliceevent.a53ss.diagram-XWEN4UMO.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-EYEL6BY6.js.map → spliceevent.exonskip.diagram-HBXQOUT4.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-64OEXK7U.js.map → spliceevent.noeventdiagram-ORQJ62ON.js.map} +0 -0
- /package/dist/{ssGSEA-3YWQH6KM.js.map → ssGSEA-PLDZ2556.js.map} +0 -0
- /package/dist/{ssGSEA.unit.spec-23V2IXP5.js.map → ssGSEA.unit.spec-ORFJFZJY.js.map} +0 -0
- /package/dist/{stattable-GPSBCNYC.js.map → stattable-GVRVRO2Y.js.map} +0 -0
- /package/dist/{studyCatalog-W5PATRNY.js.map → studyCatalog-K46WJHC6.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-YGI23QH5.js.map → summarizeCnvGeneexp-7WSJTWKH.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-KQ6OLWYR.js.map → summarizeGeneexpSurvival-H3TW7I4I.js.map} +0 -0
- /package/dist/{summarizeMutationCnv-XDHBNEPU.js.map → summarizeMutationCnv-JOYXEMFP.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-VKIJRJ2Q.js.map → summarizeMutationDiagnosis-GBIGXFY5.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-57YKJGLE.js.map → summarizeMutationSurvival-3RULG3KW.js.map} +0 -0
- /package/dist/{summary-4WQOVIUF.js.map → summary-VKLFTPC2.js.map} +0 -0
- /package/dist/{summary.integration.spec-FRNWBU7F.js.map → summary.integration.spec-EK3MPFVD.js.map} +0 -0
- /package/dist/{summaryInput-X7DS2YA7.js.map → summaryInput-POI5KQSP.js.map} +0 -0
- /package/dist/{sunburst-MSGTXYMM.js.map → sunburst-BIVYHF5R.js.map} +0 -0
- /package/dist/{sunburst-3OEAQA3O.js.map → sunburst-SYHQOCGQ.js.map} +0 -0
- /package/dist/{survival-5KC5CNZU.js.map → survival-CG2GQ4YY.js.map} +0 -0
- /package/dist/{survival-QXDS6N46.js.map → survival-NEO3E2HS.js.map} +0 -0
- /package/dist/{survival.integration.spec-PKENHLTZ.js.map → survival.integration.spec-PPK5KO4V.js.map} +0 -0
- /package/dist/{svgraph-VJLB7BBN.js.map → svgraph-Q2U2HEMF.js.map} +0 -0
- /package/dist/{swimmer-R3DN7N36.js.map → swimmer-GA4C6YH7.js.map} +0 -0
- /package/dist/{table-YF5VORU6.js.map → table-DJJIES6L.js.map} +0 -0
- /package/dist/{termCollection-KSHVOPS5.js.map → termCollection-CHVUM5C6.js.map} +0 -0
- /package/dist/{termCollection-3KGLZFDW.js.map → termCollection-R3LTBPJ4.js.map} +0 -0
- /package/dist/{termCollection.unit.spec-HTBDG5PL.js.map → termCollection.unit.spec-B7KAAOFT.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection-MK4NKWUX.js.map → termCollectionFractionSelection-A72QM36J.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection.unit.spec-AMF32FDN.js.map → termCollectionFractionSelection.unit.spec-JR77QEIG.js.map} +0 -0
- /package/dist/{tk-Z54DOECH.js.map → tk-GRGKFATN.js.map} +0 -0
- /package/dist/{tp.ui-M4TZVT53.js.map → tp.ui-NATRJ5EN.js.map} +0 -0
- /package/dist/{tvs.categorical-HY3BWCZR.js.map → tvs.categorical-U2ZYLPSW.js.map} +0 -0
- /package/dist/{tvs.condition-Y36TRIX4.js.map → tvs.condition-6EBZALR4.js.map} +0 -0
- /package/dist/{tvs.dt-XKVJZP7Y.js.map → tvs.dt-H626ESMQ.js.map} +0 -0
- /package/dist/{tvs.dtcnv.categorical-OMRZR4Y7.js.map → tvs.dtcnv.categorical-6S7INDYC.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-AGYOBI5K.js.map → tvs.dtcnv.continuous-MLYNEMHI.js.map} +0 -0
- /package/dist/{tvs.dtfusion-2JX5Y2IH.js.map → tvs.dtfusion-2OLY6X7G.js.map} +0 -0
- /package/dist/{tvs.dtitd-SDSLBBWC.js.map → tvs.dtitd-Z6MEL5SH.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-LI7K464K.js.map → tvs.dtsnvindel-HPBQSCYV.js.map} +0 -0
- /package/dist/{tvs.dtsv-VRCLX7QY.js.map → tvs.dtsv-BRRNX64J.js.map} +0 -0
- /package/dist/{tvs.multivalue-4OTY6J2S.js.map → tvs.multivalue-H2G7WKAL.js.map} +0 -0
- /package/dist/{tvs.numeric-CDATYOR2.js.map → tvs.numeric-OKYGMQSK.js.map} +0 -0
- /package/dist/{tvs.samplelst-76JOJG2M.js.map → tvs.samplelst-46FGACU7.js.map} +0 -0
- /package/dist/{tvs.survival-WTFJOKIZ.js.map → tvs.survival-QL4KC3SQ.js.map} +0 -0
- /package/dist/{tvs.termCollection-QQXAS7PE.js.map → tvs.termCollection-22DFW3PF.js.map} +0 -0
- /package/dist/{vocabulary-6ACAEFTL.js.map → vocabulary-LJEERZJ6.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../plots/sunburst/sunburst.data.ts", "../plots/sunburst/SunburstChart.ts", "../plots/sunburst/sunburst.ts"],
|
|
4
|
-
"sourcesContent": ["import type { Filter, SunburstResponse, SunburstNode, SunburstCategory } from '#types'\nimport type { SunNode } from './SunburstRenderer'\n\n/*\nData helpers of the term-based sunburst, without any DOM code: the termdb/sunburst response as a renderer \ntree, and selected wedges as a group filter. Kept apart from sunburst.ts so they can be unit-tested directly.\n*/\n\n/** a wedge of the term sunburst. `id` names it by its path of [ring $id, key] pairs, as JSON so that no\n * category key can make two paths alike, and a selection can survive a re-fetch; `ring`, `key` and\n * `category` say which ring category it is */\nexport type TermSunNode = SunNode & {\n\tid: string\n\tring: number\n\tkey: string\n\tcategory: SunburstCategory\n\t/** samples under the wedge (SunNode.value is only those that end here) */\n\tcount: number\n\tchildren?: TermSunNode[]\n}\n\ntype TermSunRoot = SunNode & { children: TermSunNode[]; count: number }\n\n/** the response as a renderer tree; first-ring colours from the dataset (keyed by category key) win\n * over the term's own */\nexport function buildTermTree(\n\tres: SunburstResponse,\n\ttwLst: any[],\n\trootName: string,\n\tcolors?: { [key: string]: string }\n): TermSunRoot {\n\tconst convert = (n: SunburstNode, ring: number, parentPath: string[][]): TermSunNode => {\n\t\tconst tw = twLst[ring]\n\t\tconst category = res.rings[ring].categories[n.key] || { label: n.key }\n\t\tconst path = [...parentPath, [tw.$id, n.key]]\n\t\tconst children = (n.children || []).map(c => convert(c, ring + 1, path))\n\t\tconst node: TermSunNode = {\n\t\t\tname: category.label,\n\t\t\tlevel: tw.term.name,\n\t\t\t// d3 adds the children to a node's own value, so it holds only the samples that end here\n\t\t\tvalue: n.count - children.reduce((s, c) => s + c.count, 0),\n\t\t\tcount: n.count,\n\t\t\tid: JSON.stringify(path),\n\t\t\tring,\n\t\t\tkey: n.key,\n\t\t\tcategory\n\t\t}\n\t\tconst color = (ring == 0 && colors?.[n.key]) || category.color\n\t\tif (color) node.color = color\n\t\tif (children.length) node.children = children\n\t\treturn node\n\t}\n\treturn { name: rootName, value: 0, count: res.total, children: res.nodes.map(n => convert(n, 0, [])) }\n}\n\n/** one ring category as a filter entry: the tvs of the ring's term, or a filter group's own filter */\nexport function categoryFilterItem(tw: any, category: SunburstCategory): any {\n\tif (category.filter) return structuredClone(category.filter)\n\tif (!category.tvs) throw `no filter for category '${category.label}' of ${tw.term.name}`\n\treturn { type: 'tvs', tvs: { term: tw.term, ...structuredClone(category.tvs) } }\n}\n\n/** the samples of one wedge: its categories along the path from the first ring, joined by \"and\" */\nexport function wedgeFilter(path: TermSunNode[], twLst: any[]): Filter {\n\tconst lst = path.map(n => categoryFilterItem(twLst[n.ring], n.category))\n\treturn { type: 'tvslst', in: true, join: lst.length > 1 ? 'and' : '', lst }\n}\n\n/** the samples of any of the selected wedges, each given as its path from the first ring. One wedge\n * is just its own filter; several are joined by \"or\" */\nexport function selectionFilter(paths: TermSunNode[][], twLst: any[]): Filter {\n\tif (!paths.length) throw 'no wedge selected'\n\tif (paths.length == 1) return wedgeFilter(paths[0], twLst)\n\treturn { type: 'tvslst', in: true, join: 'or', lst: paths.map(p => wedgeFilter(p, twLst)) }\n}\n\n/** a readable name for a selection: the path of one wedge (e.g. \"BCP-ALL \u203A Hyperdiploid\"), or the\n * wedge names joined when several are selected */\nexport function selectionName(paths: TermSunNode[][], maxLen = 60): string {\n\tconst names =\n\t\tpaths.length == 1 ? paths[0].map(n => n.name).join(' \u203A ') : paths.map(p => p[p.length - 1].name).join(' or ')\n\treturn names.length > maxLen ? names.slice(0, maxLen - 1) + '\u2026' : names\n}\n\n/** the sample types a new or replacing ring may have, given the other rings: the line of descent through\n * the deepest of their sample types (its ancestors, itself and its descendants), since no value maps\n * between sibling types such as primary and PDX samples. Undefined (any type) when the dataset has one\n * sample type or no other ring is below the top level. `sampleTypes` is termdbConfig.sampleTypes */\nexport function allowedSampleTypes(otherTwLst: any[], sampleTypes?: { [id: string]: any }): number[] | undefined {\n\tif (!sampleTypes || Object.keys(sampleTypes).length < 2) return\n\tconst parent = (t: string) => {\n\t\tconst p = sampleTypes[t]?.parent_id\n\t\treturn p === null || p === undefined ? undefined : String(p)\n\t}\n\tconst ancestors = (t: string) => {\n\t\tconst lst: string[] = []\n\t\tfor (let p = parent(t); p !== undefined && !lst.includes(p); p = parent(p)) lst.push(p)\n\t\treturn lst\n\t}\n\tconst types = otherTwLst\n\t\t.map(tw => tw.term?.sample_type)\n\t\t.filter(t => t !== null && t !== undefined && sampleTypes[t])\n\t\t.map(String)\n\tconst below = types.filter(t => parent(t) !== undefined)\n\tif (!below.length) return\n\tconst deepest = below.reduce((a, b) => (ancestors(b).length > ancestors(a).length ? b : a))\n\tconst descendants = Object.keys(sampleTypes).filter(t => ancestors(t).includes(deepest))\n\treturn [...ancestors(deepest), deepest, ...descendants].map(Number)\n}\n", "import { dofetch3 } from '#common/dofetch'\nimport { select } from 'd3-selection'\nimport { escapeHtml, capitalizeFirstLetter } from '#dom'\nimport { getNormalRoot, filterJoin } from '#filter'\nimport { addNewGroup, getGroupFilterOfConditions } from '#mass/groups'\nimport { availabilitySections, fetchDataAvailability, type AvailabilityRow } from '#mass/groupDataAvailability'\nimport { TermTypes } from '#types'\nimport { getActiveCohortStr } from '#mass/charts'\nimport type { Filter, SunburstRequest, SunburstResponse } from '#types'\nimport {\n\tSunburstRenderer,\n\tcard,\n\tbadge,\n\tpill,\n\tSIZE,\n\tTEXT_DARK,\n\tTEXT_MUTED,\n\tLINK,\n\tRULE,\n\tSELECT_STROKE,\n\ticon,\n\ttype Card,\n\ttype HNode\n} from './SunburstRenderer'\nimport { buildTermTree, selectionFilter, selectionName, type TermSunNode } from './sunburst.data'\n\n/*\nThe term-based sunburst without its rx plot component: fetches the counts of the given rings, draws them,\nand keeps the wedge selection, one sample group. Below the selected wedges, \"Show available data\" lists how\nmany of the selected samples have each kind of data of the dataset (termdb/dataAvailability); a kind with a\nplot of its own opens that plot of the selected samples, which have the selection as the plot's filter. The\nselection can also become one sample group in the GROUPS tab. Used by the sunburst\nplot (sunburst.ts), which fills the Rings box with term pills, and by the About tab (about.ts), which\nlists the dataset's default rings.\n\nClick a wedge to zoom into it; a wedge without rings beneath it, a shift-click, or SELECT above the\nchart (for the wedge at the centre) selects it. Selecting a wedge drops its selected descendants, which\nit already contains.\n\nA sample with no value for a ring, or a value the ring hides (tw.q.hiddenValues, e.g. set in the dataset's\ndefault rings), ends at the previous ring, leaving a gap in the outer ring of its wedge; samples with no\nor a hidden value for the first ring are not in the chart.\n*/\n\n// stat box keys; their titles follow the unit\nconst STAT_SAMPLES = 'Samples'\nconst STAT_SELECTED = 'Selected samples'\n/** indent per ring in the Rings box, so the rings read as a path from the first to the last */\nconst RING_STEP = 6\nconst RING_LINE = '#cbd5e1'\n\nexport type SunburstChartOpts = {\n\tholder: any\n\t/** the mass app, for the term pickers and the created groups */\n\tapp: any\n\t/** px between the chart and its side columns (SunburstRendererOpts.gap) */\n\tgap?: number\n\t/** called before a plot of the selection is created, e.g. to show the plots tab */\n\tbeforeLaunch?: () => Promise<any> | void\n}\n\nexport type SunburstUpdateArg = {\n\tgenome: string\n\tdslabel: string\n\t/** ring term wrappers, inside out, filled */\n\ttwLst: any[]\n\t/** the filter the counts are of: the global filter, joined with the plot's own if any */\n\ttermfilter?: { filter?: Filter; filter0?: any }\n\t/** the plot's own filter, which a created group also has; the global filter is joined where the\n\t * group is used */\n\tgroupFilter?: Filter\n\t/** first-ring colours from the dataset, keyed by category key */\n\tcolors?: { [key: string]: string }\n}\n\nexport class SunburstChart {\n\tapp: any\n\tdom: {\n\t\terrdiv: any\n\t\tloadingDiv: any\n\t\tnoteDiv: any\n\t\t/** the rings, left of the chart; filled by the caller (ringRow) */\n\t\trings: Card\n\t\t/** the selected wedges, with the create-group action */\n\t\tsel: Card\n\t\t/** selects the wedge at the centre, in the toolbar above the chart */\n\t\tselectFocus: any\n\t}\n\trenderer: SunburstRenderer\n\ttwLst: any[] = []\n\tgroupFilter?: Filter\n\t/** selected wedges by node id, in selection order */\n\tselected: Map<string, HNode> = new Map()\n\t/** note shown in the selection card after a group is created */\n\tcreatedNote = ''\n\t/** the counted unit, from the server */\n\tunit = { one: 'sample', many: 'samples' }\n\t/** number of the latest update(), so that the response of an earlier one that arrives later is dropped */\n\tupdateId = 0\n\tbeforeLaunch?: () => Promise<any> | void\n\t/** whether the available data of the selection is shown; a change of the selection hides it */\n\tdataShown = false\n\t/** number of the latest renderData(), so that the response of an earlier one is dropped */\n\tdataId = 0\n\n\tconstructor(opts: SunburstChartOpts) {\n\t\tthis.app = opts.app\n\t\tthis.beforeLaunch = opts.beforeLaunch\n\t\tconst holder = opts.holder\n\t\tconst errdiv = holder.append('div').attr('class', 'sja_errorbar').style('display', 'none')\n\t\tconst loadingDiv = holder.append('div').style('display', 'none').style('padding', '24px').text('Loading ...')\n\t\tconst noteDiv = holder\n\t\t\t.append('div')\n\t\t\t.style('font-size', '.85em')\n\t\t\t.style('color', TEXT_MUTED)\n\t\t\t.style('margin-bottom', '6px')\n\t\tconst chartHolder = holder.append('div').attr('data-testid', 'sjpp-sunburst-chart')\n\t\tthis.renderer = new SunburstRenderer({\n\t\t\tholder: chartHolder,\n\t\t\tunit: this.unit,\n\t\t\trootName: 'All samples',\n\t\t\tstatLabels: [STAT_SAMPLES, STAT_SELECTED],\n\t\t\tpathCard: false,\n\t\t\tgap: opts.gap,\n\t\t\thooks: {\n\t\t\t\tonClick: (d: HNode, event: any) => this.onWedgeClick(d, event),\n\t\t\t\tisSelected: (d: HNode) => this.selected.has(d.data.id),\n\t\t\t\tcursor: (d: HNode) => (d.children ? 'zoom-in' : 'pointer'),\n\t\t\t\ttooltip: (d: HNode, box: any) => this.tooltip(d, box),\n\t\t\t\tonFocus: () => {\n\t\t\t\t\tthis.renderStats()\n\t\t\t\t\tthis.renderSidebar()\n\t\t\t\t\tthis.renderSelectFocus()\n\t\t\t\t\tthis.markShownRings()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\t\tconst rings = card(this.renderer.dom.left, 'Rings')\n\t\trings.body.attr('data-testid', 'sjpp-sunburst-rings')\n\t\tconst selectFocus = this.renderer\n\t\t\t.addControl()\n\t\t\t.attr('data-testid', 'sjpp-sunburst-select-focus')\n\t\t\t.on('click', () => {\n\t\t\t\tconst f = this.renderer.focus\n\t\t\t\tif (f?.depth && !this.selectedAncestor(f)) this.toggle(f)\n\t\t\t})\n\t\tthis.dom = {\n\t\t\terrdiv,\n\t\t\tloadingDiv,\n\t\t\tnoteDiv,\n\t\t\trings,\n\t\t\tsel: card(this.renderer.dom.right, 'Selected wedges'),\n\t\t\tselectFocus\n\t\t}\n\t}\n\n\t/** fetch and draw the counts of the rings; with no rings, an empty chart and `emptyNote`. Resolves true\n\t * when drawn, false when the request failed (the error is shown), and undefined when a later update\n\t * replaced this one, which then has its own outcome */\n\tasync update(arg: SunburstUpdateArg, emptyNote = ''): Promise<boolean | undefined> {\n\t\tconst id = ++this.updateId\n\t\tthis.twLst = arg.twLst\n\t\tthis.groupFilter = arg.groupFilter\n\t\tthis.dom.errdiv.style('display', 'none')\n\t\tthis.dom.noteDiv.text('')\n\t\tif (!this.twLst.length) {\n\t\t\t// an earlier update may still be loading; its response is dropped\n\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t\tthis.selected.clear()\n\t\t\tthis.renderer.setTree({ name: this.renderer.opts.rootName, children: [] })\n\t\t\tthis.dom.noteDiv.text(emptyNote)\n\t\t\treturn true\n\t\t}\n\t\ttry {\n\t\t\tthis.dom.loadingDiv.style('display', '')\n\t\t\tconst res = await fetchSunburst({\n\t\t\t\tgenome: arg.genome,\n\t\t\t\tdslabel: arg.dslabel,\n\t\t\t\ttwLst: this.twLst,\n\t\t\t\tfilter: getNormalRoot(arg.termfilter?.filter),\n\t\t\t\tfilter0: arg.termfilter?.filter0\n\t\t\t})\n\t\t\tif (id != this.updateId) return\n\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t\tthis.render(res, arg.colors)\n\t\t\treturn true\n\t\t} catch (e: any) {\n\t\t\tif (id != this.updateId) return\n\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t\tthis.dom.errdiv.style('display', '').text(e?.message || String(e))\n\t\t\tif (e instanceof Error) console.error(e)\n\t\t\treturn false\n\t\t}\n\t}\n\n\trender(res: SunburstResponse, colors?: { [key: string]: string }) {\n\t\tthis.setUnit(res.unit || { one: 'sample', many: 'samples' })\n\t\tif (res.noFirstRingValue) {\n\t\t\tconst n = res.noFirstRingValue\n\t\t\tthis.dom.noteDiv.text(\n\t\t\t\t`${n.toLocaleString()} ${n == 1 ? this.unit.one : this.unit.many} with ${noValue(this.twLst[0])} ${\n\t\t\t\t\tn == 1 ? 'is' : 'are'\n\t\t\t\t} not shown.`\n\t\t\t)\n\t\t}\n\t\tconst focusId = this.renderer.focus?.data.id\n\t\tconst selectedIds = [...this.selected.keys()]\n\t\tthis.renderer.setTree(buildTermTree(res, this.twLst, this.renderer.opts.rootName, colors))\n\t\t// keep the selection and the centre of a re-fetch (e.g. after a filter change) where their\n\t\t// wedges still exist\n\t\tconst byId = new Map(this.renderer.root.descendants().map((d: HNode) => [d.data.id, d]))\n\t\tthis.selected = new Map(selectedIds.filter(id => byId.has(id)).map(id => [id, byId.get(id)]))\n\t\tthis.renderer.refresh()\n\t\tconst focus = focusId && byId.get(focusId)\n\t\tif (focus?.children) this.renderer.zoomTo(focus)\n\t\telse this.renderSidebar()\n\t}\n\n\t/** wording of the counted unit: centre, stat box titles, tooltip and the create-group action */\n\tsetUnit(unit: { one: string; many: string }) {\n\t\tthis.unit = unit\n\t\tthis.renderer.opts.unit = unit\n\t\tthis.renderer.opts.rootName = `All ${unit.many}`\n\t\tthis.renderer.setStatTitle(STAT_SAMPLES, capitalizeFirstLetter(unit.many))\n\t\tthis.renderer.setStatTitle(STAT_SELECTED, `Selected ${unit.many}`)\n\t}\n\n\t/** SELECT above the chart, for the wedge at the centre (which cannot be clicked) */\n\trenderSelectFocus() {\n\t\tconst f = this.renderer.focus\n\t\tconst el = this.dom.selectFocus\n\t\tif (!f?.depth) {\n\t\t\tel.style('display', 'none')\n\t\t\treturn\n\t\t}\n\t\tconst anc = this.selectedAncestor(f)\n\t\tconst on = this.selected.has(f.data.id)\n\t\tel.style('display', '')\n\t\t\t.style('opacity', anc ? 0.35 : 1)\n\t\t\t.style('cursor', anc ? 'default' : 'pointer')\n\t\t\t.style('color', on ? SELECT_STROKE : TEXT_MUTED)\n\t\t\t.attr('title', anc ? `Included in the selected ${anc.data.name}` : null)\n\t\t\t.html(\n\t\t\t\ton\n\t\t\t\t\t? `${icon('<polyline points=\"5 12 10 17 19 7\"/>')}SELECTED \u00B7 ${escapeHtml(f.data.name.toUpperCase())}`\n\t\t\t\t\t: `${icon('<circle cx=\"12\" cy=\"12\" r=\"9\"/><path d=\"M12 8v8M8 12h8\"/>')}SELECT ${escapeHtml(\n\t\t\t\t\t\t\tf.data.name.toUpperCase()\n\t\t\t\t\t )}`\n\t\t\t)\n\t}\n\n\t/************ rings box ************/\n\n\t/** a line of the Rings box, indented by its ring, with an elbow from the line above */\n\tringRow(level: number) {\n\t\tconst row = this.dom.rings.body\n\t\t\t.append('div')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('margin', '2px 0')\n\t\t\t.style('margin-left', `${level * RING_STEP}px`)\n\t\tif (level) {\n\t\t\trow\n\t\t\t\t.append('div')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('left', `${-RING_STEP + 4}px`)\n\t\t\t\t.style('top', '-6px')\n\t\t\t\t.style('width', `${RING_STEP - 6}px`)\n\t\t\t\t.style('height', '18px')\n\t\t\t\t.style('border-left', `1px solid ${RING_LINE}`)\n\t\t\t\t.style('border-bottom', `1px solid ${RING_LINE}`)\n\t\t\t\t.style('border-bottom-left-radius', '4px')\n\t\t}\n\t\treturn row\n\t}\n\n\t/** the line of ring i: its number, which is marked while the ring is in the chart (markShownRings),\n\t * then a slot for the caller's term pill or name */\n\tringLine(i: number) {\n\t\tconst row = this.ringRow(i)\n\t\t\t.attr('class', 'sjpp-sunburst-ring')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('align-items', 'center')\n\t\t\t.style('gap', '4px')\n\t\trow\n\t\t\t.append('span')\n\t\t\t.attr('class', 'sjpp-sunburst-ringnum')\n\t\t\t.style('font-size', '.8em')\n\t\t\t.style('width', '14px')\n\t\t\t.style('flex', '0 0 auto')\n\t\t\t.style('padding-left', '4px')\n\t\t\t.style('border-left', '3px solid transparent')\n\t\t\t.style('border-radius', '2px')\n\t\t\t.text(i + 1)\n\t\treturn row\n\t}\n\n\t/** mark the two rings around the current centre: a bar beside the ring number, which is bold */\n\tmarkShownRings() {\n\t\tconst first = this.renderer.focus?.depth || 0\n\t\tconst shown = (i: number) => i == first || i == first + 1\n\t\tthis.dom.rings.body\n\t\t\t.selectAll('.sjpp-sunburst-ring')\n\t\t\t.attr('title', (_: any, i: number) => (shown(i) ? 'Shown in the chart' : null))\n\t\t\t.select('.sjpp-sunburst-ringnum')\n\t\t\t.style('border-left-color', (_: any, i: number) => (shown(i) ? LINK : 'transparent'))\n\t\t\t.style('color', (_: any, i: number) => (shown(i) ? TEXT_DARK : TEXT_MUTED))\n\t\t\t.style('font-weight', (_: any, i: number) => (shown(i) ? 'bold' : 'normal'))\n\t}\n\n\t/************ selection ************/\n\n\t/** the selected ancestor that already contains a wedge, if any */\n\tselectedAncestor(d: HNode): HNode | undefined {\n\t\tfor (let a = d.parent; a?.depth; a = a.parent) if (this.selected.has(a.data.id)) return a\n\t}\n\n\ttoggle(d: HNode) {\n\t\tif (!d.depth) return\n\t\tconst id = d.data.id\n\t\tthis.createdNote = ''\n\t\tif (this.selected.has(id)) this.selected.delete(id)\n\t\telse {\n\t\t\tif (this.selectedAncestor(d)) return // already in the selection; the tooltip says so\n\t\t\t// a selected wedge contains its descendants, so drop any that were selected\n\t\t\tfor (const [k, n] of this.selected) if (n.ancestors().includes(d)) this.selected.delete(k)\n\t\t\tthis.selected.set(id, d)\n\t\t}\n\t\tthis.refreshSelection()\n\t}\n\n\trefreshSelection() {\n\t\tthis.dataShown = false\n\t\tthis.renderer.refresh()\n\t\tthis.renderStats()\n\t\tthis.renderSidebar()\n\t\tthis.renderSelectFocus()\n\t}\n\n\t/** wedge paths from the first ring, in selection order */\n\tselectedPaths(): TermSunNode[][] {\n\t\treturn [...this.selected.values()].map(\n\t\t\t(d: HNode) =>\n\t\t\t\td\n\t\t\t\t\t.ancestors()\n\t\t\t\t\t.reverse()\n\t\t\t\t\t.slice(1)\n\t\t\t\t\t.map((a: HNode) => a.data) as TermSunNode[]\n\t\t)\n\t}\n\n\tselectedCount(): number {\n\t\tlet n = 0\n\t\tfor (const d of this.selected.values()) n += d.value || 0\n\t\treturn n\n\t}\n\n\trenderStats() {\n\t\tconst r = this.renderer\n\t\tr.setStats(\n\t\t\tnew Map([\n\t\t\t\t[STAT_SAMPLES, r.focus.value || 0],\n\t\t\t\t[STAT_SELECTED, this.selectedCount()]\n\t\t\t])\n\t\t)\n\t}\n\n\t/************ interaction ************/\n\n\tonWedgeClick(d: HNode, event: any) {\n\t\tif (event?.shiftKey || !d.children) this.toggle(d)\n\t\telse this.renderer.zoomTo(d)\n\t}\n\n\ttooltip(d: HNode, box: any) {\n\t\tconst line = (text: string, color = '#6b7280') => box.append('div').style('color', color).text(text)\n\t\tline(d.data.level)\n\t\tconst total = this.renderer.root.value || 0\n\t\tconst pct = total ? ` (${((100 * (d.value || 0)) / total).toFixed(1)}%)` : ''\n\t\tconst s = box.append('div').style('color', '#374151')\n\t\ts.append('span').text(`${capitalizeFirstLetter(this.unit.many)}: `)\n\t\ts.append('b').text((d.value || 0).toLocaleString())\n\t\ts.append('span').text(pct)\n\t\tconst ended = d.data.value || 0\n\t\tconst next = this.twLst[d.data.ring + 1]\n\t\tif (d.children && ended && next) line(`${ended.toLocaleString()} with ${noValue(next)}`)\n\t\tconst note = (text: string, color: string) =>\n\t\t\tbox.append('div').style('margin-top', '4px').style('color', color).text(text)\n\t\tconst anc = this.selectedAncestor(d)\n\t\tif (anc) note(`Included in the selected ${anc.data.name}`, TEXT_MUTED)\n\t\telse if (this.selected.has(d.data.id))\n\t\t\tnote(d.children ? 'click to zoom in \u00B7 shift-click to deselect' : 'click to deselect', LINK)\n\t\telse note(d.children ? 'click to zoom in \u00B7 shift-click to select' : 'click to select', LINK)\n\t}\n\n\t/** the selected-wedges card: one line per wedge with its path and count, and the create-group\n\t * action as the footer */\n\trenderSidebar() {\n\t\tconst sel = this.dom.sel\n\t\tconst { title, headRight, body } = sel\n\t\theadRight.selectAll('*').remove()\n\t\tbody.selectAll('*').remove()\n\t\theadRight.style('margin-bottom', '8px')\n\t\tconst n = this.selected.size\n\t\ttitle.text(n ? 'Selected wedges' : 'No wedges selected')\n\t\tif (n) {\n\t\t\tpill(headRight).text(n)\n\t\t\theadRight\n\t\t\t\t.append('span')\n\t\t\t\t.style('font-size', '11px')\n\t\t\t\t.style('color', LINK)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.text('Clear')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tthis.selected.clear()\n\t\t\t\t\tthis.refreshSelection()\n\t\t\t\t})\n\t\t}\n\t\tconst list = body\n\t\t\t.append('div')\n\t\t\t.style('max-height', `${SIZE - 200}px`)\n\t\t\t.style('overflow-y', 'auto')\n\t\tif (!n) {\n\t\t\tlist\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t.style('padding', '4px 0')\n\t\t\t\t.text('Shift-click a wedge, click an outermost one, or zoom into one and click SELECT above the chart.')\n\t\t}\n\t\tfor (const [id, d] of this.selected) {\n\t\t\tconst path = d\n\t\t\t\t.ancestors()\n\t\t\t\t.reverse()\n\t\t\t\t.slice(1)\n\t\t\t\t.map((a: HNode) => a.data.name)\n\t\t\tconst row = list\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('align-items', 'center')\n\t\t\t\t.style('gap', '8px')\n\t\t\t\t.style('padding', '3px 6px')\n\t\t\t\t.style('margin', '2px 0')\n\t\t\t\t.style('border-radius', '6px')\n\t\t\t\t.on('mouseenter', (event: any) => {\n\t\t\t\t\tselect(event.currentTarget).style('background', '#f3f4f6').select('.sjpp-sunburst-remove').style('opacity', 1)\n\t\t\t\t})\n\t\t\t\t.on('mouseleave', (event: any) => {\n\t\t\t\t\tselect(event.currentTarget)\n\t\t\t\t\t\t.style('background', 'transparent')\n\t\t\t\t\t\t.select('.sjpp-sunburst-remove')\n\t\t\t\t\t\t.style('opacity', 0)\n\t\t\t\t})\n\t\t\tbadge(row, d.data.name, this.renderer.color(d), 24)\n\t\t\tconst text = row.append('div').style('flex', '1 1 auto').style('min-width', '0').style('line-height', '1.2')\n\t\t\ttext\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.9em')\n\t\t\t\t.style('color', TEXT_DARK)\n\t\t\t\t.style('overflow', 'hidden')\n\t\t\t\t.style('text-overflow', 'ellipsis')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.attr('title', path.join(' \u203A '))\n\t\t\t\t.text(path.join(' \u203A '))\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(this.renderer.unitText(d.value || 0))\n\t\t\trow\n\t\t\t\t.append('span')\n\t\t\t\t.attr('class', 'sjpp-sunburst-remove')\n\t\t\t\t.style('opacity', 0)\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('color', '#9ca3af')\n\t\t\t\t.style('font-size', '0.85em')\n\t\t\t\t.attr('title', 'Remove')\n\t\t\t\t.text('\u2715')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tthis.selected.delete(id)\n\t\t\t\t\tthis.refreshSelection()\n\t\t\t\t})\n\t\t}\n\n\t\tconst count = this.selectedCount()\n\t\tif (n) void this.renderData(body, count)\n\n\t\tconst footer = body\n\t\t\t.append('div')\n\t\t\t.style('margin-top', '10px')\n\t\t\t.style('padding-top', '10px')\n\t\t\t.style('border-top', `1px solid ${RULE}`)\n\t\tpill(footer, { button: true })\n\t\t\t.attr('data-testid', 'sjpp-sunburst-create-group')\n\t\t\t.property('disabled', n === 0)\n\t\t\t.style('opacity', n ? 1 : 0.3)\n\t\t\t.style('cursor', n ? 'pointer' : 'default')\n\t\t\t.text(n ? `Create group of ${this.renderer.unitText(count)}` : 'Create group')\n\t\t\t.on('click', () => this.createGroup())\n\t\tif (this.createdNote) {\n\t\t\tfooter\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t.style('margin-top', '6px')\n\t\t\t\t.text(this.createdNote)\n\t\t}\n\t}\n\n\t/** \"Show available data\", then how many of the selected samples have each kind of data of the dataset;\n\t * a kind with a plot of the selected samples opens it */\n\tasync renderData(body: any, count: number) {\n\t\tconst div = body\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-sunburst-group-data')\n\t\t\t.style('margin-top', '10px')\n\t\t\t.style('padding-top', '10px')\n\t\t\t.style('border-top', `1px solid ${RULE}`)\n\t\tif (!this.dataShown) {\n\t\t\tpill(div, { button: true })\n\t\t\t\t.attr('data-testid', 'sjpp-sunburst-show-data')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.text('Show available data')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\tthis.dataShown = true\n\t\t\t\t\tthis.renderSidebar()\n\t\t\t\t})\n\t\t\treturn\n\t\t}\n\t\tconst id = ++this.dataId\n\t\tconst head = div\n\t\t\t.append('div')\n\t\t\t.style('display', 'flex')\n\t\t\t.style('justify-content', 'space-between')\n\t\t\t.style('align-items', 'center')\n\t\t\t.style('gap', '8px')\n\t\t\t.style('margin-bottom', '6px')\n\t\thead\n\t\t\t.append('span')\n\t\t\t.attr('data-testid', 'sjpp-sunburst-data-title')\n\t\t\t.style('white-space', 'nowrap')\n\t\t\t.style('font-size', '0.95em')\n\t\t\t.style('font-weight', 600)\n\t\t\t.style('color', TEXT_DARK)\n\t\t\t.text(capitalizeFirstLetter(this.renderer.unitText(count)))\n\t\t// back to the button\n\t\thead\n\t\t\t.append('button')\n\t\t\t.attr('data-testid', 'sjpp-sunburst-hide-data')\n\t\t\t.style('flex', '0 0 auto')\n\t\t\t.style('font-size', '11px')\n\t\t\t.style('padding', '1px 10px')\n\t\t\t.style('border', `1px solid ${RULE}`)\n\t\t\t.style('border-radius', '10px')\n\t\t\t.style('background', 'white')\n\t\t\t.style('color', LINK)\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.text('Hide \u25B4')\n\t\t\t.on('click', () => this.hideData())\n\t\tconst list = div.append('div').text('Loading ...').style('font-size', '0.85em').style('color', TEXT_MUTED)\n\t\ttry {\n\t\t\tconst appState = this.app.getState()\n\t\t\tconst termfilter = appState.termfilter || {}\n\t\t\tconst filter = filterJoin([this.plotFilter(), termfilter.filter].filter(f => f?.lst?.length))\n\t\t\tconst groups = [{ name: 'selection', filter }]\n\t\t\tconst res = await fetchDataAvailability(\n\t\t\t\tthis.app.vocabApi,\n\t\t\t\tgroups,\n\t\t\t\ttermfilter.filter0,\n\t\t\t\tgetActiveCohortStr(appState)\n\t\t\t)\n\t\t\tif (id != this.dataId) return\n\t\t\tlist.text('').style('color', null)\n\t\t\t// differential expression compares groups, and the selection is one\n\t\t\tconst sections = availabilitySections(res, ['rnaseqGeneCount'])\n\t\t\tif (!sections.length) {\n\t\t\t\tlist.style('color', TEXT_MUTED).text(`No data for these ${this.unit.many}`)\n\t\t\t\treturn\n\t\t\t}\n\t\t\tfor (const section of sections) {\n\t\t\t\tif (section.title) {\n\t\t\t\t\tlist\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.attr('data-testid', `sjpp-sunburst-section-${section.key}`)\n\t\t\t\t\t\t.style('margin', '8px 0 2px 0')\n\t\t\t\t\t\t.style('padding', '0 6px')\n\t\t\t\t\t\t.style('font-size', '10px')\n\t\t\t\t\t\t.style('font-weight', 600)\n\t\t\t\t\t\t.style('letter-spacing', '.06em')\n\t\t\t\t\t\t.style('text-transform', 'uppercase')\n\t\t\t\t\t\t.style('color', TEXT_MUTED)\n\t\t\t\t\t\t.text(section.title)\n\t\t\t\t}\n\t\t\t\tfor (const row of section.rows) {\n\t\t\t\t\tconst launch = this.dataPlot(row)\n\t\t\t\t\tthis.dataRow(list, row, !!section.title, launch)\n\t\t\t\t}\n\t\t\t}\n\t\t} catch (e: any) {\n\t\t\tif (id != this.dataId) return\n\t\t\tlist.attr('class', 'sja_errorbar').text(e?.message || String(e))\n\t\t}\n\t}\n\n\thideData() {\n\t\tthis.dataShown = false\n\t\t// a response still on its way is not drawn\n\t\tthis.dataId++\n\t\tthis.renderSidebar()\n\t}\n\n\t/** a line of the available data: the kind of data and its count, which opens `launch`, a plot_create config,\n\t * when given; a row of a section is indented under the section's title */\n\tdataRow(list: any, row: AvailabilityRow, inSection: boolean, launch?: any) {\n\t\tconst n = row.counts[0] || 0\n\t\tconst div = list\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', `sjpp-sunburst-data-${row.kind == 'data' ? '' : row.kind + '-'}${row.key}`)\n\t\t\t.style('display', 'flex')\n\t\t\t.style('justify-content', 'space-between')\n\t\t\t.style('gap', '8px')\n\t\t\t.style('padding', `3px 6px 3px ${inSection ? 16 : 6}px`)\n\t\t\t.style('margin', '1px 0')\n\t\t\t.style('border-radius', '6px')\n\t\t\t.style('color', TEXT_DARK)\n\t\tdiv.append('span').text(row.label)\n\t\tdiv\n\t\t\t.append('span')\n\t\t\t.style('white-space', 'nowrap')\n\t\t\t.style('color', launch ? LINK : null)\n\t\t\t.text(`${n.toLocaleString()}${row.unit ? ' ' + row.unit : ''}${launch ? ' \u203A' : ''}`)\n\t\tif (!launch) return\n\t\tdiv\n\t\t\t.attr('role', 'button')\n\t\t\t.attr('tabindex', 0)\n\t\t\t.attr('title', `Open the ${row.label} of these ${this.unit.many}`)\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.on('mouseenter', (event: any) => select(event.currentTarget).style('background', '#f3f4f6'))\n\t\t\t.on('mouseleave', (event: any) => select(event.currentTarget).style('background', 'transparent'))\n\t\t\t.on('click', () => this.launchPlot(launch))\n\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\tif (event.key == 'Enter' || event.key == ' ') {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tthis.launchPlot(launch)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\t/** the filter of the selected samples: the selection with the plot's own filter. A plot that is given it as\n\t * its own filter joins the global filter to it */\n\tplotFilter(): Filter {\n\t\tconst filters = [selectionFilter(this.selectedPaths(), this.twLst), this.groupFilter]\n\t\treturn filterJoin(filters.filter(f => f?.lst?.length)) as Filter\n\t}\n\n\t/** the plot of the selected samples for a row of the available data, as a plot_create config; undefined\n\t * when the row has no plot of its own */\n\tdataPlot(row: AvailabilityRow): any {\n\t\tconst filter = this.plotFilter()\n\t\tconst q = this.app.vocabApi.termdbConfig?.queries || {}\n\t\t// the mutations of the selected samples, in the genome browser after a gene is entered\n\t\tif (row.kind == 'assay')\n\t\t\treturn q.snvindel || q.svfusion || q.cnv\n\t\t\t\t? {\n\t\t\t\t\t\tchartType: 'genomeBrowser',\n\t\t\t\t\t\tfilter,\n\t\t\t\t\t\t/* the mutation track shown, which the genome browser hides by default when the dataset also has\n\t\t\t\t\t\ttrackLst. The query is copied as the browser's config replaces it, not merged */\n\t\t\t\t\t\t...(q.snvindel ? { snvindel: { ...structuredClone(q.snvindel), shown: true } } : {})\n\t\t\t\t }\n\t\t\t\t: undefined\n\t\t// the survival curve of the selected samples\n\t\tif (row.kind == 'survival') return { chartType: 'survival', term: { id: row.key }, filter }\n\t\t// the input form of expression plots; each plot it opens has the filter\n\t\tif (row.key == 'geneExpression')\n\t\t\treturn { chartType: 'GeneExpInput', termType: TermTypes.GENE_EXPRESSION, spawnConfig: { filter } }\n\t\t// the term search, whose DNA methylation tab lists methylation terms; a term opens its summary with the filter\n\t\tif (row.key == 'dnaMethylation') return { chartType: 'dictionary', spawnConfig: { filter } }\n\t\t// the table of the imaging samples that pass the filter, to render on a brain template\n\t\tif (row.key == 'NIdata') return { chartType: 'brainImaging', filter }\n\t\t// the lanes of the patients of the selected samples\n\t\tif (row.key == 'longitudinal') return { chartType: 'swimmer', filter }\n\t}\n\n\tasync launchPlot(config: any) {\n\t\ttry {\n\t\t\tawait this.beforeLaunch?.()\n\t\t\tawait this.app.dispatch({ type: 'plot_create', config })\n\t\t} catch (e: any) {\n\t\t\tthis.dom.errdiv.style('display', '').text(e?.message || String(e))\n\t\t}\n\t}\n\n\t/** one group of the union of the selected wedges, added to the GROUPS tab; the group also has the\n\t * plot's own filter, which the counts are of. The global filter is joined where the group is used */\n\tcreateGroup() {\n\t\tconst paths = this.selectedPaths()\n\t\tif (!paths.length) return\n\t\ttry {\n\t\t\tconst name = selectionName(paths)\n\t\t\tconst groups = this.app.getState().groups || []\n\t\t\tconst filter = getGroupFilterOfConditions([this.groupFilter, selectionFilter(paths, this.twLst)])\n\t\t\taddNewGroup(this.app, filter, groups, name)\n\t\t\tthis.selected.clear()\n\t\t\tthis.createdNote = `Group \"${name}\" added; find it in the GROUPS tab.`\n\t\t\tthis.refreshSelection()\n\t\t} catch (e: any) {\n\t\t\tthis.dom.errdiv.style('display', '').text(e?.message || String(e))\n\t\t}\n\t}\n\n\tdestroy() {\n\t\tthis.renderer?.destroy()\n\t}\n}\n\n/** why a sample is not in a ring: \"no X value\", or \"no or a hidden X value\" when the ring hides some\n * categories (tw.q.hiddenValues), which the server treats as missing. The term's uncomputable values,\n * which fillTermWrapper puts in hiddenValues by default, are missing values anyway, so they do not count */\nfunction noValue(tw: any): string {\n\tconst values = tw.term.values || {}\n\tconst hidden = Object.keys(tw.q?.hiddenValues || {}).some(k => !values[k]?.uncomputable)\n\treturn `no ${hidden ? 'or a hidden ' : ''}${tw.term.name} value`\n}\n\n/** termdb/sunburst request; errors are thrown */\nasync function fetchSunburst(body: SunburstRequest): Promise<SunburstResponse> {\n\tconst res: any = await dofetch3('termdb/sunburst', { body })\n\tif (res?.error) throw res.error\n\tif (!res?.nodes) throw 'invalid response from termdb/sunburst'\n\treturn res\n}\n", "import { getCompInit, copyMerge, type RxComponent, type ComponentApi } from '#rx'\nimport { PlotBase } from '#plots/PlotBase.ts'\nimport { getCombinedTermFilter } from '#filter'\nimport { fillTermWrapper, termsettingInit } from '#termsetting'\nimport { SunburstChart } from './SunburstChart'\nimport { allowedSampleTypes } from './sunburst.data'\n\n/*\nSunburst of nested sample counts, one dictionary term per ring (categorical, or numeric binned),\ninside out. The dataset sets the default rings (termdb.sunburst.twLst); the Rings box left of the\nchart switches, edits, adds and removes them (from each term pill's menu). Counts follow the\nglobal and plot filters.\n\nThe chart itself, its wedge selection and the sample group made from it are in SunburstChart.ts, which\nthe About tab also uses.\n\nIn a dataset with a sample hierarchy, the rings are patient terms and the terms of one sample type (no\nvalue maps between sibling types such as primary and PDX samples): once a ring is of a sample type, the\npickers offer only terms of its line of descent. The server returns the counted unit (e.g. patients,\nprimary samples), which the chart's wording follows.\n*/\n\nclass Sunburst extends PlotBase implements RxComponent {\n\tstatic type = 'sunburst'\n\ttype: string\n\tchart!: SunburstChart\n\ttwLst: any[] = []\n\t/** the rings the Rings box shows, to rebuild its pills only when they change */\n\tringsShown = ''\n\t/** the Rings box pills and their main() argument without the filter, which follows the state */\n\tringPills: { pill: any; arg: any }[] = []\n\n\tconstructor(opts: any, api: ComponentApi) {\n\t\tsuper(opts, api)\n\t\tthis.type = Sunburst.type\n\t\tif (this.opts.header)\n\t\t\tthis.opts.header.style('padding-left', '7px').style('color', 'rgb(85, 85, 85)').html('Sunburst')\n\t}\n\n\tgetState(appState: any) {\n\t\tconst config = appState.plots.find((p: any) => p.id === this.id)\n\t\tif (!config) throw `No plot with id='${this.id}' found`\n\t\treturn {\n\t\t\tconfig,\n\t\t\t// global mass filter combined with this plot's local filter\n\t\t\ttermfilter: getCombinedTermFilter(appState, config.filter),\n\t\t\tgenome: appState.vocab.genome,\n\t\t\tdslabel: appState.vocab.dslabel,\n\t\t\tsunburst: appState.termdbConfig?.sunburst || {}\n\t\t}\n\t}\n\n\tasync init() {\n\t\t// the plot holder inherits nowrap from the sandbox; the cards need their text to wrap\n\t\tconst holder = this.opts.holder\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-sunburst-holder')\n\t\t\t.style('white-space', 'normal')\n\t\t\t.style('padding', '10px')\n\t\tthis.chart = new SunburstChart({ holder, app: this.app })\n\t\t// a ring pill is only the term: termsetting's info button (its holder's 4th child) is hidden\n\t\tthis.chart.dom.rings.box\n\t\t\t.append('style')\n\t\t\t.text('.sjpp-sunburst-ringpill > div:nth-child(4) { display: none !important; }')\n\t}\n\n\tasync main() {\n\t\tconst config = this.state.config\n\t\tthis.twLst = config.twLst || []\n\t\tawait this.renderRings()\n\t\tawait this.chart.update(\n\t\t\t{\n\t\t\t\tgenome: this.state.genome,\n\t\t\t\tdslabel: this.state.dslabel,\n\t\t\t\ttwLst: this.twLst,\n\t\t\t\ttermfilter: this.state.termfilter,\n\t\t\t\tgroupFilter: config.filter,\n\t\t\t\tcolors: this.state.sunburst.colors\n\t\t\t},\n\t\t\t'Add a ring in the Rings box to draw the sunburst.'\n\t\t)\n\t}\n\n\t/************ rings box ************/\n\n\t/** one line per ring: its number and a term pill, whose menu switches, edits or removes the\n\t * term; then + Add ring. Rebuilt only when the rings change; otherwise the pills get the current\n\t * filter, which their term pickers use */\n\tasync renderRings() {\n\t\tconst twLst = this.twLst\n\t\tconst filter = this.state.termfilter?.filter\n\t\tconst sig = JSON.stringify(twLst.map(tw => [tw.$id, tw.q]))\n\t\tif (sig == this.ringsShown) {\n\t\t\tawait Promise.all(this.ringPills.map(({ pill, arg }) => pill.main({ ...arg, filter })))\n\t\t\treturn\n\t\t}\n\t\tthis.ringsShown = sig\n\t\tthis.ringPills = []\n\t\tthis.chart.dom.rings.body.selectAll('*').remove()\n\t\tconst disable_terms = twLst.map(tw => tw.term)\n\t\tconst sampleTypes = this.app.vocabApi.termdbConfig?.sampleTypes\n\t\tconst edit = (lst: any[]) => this.app.dispatch({ type: 'plot_edit', id: this.id, config: { twLst: lst } })\n\t\tfor (const [i, tw] of twLst.entries()) {\n\t\t\tconst pillDiv = this.chart\n\t\t\t\t.ringLine(i)\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sjpp-sunburst-ringpill')\n\t\t\t\t.style('min-width', '0')\n\t\t\t\t.style('overflow', 'hidden')\n\t\t\t\t.style('white-space', 'nowrap')\n\t\t\t\t.style('font-size', '.9em')\n\t\t\t\t.style('text-overflow', 'ellipsis')\n\t\t\t\t.attr('title', tw.term.name)\n\t\t\tconst others = twLst.filter((_, j) => j != i)\n\t\t\tconst p = await this.ringPill(\n\t\t\t\tpillDiv,\n\t\t\t\tnewTw => {\n\t\t\t\t\tconst lst = twLst.slice()\n\t\t\t\t\tif (newTw?.term) lst[i] = newTw\n\t\t\t\t\telse lst.splice(i, 1)\n\t\t\t\t\tedit(lst)\n\t\t\t\t},\n\t\t\t\tallowedSampleTypes(others, sampleTypes)\n\t\t\t)\n\t\t\tthis.ringPills.push({ pill: p, arg: { term: tw.term, q: tw.q, $id: tw.$id, disable_terms } })\n\t\t}\n\t\tconst addDiv = this.chart\n\t\t\t.ringRow(twLst.length)\n\t\t\t.style('margin-top', '6px')\n\t\t\t.append('div')\n\t\t\t.style('margin-left', '21px')\n\t\tconst add = await this.ringPill(\n\t\t\taddDiv,\n\t\t\tnewTw => {\n\t\t\t\tif (newTw?.term) edit([...twLst, newTw])\n\t\t\t},\n\t\t\tallowedSampleTypes(twLst, sampleTypes),\n\t\t\t'+ Add ring'\n\t\t)\n\t\tthis.ringPills.push({ pill: add, arg: { term: null, q: null, disable_terms } })\n\t\tawait Promise.all(this.ringPills.map(({ pill, arg }) => pill.main({ ...arg, filter })))\n\t\tthis.chart.markShownRings()\n\t}\n\n\t/** a ring term pill; `sampleTypes` limits the terms it offers (see allowedSampleTypes) */\n\tasync ringPill(holder: any, callback: (tw: any) => void, sampleTypes?: number[], placeholder?: string) {\n\t\treturn await termsettingInit({\n\t\t\tholder,\n\t\t\tvocabApi: this.app.vocabApi,\n\t\t\tusecase: { target: 'sunburst', ...(sampleTypes ? { sampleTypes } : {}) },\n\t\t\t// the full term name; a name too long for the box is clipped, with the name as its tooltip\n\t\t\tabbrCutoff: 1000,\n\t\t\tmenuOptions: '*',\n\t\t\tnumericEditMenuVersion: ['discrete'],\n\t\t\tdefaultQ4fillTW: { numeric: { mode: 'discrete' } },\n\t\t\t...(placeholder ? { placeholder } : {}),\n\t\t\tdebug: this.app.opts.debug,\n\t\t\tcallback\n\t\t})\n\t}\n\n\tdestroy() {\n\t\tthis.chart?.destroy()\n\t}\n}\n\n/** the plot config, with the dataset's default rings unless `opts` gives its own; also used by the\n * About tab for the same rings */\nexport async function getPlotConfig(opts: any, app: any) {\n\tconst config: any = {\n\t\tchartType: 'sunburst',\n\t\tsettings: {}\n\t}\n\tcopyMerge(config, opts)\n\t// default rings from the dataset; a saved session or another chart may give its own\n\tif (!config.twLst) config.twLst = structuredClone(app.vocabApi.termdbConfig?.sunburst?.twLst || [])\n\tconfig.twLst = await Promise.all(\n\t\tconfig.twLst.map((tw: any) => fillTermWrapper(tw, app.vocabApi, { numeric: { mode: 'discrete' } } as any))\n\t)\n\treturn config\n}\n\nexport const sunburstInit = getCompInit(Sunburst)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = sunburstInit\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBO,SAAS,cACf,KACA,OACA,UACA,QACc;AACd,QAAM,UAAU,CAAC,GAAiB,MAAc,eAAwC;AACvF,UAAM,KAAK,MAAM,IAAI;AACrB,UAAM,WAAW,IAAI,MAAM,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI;AACrE,UAAM,OAAO,CAAC,GAAG,YAAY,CAAC,GAAG,KAAK,EAAE,GAAG,CAAC;AAC5C,UAAM,YAAY,EAAE,YAAY,CAAC,GAAG,IAAI,OAAK,QAAQ,GAAG,OAAO,GAAG,IAAI,CAAC;AACvE,UAAM,OAAoB;AAAA,MACzB,MAAM,SAAS;AAAA,MACf,OAAO,GAAG,KAAK;AAAA;AAAA,MAEf,OAAO,EAAE,QAAQ,SAAS,OAAO,CAAC,GAAG,MAAM,IAAI,EAAE,OAAO,CAAC;AAAA,MACzD,OAAO,EAAE;AAAA,MACT,IAAI,KAAK,UAAU,IAAI;AAAA,MACvB;AAAA,MACA,KAAK,EAAE;AAAA,MACP;AAAA,IACD;AACA,UAAM,QAAS,QAAQ,KAAK,SAAS,EAAE,GAAG,KAAM,SAAS;AACzD,QAAI,MAAO,MAAK,QAAQ;AACxB,QAAI,SAAS,OAAQ,MAAK,WAAW;AACrC,WAAO;AAAA,EACR;AACA,SAAO,EAAE,MAAM,UAAU,OAAO,GAAG,OAAO,IAAI,OAAO,UAAU,IAAI,MAAM,IAAI,OAAK,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE;AACtG;AAGO,SAAS,mBAAmB,IAAS,UAAiC;AAC5E,MAAI,SAAS,OAAQ,QAAO,gBAAgB,SAAS,MAAM;AAC3D,MAAI,CAAC,SAAS,IAAK,OAAM,2BAA2B,SAAS,KAAK,QAAQ,GAAG,KAAK,IAAI;AACtF,SAAO,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,gBAAgB,SAAS,GAAG,EAAE,EAAE;AAChF;AAGO,SAAS,YAAY,MAAqB,OAAsB;AACtE,QAAM,MAAM,KAAK,IAAI,OAAK,mBAAmB,MAAM,EAAE,IAAI,GAAG,EAAE,QAAQ,CAAC;AACvE,SAAO,EAAE,MAAM,UAAU,IAAI,MAAM,MAAM,IAAI,SAAS,IAAI,QAAQ,IAAI,IAAI;AAC3E;AAIO,SAAS,gBAAgB,OAAwB,OAAsB;AAC7E,MAAI,CAAC,MAAM,OAAQ,OAAM;AACzB,MAAI,MAAM,UAAU,EAAG,QAAO,YAAY,MAAM,CAAC,GAAG,KAAK;AACzD,SAAO,EAAE,MAAM,UAAU,IAAI,MAAM,MAAM,MAAM,KAAK,MAAM,IAAI,OAAK,YAAY,GAAG,KAAK,CAAC,EAAE;AAC3F;AAIO,SAAS,cAAc,OAAwB,SAAS,IAAY;AAC1E,QAAM,QACL,MAAM,UAAU,IAAI,MAAM,CAAC,EAAE,IAAI,OAAK,EAAE,IAAI,EAAE,KAAK,UAAK,IAAI,MAAM,IAAI,OAAK,EAAE,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM;AAC7G,SAAO,MAAM,SAAS,SAAS,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,WAAM;AACnE;AAMO,SAAS,mBAAmB,YAAmB,aAA2D;AAChH,MAAI,CAAC,eAAe,OAAO,KAAK,WAAW,EAAE,SAAS,EAAG;AACzD,QAAM,SAAS,CAAC,MAAc;AAC7B,UAAM,IAAI,YAAY,CAAC,GAAG;AAC1B,WAAO,MAAM,QAAQ,MAAM,SAAY,SAAY,OAAO,CAAC;AAAA,EAC5D;AACA,QAAM,YAAY,CAAC,MAAc;AAChC,UAAM,MAAgB,CAAC;AACvB,aAAS,IAAI,OAAO,CAAC,GAAG,MAAM,UAAa,CAAC,IAAI,SAAS,CAAC,GAAG,IAAI,OAAO,CAAC,EAAG,KAAI,KAAK,CAAC;AACtF,WAAO;AAAA,EACR;AACA,QAAM,QAAQ,WACZ,IAAI,QAAM,GAAG,MAAM,WAAW,EAC9B,OAAO,OAAK,MAAM,QAAQ,MAAM,UAAa,YAAY,CAAC,CAAC,EAC3D,IAAI,MAAM;AACZ,QAAM,QAAQ,MAAM,OAAO,OAAK,OAAO,CAAC,MAAM,MAAS;AACvD,MAAI,CAAC,MAAM,OAAQ;AACnB,QAAM,UAAU,MAAM,OAAO,CAAC,GAAG,MAAO,UAAU,CAAC,EAAE,SAAS,UAAU,CAAC,EAAE,SAAS,IAAI,CAAE;AAC1F,QAAM,cAAc,OAAO,KAAK,WAAW,EAAE,OAAO,OAAK,UAAU,CAAC,EAAE,SAAS,OAAO,CAAC;AACvF,SAAO,CAAC,GAAG,UAAU,OAAO,GAAG,SAAS,GAAG,WAAW,EAAE,IAAI,MAAM;AACnE;;;AC/DA,IAAM,eAAe;AACrB,IAAM,gBAAgB;AAEtB,IAAM,YAAY;AAClB,IAAM,YAAY;AA0BX,IAAM,gBAAN,MAAoB;AAAA,EA8B1B,YAAY,MAAyB;AAhBrC,iBAAe,CAAC;AAGhB;AAAA,oBAA+B,oBAAI,IAAI;AAEvC;AAAA,uBAAc;AAEd;AAAA,gBAAO,EAAE,KAAK,UAAU,MAAM,UAAU;AAExC;AAAA,oBAAW;AAGX;AAAA,qBAAY;AAEZ;AAAA,kBAAS;AAGR,SAAK,MAAM,KAAK;AAChB,SAAK,eAAe,KAAK;AACzB,UAAM,SAAS,KAAK;AACpB,UAAM,SAAS,OAAO,OAAO,KAAK,EAAE,KAAK,SAAS,cAAc,EAAE,MAAM,WAAW,MAAM;AACzF,UAAM,aAAa,OAAO,OAAO,KAAK,EAAE,MAAM,WAAW,MAAM,EAAE,MAAM,WAAW,MAAM,EAAE,KAAK,aAAa;AAC5G,UAAM,UAAU,OACd,OAAO,KAAK,EACZ,MAAM,aAAa,OAAO,EAC1B,MAAM,SAAS,UAAU,EACzB,MAAM,iBAAiB,KAAK;AAC9B,UAAM,cAAc,OAAO,OAAO,KAAK,EAAE,KAAK,eAAe,qBAAqB;AAClF,SAAK,WAAW,IAAI,iBAAiB;AAAA,MACpC,QAAQ;AAAA,MACR,MAAM,KAAK;AAAA,MACX,UAAU;AAAA,MACV,YAAY,CAAC,cAAc,aAAa;AAAA,MACxC,UAAU;AAAA,MACV,KAAK,KAAK;AAAA,MACV,OAAO;AAAA,QACN,SAAS,CAAC,GAAU,UAAe,KAAK,aAAa,GAAG,KAAK;AAAA,QAC7D,YAAY,CAAC,MAAa,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE;AAAA,QACrD,QAAQ,CAAC,MAAc,EAAE,WAAW,YAAY;AAAA,QAChD,SAAS,CAAC,GAAU,QAAa,KAAK,QAAQ,GAAG,GAAG;AAAA,QACpD,SAAS,MAAM;AACd,eAAK,YAAY;AACjB,eAAK,cAAc;AACnB,eAAK,kBAAkB;AACvB,eAAK,eAAe;AAAA,QACrB;AAAA,MACD;AAAA,IACD,CAAC;AACD,UAAM,QAAQ,KAAK,KAAK,SAAS,IAAI,MAAM,OAAO;AAClD,UAAM,KAAK,KAAK,eAAe,qBAAqB;AACpD,UAAM,cAAc,KAAK,SACvB,WAAW,EACX,KAAK,eAAe,4BAA4B,EAChD,GAAG,SAAS,MAAM;AAClB,YAAM,IAAI,KAAK,SAAS;AACxB,UAAI,GAAG,SAAS,CAAC,KAAK,iBAAiB,CAAC,EAAG,MAAK,OAAO,CAAC;AAAA,IACzD,CAAC;AACF,SAAK,MAAM;AAAA,MACV;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK,KAAK,KAAK,SAAS,IAAI,OAAO,iBAAiB;AAAA,MACpD;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,OAAO,KAAwB,YAAY,IAAkC;AAClF,UAAM,KAAK,EAAE,KAAK;AAClB,SAAK,QAAQ,IAAI;AACjB,SAAK,cAAc,IAAI;AACvB,SAAK,IAAI,OAAO,MAAM,WAAW,MAAM;AACvC,SAAK,IAAI,QAAQ,KAAK,EAAE;AACxB,QAAI,CAAC,KAAK,MAAM,QAAQ;AAEvB,WAAK,IAAI,WAAW,MAAM,WAAW,MAAM;AAC3C,WAAK,SAAS,MAAM;AACpB,WAAK,SAAS,QAAQ,EAAE,MAAM,KAAK,SAAS,KAAK,UAAU,UAAU,CAAC,EAAE,CAAC;AACzE,WAAK,IAAI,QAAQ,KAAK,SAAS;AAC/B,aAAO;AAAA,IACR;AACA,QAAI;AACH,WAAK,IAAI,WAAW,MAAM,WAAW,EAAE;AACvC,YAAM,MAAM,MAAM,cAAc;AAAA,QAC/B,QAAQ,IAAI;AAAA,QACZ,SAAS,IAAI;AAAA,QACb,OAAO,KAAK;AAAA,QACZ,QAAQ,cAAc,IAAI,YAAY,MAAM;AAAA,QAC5C,SAAS,IAAI,YAAY;AAAA,MAC1B,CAAC;AACD,UAAI,MAAM,KAAK,SAAU;AACzB,WAAK,IAAI,WAAW,MAAM,WAAW,MAAM;AAC3C,WAAK,OAAO,KAAK,IAAI,MAAM;AAC3B,aAAO;AAAA,IACR,SAAS,GAAQ;AAChB,UAAI,MAAM,KAAK,SAAU;AACzB,WAAK,IAAI,WAAW,MAAM,WAAW,MAAM;AAC3C,WAAK,IAAI,OAAO,MAAM,WAAW,EAAE,EAAE,KAAK,GAAG,WAAW,OAAO,CAAC,CAAC;AACjE,UAAI,aAAa,MAAO,SAAQ,MAAM,CAAC;AACvC,aAAO;AAAA,IACR;AAAA,EACD;AAAA,EAEA,OAAO,KAAuB,QAAoC;AACjE,SAAK,QAAQ,IAAI,QAAQ,EAAE,KAAK,UAAU,MAAM,UAAU,CAAC;AAC3D,QAAI,IAAI,kBAAkB;AACzB,YAAM,IAAI,IAAI;AACd,WAAK,IAAI,QAAQ;AAAA,QAChB,GAAG,EAAE,eAAe,CAAC,IAAI,KAAK,IAAI,KAAK,KAAK,MAAM,KAAK,KAAK,IAAI,SAAS,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAC9F,KAAK,IAAI,OAAO,KACjB;AAAA,MACD;AAAA,IACD;AACA,UAAM,UAAU,KAAK,SAAS,OAAO,KAAK;AAC1C,UAAM,cAAc,CAAC,GAAG,KAAK,SAAS,KAAK,CAAC;AAC5C,SAAK,SAAS,QAAQ,cAAc,KAAK,KAAK,OAAO,KAAK,SAAS,KAAK,UAAU,MAAM,CAAC;AAGzF,UAAM,OAAO,IAAI,IAAI,KAAK,SAAS,KAAK,YAAY,EAAE,IAAI,CAAC,MAAa,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;AACvF,SAAK,WAAW,IAAI,IAAI,YAAY,OAAO,QAAM,KAAK,IAAI,EAAE,CAAC,EAAE,IAAI,QAAM,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;AAC5F,SAAK,SAAS,QAAQ;AACtB,UAAM,QAAQ,WAAW,KAAK,IAAI,OAAO;AACzC,QAAI,OAAO,SAAU,MAAK,SAAS,OAAO,KAAK;AAAA,QAC1C,MAAK,cAAc;AAAA,EACzB;AAAA;AAAA,EAGA,QAAQ,MAAqC;AAC5C,SAAK,OAAO;AACZ,SAAK,SAAS,KAAK,OAAO;AAC1B,SAAK,SAAS,KAAK,WAAW,OAAO,KAAK,IAAI;AAC9C,SAAK,SAAS,aAAa,cAAc,sBAAsB,KAAK,IAAI,CAAC;AACzE,SAAK,SAAS,aAAa,eAAe,YAAY,KAAK,IAAI,EAAE;AAAA,EAClE;AAAA;AAAA,EAGA,oBAAoB;AACnB,UAAM,IAAI,KAAK,SAAS;AACxB,UAAM,KAAK,KAAK,IAAI;AACpB,QAAI,CAAC,GAAG,OAAO;AACd,SAAG,MAAM,WAAW,MAAM;AAC1B;AAAA,IACD;AACA,UAAM,MAAM,KAAK,iBAAiB,CAAC;AACnC,UAAM,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE;AACtC,OAAG,MAAM,WAAW,EAAE,EACpB,MAAM,WAAW,MAAM,OAAO,CAAC,EAC/B,MAAM,UAAU,MAAM,YAAY,SAAS,EAC3C,MAAM,SAAS,KAAK,gBAAgB,UAAU,EAC9C,KAAK,SAAS,MAAM,4BAA4B,IAAI,KAAK,IAAI,KAAK,IAAI,EACtE;AAAA,MACA,KACG,GAAG,KAAK,sCAAsC,CAAC,iBAAc,WAAW,EAAE,KAAK,KAAK,YAAY,CAAC,CAAC,KAClG,GAAG,KAAK,2DAA2D,CAAC,UAAU;AAAA,QAC9E,EAAE,KAAK,KAAK,YAAY;AAAA,MACxB,CAAC;AAAA,IACL;AAAA,EACF;AAAA;AAAA;AAAA,EAKA,QAAQ,OAAe;AACtB,UAAM,MAAM,KAAK,IAAI,MAAM,KACzB,OAAO,KAAK,EACZ,MAAM,YAAY,UAAU,EAC5B,MAAM,UAAU,OAAO,EACvB,MAAM,eAAe,GAAG,QAAQ,SAAS,IAAI;AAC/C,QAAI,OAAO;AACV,UACE,OAAO,KAAK,EACZ,MAAM,YAAY,UAAU,EAC5B,MAAM,QAAQ,GAAG,CAAC,YAAY,CAAC,IAAI,EACnC,MAAM,OAAO,MAAM,EACnB,MAAM,SAAS,GAAG,YAAY,CAAC,IAAI,EACnC,MAAM,UAAU,MAAM,EACtB,MAAM,eAAe,aAAa,SAAS,EAAE,EAC7C,MAAM,iBAAiB,aAAa,SAAS,EAAE,EAC/C,MAAM,6BAA6B,KAAK;AAAA,IAC3C;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA,EAIA,SAAS,GAAW;AACnB,UAAM,MAAM,KAAK,QAAQ,CAAC,EACxB,KAAK,SAAS,oBAAoB,EAClC,MAAM,WAAW,MAAM,EACvB,MAAM,eAAe,QAAQ,EAC7B,MAAM,OAAO,KAAK;AACpB,QACE,OAAO,MAAM,EACb,KAAK,SAAS,uBAAuB,EACrC,MAAM,aAAa,MAAM,EACzB,MAAM,SAAS,MAAM,EACrB,MAAM,QAAQ,UAAU,EACxB,MAAM,gBAAgB,KAAK,EAC3B,MAAM,eAAe,uBAAuB,EAC5C,MAAM,iBAAiB,KAAK,EAC5B,KAAK,IAAI,CAAC;AACZ,WAAO;AAAA,EACR;AAAA;AAAA,EAGA,iBAAiB;AAChB,UAAM,QAAQ,KAAK,SAAS,OAAO,SAAS;AAC5C,UAAM,QAAQ,CAAC,MAAc,KAAK,SAAS,KAAK,QAAQ;AACxD,SAAK,IAAI,MAAM,KACb,UAAU,qBAAqB,EAC/B,KAAK,SAAS,CAAC,GAAQ,MAAe,MAAM,CAAC,IAAI,uBAAuB,IAAK,EAC7E,OAAO,wBAAwB,EAC/B,MAAM,qBAAqB,CAAC,GAAQ,MAAe,MAAM,CAAC,IAAI,OAAO,aAAc,EACnF,MAAM,SAAS,CAAC,GAAQ,MAAe,MAAM,CAAC,IAAI,YAAY,UAAW,EACzE,MAAM,eAAe,CAAC,GAAQ,MAAe,MAAM,CAAC,IAAI,SAAS,QAAS;AAAA,EAC7E;AAAA;AAAA;AAAA,EAKA,iBAAiB,GAA6B;AAC7C,aAAS,IAAI,EAAE,QAAQ,GAAG,OAAO,IAAI,EAAE,OAAQ,KAAI,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,EAAG,QAAO;AAAA,EACzF;AAAA,EAEA,OAAO,GAAU;AAChB,QAAI,CAAC,EAAE,MAAO;AACd,UAAM,KAAK,EAAE,KAAK;AAClB,SAAK,cAAc;AACnB,QAAI,KAAK,SAAS,IAAI,EAAE,EAAG,MAAK,SAAS,OAAO,EAAE;AAAA,SAC7C;AACJ,UAAI,KAAK,iBAAiB,CAAC,EAAG;AAE9B,iBAAW,CAAC,GAAG,CAAC,KAAK,KAAK,SAAU,KAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAG,MAAK,SAAS,OAAO,CAAC;AACzF,WAAK,SAAS,IAAI,IAAI,CAAC;AAAA,IACxB;AACA,SAAK,iBAAiB;AAAA,EACvB;AAAA,EAEA,mBAAmB;AAClB,SAAK,YAAY;AACjB,SAAK,SAAS,QAAQ;AACtB,SAAK,YAAY;AACjB,SAAK,cAAc;AACnB,SAAK,kBAAkB;AAAA,EACxB;AAAA;AAAA,EAGA,gBAAiC;AAChC,WAAO,CAAC,GAAG,KAAK,SAAS,OAAO,CAAC,EAAE;AAAA,MAClC,CAAC,MACA,EACE,UAAU,EACV,QAAQ,EACR,MAAM,CAAC,EACP,IAAI,CAAC,MAAa,EAAE,IAAI;AAAA,IAC5B;AAAA,EACD;AAAA,EAEA,gBAAwB;AACvB,QAAI,IAAI;AACR,eAAW,KAAK,KAAK,SAAS,OAAO,EAAG,MAAK,EAAE,SAAS;AACxD,WAAO;AAAA,EACR;AAAA,EAEA,cAAc;AACb,UAAM,IAAI,KAAK;AACf,MAAE;AAAA,MACD,oBAAI,IAAI;AAAA,QACP,CAAC,cAAc,EAAE,MAAM,SAAS,CAAC;AAAA,QACjC,CAAC,eAAe,KAAK,cAAc,CAAC;AAAA,MACrC,CAAC;AAAA,IACF;AAAA,EACD;AAAA;AAAA,EAIA,aAAa,GAAU,OAAY;AAClC,QAAI,OAAO,YAAY,CAAC,EAAE,SAAU,MAAK,OAAO,CAAC;AAAA,QAC5C,MAAK,SAAS,OAAO,CAAC;AAAA,EAC5B;AAAA,EAEA,QAAQ,GAAU,KAAU;AAC3B,UAAM,OAAO,CAAC,MAAc,QAAQ,cAAc,IAAI,OAAO,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,KAAK,IAAI;AACnG,SAAK,EAAE,KAAK,KAAK;AACjB,UAAM,QAAQ,KAAK,SAAS,KAAK,SAAS;AAC1C,UAAM,MAAM,QAAQ,MAAO,OAAO,EAAE,SAAS,KAAM,OAAO,QAAQ,CAAC,CAAC,OAAO;AAC3E,UAAM,IAAI,IAAI,OAAO,KAAK,EAAE,MAAM,SAAS,SAAS;AACpD,MAAE,OAAO,MAAM,EAAE,KAAK,GAAG,sBAAsB,KAAK,KAAK,IAAI,CAAC,IAAI;AAClE,MAAE,OAAO,GAAG,EAAE,MAAM,EAAE,SAAS,GAAG,eAAe,CAAC;AAClD,MAAE,OAAO,MAAM,EAAE,KAAK,GAAG;AACzB,UAAM,QAAQ,EAAE,KAAK,SAAS;AAC9B,UAAM,OAAO,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC;AACvC,QAAI,EAAE,YAAY,SAAS,KAAM,MAAK,GAAG,MAAM,eAAe,CAAC,SAAS,QAAQ,IAAI,CAAC,EAAE;AACvF,UAAM,OAAO,CAAC,MAAc,UAC3B,IAAI,OAAO,KAAK,EAAE,MAAM,cAAc,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,KAAK,IAAI;AAC7E,UAAM,MAAM,KAAK,iBAAiB,CAAC;AACnC,QAAI,IAAK,MAAK,4BAA4B,IAAI,KAAK,IAAI,IAAI,UAAU;AAAA,aAC5D,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE;AACnC,WAAK,EAAE,WAAW,kDAA+C,qBAAqB,IAAI;AAAA,QACtF,MAAK,EAAE,WAAW,gDAA6C,mBAAmB,IAAI;AAAA,EAC5F;AAAA;AAAA;AAAA,EAIA,gBAAgB;AACf,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,EAAE,OAAO,WAAW,KAAK,IAAI;AACnC,cAAU,UAAU,GAAG,EAAE,OAAO;AAChC,SAAK,UAAU,GAAG,EAAE,OAAO;AAC3B,cAAU,MAAM,iBAAiB,KAAK;AACtC,UAAM,IAAI,KAAK,SAAS;AACxB,UAAM,KAAK,IAAI,oBAAoB,oBAAoB;AACvD,QAAI,GAAG;AACN,WAAK,SAAS,EAAE,KAAK,CAAC;AACtB,gBACE,OAAO,MAAM,EACb,MAAM,aAAa,MAAM,EACzB,MAAM,SAAS,IAAI,EACnB,MAAM,UAAU,SAAS,EACzB,KAAK,OAAO,EACZ,GAAG,SAAS,MAAM;AAClB,aAAK,SAAS,MAAM;AACpB,aAAK,iBAAiB;AAAA,MACvB,CAAC;AAAA,IACH;AACA,UAAM,OAAO,KACX,OAAO,KAAK,EACZ,MAAM,cAAc,GAAG,OAAO,GAAG,IAAI,EACrC,MAAM,cAAc,MAAM;AAC5B,QAAI,CAAC,GAAG;AACP,WACE,OAAO,KAAK,EACZ,MAAM,aAAa,QAAQ,EAC3B,MAAM,SAAS,UAAU,EACzB,MAAM,WAAW,OAAO,EACxB,KAAK,iGAAiG;AAAA,IACzG;AACA,eAAW,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU;AACpC,YAAM,OAAO,EACX,UAAU,EACV,QAAQ,EACR,MAAM,CAAC,EACP,IAAI,CAAC,MAAa,EAAE,KAAK,IAAI;AAC/B,YAAM,MAAM,KACV,OAAO,KAAK,EACZ,MAAM,WAAW,MAAM,EACvB,MAAM,eAAe,QAAQ,EAC7B,MAAM,OAAO,KAAK,EAClB,MAAM,WAAW,SAAS,EAC1B,MAAM,UAAU,OAAO,EACvB,MAAM,iBAAiB,KAAK,EAC5B,GAAG,cAAc,CAAC,UAAe;AACjC,uBAAO,MAAM,aAAa,EAAE,MAAM,cAAc,SAAS,EAAE,OAAO,uBAAuB,EAAE,MAAM,WAAW,CAAC;AAAA,MAC9G,CAAC,EACA,GAAG,cAAc,CAAC,UAAe;AACjC,uBAAO,MAAM,aAAa,EACxB,MAAM,cAAc,aAAa,EACjC,OAAO,uBAAuB,EAC9B,MAAM,WAAW,CAAC;AAAA,MACrB,CAAC;AACF,YAAM,KAAK,EAAE,KAAK,MAAM,KAAK,SAAS,MAAM,CAAC,GAAG,EAAE;AAClD,YAAM,OAAO,IAAI,OAAO,KAAK,EAAE,MAAM,QAAQ,UAAU,EAAE,MAAM,aAAa,GAAG,EAAE,MAAM,eAAe,KAAK;AAC3G,WACE,OAAO,KAAK,EACZ,MAAM,aAAa,OAAO,EAC1B,MAAM,SAAS,SAAS,EACxB,MAAM,YAAY,QAAQ,EAC1B,MAAM,iBAAiB,UAAU,EACjC,MAAM,eAAe,QAAQ,EAC7B,KAAK,SAAS,KAAK,KAAK,UAAK,CAAC,EAC9B,KAAK,KAAK,KAAK,UAAK,CAAC;AACvB,WACE,OAAO,KAAK,EACZ,MAAM,aAAa,OAAO,EAC1B,MAAM,SAAS,SAAS,EACxB,KAAK,KAAK,SAAS,SAAS,EAAE,SAAS,CAAC,CAAC;AAC3C,UACE,OAAO,MAAM,EACb,KAAK,SAAS,sBAAsB,EACpC,MAAM,WAAW,CAAC,EAClB,MAAM,UAAU,SAAS,EACzB,MAAM,SAAS,SAAS,EACxB,MAAM,aAAa,QAAQ,EAC3B,KAAK,SAAS,QAAQ,EACtB,KAAK,QAAG,EACR,GAAG,SAAS,MAAM;AAClB,aAAK,SAAS,OAAO,EAAE;AACvB,aAAK,iBAAiB;AAAA,MACvB,CAAC;AAAA,IACH;AAEA,UAAM,QAAQ,KAAK,cAAc;AACjC,QAAI,EAAG,MAAK,KAAK,WAAW,MAAM,KAAK;AAEvC,UAAM,SAAS,KACb,OAAO,KAAK,EACZ,MAAM,cAAc,MAAM,EAC1B,MAAM,eAAe,MAAM,EAC3B,MAAM,cAAc,aAAa,IAAI,EAAE;AACzC,SAAK,QAAQ,EAAE,QAAQ,KAAK,CAAC,EAC3B,KAAK,eAAe,4BAA4B,EAChD,SAAS,YAAY,MAAM,CAAC,EAC5B,MAAM,WAAW,IAAI,IAAI,GAAG,EAC5B,MAAM,UAAU,IAAI,YAAY,SAAS,EACzC,KAAK,IAAI,mBAAmB,KAAK,SAAS,SAAS,KAAK,CAAC,KAAK,cAAc,EAC5E,GAAG,SAAS,MAAM,KAAK,YAAY,CAAC;AACtC,QAAI,KAAK,aAAa;AACrB,aACE,OAAO,KAAK,EACZ,MAAM,aAAa,OAAO,EAC1B,MAAM,SAAS,UAAU,EACzB,MAAM,cAAc,KAAK,EACzB,KAAK,KAAK,WAAW;AAAA,IACxB;AAAA,EACD;AAAA;AAAA;AAAA,EAIA,MAAM,WAAW,MAAW,OAAe;AAC1C,UAAM,MAAM,KACV,OAAO,KAAK,EACZ,KAAK,eAAe,0BAA0B,EAC9C,MAAM,cAAc,MAAM,EAC1B,MAAM,eAAe,MAAM,EAC3B,MAAM,cAAc,aAAa,IAAI,EAAE;AACzC,QAAI,CAAC,KAAK,WAAW;AACpB,WAAK,KAAK,EAAE,QAAQ,KAAK,CAAC,EACxB,KAAK,eAAe,yBAAyB,EAC7C,MAAM,UAAU,SAAS,EACzB,KAAK,qBAAqB,EAC1B,GAAG,SAAS,MAAM;AAClB,aAAK,YAAY;AACjB,aAAK,cAAc;AAAA,MACpB,CAAC;AACF;AAAA,IACD;AACA,UAAM,KAAK,EAAE,KAAK;AAClB,UAAM,OAAO,IACX,OAAO,KAAK,EACZ,MAAM,WAAW,MAAM,EACvB,MAAM,mBAAmB,eAAe,EACxC,MAAM,eAAe,QAAQ,EAC7B,MAAM,OAAO,KAAK,EAClB,MAAM,iBAAiB,KAAK;AAC9B,SACE,OAAO,MAAM,EACb,KAAK,eAAe,0BAA0B,EAC9C,MAAM,eAAe,QAAQ,EAC7B,MAAM,aAAa,QAAQ,EAC3B,MAAM,eAAe,GAAG,EACxB,MAAM,SAAS,SAAS,EACxB,KAAK,sBAAsB,KAAK,SAAS,SAAS,KAAK,CAAC,CAAC;AAE3D,SACE,OAAO,QAAQ,EACf,KAAK,eAAe,yBAAyB,EAC7C,MAAM,QAAQ,UAAU,EACxB,MAAM,aAAa,MAAM,EACzB,MAAM,WAAW,UAAU,EAC3B,MAAM,UAAU,aAAa,IAAI,EAAE,EACnC,MAAM,iBAAiB,MAAM,EAC7B,MAAM,cAAc,OAAO,EAC3B,MAAM,SAAS,IAAI,EACnB,MAAM,UAAU,SAAS,EACzB,KAAK,aAAQ,EACb,GAAG,SAAS,MAAM,KAAK,SAAS,CAAC;AACnC,UAAM,OAAO,IAAI,OAAO,KAAK,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,QAAQ,EAAE,MAAM,SAAS,UAAU;AACzG,QAAI;AACH,YAAM,WAAW,KAAK,IAAI,SAAS;AACnC,YAAM,aAAa,SAAS,cAAc,CAAC;AAC3C,YAAM,SAAS,WAAW,CAAC,KAAK,WAAW,GAAG,WAAW,MAAM,EAAE,OAAO,OAAK,GAAG,KAAK,MAAM,CAAC;AAC5F,YAAM,SAAS,CAAC,EAAE,MAAM,aAAa,OAAO,CAAC;AAC7C,YAAM,MAAM,MAAM;AAAA,QACjB,KAAK,IAAI;AAAA,QACT;AAAA,QACA,WAAW;AAAA,QACX,mBAAmB,QAAQ;AAAA,MAC5B;AACA,UAAI,MAAM,KAAK,OAAQ;AACvB,WAAK,KAAK,EAAE,EAAE,MAAM,SAAS,IAAI;AAEjC,YAAM,WAAW,qBAAqB,KAAK,CAAC,iBAAiB,CAAC;AAC9D,UAAI,CAAC,SAAS,QAAQ;AACrB,aAAK,MAAM,SAAS,UAAU,EAAE,KAAK,qBAAqB,KAAK,KAAK,IAAI,EAAE;AAC1E;AAAA,MACD;AACA,iBAAW,WAAW,UAAU;AAC/B,YAAI,QAAQ,OAAO;AAClB,eACE,OAAO,KAAK,EACZ,KAAK,eAAe,yBAAyB,QAAQ,GAAG,EAAE,EAC1D,MAAM,UAAU,aAAa,EAC7B,MAAM,WAAW,OAAO,EACxB,MAAM,aAAa,MAAM,EACzB,MAAM,eAAe,GAAG,EACxB,MAAM,kBAAkB,OAAO,EAC/B,MAAM,kBAAkB,WAAW,EACnC,MAAM,SAAS,UAAU,EACzB,KAAK,QAAQ,KAAK;AAAA,QACrB;AACA,mBAAW,OAAO,QAAQ,MAAM;AAC/B,gBAAM,SAAS,KAAK,SAAS,GAAG;AAChC,eAAK,QAAQ,MAAM,KAAK,CAAC,CAAC,QAAQ,OAAO,MAAM;AAAA,QAChD;AAAA,MACD;AAAA,IACD,SAAS,GAAQ;AAChB,UAAI,MAAM,KAAK,OAAQ;AACvB,WAAK,KAAK,SAAS,cAAc,EAAE,KAAK,GAAG,WAAW,OAAO,CAAC,CAAC;AAAA,IAChE;AAAA,EACD;AAAA,EAEA,WAAW;AACV,SAAK,YAAY;AAEjB,SAAK;AACL,SAAK,cAAc;AAAA,EACpB;AAAA;AAAA;AAAA,EAIA,QAAQ,MAAW,KAAsB,WAAoB,QAAc;AAC1E,UAAM,IAAI,IAAI,OAAO,CAAC,KAAK;AAC3B,UAAM,MAAM,KACV,OAAO,KAAK,EACZ,KAAK,eAAe,sBAAsB,IAAI,QAAQ,SAAS,KAAK,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE,EAC9F,MAAM,WAAW,MAAM,EACvB,MAAM,mBAAmB,eAAe,EACxC,MAAM,OAAO,KAAK,EAClB,MAAM,WAAW,eAAe,YAAY,KAAK,CAAC,IAAI,EACtD,MAAM,UAAU,OAAO,EACvB,MAAM,iBAAiB,KAAK,EAC5B,MAAM,SAAS,SAAS;AAC1B,QAAI,OAAO,MAAM,EAAE,KAAK,IAAI,KAAK;AACjC,QACE,OAAO,MAAM,EACb,MAAM,eAAe,QAAQ,EAC7B,MAAM,SAAS,SAAS,OAAO,IAAI,EACnC,KAAK,GAAG,EAAE,eAAe,CAAC,GAAG,IAAI,OAAO,MAAM,IAAI,OAAO,EAAE,GAAG,SAAS,YAAO,EAAE,EAAE;AACpF,QAAI,CAAC,OAAQ;AACb,QACE,KAAK,QAAQ,QAAQ,EACrB,KAAK,YAAY,CAAC,EAClB,KAAK,SAAS,YAAY,IAAI,KAAK,aAAa,KAAK,KAAK,IAAI,EAAE,EAChE,MAAM,UAAU,SAAS,EACzB,GAAG,cAAc,CAAC,UAAe,eAAO,MAAM,aAAa,EAAE,MAAM,cAAc,SAAS,CAAC,EAC3F,GAAG,cAAc,CAAC,UAAe,eAAO,MAAM,aAAa,EAAE,MAAM,cAAc,aAAa,CAAC,EAC/F,GAAG,SAAS,MAAM,KAAK,WAAW,MAAM,CAAC,EACzC,GAAG,WAAW,CAAC,UAAyB;AACxC,UAAI,MAAM,OAAO,WAAW,MAAM,OAAO,KAAK;AAC7C,cAAM,eAAe;AACrB,aAAK,WAAW,MAAM;AAAA,MACvB;AAAA,IACD,CAAC;AAAA,EACH;AAAA;AAAA;AAAA,EAIA,aAAqB;AACpB,UAAM,UAAU,CAAC,gBAAgB,KAAK,cAAc,GAAG,KAAK,KAAK,GAAG,KAAK,WAAW;AACpF,WAAO,WAAW,QAAQ,OAAO,OAAK,GAAG,KAAK,MAAM,CAAC;AAAA,EACtD;AAAA;AAAA;AAAA,EAIA,SAAS,KAA2B;AACnC,UAAM,SAAS,KAAK,WAAW;AAC/B,UAAM,IAAI,KAAK,IAAI,SAAS,cAAc,WAAW,CAAC;AAEtD,QAAI,IAAI,QAAQ;AACf,aAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAClC;AAAA,QACA,WAAW;AAAA,QACX;AAAA;AAAA;AAAA,QAGA,GAAI,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,gBAAgB,EAAE,QAAQ,GAAG,OAAO,KAAK,EAAE,IAAI,CAAC;AAAA,MAClF,IACA;AAEJ,QAAI,IAAI,QAAQ,WAAY,QAAO,EAAE,WAAW,YAAY,MAAM,EAAE,IAAI,IAAI,IAAI,GAAG,OAAO;AAE1F,QAAI,IAAI,OAAO;AACd,aAAO,EAAE,WAAW,gBAAgB,UAAU,UAAU,iBAAiB,aAAa,EAAE,OAAO,EAAE;AAElG,QAAI,IAAI,OAAO,iBAAkB,QAAO,EAAE,WAAW,cAAc,aAAa,EAAE,OAAO,EAAE;AAE3F,QAAI,IAAI,OAAO,SAAU,QAAO,EAAE,WAAW,gBAAgB,OAAO;AAEpE,QAAI,IAAI,OAAO,eAAgB,QAAO,EAAE,WAAW,WAAW,OAAO;AAAA,EACtE;AAAA,EAEA,MAAM,WAAW,QAAa;AAC7B,QAAI;AACH,YAAM,KAAK,eAAe;AAC1B,YAAM,KAAK,IAAI,SAAS,EAAE,MAAM,eAAe,OAAO,CAAC;AAAA,IACxD,SAAS,GAAQ;AAChB,WAAK,IAAI,OAAO,MAAM,WAAW,EAAE,EAAE,KAAK,GAAG,WAAW,OAAO,CAAC,CAAC;AAAA,IAClE;AAAA,EACD;AAAA;AAAA;AAAA,EAIA,cAAc;AACb,UAAM,QAAQ,KAAK,cAAc;AACjC,QAAI,CAAC,MAAM,OAAQ;AACnB,QAAI;AACH,YAAM,OAAO,cAAc,KAAK;AAChC,YAAM,SAAS,KAAK,IAAI,SAAS,EAAE,UAAU,CAAC;AAC9C,YAAM,SAAS,2BAA2B,CAAC,KAAK,aAAa,gBAAgB,OAAO,KAAK,KAAK,CAAC,CAAC;AAChG,kBAAY,KAAK,KAAK,QAAQ,QAAQ,IAAI;AAC1C,WAAK,SAAS,MAAM;AACpB,WAAK,cAAc,UAAU,IAAI;AACjC,WAAK,iBAAiB;AAAA,IACvB,SAAS,GAAQ;AAChB,WAAK,IAAI,OAAO,MAAM,WAAW,EAAE,EAAE,KAAK,GAAG,WAAW,OAAO,CAAC,CAAC;AAAA,IAClE;AAAA,EACD;AAAA,EAEA,UAAU;AACT,SAAK,UAAU,QAAQ;AAAA,EACxB;AACD;AAKA,SAAS,QAAQ,IAAiB;AACjC,QAAM,SAAS,GAAG,KAAK,UAAU,CAAC;AAClC,QAAM,SAAS,OAAO,KAAK,GAAG,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,OAAK,CAAC,OAAO,CAAC,GAAG,YAAY;AACvF,SAAO,MAAM,SAAS,iBAAiB,EAAE,GAAG,GAAG,KAAK,IAAI;AACzD;AAGA,eAAe,cAAc,MAAkD;AAC9E,QAAM,MAAW,MAAM,SAAS,mBAAmB,EAAE,KAAK,CAAC;AAC3D,MAAI,KAAK,MAAO,OAAM,IAAI;AAC1B,MAAI,CAAC,KAAK,MAAO,OAAM;AACvB,SAAO;AACR;;;ACpsBA,IAAM,WAAN,MAAM,kBAAiB,SAAgC;AAAA,EAUtD,YAAY,MAAW,KAAmB;AACzC,UAAM,MAAM,GAAG;AAPhB,iBAAe,CAAC;AAEhB;AAAA,sBAAa;AAEb;AAAA,qBAAuC,CAAC;AAIvC,SAAK,OAAO,UAAS;AACrB,QAAI,KAAK,KAAK;AACb,WAAK,KAAK,OAAO,MAAM,gBAAgB,KAAK,EAAE,MAAM,SAAS,iBAAiB,EAAE,KAAK,UAAU;AAAA,EACjG;AAAA,EAdA;AAAA,SAAO,OAAO;AAAA;AAAA,EAgBd,SAAS,UAAe;AACvB,UAAM,SAAS,SAAS,MAAM,KAAK,CAAC,MAAW,EAAE,OAAO,KAAK,EAAE;AAC/D,QAAI,CAAC,OAAQ,OAAM,oBAAoB,KAAK,EAAE;AAC9C,WAAO;AAAA,MACN;AAAA;AAAA,MAEA,YAAY,sBAAsB,UAAU,OAAO,MAAM;AAAA,MACzD,QAAQ,SAAS,MAAM;AAAA,MACvB,SAAS,SAAS,MAAM;AAAA,MACxB,UAAU,SAAS,cAAc,YAAY,CAAC;AAAA,IAC/C;AAAA,EACD;AAAA,EAEA,MAAM,OAAO;AAEZ,UAAM,SAAS,KAAK,KAAK,OACvB,OAAO,KAAK,EACZ,KAAK,eAAe,sBAAsB,EAC1C,MAAM,eAAe,QAAQ,EAC7B,MAAM,WAAW,MAAM;AACzB,SAAK,QAAQ,IAAI,cAAc,EAAE,QAAQ,KAAK,KAAK,IAAI,CAAC;AAExD,SAAK,MAAM,IAAI,MAAM,IACnB,OAAO,OAAO,EACd,KAAK,0EAA0E;AAAA,EAClF;AAAA,EAEA,MAAM,OAAO;AACZ,UAAM,SAAS,KAAK,MAAM;AAC1B,SAAK,QAAQ,OAAO,SAAS,CAAC;AAC9B,UAAM,KAAK,YAAY;AACvB,UAAM,KAAK,MAAM;AAAA,MAChB;AAAA,QACC,QAAQ,KAAK,MAAM;AAAA,QACnB,SAAS,KAAK,MAAM;AAAA,QACpB,OAAO,KAAK;AAAA,QACZ,YAAY,KAAK,MAAM;AAAA,QACvB,aAAa,OAAO;AAAA,QACpB,QAAQ,KAAK,MAAM,SAAS;AAAA,MAC7B;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,cAAc;AACnB,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAS,KAAK,MAAM,YAAY;AACtC,UAAM,MAAM,KAAK,UAAU,MAAM,IAAI,QAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;AAC1D,QAAI,OAAO,KAAK,YAAY;AAC3B,YAAM,QAAQ,IAAI,KAAK,UAAU,IAAI,CAAC,EAAE,MAAAA,OAAM,IAAI,MAAMA,MAAK,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;AACtF;AAAA,IACD;AACA,SAAK,aAAa;AAClB,SAAK,YAAY,CAAC;AAClB,SAAK,MAAM,IAAI,MAAM,KAAK,UAAU,GAAG,EAAE,OAAO;AAChD,UAAM,gBAAgB,MAAM,IAAI,QAAM,GAAG,IAAI;AAC7C,UAAM,cAAc,KAAK,IAAI,SAAS,cAAc;AACpD,UAAM,OAAO,CAAC,QAAe,KAAK,IAAI,SAAS,EAAE,MAAM,aAAa,IAAI,KAAK,IAAI,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;AACzG,eAAW,CAAC,GAAG,EAAE,KAAK,MAAM,QAAQ,GAAG;AACtC,YAAM,UAAU,KAAK,MACnB,SAAS,CAAC,EACV,OAAO,KAAK,EACZ,KAAK,SAAS,wBAAwB,EACtC,MAAM,aAAa,GAAG,EACtB,MAAM,YAAY,QAAQ,EAC1B,MAAM,eAAe,QAAQ,EAC7B,MAAM,aAAa,MAAM,EACzB,MAAM,iBAAiB,UAAU,EACjC,KAAK,SAAS,GAAG,KAAK,IAAI;AAC5B,YAAM,SAAS,MAAM,OAAO,CAAC,GAAG,MAAM,KAAK,CAAC;AAC5C,YAAM,IAAI,MAAM,KAAK;AAAA,QACpB;AAAA,QACA,WAAS;AACR,gBAAM,MAAM,MAAM,MAAM;AACxB,cAAI,OAAO,KAAM,KAAI,CAAC,IAAI;AAAA,cACrB,KAAI,OAAO,GAAG,CAAC;AACpB,eAAK,GAAG;AAAA,QACT;AAAA,QACA,mBAAmB,QAAQ,WAAW;AAAA,MACvC;AACA,WAAK,UAAU,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,cAAc,EAAE,CAAC;AAAA,IAC7F;AACA,UAAM,SAAS,KAAK,MAClB,QAAQ,MAAM,MAAM,EACpB,MAAM,cAAc,KAAK,EACzB,OAAO,KAAK,EACZ,MAAM,eAAe,MAAM;AAC7B,UAAM,MAAM,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,WAAS;AACR,YAAI,OAAO,KAAM,MAAK,CAAC,GAAG,OAAO,KAAK,CAAC;AAAA,MACxC;AAAA,MACA,mBAAmB,OAAO,WAAW;AAAA,MACrC;AAAA,IACD;AACA,SAAK,UAAU,KAAK,EAAE,MAAM,KAAK,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,cAAc,EAAE,CAAC;AAC9E,UAAM,QAAQ,IAAI,KAAK,UAAU,IAAI,CAAC,EAAE,MAAAA,OAAM,IAAI,MAAMA,MAAK,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC;AACtF,SAAK,MAAM,eAAe;AAAA,EAC3B;AAAA;AAAA,EAGA,MAAM,SAAS,QAAa,UAA6B,aAAwB,aAAsB;AACtG,WAAO,MAAM,gBAAgB;AAAA,MAC5B;AAAA,MACA,UAAU,KAAK,IAAI;AAAA,MACnB,SAAS,EAAE,QAAQ,YAAY,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC,EAAG;AAAA;AAAA,MAEvE,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,wBAAwB,CAAC,UAAU;AAAA,MACnC,iBAAiB,EAAE,SAAS,EAAE,MAAM,WAAW,EAAE;AAAA,MACjD,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC;AAAA,MACrC,OAAO,KAAK,IAAI,KAAK;AAAA,MACrB;AAAA,IACD,CAAC;AAAA,EACF;AAAA,EAEA,UAAU;AACT,SAAK,OAAO,QAAQ;AAAA,EACrB;AACD;AAIA,eAAsB,cAAc,MAAW,KAAU;AACxD,QAAM,SAAc;AAAA,IACnB,WAAW;AAAA,IACX,UAAU,CAAC;AAAA,EACZ;AACA,YAAU,QAAQ,IAAI;AAEtB,MAAI,CAAC,OAAO,MAAO,QAAO,QAAQ,gBAAgB,IAAI,SAAS,cAAc,UAAU,SAAS,CAAC,CAAC;AAClG,SAAO,QAAQ,MAAM,QAAQ;AAAA,IAC5B,OAAO,MAAM,IAAI,CAAC,OAAY,gBAAgB,IAAI,IAAI,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,EAAE,CAAQ,CAAC;AAAA,EAC1G;AACA,SAAO;AACR;AAEO,IAAM,eAAe,YAAY,QAAQ;AAEzC,IAAM,gBAAgB;",
|
|
6
|
-
"names": ["pill"]
|
|
7
|
-
}
|
package/dist/chunk-MRZUZDRA.js
DELETED
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
schemeCategory20
|
|
3
|
-
} from "./chunk-V2OJLJSK.js";
|
|
4
|
-
import {
|
|
5
|
-
isNumericTerm
|
|
6
|
-
} from "./chunk-T2W4JHWJ.js";
|
|
7
|
-
import {
|
|
8
|
-
category10_default,
|
|
9
|
-
dtcnv,
|
|
10
|
-
dtsnvindel
|
|
11
|
-
} from "./chunk-2N345NXD.js";
|
|
12
|
-
import {
|
|
13
|
-
linear,
|
|
14
|
-
ordinal
|
|
15
|
-
} from "./chunk-4OLM3KSB.js";
|
|
16
|
-
import {
|
|
17
|
-
__export
|
|
18
|
-
} from "./chunk-HS5PO5ZQ.js";
|
|
19
|
-
|
|
20
|
-
// plots/matrix/matrix.legend.js
|
|
21
|
-
var matrix_legend_exports = {};
|
|
22
|
-
__export(matrix_legend_exports, {
|
|
23
|
-
CNVkey2order: () => CNVkey2order,
|
|
24
|
-
getLegendData: () => getLegendData,
|
|
25
|
-
getLegendItemText: () => getLegendItemText
|
|
26
|
-
});
|
|
27
|
-
function getLegendData(legendGroups, refs, self) {
|
|
28
|
-
const s = this.settings.matrix;
|
|
29
|
-
const legendData = [];
|
|
30
|
-
const dvt = this.config.divideBy || {};
|
|
31
|
-
const dvtId = dvt && "id" in dvt ? dvt.id : dvt.name;
|
|
32
|
-
for (const $id in legendGroups) {
|
|
33
|
-
const legend = legendGroups[$id];
|
|
34
|
-
if ($id == "Consequences") {
|
|
35
|
-
for (const f of this.config.legendValueFilter.lst) {
|
|
36
|
-
if (f.tvs.term.type !== "geneVariant") continue;
|
|
37
|
-
if (f.legendGrpName != $id) continue;
|
|
38
|
-
if (f.tvs.legendFilterType == "geneVariant_soft" && f.filteredOutCats.length == 0) {
|
|
39
|
-
continue;
|
|
40
|
-
}
|
|
41
|
-
for (const v of f.tvs.values) {
|
|
42
|
-
for (const key of v.mclasslst) {
|
|
43
|
-
const legendk = v.origin ? v.origin + key : key;
|
|
44
|
-
legend.values[legendk] = {
|
|
45
|
-
key,
|
|
46
|
-
dt: v.dt,
|
|
47
|
-
origin: v.origin,
|
|
48
|
-
label: v.label || self.mclass[key].label,
|
|
49
|
-
fill: v.color || self.mclass[key]?.color,
|
|
50
|
-
order: CNVkey2order(key),
|
|
51
|
-
crossedOut: f.tvs.legendFilterType == "geneVariant_hard" ? true : false,
|
|
52
|
-
greyedOut: f.tvs.legendFilterType == "geneVariant_soft" ? true : false
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const keys2 = Object.keys(legend.values);
|
|
58
|
-
if (!keys2.length) continue;
|
|
59
|
-
legendData.unshift({
|
|
60
|
-
name: "Consequences",
|
|
61
|
-
order: legend.order,
|
|
62
|
-
$id: legend.$id,
|
|
63
|
-
dt: legend.dt,
|
|
64
|
-
origin: legend.origin,
|
|
65
|
-
items: keys2.map((key, i) => {
|
|
66
|
-
const item = legend.values[key];
|
|
67
|
-
const count = item.samples?.size;
|
|
68
|
-
return {
|
|
69
|
-
termid: "Consequences",
|
|
70
|
-
key: item.key,
|
|
71
|
-
text: this.getLegendItemText(item, count, {}, s),
|
|
72
|
-
color: item.fill,
|
|
73
|
-
order: i,
|
|
74
|
-
border: "1px solid #ccc",
|
|
75
|
-
count,
|
|
76
|
-
isLegendItem: true,
|
|
77
|
-
dt: item.dt,
|
|
78
|
-
crossedOut: item.crossedOut,
|
|
79
|
-
greyedOut: item.greyedOut,
|
|
80
|
-
origin: item.origin
|
|
81
|
-
};
|
|
82
|
-
})
|
|
83
|
-
});
|
|
84
|
-
legendData[0].items.sort((a, b) => a.text < b.text ? -1 : 1);
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
const t = $id == dvtId ? { tw: dvt } : this.termOrder.find((t2) => t2.tw.$id == $id || t2.tw.legend?.group == $id) || {
|
|
88
|
-
tw: { term: { id: $id, name: $id, type: $id === "CNV" ? "geneVariant" : "" } }
|
|
89
|
-
};
|
|
90
|
-
for (const f of this.config.legendValueFilter.lst) {
|
|
91
|
-
const name = t.tw.legend?.group || t.tw.label || t.tw.term.name;
|
|
92
|
-
if (f.legendGrpName != $id && f.legendGrpName != name && f.tvs.term.name != name) continue;
|
|
93
|
-
if (f.tvs.term.type == "geneVariant") {
|
|
94
|
-
for (const v of f.tvs.values) {
|
|
95
|
-
if (legend.dt && !legend.dt.includes(v.dt)) legend.dt.push(v.dt);
|
|
96
|
-
if (f.tvs.legendFilterType == "geneVariant_soft" && f.filteredOutCats.length == 0) {
|
|
97
|
-
continue;
|
|
98
|
-
}
|
|
99
|
-
for (const key of v.mclasslst) {
|
|
100
|
-
const legendk = v.origin ? v.origin + key : key;
|
|
101
|
-
legend.values[legendk] = {
|
|
102
|
-
key,
|
|
103
|
-
dt: v.dt,
|
|
104
|
-
origin: v.origin,
|
|
105
|
-
label: v.label || self.mclass[key]?.label || "Gain and loss",
|
|
106
|
-
fill: v.color || self.mclass[key]?.color,
|
|
107
|
-
order: CNVkey2order(key),
|
|
108
|
-
crossedOut: f.tvs.legendFilterType == "geneVariant_hard" ? true : false,
|
|
109
|
-
greyedOut: f.tvs.legendFilterType == "geneVariant_soft" ? true : false
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
} else {
|
|
114
|
-
if (isNumericTerm(f.tvs.term)) {
|
|
115
|
-
if (t.ref?.bins) {
|
|
116
|
-
for (const v of f.tvs.ranges) {
|
|
117
|
-
const termValues = t.ref.bins;
|
|
118
|
-
legend.values[v.name] = {
|
|
119
|
-
key: v.name,
|
|
120
|
-
label: termValues?.find((vl) => vl.name == v.name)?.name || v.name,
|
|
121
|
-
fill: termValues?.find((vl) => vl.name == v.name)?.color,
|
|
122
|
-
crossedOut: true
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
} else if (f.tvs.term.type == "survival") {
|
|
127
|
-
for (const v of f.tvs.values) {
|
|
128
|
-
const termValues = t.tw.term.values;
|
|
129
|
-
legend.values[v.key] = {
|
|
130
|
-
key: v.key,
|
|
131
|
-
label: termValues?.[v.key]?.label || "Exit code: " + v.key,
|
|
132
|
-
fill: v.key == 1 ? "#ff7f0e" : "#1f77b4",
|
|
133
|
-
crossedOut: true
|
|
134
|
-
};
|
|
135
|
-
}
|
|
136
|
-
} else {
|
|
137
|
-
for (const v of f.tvs.values) {
|
|
138
|
-
const termValues = t.tw.term.values;
|
|
139
|
-
legend.values[v.key] = {
|
|
140
|
-
key: v.key,
|
|
141
|
-
label: termValues?.[v.key]?.label || v.key,
|
|
142
|
-
fill: termValues?.[v.key]?.color,
|
|
143
|
-
crossedOut: true
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
const keys = Object.keys(legend.values).sort();
|
|
150
|
-
const hasScale = Object.values(legend.values).find((v) => v.scale);
|
|
151
|
-
if (hasScale) {
|
|
152
|
-
if (legend === legendGroups?.CNV) {
|
|
153
|
-
const gain = legend.values["CNV_amp"];
|
|
154
|
-
const loss = legend.values["CNV_loss"];
|
|
155
|
-
if (gain?.scale && loss?.scale) {
|
|
156
|
-
const colors = loss.scales?.legend.range;
|
|
157
|
-
const domain = loss.scales?.legend.domain;
|
|
158
|
-
const setLegendAttr = (item) => {
|
|
159
|
-
return {
|
|
160
|
-
$id,
|
|
161
|
-
domain: item.scales.legend.domain,
|
|
162
|
-
key: item.key,
|
|
163
|
-
isLegendItem: true,
|
|
164
|
-
minLabel: domain[0],
|
|
165
|
-
//item.minLoss, // item.maxLabel,
|
|
166
|
-
maxLabel: domain.slice(-1)[0],
|
|
167
|
-
//item.maxGain, // item.maxLabel,
|
|
168
|
-
scale: item.scale,
|
|
169
|
-
termid: "CNV"
|
|
170
|
-
};
|
|
171
|
-
};
|
|
172
|
-
const numericInputs = {
|
|
173
|
-
cutoffMode: s.cnvValues.cutoffMode,
|
|
174
|
-
defaultPercentile: s.cnvValues.defaultPercentile,
|
|
175
|
-
percentile: s.cnvValues.percentile,
|
|
176
|
-
callback: async (obj) => {
|
|
177
|
-
const cValues = self.config.settings.matrix.cnvValues;
|
|
178
|
-
if (obj.cutoffMode == "fixed") {
|
|
179
|
-
if (cValues.min == null) cValues.min = domain[0];
|
|
180
|
-
if (cValues.max == null) cValues.max = domain[domain.length - 1];
|
|
181
|
-
if (obj.min != cValues.min) obj.max = Math.abs(obj.min);
|
|
182
|
-
else obj.min = -obj.max;
|
|
183
|
-
}
|
|
184
|
-
self.config.settings.matrix.cnvValues = {
|
|
185
|
-
defaultPercentile: self.config.settings.matrix.cnvValues.defaultPercentile,
|
|
186
|
-
cutoffMode: obj.cutoffMode,
|
|
187
|
-
min: obj.min,
|
|
188
|
-
max: obj.max,
|
|
189
|
-
percentile: obj.percentile
|
|
190
|
-
};
|
|
191
|
-
await self.app.dispatch({
|
|
192
|
-
type: "plot_edit",
|
|
193
|
-
id: self.opts.id,
|
|
194
|
-
config: self.config
|
|
195
|
-
});
|
|
196
|
-
}
|
|
197
|
-
};
|
|
198
|
-
legend.values.CNV_gain_loss = {
|
|
199
|
-
key: $id,
|
|
200
|
-
label: "Gain and Loss",
|
|
201
|
-
dt: dtcnv,
|
|
202
|
-
order: -1,
|
|
203
|
-
domain,
|
|
204
|
-
name: "CNV gain/loss",
|
|
205
|
-
scale: linear().domain(domain).range(colors),
|
|
206
|
-
scales: loss.scales,
|
|
207
|
-
//Prevent the colors and domain recalculating below
|
|
208
|
-
minLabel: domain[0],
|
|
209
|
-
//loss.maxLabel,
|
|
210
|
-
maxLabel: domain.slice(-1)[0],
|
|
211
|
-
labels: { left: "Loss", right: "Gain" },
|
|
212
|
-
parents: [Object.assign(setLegendAttr(loss), loss), Object.assign(setLegendAttr(gain), gain)],
|
|
213
|
-
samples: /* @__PURE__ */ new Set([...gain.samples, ...loss.samples]),
|
|
214
|
-
numericInputs
|
|
215
|
-
};
|
|
216
|
-
delete legend.values[gain.key];
|
|
217
|
-
delete legend.values[loss.key];
|
|
218
|
-
keys.splice(keys.indexOf(gain.key), 1);
|
|
219
|
-
keys.splice(keys.indexOf(loss.key), 1);
|
|
220
|
-
keys.push("CNV_gain_loss");
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
const legendGrpLabelMaxChars = s.legendGrpLabelMaxChars || 26;
|
|
224
|
-
legendData.push({
|
|
225
|
-
name: $id.length < legendGrpLabelMaxChars ? $id : $id.slice(0, legendGrpLabelMaxChars) + "...",
|
|
226
|
-
//name:$id,
|
|
227
|
-
order: legend.order,
|
|
228
|
-
$id: legend.$id,
|
|
229
|
-
dt: legend.dt,
|
|
230
|
-
origin: legend.origin,
|
|
231
|
-
hasScale,
|
|
232
|
-
items: keys.map((key, i) => {
|
|
233
|
-
const item = legend.values[key];
|
|
234
|
-
const count = item.samples?.size;
|
|
235
|
-
if (item.scale) {
|
|
236
|
-
const colors = item.scales?.legend?.range || getColors(item);
|
|
237
|
-
const domain = item.scales?.legend?.domain || setColorScaleDomain(item.minLabel, item.maxLabel, item.domain, colors);
|
|
238
|
-
const opts = {
|
|
239
|
-
termid: $id,
|
|
240
|
-
key: item.key,
|
|
241
|
-
text: this.getLegendItemText(item, count, t, s),
|
|
242
|
-
width: 100,
|
|
243
|
-
scale: item.scale,
|
|
244
|
-
colors,
|
|
245
|
-
domain,
|
|
246
|
-
order: "order" in item ? item.order : i,
|
|
247
|
-
count,
|
|
248
|
-
isLegendItem: true,
|
|
249
|
-
dt: item.dt,
|
|
250
|
-
crossedOut: item.crossedOut,
|
|
251
|
-
greyedOut: item.greyedOut,
|
|
252
|
-
origin: item.origin,
|
|
253
|
-
parents: item.parents,
|
|
254
|
-
labels: item.labels
|
|
255
|
-
};
|
|
256
|
-
if (item.numericInputs) {
|
|
257
|
-
opts.numericInputs = item.numericInputs;
|
|
258
|
-
}
|
|
259
|
-
return opts;
|
|
260
|
-
} else {
|
|
261
|
-
return {
|
|
262
|
-
termid: $id,
|
|
263
|
-
key: item.key,
|
|
264
|
-
text: this.getLegendItemText(item, count, t, s),
|
|
265
|
-
color: item.fill || this.colorScaleByTermId[$id](key),
|
|
266
|
-
order: "order" in item ? item.order : i,
|
|
267
|
-
count,
|
|
268
|
-
isLegendItem: true,
|
|
269
|
-
dt: item.dt,
|
|
270
|
-
crossedOut: item.crossedOut,
|
|
271
|
-
greyedOut: item.greyedOut,
|
|
272
|
-
origin: item.origin
|
|
273
|
-
};
|
|
274
|
-
}
|
|
275
|
-
})
|
|
276
|
-
});
|
|
277
|
-
} else {
|
|
278
|
-
const grp = $id;
|
|
279
|
-
const term = t.tw.term;
|
|
280
|
-
const ref = legend.ref;
|
|
281
|
-
if (ref.bins)
|
|
282
|
-
keys.sort((a, b) => ref.bins.findIndex((bin) => bin.name === a) - ref.bins.findIndex((bin) => bin.name === b));
|
|
283
|
-
else if (ref.keyOrder) keys.sort((a, b) => ref.keyOrder.indexOf(a) - ref.keyOrder.indexOf(b));
|
|
284
|
-
if (!this.colorScaleByTermId[grp])
|
|
285
|
-
this.colorScaleByTermId[grp] = keys.length < 11 ? ordinal(category10_default) : ordinal(schemeCategory20);
|
|
286
|
-
const name = t.tw.legend?.group || t.tw.label || term.name;
|
|
287
|
-
const legendGrpLabelMaxChars = s.legendGrpLabelMaxChars || 26;
|
|
288
|
-
legendData.push({
|
|
289
|
-
name: name.length < legendGrpLabelMaxChars ? name : name.slice(0, legendGrpLabelMaxChars) + "...",
|
|
290
|
-
order: legend.order,
|
|
291
|
-
$id: legend.$id,
|
|
292
|
-
dt: legend.dt,
|
|
293
|
-
origin: legend.origin,
|
|
294
|
-
items: keys.map((key, i) => {
|
|
295
|
-
const item = legend.values[key];
|
|
296
|
-
const count = item.samples?.size;
|
|
297
|
-
return {
|
|
298
|
-
$id,
|
|
299
|
-
termid: term.id || term.name,
|
|
300
|
-
key: item.key,
|
|
301
|
-
text: this.getLegendItemText(item, count, t, s),
|
|
302
|
-
color: t.scale || item.fill || this.colorScaleByTermId[grp](key),
|
|
303
|
-
order: "order" in item ? item.order : i,
|
|
304
|
-
count,
|
|
305
|
-
isExcluded: item.isExcluded,
|
|
306
|
-
//onClickCallback: this.handleLegendItemClick,
|
|
307
|
-
isLegendItem: true,
|
|
308
|
-
dt: item.dt,
|
|
309
|
-
crossedOut: item.crossedOut,
|
|
310
|
-
greyedOut: item.greyedOut,
|
|
311
|
-
origin: item.origin
|
|
312
|
-
};
|
|
313
|
-
})
|
|
314
|
-
});
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
for (const grpFilter of self.config.legendGrpFilter.lst) {
|
|
318
|
-
if (grpFilter.dt.length == 1 && grpFilter.dt[0] == 4 && !legendData.filter((l) => l.dt)?.find((l) => l.dt.length == 1 && l.dt[0] == 4)) {
|
|
319
|
-
legendData.push({
|
|
320
|
-
name: "CNV",
|
|
321
|
-
dt: grpFilter.dt,
|
|
322
|
-
origin: grpFilter.origin,
|
|
323
|
-
crossedOut: true,
|
|
324
|
-
items: grpFilter.filteredOutCats.map((fc) => {
|
|
325
|
-
return {
|
|
326
|
-
dt: 4,
|
|
327
|
-
termid: "CNV",
|
|
328
|
-
origin: grpFilter.origin,
|
|
329
|
-
key: fc,
|
|
330
|
-
text: self.mclass[fc].label,
|
|
331
|
-
color: self.mclass[fc]?.color,
|
|
332
|
-
isLegendItem: true
|
|
333
|
-
};
|
|
334
|
-
})
|
|
335
|
-
});
|
|
336
|
-
} else if (grpFilter.dt.includes(dtsnvindel)) {
|
|
337
|
-
const controlLabels = self.settings.matrix.controlLabels;
|
|
338
|
-
const groupName = grpFilter.origin ? `${grpFilter.origin[0].toUpperCase() + grpFilter.origin.slice(1)} ${controlLabels.Mutations}` : controlLabels.Mutations;
|
|
339
|
-
if (!legendData.filter((l) => l.dt)?.find((l) => l.dt.includes(dtsnvindel) && l.origin == grpFilter.origin)) {
|
|
340
|
-
legendData.push({
|
|
341
|
-
name: groupName,
|
|
342
|
-
dt: grpFilter.dt,
|
|
343
|
-
origin: grpFilter.origin,
|
|
344
|
-
crossedOut: true,
|
|
345
|
-
items: grpFilter.filteredOutCats.map((fc) => {
|
|
346
|
-
return {
|
|
347
|
-
dt: self.mclass[fc].dt,
|
|
348
|
-
origin: grpFilter.origin,
|
|
349
|
-
termid: groupName,
|
|
350
|
-
key: fc,
|
|
351
|
-
text: self.mclass[fc].label,
|
|
352
|
-
color: self.mclass[fc]?.color,
|
|
353
|
-
isLegendItem: true
|
|
354
|
-
};
|
|
355
|
-
})
|
|
356
|
-
});
|
|
357
|
-
}
|
|
358
|
-
} else if (grpFilter.dt.length == 1 && grpFilter.dt[0] == 2 && !legendData.filter((l) => l.dt)?.find((l) => l.dt.length == 1 && l.dt[0] == 2)) {
|
|
359
|
-
legendData.push({
|
|
360
|
-
name: "Fusion RNA",
|
|
361
|
-
dt: grpFilter.dt,
|
|
362
|
-
origin: grpFilter.origin,
|
|
363
|
-
crossedOut: true,
|
|
364
|
-
items: grpFilter.filteredOutCats.map((fc) => {
|
|
365
|
-
return {
|
|
366
|
-
dt: 2,
|
|
367
|
-
origin: grpFilter.origin,
|
|
368
|
-
termid: "Fusion RNA",
|
|
369
|
-
key: fc,
|
|
370
|
-
text: self.mclass[fc].label,
|
|
371
|
-
color: self.mclass[fc]?.color,
|
|
372
|
-
isLegendItem: true
|
|
373
|
-
};
|
|
374
|
-
})
|
|
375
|
-
});
|
|
376
|
-
} else if (grpFilter.dt.length == 1 && grpFilter.dt[0] == 5 && !legendData.filter((l) => l.dt)?.find((l) => l.dt.length == 1 && l.dt[0] == 5)) {
|
|
377
|
-
legendData.push({
|
|
378
|
-
name: "Structural Variation",
|
|
379
|
-
dt: grpFilter.dt,
|
|
380
|
-
origin: grpFilter.origin,
|
|
381
|
-
crossedOut: true,
|
|
382
|
-
items: grpFilter.filteredOutCats.map((fc) => {
|
|
383
|
-
return {
|
|
384
|
-
dt: 5,
|
|
385
|
-
origin: grpFilter.origin,
|
|
386
|
-
termid: "Structural Variation",
|
|
387
|
-
key: fc,
|
|
388
|
-
text: self.mclass[fc].label,
|
|
389
|
-
color: self.mclass[fc]?.color,
|
|
390
|
-
isLegendItem: true
|
|
391
|
-
};
|
|
392
|
-
})
|
|
393
|
-
});
|
|
394
|
-
}
|
|
395
|
-
}
|
|
396
|
-
for (const itemsGrp of legendData) {
|
|
397
|
-
itemsGrp.items.sort((a, b) => {
|
|
398
|
-
const getStatusOrder = (item) => {
|
|
399
|
-
if (!item.greyedOut && !item.crossedOut) return 0;
|
|
400
|
-
if (item.greyedOut && !item.crossedOut) return 1;
|
|
401
|
-
if (item.crossedOut) return 2;
|
|
402
|
-
return 3;
|
|
403
|
-
};
|
|
404
|
-
return getStatusOrder(a) - getStatusOrder(b);
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
return legendData.sort(
|
|
408
|
-
(a, b) => a.crossedOut && b.crossedOut ? 0 : a.crossedOut ? 1 : b.crossedOut ? -1 : a.order && b.order ? a.order - b.order : a.order ? -1 : b.order ? 1 : 0
|
|
409
|
-
);
|
|
410
|
-
}
|
|
411
|
-
function getLegendItemText(item, count, t, s) {
|
|
412
|
-
if (item.crossedOut || item.greyedOut) {
|
|
413
|
-
return item.label;
|
|
414
|
-
}
|
|
415
|
-
let text = item.label;
|
|
416
|
-
const notes = [count];
|
|
417
|
-
if (item.isExcluded) notes.push("hidden");
|
|
418
|
-
if (t?.tw?.term?.type == "geneVariant" && s.geneVariantCountSamplesSkipMclass.includes(item.key))
|
|
419
|
-
notes.push("not counted");
|
|
420
|
-
if (!notes.length) return text;
|
|
421
|
-
return text += ` (${notes.join(", ")})`;
|
|
422
|
-
}
|
|
423
|
-
function setColorScaleDomain(min, max, domain, colors) {
|
|
424
|
-
if (domain[0] === min && domain[domain.length - 1] === max) return domain;
|
|
425
|
-
const step = (max - min) / (colors.length - 1);
|
|
426
|
-
return colors.map((_, i) => {
|
|
427
|
-
if (i === (colors.length - 1) / 2 && min < 0 && max > 0) return 0;
|
|
428
|
-
return min + step * i;
|
|
429
|
-
});
|
|
430
|
-
}
|
|
431
|
-
function getColors(item) {
|
|
432
|
-
return item.domain?.map((c) => item.scale(c)) || item.scale.range();
|
|
433
|
-
}
|
|
434
|
-
function CNVkey2order(key) {
|
|
435
|
-
return key == "CNV_homozygous_deletion" ? -5 : key == "CNV_amplification" ? -4 : key == "CNV_loss" ? -3 : key == "CNV_amp" ? -2 : key == "CNV_loh" ? -1 : 0;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
export {
|
|
439
|
-
getLegendData,
|
|
440
|
-
getLegendItemText,
|
|
441
|
-
CNVkey2order,
|
|
442
|
-
matrix_legend_exports
|
|
443
|
-
};
|
|
444
|
-
//# sourceMappingURL=chunk-MRZUZDRA.js.map
|