@sjcrh/proteinpaint-client 2.200.0 → 2.202.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-Y2MBOXHL.js +1373 -0
- package/dist/AIProjectAdmin-2W4WNV65.js +958 -0
- package/dist/AggregateMatrix-7L7OKUXI.js +671 -0
- package/dist/AggregateMatrix-7L7OKUXI.js.map +7 -0
- package/dist/AppHeader-6WM66GKP.js +835 -0
- package/dist/BoxPlot-AF72DMSS.js +1218 -0
- package/dist/CorrelationVolcano-H6DHMTYZ.js +620 -0
- package/dist/CorrelationVolcano-H6DHMTYZ.js.map +7 -0
- package/dist/DE-AABMOSEE.js +95 -0
- package/dist/DEinput-3HVHJE2I.js +409 -0
- package/dist/DEinput-3HVHJE2I.js.map +7 -0
- package/dist/DifferentialAnalysis-NBC222Q6.js +243 -0
- package/dist/Disco-B6E3ALAV.js +3392 -0
- package/dist/Disco.UI-KGFIQHXC.js +248 -0
- package/dist/DmrPlot-R3S4PCAE.js +642 -0
- package/dist/DziViewer-QYLZ4EMQ.js +16332 -0
- package/dist/GB-PV4RI5DG.js +1396 -0
- package/dist/GSEA-DHUOROST.js +846 -0
- package/dist/GeneExpInput-RESMBEM3.js +367 -0
- package/dist/Geomap-2WACSP77.js +89 -0
- package/dist/HicApp-3FJEZXAI.js +2250 -0
- package/dist/IDCViewer-MIRQEK4N.js +10817 -0
- package/dist/NumBinaryEditor-EP277U4I.js +284 -0
- package/dist/NumBinaryEditor-EP277U4I.js.map +7 -0
- package/dist/NumBinaryEditor.unit.spec-ZB627VLG.js +317 -0
- package/dist/NumBinaryEditor.unit.spec-ZB627VLG.js.map +7 -0
- package/dist/NumContEditor-F7DOQSIW.js +110 -0
- package/dist/NumContEditor-F7DOQSIW.js.map +7 -0
- package/dist/NumContEditor.unit.spec-PROGQHTU.js +169 -0
- package/dist/NumCustomBinEditor-QS3IPKIQ.js +38 -0
- package/dist/NumCustomBinEditor.unit.spec-BRDEFIX6.js +402 -0
- package/dist/NumCustomBinEditor.unit.spec-BRDEFIX6.js.map +7 -0
- package/dist/NumDiscreteEditor-SE4I3BDA.js +175 -0
- package/dist/NumDiscreteEditor-SE4I3BDA.js.map +7 -0
- package/dist/NumDiscreteEditor.unit.spec-6GBWQ3NQ.js +238 -0
- package/dist/NumDiscreteEditor.unit.spec-6GBWQ3NQ.js.map +7 -0
- package/dist/NumRegularBinEditor-RJKB3G3V.js +38 -0
- package/dist/NumRegularBinEditor.unit.spec-HRU2Y76X.js +283 -0
- package/dist/NumRegularBinEditor.unit.spec-HRU2Y76X.js.map +7 -0
- package/dist/NumSplineEditor-2DCORF5E.js +215 -0
- package/dist/NumSplineEditor-2DCORF5E.js.map +7 -0
- package/dist/NumSplineEditor.unit.spec-TTNB5IXX.js +229 -0
- package/dist/NumSplineEditor.unit.spec-TTNB5IXX.js.map +7 -0
- package/dist/NumericDensity-3A7KTA7Y.js +38 -0
- package/dist/NumericDensity.unit.spec-ISPDAUVX.js +423 -0
- package/dist/NumericDensity.unit.spec-ISPDAUVX.js.map +7 -0
- package/dist/NumericHandler-RG5XZMBU.js +39 -0
- package/dist/NumericHandler.unit.spec-RTD7AZNE.js +219 -0
- package/dist/ProteomeInput-6A7UB4CI.js +394 -0
- package/dist/RunChart2-YEAOBR2L.js +758 -0
- package/dist/SC-C3MJQBI5.js +1112 -0
- package/dist/Volcano-N6MXAQDZ.js +1417 -0
- package/dist/Volcano-N6MXAQDZ.js.map +7 -0
- package/dist/WSIViewer-OVJ2QS7P.js +26200 -0
- package/dist/WSIViewer-OVJ2QS7P.js.map +7 -0
- package/dist/Wsi-CMLKCEG3.js +239 -0
- package/dist/Wsi-CMLKCEG3.js.map +7 -0
- package/dist/WsiSamplesPlot-ET7LGNJW.js +165 -0
- package/dist/adSandbox-6LGHUXPX.js +38 -0
- package/dist/animatedBubbleChart-VJ6EQDQP.js +553 -0
- package/dist/app-PRLLUIAA.js +49 -0
- package/dist/app-WR6PQ2YK.js +37 -0
- package/dist/app.js +22 -22
- package/dist/bam-EXBXKUSE.js +859 -0
- package/dist/barchart-FSIB3IZZ.js +47 -0
- package/dist/barchart.data-VBSWS5N7.js +21 -0
- package/dist/barchart.events-F4HSVH6M.js +47 -0
- package/dist/barchart.integration.spec-AXE7BRKX.js +2243 -0
- package/dist/barchart2-DRNQQJE2.js +314 -0
- package/dist/block-J3A3RIGS.js +6255 -0
- package/dist/block.init-MQKMDKKW.js +38 -0
- package/dist/block.mds.expressionrank-ZQEPPDEL.js +359 -0
- package/dist/block.mds.geneboxplot-VJTIMZ6H.js +828 -0
- package/dist/block.mds.junction-VTAMQ2CW.js +1545 -0
- package/dist/block.mds.svcnv-WG7WY3CS.js +6801 -0
- package/dist/block.svg-YTWYGSGO.js +164 -0
- package/dist/block.tk.aicheck-L4M55U63.js +283 -0
- package/dist/block.tk.ase-3OBVSGWM.js +365 -0
- package/dist/block.tk.bam-QUCP3HST.js +1906 -0
- package/dist/block.tk.bedgraphdot-BGAH5YPF.js +384 -0
- package/dist/block.tk.bigwig.ui-2MG6VMOE.js +211 -0
- package/dist/block.tk.hicstraw-MDQHFWBB.js +823 -0
- package/dist/block.tk.junction-PBCJTAFX.js +2364 -0
- package/dist/block.tk.junction.textmatrixui-FJR76QBO.js +199 -0
- package/dist/block.tk.ld-ISL7K3DH.js +99 -0
- package/dist/block.tk.menu-VQW3FUAF.js +1029 -0
- package/dist/block.tk.pgv-RMXDF3XD.js +944 -0
- package/dist/brainImaging-F4GZRF53.js +423 -0
- package/dist/brainRegions-ONUXPD7P.js +221 -0
- package/dist/bubbleHeatmap-ZOS2ME3T.js +383 -0
- package/dist/cellTypeBubbleHeatmap-BEVDWLHJ.js +283 -0
- package/dist/chunk-2JQWA4EO.js +6364 -0
- package/dist/chunk-2TWVFQD2.js +494 -0
- package/dist/chunk-2TWVFQD2.js.map +7 -0
- package/dist/chunk-2TZITKMT.js +498 -0
- package/dist/chunk-4BDOPNYW.js +129 -0
- package/dist/chunk-4G6ZGXZF.js +1338 -0
- package/dist/chunk-4G6ZGXZF.js.map +7 -0
- package/dist/chunk-4QW2O66J.js +22695 -0
- package/dist/chunk-4QW2O66J.js.map +7 -0
- package/dist/chunk-4RWLKZMS.js +480 -0
- package/dist/chunk-57GCW5SF.js +2899 -0
- package/dist/chunk-5RUVBYLK.js +117 -0
- package/dist/chunk-5YOZ4E5H.js +55 -0
- package/dist/chunk-6N5DNN7P.js +302 -0
- package/dist/chunk-73PFJ2VF.js +21517 -0
- package/dist/chunk-73PFJ2VF.js.map +7 -0
- package/dist/chunk-75T7ESEO.js +61 -0
- package/dist/chunk-75T7ESEO.js.map +7 -0
- package/dist/chunk-A7OWXDYA.js +129 -0
- package/dist/chunk-A7OWXDYA.js.map +7 -0
- package/dist/chunk-AOVDTRFY.js +272 -0
- package/dist/chunk-BIDQ4OZH.js +465 -0
- package/dist/chunk-C34UTN5M.js +292 -0
- package/dist/chunk-CLTRQZGJ.js +170 -0
- package/dist/chunk-DCR4QQ5Y.js +194 -0
- package/dist/chunk-DFHSLHXZ.js +134 -0
- package/dist/chunk-DMOTISFN.js +835 -0
- package/dist/chunk-DMOTISFN.js.map +7 -0
- package/dist/chunk-E2GHT7RH.js +39 -0
- package/dist/chunk-E2JRANYL.js +299 -0
- package/dist/chunk-E6EA7IU7.js +1172 -0
- package/dist/chunk-E6EA7IU7.js.map +7 -0
- package/dist/chunk-E732F6XI.js +141 -0
- package/dist/chunk-E732F6XI.js.map +7 -0
- package/dist/chunk-ETK36FXN.js +384 -0
- package/dist/chunk-FCOX5Q4Q.js +58 -0
- package/dist/chunk-FESRWKYY.js +203 -0
- package/dist/chunk-FXQXCOII.js +101 -0
- package/dist/chunk-FXQXCOII.js.map +7 -0
- package/dist/chunk-GEQUQ3GG.js +1652 -0
- package/dist/chunk-GEQUQ3GG.js.map +7 -0
- package/dist/chunk-GMJSMF7P.js +5070 -0
- package/dist/chunk-H6INPPUC.js +784 -0
- package/dist/chunk-H6INPPUC.js.map +7 -0
- package/dist/chunk-HDPL53U4.js +14 -0
- package/dist/chunk-HOCICSX4.js +276 -0
- package/dist/chunk-HR7XPTAV.js +340 -0
- package/dist/chunk-HR7XPTAV.js.map +7 -0
- package/dist/chunk-HV3GD2F3.js +54 -0
- package/dist/chunk-IGVKT4CE.js +56 -0
- package/dist/chunk-IMKIDF2H.js +123 -0
- package/dist/chunk-IQVBMLFI.js +446 -0
- package/dist/chunk-ITKMNOLR.js +37 -0
- package/dist/chunk-JABW3SRG.js +217 -0
- package/dist/chunk-JTYQX3EE.js +4306 -0
- package/dist/chunk-JTYQX3EE.js.map +7 -0
- package/dist/chunk-KDNYUHAH.js +70 -0
- package/dist/chunk-KSA3ND7Z.js +2327 -0
- package/dist/chunk-L44P5N4U.js +314 -0
- package/dist/chunk-L44P5N4U.js.map +7 -0
- package/dist/chunk-LCRPBPKX.js +34 -0
- package/dist/chunk-MGGAWPTR.js +54 -0
- package/dist/chunk-MKPU5TWN.js +194 -0
- package/dist/chunk-MKPU5TWN.js.map +7 -0
- package/dist/chunk-NIZTWHGT.js +514 -0
- package/dist/chunk-OBRVYT5O.js +187 -0
- package/dist/chunk-OBRVYT5O.js.map +7 -0
- package/dist/chunk-OCC5HEPR.js +411 -0
- package/dist/chunk-OCC5HEPR.js.map +7 -0
- package/dist/chunk-OMIUJ7JT.js +448 -0
- package/dist/chunk-ONCG5AKF.js +160 -0
- package/dist/chunk-OW5LD7S2.js +102 -0
- package/dist/chunk-PY4QOYPK.js +102 -0
- package/dist/chunk-Q3QY7QGU.js +50 -0
- package/dist/chunk-R3ARQMM4.js +119 -0
- package/dist/chunk-RL3IRMOA.js +236 -0
- package/dist/chunk-RVRRHEUG.js +26 -0
- package/dist/chunk-SCOFWMSE.js +240 -0
- package/dist/chunk-SCOFWMSE.js.map +7 -0
- package/dist/chunk-SMOHPEMJ.js +2681 -0
- package/dist/chunk-SNL7MSZD.js +243 -0
- package/dist/chunk-SNL7MSZD.js.map +7 -0
- package/dist/chunk-SP7HDNXC.js +368 -0
- package/dist/chunk-TRQUMV4T.js +254 -0
- package/dist/chunk-UFLJ6PRI.js +387 -0
- package/dist/chunk-UFLJ6PRI.js.map +7 -0
- package/dist/chunk-UILBQKQ6.js +143 -0
- package/dist/chunk-UO7MD3XA.js +556 -0
- package/dist/chunk-UONOFG2J.js +274 -0
- package/dist/chunk-USH6NWXA.js +1943 -0
- package/dist/chunk-USH6NWXA.js.map +7 -0
- package/dist/chunk-UTNJA7JC.js +381 -0
- package/dist/chunk-VJCJCDFI.js +142 -0
- package/dist/chunk-VSSZJHOR.js +473 -0
- package/dist/chunk-W2WOZNEN.js +158 -0
- package/dist/chunk-WGRJEQT7.js +1250 -0
- package/dist/chunk-WGRJEQT7.js.map +7 -0
- package/dist/chunk-WJTRQ3ZC.js +1710 -0
- package/dist/chunk-WWXXSQ2M.js +31 -0
- package/dist/chunk-X4QQRHFB.js +1812 -0
- package/dist/chunk-X6VTVZY7.js +263 -0
- package/dist/chunk-XFAL46LZ.js +102 -0
- package/dist/chunk-XFAL46LZ.js.map +7 -0
- package/dist/chunk-Y2UCJ33M.js +263 -0
- package/dist/chunk-Y45RZL4F.js +98 -0
- package/dist/chunk-YAISXQJ5.js +626 -0
- package/dist/chunk-YAISXQJ5.js.map +7 -0
- package/dist/chunk-YUURGVV3.js +275 -0
- package/dist/chunk-Z2TA7NML.js +352 -0
- package/dist/chunk-Z7U74YGW.js +222 -0
- package/dist/chunk-Z7U74YGW.js.map +7 -0
- package/dist/chunk-ZFJUVP2N.js +787 -0
- package/dist/chunk-ZKMBNB5E.js +176 -0
- package/dist/chunk-ZPBG6CT3.js +100 -0
- package/dist/chunk-ZUDSOVYT.js +2784 -0
- package/dist/chunk-ZZMIDYRE.js +197 -0
- package/dist/chunk-ZZMIDYRE.js.map +7 -0
- package/dist/cohort-R743ZSCR.js +75 -0
- package/dist/condition-MPZIRRGP.js +332 -0
- package/dist/controls-WD5TZITZ.js +39 -0
- package/dist/controls.btns-KCLXBXSL.js +9 -0
- package/dist/controls.config-577UCREO.js +39 -0
- package/dist/correlation-OCFBDDOX.js +102 -0
- package/dist/cuminc-YJGCKHFM.js +1153 -0
- package/dist/cuminc-YJGCKHFM.js.map +7 -0
- package/dist/cuminc.integration.spec-V46K57GV.js +678 -0
- package/dist/customdata.inputui-2MS5ZRKC.js +289 -0
- package/dist/dataDownload-HBFKARTR.js +332 -0
- package/dist/dataDownload-HBFKARTR.js.map +7 -0
- package/dist/dataDownload.integration.spec-TEOJOMYK.js +193 -0
- package/dist/databrowser.ui-PDPFHOH7.js +432 -0
- package/dist/dictionary-MWUQYW6W.js +118 -0
- package/dist/dnaMethylation-SNVVE2MD.js +38 -0
- package/dist/dnaMethylation.integration.spec-OSYZ3YDP.js +203 -0
- package/dist/dofetch-7R7PL4BX.js +51 -0
- package/dist/e2pca-7FYIWR5O.js +350 -0
- package/dist/ep-PTAJZLKI.js +1256 -0
- package/dist/expclust.gdc.spec-2R7T7JPY.js +307 -0
- package/dist/facet-BY6DQRCA.js +521 -0
- package/dist/facet-BY6DQRCA.js.map +7 -0
- package/dist/gb-5UFIDQWY.js +88 -0
- package/dist/geneExpClustering-QLBETGVB.js +249 -0
- package/dist/geneExpression-SAMLSOHQ.js +38 -0
- package/dist/geneExpression-SECTPIDT.js +313 -0
- package/dist/geneExpression.unit.spec-UNRGPJIG.js +102 -0
- package/dist/geneORA-CCQGE7QL.js +278 -0
- package/dist/geneRanking-NVR7ZZIP.js +553 -0
- package/dist/geneVariant-5KL2J3NA.js +39 -0
- package/dist/geneVariant-72E5YEPJ.js +41 -0
- package/dist/geneVariant.integration.spec-7JLVYF7Q.js +198 -0
- package/dist/genefusion.ui-M3IG6NUU.js +308 -0
- package/dist/geneset-V2535XGY.js +208 -0
- package/dist/genomeBrowser.spec-TRREAQCH.js +281 -0
- package/dist/grin2-6X5GCPBQ.js +75 -0
- package/dist/grin2-GOO7H3RC.js +1143 -0
- package/dist/hierCluster-5YZOCCTV.js +63 -0
- package/dist/hierCluster-ZPQCUSVO.js +59 -0
- package/dist/hierCluster.config-T3Y2LS6V.js +40 -0
- package/dist/hierCluster.integration.spec-PTXVQH77.js +488 -0
- package/dist/hierCluster.interactivity-JNBO3MJB.js +54 -0
- package/dist/hierCluster.renderers-FXDCU3PN.js +21 -0
- package/dist/imagePlot-AH2JIGVN.js +163 -0
- package/dist/imagePlot-AH2JIGVN.js.map +7 -0
- package/dist/importPlot-CWMBFQDD.js +8 -0
- package/dist/isoformExpression-ABPY2N3A.js +40 -0
- package/dist/isoformExpression.unit.spec-KRAZBQVF.js +242 -0
- package/dist/junction-XGCBNVHV.js +41 -0
- package/dist/junction.customTerm-MDBOU6I7.js +18 -0
- package/dist/junction.unit.spec-XZFUJRI3.js +187 -0
- package/dist/launch.adhoc-7FJD3XSI.js +42 -0
- package/dist/leftlabel.sample-VPOZWRVY.js +263 -0
- package/dist/lollipop-WBOAFWWO.js +171 -0
- package/dist/maf-MMN6WYHA.js +460 -0
- package/dist/maf-MMN6WYHA.js.map +7 -0
- package/dist/maftimeline-UK4MQP2D.js +593 -0
- package/dist/matrix-AT2FFTWO.js +58 -0
- package/dist/matrix-AU6NPNID.js +63 -0
- package/dist/matrix.cells-CFSI2NWU.js +28 -0
- package/dist/matrix.config-VTQ6HL5L.js +41 -0
- package/dist/matrix.data-DBYXSWIN.js +25 -0
- package/dist/matrix.dom-DDPSUNY2.js +11 -0
- package/dist/matrix.groups-ZFKWVNMX.js +27 -0
- package/dist/matrix.integration.spec-NJ2AXQAS.js +3072 -0
- package/dist/matrix.interactivity-HE2Q6SAO.js +42 -0
- package/dist/matrix.layout-FD5BPRCX.js +44 -0
- package/dist/matrix.legend-7MIZZJVB.js +22 -0
- package/dist/matrix.renderers-DVM4NB2R.js +38 -0
- package/dist/matrix.serieses-7KYX3KAY.js +21 -0
- package/dist/matrix.sort-CR3J45MQ.js +27 -0
- package/dist/matrix.sort.unit.spec-VQ3TR4S2.js +472 -0
- package/dist/matrix.sorterUi-4KYRGJT5.js +18 -0
- package/dist/matrix.sorterUi.unit.spec-IEHG3OKN.js +342 -0
- package/dist/mavb-RPRKXPTZ.js +732 -0
- package/dist/mds.fimo-PZCVBD44.js +518 -0
- package/dist/mds.samplescatterplot-236GTHM4.js +1550 -0
- package/dist/mds.survivalplot-IJHOWSZL.js +483 -0
- package/dist/numericDictTermCluster-3HXLMURH.js +65 -0
- package/dist/oncomatrix-R4OKDXSV.js +295 -0
- package/dist/oncomatrix.spec-4Z4HKS44.js +448 -0
- package/dist/plot.2dvaf-ZK7DAKRQ.js +377 -0
- package/dist/plot.app-J66BA2LD.js +41 -0
- package/dist/plot.barplot-UVRVPOKA.js +102 -0
- package/dist/plot.boxplot-DQGBDNLU.js +152 -0
- package/dist/plot.brainImaging-WRMDYYHC.js +51 -0
- package/dist/plot.disco-SSGPSM7W.js +102 -0
- package/dist/plot.dzi-F77KKPIJ.js +33 -0
- package/dist/plot.ssgq-FVFJOYVO.js +139 -0
- package/dist/plot.vaf2cov-CJSYBSPQ.js +259 -0
- package/dist/plot.wsi-OSZU2PQ5.js +36 -0
- package/dist/polar2-R4ZKXKEV.js +237 -0
- package/dist/profileForms-F7LXHITE.js +940 -0
- package/dist/profileForms-F7LXHITE.js.map +7 -0
- package/dist/profilePlot-JU7SFYYY.js +54 -0
- package/dist/proteinView-VU4SVO5I.js +1568 -0
- package/dist/proteomeCohortCompare-2U537GOK.js +799 -0
- package/dist/pseudbulk.unit.spec-2FDKAEVI.js +91 -0
- package/dist/pseudobulk-5GBUBBOY.js +40 -0
- package/dist/qualitative-3FTEQ7JW.js +43 -0
- package/dist/qualitative-GJDQBD7L.js +220 -0
- package/dist/radar2-EBOTTAMC.js +332 -0
- package/dist/radarFacility2-PAGNJR6D.js +340 -0
- package/dist/regression-XOVSVC7S.js +58 -0
- package/dist/regression.inputs-LGA67ESO.js +48 -0
- package/dist/regression.inputs.term-UCQKXC5D.js +50 -0
- package/dist/regression.inputs.values.table-2RRE7SMS.js +45 -0
- package/dist/regression.integration.spec-BKM5UI7H.js +838 -0
- package/dist/regression.integration.spec-BKM5UI7H.js.map +7 -0
- package/dist/regression.results-T3HB6CBH.js +40 -0
- package/dist/regression.spec-W7IVCYVZ.js +708 -0
- package/dist/render-2C6LWNG2.js +38 -0
- package/dist/report-HRGU3XKL.js +222 -0
- package/dist/sampleView-P5JZHEKY.js +48 -0
- package/dist/samplelst-OYQ6BASU.js +111 -0
- package/dist/samplematrix-JC3SGO5V.js +2198 -0
- package/dist/sc-FTHUNDGY.js +86 -0
- package/dist/scatter-WYP2NPNB.js +890 -0
- package/dist/scatter-WYP2NPNB.js.map +7 -0
- package/dist/selectGenomeWithTklst-CIETKILP.js +134 -0
- package/dist/singleCellCellType-3O3TTLM6.js +38 -0
- package/dist/singleCellCellType.unit.spec-GHBS36DB.js +159 -0
- package/dist/singleCellGeneExpression-2F7F4EKK.js +38 -0
- package/dist/singleCellGeneExpression.unit.spec-2VGIH2NZ.js +153 -0
- package/dist/singleCellPlot-MGSS4O3L.js +54 -0
- package/dist/singlecell-CKC2VVJ3.js +86 -0
- package/dist/singlecell-QOXATRF4.js +1572 -0
- package/dist/snp-OSYJO2R7.js +38 -0
- package/dist/snp.unit.spec-L5ANPFO2.js +176 -0
- package/dist/snplocus-64MJJID2.js +208 -0
- package/dist/spliceevent.a53ss.diagram-LHRT5UPB.js +151 -0
- package/dist/spliceevent.exonskip.diagram-BGSEPGR5.js +283 -0
- package/dist/spliceevent.noeventdiagram-QGZZSKW7.js +460 -0
- package/dist/ssGSEA-VVAZDFDT.js +38 -0
- package/dist/ssGSEA.unit.spec-LP76RHTV.js +88 -0
- package/dist/stattable-55YGV5B4.js +122 -0
- package/dist/stattable-55YGV5B4.js.map +7 -0
- package/dist/studyCatalog-AXWH7IOH.js +358 -0
- package/dist/summarizeCnvGeneexp-DRBIXOAP.js +163 -0
- package/dist/summarizeGeneexpSurvival-4PATAUSN.js +110 -0
- package/dist/summarizeMutationCnv-UGSIGZDJ.js +164 -0
- package/dist/summarizeMutationDiagnosis-UATVI5BK.js +40 -0
- package/dist/summarizeMutationSurvival-CZXGM3AA.js +99 -0
- package/dist/summary-IGTXNQ5I.js +49 -0
- package/dist/summary.integration.spec-VFCYU2V6.js +414 -0
- package/dist/summaryInput-AFZSASTM.js +231 -0
- package/dist/sunburst-G7DBI637.js +284 -0
- package/dist/survival-GIRR5ML4.js +1247 -0
- package/dist/survival-GIRR5ML4.js.map +7 -0
- package/dist/survival-YOJBLMR2.js +58 -0
- package/dist/survival.integration.spec-FXPCZJSS.js +958 -0
- package/dist/svgraph-ZSSOWI7R.js +1387 -0
- package/dist/svmr-FPYSMXSC.js +3842 -0
- package/dist/table-NHS2WLWT.js +202 -0
- package/dist/table-NHS2WLWT.js.map +7 -0
- package/dist/termCollection-IY5V64IY.js +38 -0
- package/dist/termCollection-SR4SP6RZ.js +257 -0
- package/dist/termCollection.unit.spec-NL72AQ2P.js +304 -0
- package/dist/termCollectionFractionSelection-2LPBE224.js +47 -0
- package/dist/termCollectionFractionSelection.unit.spec-PUMGBUDN.js +193 -0
- package/dist/termInfo-2DR7DHXM.js +9 -0
- package/dist/tk-COBDWIZJ.js +1127 -0
- package/dist/tk-N2YBXDQK.js +46 -0
- package/dist/tp.ui-BMK2MMIJ.js +1459 -0
- package/dist/tvs.density-LMRZZO4D.js +19 -0
- package/dist/tvs.dt-KL4VCW5Y.js +39 -0
- package/dist/tvs.dtcnv.categorical-VGXOASJE.js +40 -0
- package/dist/tvs.dtcnv.continuous-IANT7BPS.js +72 -0
- package/dist/tvs.dtfusion-M5HJWCJI.js +40 -0
- package/dist/tvs.dtitd-KB72EDPN.js +40 -0
- package/dist/tvs.dtsnvindel-VGYTLO6E.js +40 -0
- package/dist/tvs.dtsv-KWUXW2F5.js +40 -0
- package/dist/tvs.numeric-MQPO5XUQ.js +22 -0
- package/dist/tvs.samplelst-3UA7XMHJ.js +104 -0
- package/dist/tvs.termCollection-LK6CVGYZ.js +129 -0
- package/dist/violin-D4EX3ZFV.js +46 -0
- package/dist/violin.integration.spec-GBW3VBHW.js +1425 -0
- package/dist/violin.interactivity-N3JVI2AQ.js +38 -0
- package/dist/violin.renderer-2NYRUXUY.js +40 -0
- package/dist/vocabulary-277KD4RO.js +41 -0
- package/dist/wsi.direct-RI3XGLUC.js +81 -0
- package/dist/wsi.direct-RI3XGLUC.js.map +7 -0
- package/package.json +3 -3
- package/dist/2dmaf-RRV3ORZR.js +0 -1373
- package/dist/AIProjectAdmin-DKLEFCGX.js +0 -958
- package/dist/AppHeader-WQ2F7HZY.js +0 -835
- package/dist/BoxPlot-5JQCYENZ.js +0 -1218
- package/dist/CorrelationVolcano-HR6IP2SZ.js +0 -619
- package/dist/CorrelationVolcano-HR6IP2SZ.js.map +0 -7
- package/dist/DE-DAW6ZKM7.js +0 -95
- package/dist/DEinput-XCR4VMR3.js +0 -409
- package/dist/DEinput-XCR4VMR3.js.map +0 -7
- package/dist/DifferentialAnalysis-SETJAZEN.js +0 -243
- package/dist/Disco-QEBEVQS2.js +0 -3392
- package/dist/Disco.UI-OYVL7UBI.js +0 -248
- package/dist/DmrPlot-CWBQDZL7.js +0 -642
- package/dist/DziViewer-6737GC22.js +0 -16332
- package/dist/GB-5PYCR4SV.js +0 -1396
- package/dist/GSEA-6UKMI6GY.js +0 -846
- package/dist/GeneExpInput-2N62XM7Z.js +0 -367
- package/dist/Geomap-ANMR32HE.js +0 -89
- package/dist/HicApp-WHPUPHEM.js +0 -2250
- package/dist/IDCViewer-FWXRE4AX.js +0 -10817
- package/dist/NumBinaryEditor-VG5KOGDA.js +0 -271
- package/dist/NumBinaryEditor-VG5KOGDA.js.map +0 -7
- package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js +0 -286
- package/dist/NumBinaryEditor.unit.spec-UCGFZS3P.js.map +0 -7
- package/dist/NumContEditor-J52RON3G.js +0 -109
- package/dist/NumContEditor-J52RON3G.js.map +0 -7
- package/dist/NumContEditor.unit.spec-5GTWUJEL.js +0 -169
- package/dist/NumCustomBinEditor-GM2OJMOX.js +0 -38
- package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js +0 -284
- package/dist/NumCustomBinEditor.unit.spec-3PGJ25J4.js.map +0 -7
- package/dist/NumDiscreteEditor-2CAKT3Y4.js +0 -179
- package/dist/NumDiscreteEditor-2CAKT3Y4.js.map +0 -7
- package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js +0 -202
- package/dist/NumDiscreteEditor.unit.spec-XCWSJTRT.js.map +0 -7
- package/dist/NumRegularBinEditor-CZYITY5L.js +0 -38
- package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js +0 -227
- package/dist/NumRegularBinEditor.unit.spec-OUBZ5XB3.js.map +0 -7
- package/dist/NumSplineEditor-TWRL5AQQ.js +0 -198
- package/dist/NumSplineEditor-TWRL5AQQ.js.map +0 -7
- package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js +0 -199
- package/dist/NumSplineEditor.unit.spec-5P6NQZ3N.js.map +0 -7
- package/dist/NumericDensity-JSOFOEH2.js +0 -38
- package/dist/NumericDensity.unit.spec-REUKHMKK.js +0 -221
- package/dist/NumericDensity.unit.spec-REUKHMKK.js.map +0 -7
- package/dist/NumericHandler-UZOGKPKB.js +0 -39
- package/dist/NumericHandler.unit.spec-X2DAED4O.js +0 -219
- package/dist/ProteomeInput-GBVCLNS7.js +0 -394
- package/dist/RunChart2-N4JPWNVV.js +0 -758
- package/dist/SC-RCZT5BRP.js +0 -1112
- package/dist/Volcano-2BQ6SYHO.js +0 -1404
- package/dist/Volcano-2BQ6SYHO.js.map +0 -7
- package/dist/WSIViewer-UDA4WIRT.js +0 -48562
- package/dist/WSIViewer-UDA4WIRT.js.map +0 -7
- package/dist/WsiSamplesPlot-DYSFMD22.js +0 -165
- package/dist/adSandbox-5BUDCAER.js +0 -38
- package/dist/animatedBubbleChart-N6MBJ4X3.js +0 -553
- package/dist/app-O64TGDFH.js +0 -37
- package/dist/app-Y2STUISK.js +0 -49
- package/dist/bam-2EOABVGT.js +0 -859
- package/dist/barchart-UHCTYRMJ.js +0 -47
- package/dist/barchart.data-LSK2P2PR.js +0 -21
- package/dist/barchart.events-Y4H2GADS.js +0 -47
- package/dist/barchart.integration.spec-BFGZFECA.js +0 -2243
- package/dist/barchart2-VIZKZRMP.js +0 -314
- package/dist/block-BGSSF6XP.js +0 -6255
- package/dist/block.init-H7RKUIHG.js +0 -38
- package/dist/block.mds.expressionrank-MA3HGT7S.js +0 -359
- package/dist/block.mds.geneboxplot-CWT5DM5T.js +0 -828
- package/dist/block.mds.junction-P4I7O73X.js +0 -1545
- package/dist/block.mds.svcnv-NSPEY43S.js +0 -6801
- package/dist/block.svg-DP4G3LNQ.js +0 -164
- package/dist/block.tk.aicheck-EBLTOWKZ.js +0 -283
- package/dist/block.tk.ase-X7WKQOFS.js +0 -365
- package/dist/block.tk.bam-OIP3TS3N.js +0 -1906
- package/dist/block.tk.bedgraphdot-2DDF55J3.js +0 -384
- package/dist/block.tk.bigwig.ui-S2SMAEXM.js +0 -211
- package/dist/block.tk.hicstraw-4OIG4TBZ.js +0 -823
- package/dist/block.tk.junction-52OWEQUN.js +0 -2364
- package/dist/block.tk.junction.textmatrixui-64YOSZLW.js +0 -199
- package/dist/block.tk.ld-3AMNHBDY.js +0 -99
- package/dist/block.tk.menu-4724DJXL.js +0 -1029
- package/dist/block.tk.pgv-2SIOPWYI.js +0 -944
- package/dist/brainImaging-D43CQQN6.js +0 -423
- package/dist/brainRegions-HJ2VGL3L.js +0 -221
- package/dist/bubbleHeatmap-IL44M4QZ.js +0 -383
- package/dist/cellTypeBubbleHeatmap-NQP7RCZO.js +0 -283
- package/dist/chunk-26APRXD3.js +0 -254
- package/dist/chunk-2GLA2SWU.js +0 -160
- package/dist/chunk-3BGFM7Q4.js +0 -1275
- package/dist/chunk-3BGFM7Q4.js.map +0 -7
- package/dist/chunk-3SHZTAGF.js +0 -193
- package/dist/chunk-3SHZTAGF.js.map +0 -7
- package/dist/chunk-46X6AQ7Z.js +0 -123
- package/dist/chunk-4HZN6PMU.js +0 -129
- package/dist/chunk-4KRGCOTL.js +0 -479
- package/dist/chunk-4KRGCOTL.js.map +0 -7
- package/dist/chunk-4KY4XKJV.js +0 -143
- package/dist/chunk-5DMVORBB.js +0 -98
- package/dist/chunk-5QMBB4SK.js +0 -1245
- package/dist/chunk-5QMBB4SK.js.map +0 -7
- package/dist/chunk-5RVA43MN.js +0 -274
- package/dist/chunk-5T3MOOEJ.js +0 -379
- package/dist/chunk-5T3MOOEJ.js.map +0 -7
- package/dist/chunk-5T3ZDRTS.js +0 -70
- package/dist/chunk-5ZTVJSYI.js +0 -834
- package/dist/chunk-5ZTVJSYI.js.map +0 -7
- package/dist/chunk-6JYQGZ3Y.js +0 -446
- package/dist/chunk-6OUBUUC2.js +0 -626
- package/dist/chunk-6OUBUUC2.js.map +0 -7
- package/dist/chunk-6PNPHACF.js +0 -1652
- package/dist/chunk-6PNPHACF.js.map +0 -7
- package/dist/chunk-7JRDJNLR.js +0 -263
- package/dist/chunk-7PIHRWGG.js +0 -102
- package/dist/chunk-7PJNKPQB.js +0 -275
- package/dist/chunk-AGLAYNXP.js +0 -170
- package/dist/chunk-B7VDZ6VF.js +0 -399
- package/dist/chunk-B7VDZ6VF.js.map +0 -7
- package/dist/chunk-BGTBRAJ6.js +0 -50
- package/dist/chunk-BNAO6N5X.js +0 -2899
- package/dist/chunk-BQHPJY2M.js +0 -347
- package/dist/chunk-BQHPJY2M.js.map +0 -7
- package/dist/chunk-BZTWTH4Y.js +0 -87
- package/dist/chunk-BZTWTH4Y.js.map +0 -7
- package/dist/chunk-CY4RQ5L6.js +0 -1710
- package/dist/chunk-D565DNJD.js +0 -236
- package/dist/chunk-DH3LAQKT.js +0 -384
- package/dist/chunk-DHPLHIVP.js +0 -498
- package/dist/chunk-E3VF4RHJ.js +0 -381
- package/dist/chunk-ECIBJXFT.js +0 -352
- package/dist/chunk-EGPNRSPF.js +0 -292
- package/dist/chunk-FACITNG5.js +0 -142
- package/dist/chunk-GNS6CQMA.js +0 -119
- package/dist/chunk-H3N4KYKL.js +0 -2327
- package/dist/chunk-H3VWJH4U.js +0 -14
- package/dist/chunk-HEVKBSN6.js +0 -222
- package/dist/chunk-HEVKBSN6.js.map +0 -7
- package/dist/chunk-HQUYAZQY.js +0 -514
- package/dist/chunk-IIT367QZ.js +0 -473
- package/dist/chunk-IUBBQPO2.js +0 -146
- package/dist/chunk-IUBBQPO2.js.map +0 -7
- package/dist/chunk-J4USU73L.js +0 -26
- package/dist/chunk-JNITUVXP.js +0 -41
- package/dist/chunk-JNITUVXP.js.map +0 -7
- package/dist/chunk-JVPWIVDT.js +0 -1812
- package/dist/chunk-KU7YH7MV.js +0 -217
- package/dist/chunk-KZILNGAV.js +0 -187
- package/dist/chunk-KZILNGAV.js.map +0 -7
- package/dist/chunk-LSEFWW72.js +0 -94
- package/dist/chunk-LSEFWW72.js.map +0 -7
- package/dist/chunk-M3J4MINX.js +0 -783
- package/dist/chunk-M3J4MINX.js.map +0 -7
- package/dist/chunk-M66VDGSH.js +0 -272
- package/dist/chunk-MJN6RDXB.js +0 -302
- package/dist/chunk-MPNEZ6EL.js +0 -31
- package/dist/chunk-MPSLUEI4.js +0 -314
- package/dist/chunk-MPSLUEI4.js.map +0 -7
- package/dist/chunk-NIXFCC7X.js +0 -368
- package/dist/chunk-NODQZTWK.js +0 -276
- package/dist/chunk-NRYHIWBS.js +0 -1942
- package/dist/chunk-NRYHIWBS.js.map +0 -7
- package/dist/chunk-NUWJ4RN7.js +0 -465
- package/dist/chunk-NVTJ5AUT.js +0 -1102
- package/dist/chunk-NVTJ5AUT.js.map +0 -7
- package/dist/chunk-NZRMHM76.js +0 -158
- package/dist/chunk-OOWXMY7U.js +0 -55
- package/dist/chunk-OTTMHVYH.js +0 -787
- package/dist/chunk-QDX2XUNF.js +0 -58
- package/dist/chunk-QYXCHZ6U.js +0 -4282
- package/dist/chunk-QYXCHZ6U.js.map +0 -7
- package/dist/chunk-R6NM2HSH.js +0 -556
- package/dist/chunk-RJOY6A74.js +0 -56
- package/dist/chunk-ROMW4AK2.js +0 -102
- package/dist/chunk-RR5U35N7.js +0 -230
- package/dist/chunk-RR5U35N7.js.map +0 -7
- package/dist/chunk-RVKADD4L.js +0 -148
- package/dist/chunk-RVKADD4L.js.map +0 -7
- package/dist/chunk-RZGEKL77.js +0 -117
- package/dist/chunk-S5ZCK44Z.js +0 -54
- package/dist/chunk-SNRIVNQ3.js +0 -176
- package/dist/chunk-STI7BO3P.js +0 -2681
- package/dist/chunk-TAM7UCAI.js +0 -263
- package/dist/chunk-TDKMBQSM.js +0 -5070
- package/dist/chunk-TKW5TW4Z.js +0 -21449
- package/dist/chunk-TKW5TW4Z.js.map +0 -7
- package/dist/chunk-TQTYW66I.js +0 -2784
- package/dist/chunk-U3NTH4CS.js +0 -54
- package/dist/chunk-UEGQVQD6.js +0 -34
- package/dist/chunk-ULESDMUT.js +0 -480
- package/dist/chunk-UUKSL7QC.js +0 -134
- package/dist/chunk-VUPWQCDR.js +0 -194
- package/dist/chunk-W76X6W73.js +0 -100
- package/dist/chunk-W7OS7BNM.js +0 -203
- package/dist/chunk-WKNI3HRQ.js +0 -39
- package/dist/chunk-WTTD6DUL.js +0 -6364
- package/dist/chunk-WXPFMVU6.js +0 -299
- package/dist/chunk-XNWUI5VL.js +0 -37
- package/dist/chunk-YBLTSYQV.js +0 -216
- package/dist/chunk-YBLTSYQV.js.map +0 -7
- package/dist/chunk-Z7VDFWIP.js +0 -126
- package/dist/chunk-Z7VDFWIP.js.map +0 -7
- package/dist/chunk-ZEKIUYN3.js +0 -448
- package/dist/cohort-OWLNJZVH.js +0 -75
- package/dist/condition-L2IXP6WH.js +0 -332
- package/dist/controls-2S5QVWUC.js +0 -39
- package/dist/controls.btns-AP67YWKW.js +0 -9
- package/dist/controls.config-3AJKR4ZZ.js +0 -39
- package/dist/correlation-DXTAWSLU.js +0 -102
- package/dist/cuminc-WQB6FHVS.js +0 -1148
- package/dist/cuminc-WQB6FHVS.js.map +0 -7
- package/dist/cuminc.integration.spec-WAYRLHUH.js +0 -678
- package/dist/customdata.inputui-7WH2NJGB.js +0 -289
- package/dist/dataDownload-HM4UYOBO.js +0 -330
- package/dist/dataDownload-HM4UYOBO.js.map +0 -7
- package/dist/dataDownload.integration.spec-F5CO4BWA.js +0 -193
- package/dist/databrowser.ui-E2YOG3L4.js +0 -432
- package/dist/dictionary-EEPTFDYD.js +0 -118
- package/dist/dnaMethylation-N3WNK6XA.js +0 -38
- package/dist/dnaMethylation.integration.spec-AIYRTFMR.js +0 -203
- package/dist/dofetch-YKYPEJTQ.js +0 -51
- package/dist/e2pca-JEZIGVB2.js +0 -350
- package/dist/ep-5FMH2MLV.js +0 -1256
- package/dist/expclust.gdc.spec-FR26VSUA.js +0 -307
- package/dist/facet-5YYY3MUN.js +0 -521
- package/dist/facet-5YYY3MUN.js.map +0 -7
- package/dist/gb-WGEVO7L2.js +0 -88
- package/dist/geneExpClustering-DHE6XJHV.js +0 -249
- package/dist/geneExpression-5NWQXMJ3.js +0 -313
- package/dist/geneExpression-VWUMM2LU.js +0 -38
- package/dist/geneExpression.unit.spec-HBU3WTZ4.js +0 -102
- package/dist/geneORA-3VWFWDYI.js +0 -278
- package/dist/geneRanking-PKDVD5OD.js +0 -553
- package/dist/geneVariant-IFIJQXH4.js +0 -39
- package/dist/geneVariant-WZSOG4GI.js +0 -41
- package/dist/geneVariant.integration.spec-6KQMWVHR.js +0 -198
- package/dist/genefusion.ui-C4NTALL3.js +0 -308
- package/dist/geneset-RJAULSKC.js +0 -208
- package/dist/genomeBrowser.spec-42OTTMGO.js +0 -281
- package/dist/grin2-26O6YDDY.js +0 -75
- package/dist/grin2-FT5BQJMB.js +0 -1143
- package/dist/hierCluster-GJPPMFNR.js +0 -59
- package/dist/hierCluster-HMJF3PBE.js +0 -63
- package/dist/hierCluster.config-TAS7XKTU.js +0 -40
- package/dist/hierCluster.integration.spec-RLHQKX65.js +0 -488
- package/dist/hierCluster.interactivity-IKTAJ6CU.js +0 -54
- package/dist/hierCluster.renderers-I6WFZRNW.js +0 -21
- package/dist/imagePlot-N4OXNMVA.js +0 -163
- package/dist/imagePlot-N4OXNMVA.js.map +0 -7
- package/dist/importPlot-VMYXDP66.js +0 -8
- package/dist/isoformExpression-2KV64KMN.js +0 -40
- package/dist/isoformExpression.unit.spec-RG2VWEMG.js +0 -242
- package/dist/junction-VO4IGMW2.js +0 -41
- package/dist/junction.customTerm-EFMHHVWA.js +0 -18
- package/dist/junction.unit.spec-NB24MR2B.js +0 -187
- package/dist/launch.adhoc-R3MO3VXK.js +0 -42
- package/dist/leftlabel.sample-SI6KMULD.js +0 -263
- package/dist/lollipop-XIVE4ANX.js +0 -171
- package/dist/maf-WRHD4OJF.js +0 -459
- package/dist/maf-WRHD4OJF.js.map +0 -7
- package/dist/maftimeline-IE6YKV7Y.js +0 -593
- package/dist/matrix-ALBCAZP5.js +0 -58
- package/dist/matrix-W72XRUZD.js +0 -63
- package/dist/matrix.cells-DEEUWC74.js +0 -28
- package/dist/matrix.config-JYXQOXDT.js +0 -41
- package/dist/matrix.data-ENXNM6RP.js +0 -25
- package/dist/matrix.dom-F7AN3QGE.js +0 -11
- package/dist/matrix.groups-EXSNNESB.js +0 -27
- package/dist/matrix.integration.spec-BW6U6PIW.js +0 -3072
- package/dist/matrix.interactivity-G6AL566T.js +0 -42
- package/dist/matrix.layout-UBUPIJ3R.js +0 -44
- package/dist/matrix.legend-S3P4F2DG.js +0 -22
- package/dist/matrix.renderers-IXFGXHJQ.js +0 -38
- package/dist/matrix.serieses-THHXUAPM.js +0 -21
- package/dist/matrix.sort-WJV6LIZI.js +0 -27
- package/dist/matrix.sort.unit.spec-LGMIL2LR.js +0 -472
- package/dist/matrix.sorterUi-VXVCOKEZ.js +0 -18
- package/dist/matrix.sorterUi.unit.spec-CWSEJ62U.js +0 -342
- package/dist/mavb-SXGKASQ5.js +0 -732
- package/dist/mds.fimo-EDOT3TDN.js +0 -518
- package/dist/mds.samplescatterplot-IXHNABKB.js +0 -1550
- package/dist/mds.survivalplot-KTTMHHII.js +0 -483
- package/dist/numericDictTermCluster-H4JSPW22.js +0 -65
- package/dist/oncomatrix-O4EMNUOT.js +0 -295
- package/dist/oncomatrix.spec-BME6CQWF.js +0 -448
- package/dist/plot.2dvaf-FDM4KXGT.js +0 -377
- package/dist/plot.app-UNUXG7ND.js +0 -41
- package/dist/plot.barplot-R333TMG2.js +0 -102
- package/dist/plot.boxplot-KQTYGUN3.js +0 -152
- package/dist/plot.brainImaging-YBYMHCEG.js +0 -51
- package/dist/plot.disco-CMDKRSOM.js +0 -102
- package/dist/plot.dzi-YAZA6RQS.js +0 -33
- package/dist/plot.ssgq-YKCOEXZP.js +0 -139
- package/dist/plot.vaf2cov-3TLMTFZS.js +0 -259
- package/dist/plot.wsi-7ADVYTQS.js +0 -36
- package/dist/polar2-O5SHVLP4.js +0 -237
- package/dist/profileForms-RLB6SMPQ.js +0 -940
- package/dist/profileForms-RLB6SMPQ.js.map +0 -7
- package/dist/profilePlot-AP52VLLO.js +0 -54
- package/dist/proteinView-S7WDBMQU.js +0 -1568
- package/dist/proteomeCohortCompare-ERVUM7RO.js +0 -799
- package/dist/pseudbulk.unit.spec-VSH7IM3R.js +0 -91
- package/dist/pseudobulk-7UKRLKQI.js +0 -40
- package/dist/qualitative-2D7MC4V5.js +0 -43
- package/dist/qualitative-2INAKDTJ.js +0 -220
- package/dist/radar2-ELVGQFZE.js +0 -332
- package/dist/radarFacility2-SDAZHGNG.js +0 -340
- package/dist/regression-CE54AQMY.js +0 -56
- package/dist/regression.inputs-SMC5CNPY.js +0 -48
- package/dist/regression.inputs.term-XS54IQC2.js +0 -48
- package/dist/regression.inputs.values.table-LNPM3MX5.js +0 -45
- package/dist/regression.integration.spec-6QSMYPWJ.js +0 -784
- package/dist/regression.integration.spec-6QSMYPWJ.js.map +0 -7
- package/dist/regression.results-25ZRRDEE.js +0 -40
- package/dist/regression.spec-EDWHFRPY.js +0 -708
- package/dist/render-SEB6GFXQ.js +0 -38
- package/dist/report-U6L3KBYG.js +0 -222
- package/dist/sampleView-QAAJ26KT.js +0 -48
- package/dist/samplelst-KYRXJSZN.js +0 -111
- package/dist/samplematrix-STLF2QA5.js +0 -2198
- package/dist/sc-HL6YSMDX.js +0 -86
- package/dist/scatter-BSGDMOC2.js +0 -851
- package/dist/scatter-BSGDMOC2.js.map +0 -7
- package/dist/selectGenomeWithTklst-4NHQDTE6.js +0 -134
- package/dist/singleCellCellType-3E2IU42J.js +0 -38
- package/dist/singleCellCellType.unit.spec-MC7ZRSMW.js +0 -159
- package/dist/singleCellGeneExpression-53UUGYTK.js +0 -38
- package/dist/singleCellGeneExpression.unit.spec-QSLTXHFE.js +0 -153
- package/dist/singleCellPlot-JDSARDRV.js +0 -54
- package/dist/singlecell-IJR7BJYT.js +0 -1572
- package/dist/singlecell-OK6GJFWL.js +0 -86
- package/dist/snp-H4KJEEOE.js +0 -38
- package/dist/snp.unit.spec-2Y4A3XYI.js +0 -176
- package/dist/snplocus-4GG6VTWX.js +0 -208
- package/dist/spliceevent.a53ss.diagram-JZNRC5UC.js +0 -151
- package/dist/spliceevent.exonskip.diagram-H54N7ZKY.js +0 -283
- package/dist/spliceevent.noeventdiagram-II753XAK.js +0 -460
- package/dist/ssGSEA-JPJ3C4JI.js +0 -38
- package/dist/ssGSEA.unit.spec-45F5OCDK.js +0 -88
- package/dist/stattable-MDABSW3F.js +0 -90
- package/dist/stattable-MDABSW3F.js.map +0 -7
- package/dist/studyCatalog-O3VGIKDM.js +0 -358
- package/dist/summarizeCnvGeneexp-55DNXHXA.js +0 -163
- package/dist/summarizeGeneexpSurvival-VLO4DC5M.js +0 -110
- package/dist/summarizeMutationCnv-QX7BADYL.js +0 -164
- package/dist/summarizeMutationDiagnosis-MHFM7RX6.js +0 -40
- package/dist/summarizeMutationSurvival-G4KHSUBN.js +0 -99
- package/dist/summary-PJYRCQNY.js +0 -49
- package/dist/summary.integration.spec-KPKROD6L.js +0 -414
- package/dist/summaryInput-TOAL53EP.js +0 -231
- package/dist/sunburst-IGIV2RBE.js +0 -284
- package/dist/survival-DINCIWW7.js +0 -58
- package/dist/survival-RKV5BPDK.js +0 -1239
- package/dist/survival-RKV5BPDK.js.map +0 -7
- package/dist/survival.integration.spec-7ZYBBZKT.js +0 -958
- package/dist/svgraph-EUEZWGVR.js +0 -1387
- package/dist/svmr-B24LODSC.js +0 -3842
- package/dist/table-XSJJ3UZV.js +0 -200
- package/dist/table-XSJJ3UZV.js.map +0 -7
- package/dist/termCollection-IAB3425K.js +0 -38
- package/dist/termCollection-LGEGHZSJ.js +0 -257
- package/dist/termCollection.unit.spec-4TIRHC44.js +0 -304
- package/dist/termCollectionFractionSelection-35YKAOUY.js +0 -47
- package/dist/termCollectionFractionSelection.unit.spec-SUFEIKJZ.js +0 -193
- package/dist/termInfo-6MJDJSDW.js +0 -9
- package/dist/tk-25EJJDRK.js +0 -46
- package/dist/tk-4E3XJ7CO.js +0 -1127
- package/dist/tp.ui-VGA62NFM.js +0 -1459
- package/dist/tvs.density-G56327WY.js +0 -19
- package/dist/tvs.dt-DFW36WKO.js +0 -39
- package/dist/tvs.dtcnv.categorical-ZP33EO3A.js +0 -40
- package/dist/tvs.dtcnv.continuous-FJTMQF4J.js +0 -72
- package/dist/tvs.dtfusion-FTDQWNKM.js +0 -40
- package/dist/tvs.dtitd-W5VEECJ2.js +0 -40
- package/dist/tvs.dtsnvindel-UOXSLCDZ.js +0 -40
- package/dist/tvs.dtsv-HWCPRVBO.js +0 -40
- package/dist/tvs.numeric-7TGKWQYU.js +0 -22
- package/dist/tvs.samplelst-OWD22ITS.js +0 -104
- package/dist/tvs.termCollection-27BWABYK.js +0 -129
- package/dist/violin-2IAVZGFF.js +0 -46
- package/dist/violin.integration.spec-JVODKUCL.js +0 -1425
- package/dist/violin.interactivity-STOCZMVN.js +0 -38
- package/dist/violin.renderer-MKDTJ3EX.js +0 -40
- package/dist/vocabulary-4IHU6DNN.js +0 -41
- /package/dist/{2dmaf-RRV3ORZR.js.map → 2dmaf-Y2MBOXHL.js.map} +0 -0
- /package/dist/{AIProjectAdmin-DKLEFCGX.js.map → AIProjectAdmin-2W4WNV65.js.map} +0 -0
- /package/dist/{AppHeader-WQ2F7HZY.js.map → AppHeader-6WM66GKP.js.map} +0 -0
- /package/dist/{BoxPlot-5JQCYENZ.js.map → BoxPlot-AF72DMSS.js.map} +0 -0
- /package/dist/{DE-DAW6ZKM7.js.map → DE-AABMOSEE.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-SETJAZEN.js.map → DifferentialAnalysis-NBC222Q6.js.map} +0 -0
- /package/dist/{Disco-QEBEVQS2.js.map → Disco-B6E3ALAV.js.map} +0 -0
- /package/dist/{Disco.UI-OYVL7UBI.js.map → Disco.UI-KGFIQHXC.js.map} +0 -0
- /package/dist/{DmrPlot-CWBQDZL7.js.map → DmrPlot-R3S4PCAE.js.map} +0 -0
- /package/dist/{DziViewer-6737GC22.js.map → DziViewer-QYLZ4EMQ.js.map} +0 -0
- /package/dist/{GB-5PYCR4SV.js.map → GB-PV4RI5DG.js.map} +0 -0
- /package/dist/{GSEA-6UKMI6GY.js.map → GSEA-DHUOROST.js.map} +0 -0
- /package/dist/{GeneExpInput-2N62XM7Z.js.map → GeneExpInput-RESMBEM3.js.map} +0 -0
- /package/dist/{Geomap-ANMR32HE.js.map → Geomap-2WACSP77.js.map} +0 -0
- /package/dist/{HicApp-WHPUPHEM.js.map → HicApp-3FJEZXAI.js.map} +0 -0
- /package/dist/{IDCViewer-FWXRE4AX.js.map → IDCViewer-MIRQEK4N.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-5GTWUJEL.js.map → NumContEditor.unit.spec-PROGQHTU.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-GM2OJMOX.js.map → NumCustomBinEditor-QS3IPKIQ.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-CZYITY5L.js.map → NumRegularBinEditor-RJKB3G3V.js.map} +0 -0
- /package/dist/{NumericDensity-JSOFOEH2.js.map → NumericDensity-3A7KTA7Y.js.map} +0 -0
- /package/dist/{NumericHandler-UZOGKPKB.js.map → NumericHandler-RG5XZMBU.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-X2DAED4O.js.map → NumericHandler.unit.spec-RTD7AZNE.js.map} +0 -0
- /package/dist/{ProteomeInput-GBVCLNS7.js.map → ProteomeInput-6A7UB4CI.js.map} +0 -0
- /package/dist/{RunChart2-N4JPWNVV.js.map → RunChart2-YEAOBR2L.js.map} +0 -0
- /package/dist/{SC-RCZT5BRP.js.map → SC-C3MJQBI5.js.map} +0 -0
- /package/dist/{WsiSamplesPlot-DYSFMD22.js.map → WsiSamplesPlot-ET7LGNJW.js.map} +0 -0
- /package/dist/{adSandbox-5BUDCAER.js.map → adSandbox-6LGHUXPX.js.map} +0 -0
- /package/dist/{animatedBubbleChart-N6MBJ4X3.js.map → animatedBubbleChart-VJ6EQDQP.js.map} +0 -0
- /package/dist/{app-O64TGDFH.js.map → app-PRLLUIAA.js.map} +0 -0
- /package/dist/{app-Y2STUISK.js.map → app-WR6PQ2YK.js.map} +0 -0
- /package/dist/{bam-2EOABVGT.js.map → bam-EXBXKUSE.js.map} +0 -0
- /package/dist/{barchart-UHCTYRMJ.js.map → barchart-FSIB3IZZ.js.map} +0 -0
- /package/dist/{barchart.data-LSK2P2PR.js.map → barchart.data-VBSWS5N7.js.map} +0 -0
- /package/dist/{barchart.events-Y4H2GADS.js.map → barchart.events-F4HSVH6M.js.map} +0 -0
- /package/dist/{barchart.integration.spec-BFGZFECA.js.map → barchart.integration.spec-AXE7BRKX.js.map} +0 -0
- /package/dist/{barchart2-VIZKZRMP.js.map → barchart2-DRNQQJE2.js.map} +0 -0
- /package/dist/{block-BGSSF6XP.js.map → block-J3A3RIGS.js.map} +0 -0
- /package/dist/{block.init-H7RKUIHG.js.map → block.init-MQKMDKKW.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-MA3HGT7S.js.map → block.mds.expressionrank-ZQEPPDEL.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-CWT5DM5T.js.map → block.mds.geneboxplot-VJTIMZ6H.js.map} +0 -0
- /package/dist/{block.mds.junction-P4I7O73X.js.map → block.mds.junction-VTAMQ2CW.js.map} +0 -0
- /package/dist/{block.mds.svcnv-NSPEY43S.js.map → block.mds.svcnv-WG7WY3CS.js.map} +0 -0
- /package/dist/{block.svg-DP4G3LNQ.js.map → block.svg-YTWYGSGO.js.map} +0 -0
- /package/dist/{block.tk.aicheck-EBLTOWKZ.js.map → block.tk.aicheck-L4M55U63.js.map} +0 -0
- /package/dist/{block.tk.ase-X7WKQOFS.js.map → block.tk.ase-3OBVSGWM.js.map} +0 -0
- /package/dist/{block.tk.bam-OIP3TS3N.js.map → block.tk.bam-QUCP3HST.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-2DDF55J3.js.map → block.tk.bedgraphdot-BGAH5YPF.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-S2SMAEXM.js.map → block.tk.bigwig.ui-2MG6VMOE.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-4OIG4TBZ.js.map → block.tk.hicstraw-MDQHFWBB.js.map} +0 -0
- /package/dist/{block.tk.junction-52OWEQUN.js.map → block.tk.junction-PBCJTAFX.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-64YOSZLW.js.map → block.tk.junction.textmatrixui-FJR76QBO.js.map} +0 -0
- /package/dist/{block.tk.ld-3AMNHBDY.js.map → block.tk.ld-ISL7K3DH.js.map} +0 -0
- /package/dist/{block.tk.menu-4724DJXL.js.map → block.tk.menu-VQW3FUAF.js.map} +0 -0
- /package/dist/{block.tk.pgv-2SIOPWYI.js.map → block.tk.pgv-RMXDF3XD.js.map} +0 -0
- /package/dist/{brainImaging-D43CQQN6.js.map → brainImaging-F4GZRF53.js.map} +0 -0
- /package/dist/{brainRegions-HJ2VGL3L.js.map → brainRegions-ONUXPD7P.js.map} +0 -0
- /package/dist/{bubbleHeatmap-IL44M4QZ.js.map → bubbleHeatmap-ZOS2ME3T.js.map} +0 -0
- /package/dist/{cellTypeBubbleHeatmap-NQP7RCZO.js.map → cellTypeBubbleHeatmap-BEVDWLHJ.js.map} +0 -0
- /package/dist/{chunk-WTTD6DUL.js.map → chunk-2JQWA4EO.js.map} +0 -0
- /package/dist/{chunk-DHPLHIVP.js.map → chunk-2TZITKMT.js.map} +0 -0
- /package/dist/{chunk-4HZN6PMU.js.map → chunk-4BDOPNYW.js.map} +0 -0
- /package/dist/{chunk-ULESDMUT.js.map → chunk-4RWLKZMS.js.map} +0 -0
- /package/dist/{chunk-BNAO6N5X.js.map → chunk-57GCW5SF.js.map} +0 -0
- /package/dist/{chunk-RZGEKL77.js.map → chunk-5RUVBYLK.js.map} +0 -0
- /package/dist/{chunk-OOWXMY7U.js.map → chunk-5YOZ4E5H.js.map} +0 -0
- /package/dist/{chunk-MJN6RDXB.js.map → chunk-6N5DNN7P.js.map} +0 -0
- /package/dist/{chunk-M66VDGSH.js.map → chunk-AOVDTRFY.js.map} +0 -0
- /package/dist/{chunk-NUWJ4RN7.js.map → chunk-BIDQ4OZH.js.map} +0 -0
- /package/dist/{chunk-EGPNRSPF.js.map → chunk-C34UTN5M.js.map} +0 -0
- /package/dist/{chunk-AGLAYNXP.js.map → chunk-CLTRQZGJ.js.map} +0 -0
- /package/dist/{chunk-VUPWQCDR.js.map → chunk-DCR4QQ5Y.js.map} +0 -0
- /package/dist/{chunk-UUKSL7QC.js.map → chunk-DFHSLHXZ.js.map} +0 -0
- /package/dist/{chunk-WKNI3HRQ.js.map → chunk-E2GHT7RH.js.map} +0 -0
- /package/dist/{chunk-WXPFMVU6.js.map → chunk-E2JRANYL.js.map} +0 -0
- /package/dist/{chunk-DH3LAQKT.js.map → chunk-ETK36FXN.js.map} +0 -0
- /package/dist/{chunk-QDX2XUNF.js.map → chunk-FCOX5Q4Q.js.map} +0 -0
- /package/dist/{chunk-W7OS7BNM.js.map → chunk-FESRWKYY.js.map} +0 -0
- /package/dist/{chunk-TDKMBQSM.js.map → chunk-GMJSMF7P.js.map} +0 -0
- /package/dist/{chunk-H3VWJH4U.js.map → chunk-HDPL53U4.js.map} +0 -0
- /package/dist/{chunk-NODQZTWK.js.map → chunk-HOCICSX4.js.map} +0 -0
- /package/dist/{chunk-S5ZCK44Z.js.map → chunk-HV3GD2F3.js.map} +0 -0
- /package/dist/{chunk-RJOY6A74.js.map → chunk-IGVKT4CE.js.map} +0 -0
- /package/dist/{chunk-46X6AQ7Z.js.map → chunk-IMKIDF2H.js.map} +0 -0
- /package/dist/{chunk-6JYQGZ3Y.js.map → chunk-IQVBMLFI.js.map} +0 -0
- /package/dist/{chunk-XNWUI5VL.js.map → chunk-ITKMNOLR.js.map} +0 -0
- /package/dist/{chunk-KU7YH7MV.js.map → chunk-JABW3SRG.js.map} +0 -0
- /package/dist/{chunk-5T3ZDRTS.js.map → chunk-KDNYUHAH.js.map} +0 -0
- /package/dist/{chunk-H3N4KYKL.js.map → chunk-KSA3ND7Z.js.map} +0 -0
- /package/dist/{chunk-UEGQVQD6.js.map → chunk-LCRPBPKX.js.map} +0 -0
- /package/dist/{chunk-U3NTH4CS.js.map → chunk-MGGAWPTR.js.map} +0 -0
- /package/dist/{chunk-HQUYAZQY.js.map → chunk-NIZTWHGT.js.map} +0 -0
- /package/dist/{chunk-ZEKIUYN3.js.map → chunk-OMIUJ7JT.js.map} +0 -0
- /package/dist/{chunk-2GLA2SWU.js.map → chunk-ONCG5AKF.js.map} +0 -0
- /package/dist/{chunk-ROMW4AK2.js.map → chunk-OW5LD7S2.js.map} +0 -0
- /package/dist/{chunk-7PIHRWGG.js.map → chunk-PY4QOYPK.js.map} +0 -0
- /package/dist/{chunk-BGTBRAJ6.js.map → chunk-Q3QY7QGU.js.map} +0 -0
- /package/dist/{chunk-GNS6CQMA.js.map → chunk-R3ARQMM4.js.map} +0 -0
- /package/dist/{chunk-D565DNJD.js.map → chunk-RL3IRMOA.js.map} +0 -0
- /package/dist/{chunk-J4USU73L.js.map → chunk-RVRRHEUG.js.map} +0 -0
- /package/dist/{chunk-STI7BO3P.js.map → chunk-SMOHPEMJ.js.map} +0 -0
- /package/dist/{chunk-NIXFCC7X.js.map → chunk-SP7HDNXC.js.map} +0 -0
- /package/dist/{chunk-26APRXD3.js.map → chunk-TRQUMV4T.js.map} +0 -0
- /package/dist/{chunk-4KY4XKJV.js.map → chunk-UILBQKQ6.js.map} +0 -0
- /package/dist/{chunk-R6NM2HSH.js.map → chunk-UO7MD3XA.js.map} +0 -0
- /package/dist/{chunk-5RVA43MN.js.map → chunk-UONOFG2J.js.map} +0 -0
- /package/dist/{chunk-E3VF4RHJ.js.map → chunk-UTNJA7JC.js.map} +0 -0
- /package/dist/{chunk-FACITNG5.js.map → chunk-VJCJCDFI.js.map} +0 -0
- /package/dist/{chunk-IIT367QZ.js.map → chunk-VSSZJHOR.js.map} +0 -0
- /package/dist/{chunk-NZRMHM76.js.map → chunk-W2WOZNEN.js.map} +0 -0
- /package/dist/{chunk-CY4RQ5L6.js.map → chunk-WJTRQ3ZC.js.map} +0 -0
- /package/dist/{chunk-MPNEZ6EL.js.map → chunk-WWXXSQ2M.js.map} +0 -0
- /package/dist/{chunk-JVPWIVDT.js.map → chunk-X4QQRHFB.js.map} +0 -0
- /package/dist/{chunk-7JRDJNLR.js.map → chunk-X6VTVZY7.js.map} +0 -0
- /package/dist/{chunk-TAM7UCAI.js.map → chunk-Y2UCJ33M.js.map} +0 -0
- /package/dist/{chunk-5DMVORBB.js.map → chunk-Y45RZL4F.js.map} +0 -0
- /package/dist/{chunk-7PJNKPQB.js.map → chunk-YUURGVV3.js.map} +0 -0
- /package/dist/{chunk-ECIBJXFT.js.map → chunk-Z2TA7NML.js.map} +0 -0
- /package/dist/{chunk-OTTMHVYH.js.map → chunk-ZFJUVP2N.js.map} +0 -0
- /package/dist/{chunk-SNRIVNQ3.js.map → chunk-ZKMBNB5E.js.map} +0 -0
- /package/dist/{chunk-W76X6W73.js.map → chunk-ZPBG6CT3.js.map} +0 -0
- /package/dist/{chunk-TQTYW66I.js.map → chunk-ZUDSOVYT.js.map} +0 -0
- /package/dist/{cohort-OWLNJZVH.js.map → cohort-R743ZSCR.js.map} +0 -0
- /package/dist/{condition-L2IXP6WH.js.map → condition-MPZIRRGP.js.map} +0 -0
- /package/dist/{controls-2S5QVWUC.js.map → controls-WD5TZITZ.js.map} +0 -0
- /package/dist/{controls.btns-AP67YWKW.js.map → controls.btns-KCLXBXSL.js.map} +0 -0
- /package/dist/{controls.config-3AJKR4ZZ.js.map → controls.config-577UCREO.js.map} +0 -0
- /package/dist/{correlation-DXTAWSLU.js.map → correlation-OCFBDDOX.js.map} +0 -0
- /package/dist/{cuminc.integration.spec-WAYRLHUH.js.map → cuminc.integration.spec-V46K57GV.js.map} +0 -0
- /package/dist/{customdata.inputui-7WH2NJGB.js.map → customdata.inputui-2MS5ZRKC.js.map} +0 -0
- /package/dist/{dataDownload.integration.spec-F5CO4BWA.js.map → dataDownload.integration.spec-TEOJOMYK.js.map} +0 -0
- /package/dist/{databrowser.ui-E2YOG3L4.js.map → databrowser.ui-PDPFHOH7.js.map} +0 -0
- /package/dist/{dictionary-EEPTFDYD.js.map → dictionary-MWUQYW6W.js.map} +0 -0
- /package/dist/{dnaMethylation-N3WNK6XA.js.map → dnaMethylation-SNVVE2MD.js.map} +0 -0
- /package/dist/{dnaMethylation.integration.spec-AIYRTFMR.js.map → dnaMethylation.integration.spec-OSYZ3YDP.js.map} +0 -0
- /package/dist/{dofetch-YKYPEJTQ.js.map → dofetch-7R7PL4BX.js.map} +0 -0
- /package/dist/{e2pca-JEZIGVB2.js.map → e2pca-7FYIWR5O.js.map} +0 -0
- /package/dist/{ep-5FMH2MLV.js.map → ep-PTAJZLKI.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-FR26VSUA.js.map → expclust.gdc.spec-2R7T7JPY.js.map} +0 -0
- /package/dist/{gb-WGEVO7L2.js.map → gb-5UFIDQWY.js.map} +0 -0
- /package/dist/{geneExpClustering-DHE6XJHV.js.map → geneExpClustering-QLBETGVB.js.map} +0 -0
- /package/dist/{geneExpression-VWUMM2LU.js.map → geneExpression-SAMLSOHQ.js.map} +0 -0
- /package/dist/{geneExpression-5NWQXMJ3.js.map → geneExpression-SECTPIDT.js.map} +0 -0
- /package/dist/{geneExpression.unit.spec-HBU3WTZ4.js.map → geneExpression.unit.spec-UNRGPJIG.js.map} +0 -0
- /package/dist/{geneORA-3VWFWDYI.js.map → geneORA-CCQGE7QL.js.map} +0 -0
- /package/dist/{geneRanking-PKDVD5OD.js.map → geneRanking-NVR7ZZIP.js.map} +0 -0
- /package/dist/{geneVariant-IFIJQXH4.js.map → geneVariant-5KL2J3NA.js.map} +0 -0
- /package/dist/{geneVariant-WZSOG4GI.js.map → geneVariant-72E5YEPJ.js.map} +0 -0
- /package/dist/{geneVariant.integration.spec-6KQMWVHR.js.map → geneVariant.integration.spec-7JLVYF7Q.js.map} +0 -0
- /package/dist/{genefusion.ui-C4NTALL3.js.map → genefusion.ui-M3IG6NUU.js.map} +0 -0
- /package/dist/{geneset-RJAULSKC.js.map → geneset-V2535XGY.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-42OTTMGO.js.map → genomeBrowser.spec-TRREAQCH.js.map} +0 -0
- /package/dist/{grin2-26O6YDDY.js.map → grin2-6X5GCPBQ.js.map} +0 -0
- /package/dist/{grin2-FT5BQJMB.js.map → grin2-GOO7H3RC.js.map} +0 -0
- /package/dist/{hierCluster-GJPPMFNR.js.map → hierCluster-5YZOCCTV.js.map} +0 -0
- /package/dist/{hierCluster-HMJF3PBE.js.map → hierCluster-ZPQCUSVO.js.map} +0 -0
- /package/dist/{hierCluster.config-TAS7XKTU.js.map → hierCluster.config-T3Y2LS6V.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-RLHQKX65.js.map → hierCluster.integration.spec-PTXVQH77.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-IKTAJ6CU.js.map → hierCluster.interactivity-JNBO3MJB.js.map} +0 -0
- /package/dist/{hierCluster.renderers-I6WFZRNW.js.map → hierCluster.renderers-FXDCU3PN.js.map} +0 -0
- /package/dist/{importPlot-VMYXDP66.js.map → importPlot-CWMBFQDD.js.map} +0 -0
- /package/dist/{isoformExpression-2KV64KMN.js.map → isoformExpression-ABPY2N3A.js.map} +0 -0
- /package/dist/{isoformExpression.unit.spec-RG2VWEMG.js.map → isoformExpression.unit.spec-KRAZBQVF.js.map} +0 -0
- /package/dist/{junction-VO4IGMW2.js.map → junction-XGCBNVHV.js.map} +0 -0
- /package/dist/{junction.customTerm-EFMHHVWA.js.map → junction.customTerm-MDBOU6I7.js.map} +0 -0
- /package/dist/{junction.unit.spec-NB24MR2B.js.map → junction.unit.spec-XZFUJRI3.js.map} +0 -0
- /package/dist/{launch.adhoc-R3MO3VXK.js.map → launch.adhoc-7FJD3XSI.js.map} +0 -0
- /package/dist/{leftlabel.sample-SI6KMULD.js.map → leftlabel.sample-VPOZWRVY.js.map} +0 -0
- /package/dist/{lollipop-XIVE4ANX.js.map → lollipop-WBOAFWWO.js.map} +0 -0
- /package/dist/{maftimeline-IE6YKV7Y.js.map → maftimeline-UK4MQP2D.js.map} +0 -0
- /package/dist/{matrix-ALBCAZP5.js.map → matrix-AT2FFTWO.js.map} +0 -0
- /package/dist/{matrix-W72XRUZD.js.map → matrix-AU6NPNID.js.map} +0 -0
- /package/dist/{matrix.cells-DEEUWC74.js.map → matrix.cells-CFSI2NWU.js.map} +0 -0
- /package/dist/{matrix.config-JYXQOXDT.js.map → matrix.config-VTQ6HL5L.js.map} +0 -0
- /package/dist/{matrix.data-ENXNM6RP.js.map → matrix.data-DBYXSWIN.js.map} +0 -0
- /package/dist/{matrix.dom-F7AN3QGE.js.map → matrix.dom-DDPSUNY2.js.map} +0 -0
- /package/dist/{matrix.groups-EXSNNESB.js.map → matrix.groups-ZFKWVNMX.js.map} +0 -0
- /package/dist/{matrix.integration.spec-BW6U6PIW.js.map → matrix.integration.spec-NJ2AXQAS.js.map} +0 -0
- /package/dist/{matrix.interactivity-G6AL566T.js.map → matrix.interactivity-HE2Q6SAO.js.map} +0 -0
- /package/dist/{matrix.layout-UBUPIJ3R.js.map → matrix.layout-FD5BPRCX.js.map} +0 -0
- /package/dist/{matrix.legend-S3P4F2DG.js.map → matrix.legend-7MIZZJVB.js.map} +0 -0
- /package/dist/{matrix.renderers-IXFGXHJQ.js.map → matrix.renderers-DVM4NB2R.js.map} +0 -0
- /package/dist/{matrix.serieses-THHXUAPM.js.map → matrix.serieses-7KYX3KAY.js.map} +0 -0
- /package/dist/{matrix.sort-WJV6LIZI.js.map → matrix.sort-CR3J45MQ.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-LGMIL2LR.js.map → matrix.sort.unit.spec-VQ3TR4S2.js.map} +0 -0
- /package/dist/{matrix.sorterUi-VXVCOKEZ.js.map → matrix.sorterUi-4KYRGJT5.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-CWSEJ62U.js.map → matrix.sorterUi.unit.spec-IEHG3OKN.js.map} +0 -0
- /package/dist/{mavb-SXGKASQ5.js.map → mavb-RPRKXPTZ.js.map} +0 -0
- /package/dist/{mds.fimo-EDOT3TDN.js.map → mds.fimo-PZCVBD44.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-IXHNABKB.js.map → mds.samplescatterplot-236GTHM4.js.map} +0 -0
- /package/dist/{mds.survivalplot-KTTMHHII.js.map → mds.survivalplot-IJHOWSZL.js.map} +0 -0
- /package/dist/{numericDictTermCluster-H4JSPW22.js.map → numericDictTermCluster-3HXLMURH.js.map} +0 -0
- /package/dist/{oncomatrix-O4EMNUOT.js.map → oncomatrix-R4OKDXSV.js.map} +0 -0
- /package/dist/{oncomatrix.spec-BME6CQWF.js.map → oncomatrix.spec-4Z4HKS44.js.map} +0 -0
- /package/dist/{plot.2dvaf-FDM4KXGT.js.map → plot.2dvaf-ZK7DAKRQ.js.map} +0 -0
- /package/dist/{plot.app-UNUXG7ND.js.map → plot.app-J66BA2LD.js.map} +0 -0
- /package/dist/{plot.barplot-R333TMG2.js.map → plot.barplot-UVRVPOKA.js.map} +0 -0
- /package/dist/{plot.boxplot-KQTYGUN3.js.map → plot.boxplot-DQGBDNLU.js.map} +0 -0
- /package/dist/{plot.brainImaging-YBYMHCEG.js.map → plot.brainImaging-WRMDYYHC.js.map} +0 -0
- /package/dist/{plot.disco-CMDKRSOM.js.map → plot.disco-SSGPSM7W.js.map} +0 -0
- /package/dist/{plot.dzi-YAZA6RQS.js.map → plot.dzi-F77KKPIJ.js.map} +0 -0
- /package/dist/{plot.ssgq-YKCOEXZP.js.map → plot.ssgq-FVFJOYVO.js.map} +0 -0
- /package/dist/{plot.vaf2cov-3TLMTFZS.js.map → plot.vaf2cov-CJSYBSPQ.js.map} +0 -0
- /package/dist/{plot.wsi-7ADVYTQS.js.map → plot.wsi-OSZU2PQ5.js.map} +0 -0
- /package/dist/{polar2-O5SHVLP4.js.map → polar2-R4ZKXKEV.js.map} +0 -0
- /package/dist/{profilePlot-AP52VLLO.js.map → profilePlot-JU7SFYYY.js.map} +0 -0
- /package/dist/{proteinView-S7WDBMQU.js.map → proteinView-VU4SVO5I.js.map} +0 -0
- /package/dist/{proteomeCohortCompare-ERVUM7RO.js.map → proteomeCohortCompare-2U537GOK.js.map} +0 -0
- /package/dist/{pseudbulk.unit.spec-VSH7IM3R.js.map → pseudbulk.unit.spec-2FDKAEVI.js.map} +0 -0
- /package/dist/{pseudobulk-7UKRLKQI.js.map → pseudobulk-5GBUBBOY.js.map} +0 -0
- /package/dist/{qualitative-2D7MC4V5.js.map → qualitative-3FTEQ7JW.js.map} +0 -0
- /package/dist/{qualitative-2INAKDTJ.js.map → qualitative-GJDQBD7L.js.map} +0 -0
- /package/dist/{radar2-ELVGQFZE.js.map → radar2-EBOTTAMC.js.map} +0 -0
- /package/dist/{radarFacility2-SDAZHGNG.js.map → radarFacility2-PAGNJR6D.js.map} +0 -0
- /package/dist/{regression-CE54AQMY.js.map → regression-XOVSVC7S.js.map} +0 -0
- /package/dist/{regression.inputs-SMC5CNPY.js.map → regression.inputs-LGA67ESO.js.map} +0 -0
- /package/dist/{regression.inputs.term-XS54IQC2.js.map → regression.inputs.term-UCQKXC5D.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-LNPM3MX5.js.map → regression.inputs.values.table-2RRE7SMS.js.map} +0 -0
- /package/dist/{regression.results-25ZRRDEE.js.map → regression.results-T3HB6CBH.js.map} +0 -0
- /package/dist/{regression.spec-EDWHFRPY.js.map → regression.spec-W7IVCYVZ.js.map} +0 -0
- /package/dist/{render-SEB6GFXQ.js.map → render-2C6LWNG2.js.map} +0 -0
- /package/dist/{report-U6L3KBYG.js.map → report-HRGU3XKL.js.map} +0 -0
- /package/dist/{sampleView-QAAJ26KT.js.map → sampleView-P5JZHEKY.js.map} +0 -0
- /package/dist/{samplelst-KYRXJSZN.js.map → samplelst-OYQ6BASU.js.map} +0 -0
- /package/dist/{samplematrix-STLF2QA5.js.map → samplematrix-JC3SGO5V.js.map} +0 -0
- /package/dist/{sc-HL6YSMDX.js.map → sc-FTHUNDGY.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-4NHQDTE6.js.map → selectGenomeWithTklst-CIETKILP.js.map} +0 -0
- /package/dist/{singleCellCellType-3E2IU42J.js.map → singleCellCellType-3O3TTLM6.js.map} +0 -0
- /package/dist/{singleCellCellType.unit.spec-MC7ZRSMW.js.map → singleCellCellType.unit.spec-GHBS36DB.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-53UUGYTK.js.map → singleCellGeneExpression-2F7F4EKK.js.map} +0 -0
- /package/dist/{singleCellGeneExpression.unit.spec-QSLTXHFE.js.map → singleCellGeneExpression.unit.spec-2VGIH2NZ.js.map} +0 -0
- /package/dist/{singleCellPlot-JDSARDRV.js.map → singleCellPlot-MGSS4O3L.js.map} +0 -0
- /package/dist/{singlecell-OK6GJFWL.js.map → singlecell-CKC2VVJ3.js.map} +0 -0
- /package/dist/{singlecell-IJR7BJYT.js.map → singlecell-QOXATRF4.js.map} +0 -0
- /package/dist/{snp-H4KJEEOE.js.map → snp-OSYJO2R7.js.map} +0 -0
- /package/dist/{snp.unit.spec-2Y4A3XYI.js.map → snp.unit.spec-L5ANPFO2.js.map} +0 -0
- /package/dist/{snplocus-4GG6VTWX.js.map → snplocus-64MJJID2.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-JZNRC5UC.js.map → spliceevent.a53ss.diagram-LHRT5UPB.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-H54N7ZKY.js.map → spliceevent.exonskip.diagram-BGSEPGR5.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-II753XAK.js.map → spliceevent.noeventdiagram-QGZZSKW7.js.map} +0 -0
- /package/dist/{ssGSEA-JPJ3C4JI.js.map → ssGSEA-VVAZDFDT.js.map} +0 -0
- /package/dist/{ssGSEA.unit.spec-45F5OCDK.js.map → ssGSEA.unit.spec-LP76RHTV.js.map} +0 -0
- /package/dist/{studyCatalog-O3VGIKDM.js.map → studyCatalog-AXWH7IOH.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-55DNXHXA.js.map → summarizeCnvGeneexp-DRBIXOAP.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-VLO4DC5M.js.map → summarizeGeneexpSurvival-4PATAUSN.js.map} +0 -0
- /package/dist/{summarizeMutationCnv-QX7BADYL.js.map → summarizeMutationCnv-UGSIGZDJ.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-MHFM7RX6.js.map → summarizeMutationDiagnosis-UATVI5BK.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-G4KHSUBN.js.map → summarizeMutationSurvival-CZXGM3AA.js.map} +0 -0
- /package/dist/{summary-PJYRCQNY.js.map → summary-IGTXNQ5I.js.map} +0 -0
- /package/dist/{summary.integration.spec-KPKROD6L.js.map → summary.integration.spec-VFCYU2V6.js.map} +0 -0
- /package/dist/{summaryInput-TOAL53EP.js.map → summaryInput-AFZSASTM.js.map} +0 -0
- /package/dist/{sunburst-IGIV2RBE.js.map → sunburst-G7DBI637.js.map} +0 -0
- /package/dist/{survival-DINCIWW7.js.map → survival-YOJBLMR2.js.map} +0 -0
- /package/dist/{survival.integration.spec-7ZYBBZKT.js.map → survival.integration.spec-FXPCZJSS.js.map} +0 -0
- /package/dist/{svgraph-EUEZWGVR.js.map → svgraph-ZSSOWI7R.js.map} +0 -0
- /package/dist/{svmr-B24LODSC.js.map → svmr-FPYSMXSC.js.map} +0 -0
- /package/dist/{termCollection-IAB3425K.js.map → termCollection-IY5V64IY.js.map} +0 -0
- /package/dist/{termCollection-LGEGHZSJ.js.map → termCollection-SR4SP6RZ.js.map} +0 -0
- /package/dist/{termCollection.unit.spec-4TIRHC44.js.map → termCollection.unit.spec-NL72AQ2P.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection-35YKAOUY.js.map → termCollectionFractionSelection-2LPBE224.js.map} +0 -0
- /package/dist/{termCollectionFractionSelection.unit.spec-SUFEIKJZ.js.map → termCollectionFractionSelection.unit.spec-PUMGBUDN.js.map} +0 -0
- /package/dist/{termInfo-6MJDJSDW.js.map → termInfo-2DR7DHXM.js.map} +0 -0
- /package/dist/{tk-4E3XJ7CO.js.map → tk-COBDWIZJ.js.map} +0 -0
- /package/dist/{tk-25EJJDRK.js.map → tk-N2YBXDQK.js.map} +0 -0
- /package/dist/{tp.ui-VGA62NFM.js.map → tp.ui-BMK2MMIJ.js.map} +0 -0
- /package/dist/{tvs.density-G56327WY.js.map → tvs.density-LMRZZO4D.js.map} +0 -0
- /package/dist/{tvs.dt-DFW36WKO.js.map → tvs.dt-KL4VCW5Y.js.map} +0 -0
- /package/dist/{tvs.dtcnv.categorical-ZP33EO3A.js.map → tvs.dtcnv.categorical-VGXOASJE.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-FJTMQF4J.js.map → tvs.dtcnv.continuous-IANT7BPS.js.map} +0 -0
- /package/dist/{tvs.dtfusion-FTDQWNKM.js.map → tvs.dtfusion-M5HJWCJI.js.map} +0 -0
- /package/dist/{tvs.dtitd-W5VEECJ2.js.map → tvs.dtitd-KB72EDPN.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-UOXSLCDZ.js.map → tvs.dtsnvindel-VGYTLO6E.js.map} +0 -0
- /package/dist/{tvs.dtsv-HWCPRVBO.js.map → tvs.dtsv-KWUXW2F5.js.map} +0 -0
- /package/dist/{tvs.numeric-7TGKWQYU.js.map → tvs.numeric-MQPO5XUQ.js.map} +0 -0
- /package/dist/{tvs.samplelst-OWD22ITS.js.map → tvs.samplelst-3UA7XMHJ.js.map} +0 -0
- /package/dist/{tvs.termCollection-27BWABYK.js.map → tvs.termCollection-LK6CVGYZ.js.map} +0 -0
- /package/dist/{violin-2IAVZGFF.js.map → violin-D4EX3ZFV.js.map} +0 -0
- /package/dist/{violin.integration.spec-JVODKUCL.js.map → violin.integration.spec-GBW3VBHW.js.map} +0 -0
- /package/dist/{violin.interactivity-STOCZMVN.js.map → violin.interactivity-N3JVI2AQ.js.map} +0 -0
- /package/dist/{violin.renderer-MKDTJ3EX.js.map → violin.renderer-2NYRUXUY.js.map} +0 -0
- /package/dist/{vocabulary-4IHU6DNN.js.map → vocabulary-277KD4RO.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../plots/profile/renderImpressionThermometer.ts", "../plots/profile/renderResponseDistribution.ts", "../plots/profile/renderImpressionLegend.ts", "../plots/profile/profileForms.ts"],
|
|
4
|
-
"sourcesContent": ["import { scaleLinear } from 'd3-scale'\nimport { axisLeft } from 'd3-axis'\nimport { hsl } from 'd3-color'\nimport { axisstyle } from '../../dom/axisstyle.js'\nimport type { BaseType, Selection } from 'd3-selection'\nimport type { Div } from '../../types/d3'\n\nexport const IMPRESSION_MAX_SCORE = 10\n\n// Fallback if a term has no color in jsondata (shouldn't happen for impression terms in\n// the live db, but keeps the renderer from emitting `fill=\"undefined\"` if it ever does).\nconst FALLBACK_COLOR = '#888'\n\n// POC grey \u2014 the right (Point-of-Care) half of the vessel. Exported so the shared card legend\n// swatches the same grey the fill uses.\nexport const POC_FILL = '#9e9e9e'\n\n/*\nHover cue for a liquid column: the fill eases to a lighter shade and back, so the column reads as\nresponding rather than having a border drawn around it. The easing is declared as a CSS transition\non the element itself, so the shared profilePlot delegation \u2014 which only sets the attribute \u2014\nanimates for free, with no extra work in onMouseOver/onMouseOut.\n\nThe shift moves away from mid-lightness, keeping the cue visible on a dark module color and a\nlight one alike.\n*/\nconst HOVER_MS = 140\n\nfunction hoverFill(fill: string): ImpressionHover {\n\tconst c = hsl(fill)\n\tc.l = c.l > 0.6 ? c.l - 0.14 : c.l + 0.14\n\treturn { on: { fill: c.formatHex() }, off: { fill } }\n}\n\n/*\nThree impression performance zones (Weak/Intermediate/Strong) labelled along the rating axis.\nBins are config-driven from the dataset (impression.zones) so the boundaries live in one place,\nshared with the response-distribution chart.\n*/\nexport type ImpressionZone = { label: string; min: number; max: number; color: string }\n\n// One responder group's median/total (POC side of a single thermometer). null for SC-only modules.\nexport type ImpressionPoc = { median: number | null; total: number } | null\n\n/*\nAttribute maps the shared profilePlot delegation applies on mouseover and restores on mouseout;\nprofileForms.onMouseOver/onMouseOut read these off the element's __data__.\n*/\nexport type ImpressionHover = { on: Record<string, string>; off: Record<string, string> }\n\n/*\nBinds tooltip text (+ optional hover descriptor) as the element's datum. Supplied by profileForms.\nGeneric over the element type because d3's Selection is invariant in it \u2014 a plain\nSelection<Element, ...> parameter would reject the Selection<SVGPathElement, ...> the fills produce.\n*/\nexport type AttachTip = <T extends BaseType>(\n\tsel: Selection<T, any, any, any>,\n\ttext: string,\n\thover?: ImpressionHover\n) => void\n\nexport type ImpressionThermometerArgs = {\n\t// d3 selection of the div that will hold this thermometer's own <svg>. Lives inside\n\t// profilePlot.dom.rightDiv, which owns the mousemove/mouseout tooltip delegation.\n\tholder: Div\n\t// Unique per rendered thermometer (one per responder group); prefixes this svg's defs ids.\n\tid: string\n\t// Shared SC median across eligible sites + the site count (n) \u2014 the left (module-color) fill.\n\tsc: { median: number | null; total: number }\n\t// This group's POC median/total, or null for SC-only modules \u2014 the right (grey) fill.\n\tpoc: ImpressionPoc\n\t// Title for the single 1..maxScore rating axis (left).\n\tratingAxisLabel: string\n\t// Drives the background bands only \u2014 the zones are named in the shared legend, not in here.\n\tzones: ImpressionZone[]\n\t// Per-module color for the SC (left) half of the vessel (terms.jsondata.color in the DB).\n\tcolors: { sc: string }\n\tattachTip: AttachTip\n}\n\n/*\nGeometry for a single thermometer svg. Only the left rating axis and its rotated title sit outside\nthe vessel now \u2014 the zone labels that used to occupy the right margin, and the legend rows that sat\nbelow the bulb, both moved to the shared card legend \u2014 so the svg is sized to the vessel plus the\naxis gutter. Note CENTER_X derives from SVG_W: changing the width moves every x in the file.\n*/\nconst SVG_W = 140\nconst TUBE_W = 46\nconst TUBE_H = 300\nconst TUBE_TOP = 24 // small top margin above the tube (labels/header live in the card, not the svg)\nconst TUBE_BOTTOM = TUBE_TOP + TUBE_H\nconst CENTER_X = SVG_W / 2\nconst TUBE_HALF = TUBE_W / 2\n// Median fills read as thick vertical bars inside the tube (one per half), not full half-fills.\nconst BAR_W = 12\n\n/*\nThe bulb out-measures the tube so it reads as the anchored reservoir rather than a wide spot in\nthe column, and a fillet arc welds the two into one silhouette (see vesselPath). The fillet needs\nBULB_R > TUBE_HALF: at or below that the tangent solve has no real root, NECK_DY goes NaN, and\nevery derived coordinate \u2014 including the whole vessel path \u2014 becomes NaN, which renders as an\nempty svg with nothing thrown. The guard below keeps that failure loud.\n*/\nconst BULB_R = 39\n/*\nKept small so the glass hugs the bulb circle. The liquid's reservoir IS that circle, so a wide\nfillet would flare the glass out past the liquid and leave a crescent of empty tube at each\nshoulder; at NECK_R = 6 the widest such gap is under 5px.\n*/\nconst NECK_R = 6\nif (!(BULB_R > TUBE_HALF))\n\tthrow new Error('impression thermometer geometry: BULB_R must exceed TUBE_W/2 for a tangential neck')\n// The bar's outer wall has to actually meet the circle, or BAR_JOIN_Y goes NaN the same way.\nif (!(BULB_R > BAR_W))\n\tthrow new Error('impression thermometer geometry: BULB_R must exceed BAR_W for the bar to meet the bulb')\n\n/*\nVertical drop from the fillet centre to the bulb centre. Placing the bulb this far below\nTUBE_BOTTOM puts the start of the flare exactly at rating 0, so the entire 1..maxScore scale sits\non the straight, parallel-sided part of the tube and no tick ever lands on a curve.\n*/\nconst NECK_DY = Math.sqrt((BULB_R + NECK_R) ** 2 - (TUBE_HALF + NECK_R) ** 2)\nconst BULB_CY = TUBE_BOTTOM + NECK_DY\nconst BULB_BOTTOM = BULB_CY + BULB_R\nconst SVG_H = Math.ceil(BULB_BOTTOM) + 12 // just breathing room under the bulb; the legend is the card's\n\nconst TUBE_X = CENTER_X - TUBE_HALF\nconst CAP_Y = TUBE_TOP + TUBE_HALF\n\n// rating (1..maxScore) \u2192 y on the tube\nconst yScale = scaleLinear().domain([0, IMPRESSION_MAX_SCORE]).range([TUBE_BOTTOM, TUBE_TOP])\nconst yOf = (rating: number) => yScale(rating)\n\nconst round = (n: number) => Math.round(n * 1000) / 1000\n\n/*\nVertical extent of one performance zone's background band, for zones sorted ascending by rating.\nA band spans its own ratings \u2014 yOf(z.max) down to yOf(z.min - 1) \u2014 so adjacent bands meet exactly\nat the tick between them. The lowest band continues past rating 0 through the bulb, putting the\nlow end of the scale at the reservoir; the highest is held to the top of the vessel.\n\nThe bands and their labels both derive their position from here, so the two cannot drift apart.\n*/\nfunction zoneExtent(z: ImpressionZone, i: number, count: number): { top: number; bottom: number } {\n\treturn {\n\t\ttop: i === count - 1 ? TUBE_TOP : yOf(z.max),\n\t\tbottom: i === 0 ? BULB_BOTTOM : yOf(z.min - 1)\n\t}\n}\n\n/*\nThe vessel as one closed path: rounded top cap, straight sides, a fillet arc on each side that is\nexternally tangent to both the tube wall and the bulb, then the long way around the bulb. The\nfillet centre sits at distance NECK_R from the wall and BULB_R + NECK_R from the bulb centre, which\nputs both joins at G1 continuity \u2014 the tube flows into the bulb with no seam to paint over.\n*/\nfunction vesselPath(): string {\n\tconst xL = TUBE_X\n\tconst xR = TUBE_X + TUBE_W\n\tconst neckY = TUBE_BOTTOM // = BULB_CY - NECK_DY, the fillet centres' y\n\t// Tangent points on the bulb, along the line from the bulb centre to each fillet centre.\n\tconst tx = (BULB_R * (TUBE_HALF + NECK_R)) / (BULB_R + NECK_R)\n\tconst ty = BULB_CY - (BULB_R * NECK_DY) / (BULB_R + NECK_R)\n\treturn (\n\t\t`M ${xL} ${CAP_Y}` +\n\t\t` A ${TUBE_HALF} ${TUBE_HALF} 0 0 1 ${xR} ${CAP_Y}` +\n\t\t` L ${xR} ${neckY}` +\n\t\t` A ${NECK_R} ${NECK_R} 0 0 0 ${round(CENTER_X + tx)} ${round(ty)}` +\n\t\t` A ${BULB_R} ${BULB_R} 0 1 1 ${round(CENTER_X - tx)} ${round(ty)}` +\n\t\t` A ${NECK_R} ${NECK_R} 0 0 0 ${xL} ${neckY}` +\n\t\t` Z`\n\t)\n}\n\n// Rounded-top, flat-bottom bar: the median column has a domed top but runs flush into the bulb at\n// the bottom (no rounded cap), so the column + reservoir read as one continuous liquid.\nfunction barPath(x: number, yTop: number, w: number, yBottom: number): string {\n\tconst r = w / 2\n\treturn `M ${x} ${yBottom} L ${x} ${yTop + r} A ${r} ${r} 0 0 1 ${x + w} ${yTop + r} L ${x + w} ${yBottom} Z`\n}\n\n/*\nWhere the bar's outer wall meets the bulb circle \u2014 the bar rises out of the circle from here, so\nno shoulder, no taper and no extra shape is needed to join them.\n*/\nconst BAR_JOIN_Y = BULB_CY - Math.sqrt(BULB_R ** 2 - BAR_W ** 2)\n\n/*\nOne series' entire body of liquid as a single closed path: half the bulb circle, with the bar\nrising straight out of it. Traced as dome \u2192 down the bar's outer wall to where it meets the\ncircle \u2192 around that half of the circle to the bottom centre \u2192 back up the centre divider.\n\nTracing it in that order keeps the outline a simple closed shape: the bar's centre edge and the\nhalf-disc's flat edge are collinear, so they are one straight segment rather than two overlapping\npieces that would pinch the path where they meet.\n*/\nfunction liquidPath(yTop: number, half: 'left' | 'right'): string {\n\tconst r = BAR_W / 2\n\tconst dir = half === 'left' ? -1 : 1\n\tconst colOuter = CENTER_X + dir * BAR_W\n\tconst domeY = yTop + r\n\t// The dome sweeps over the top from the centre divider out to the bar's outer wall, and the\n\t// bulb arc runs from that wall around to the bottom of the circle \u2014 mirrored per side.\n\tconst domeSweep = half === 'left' ? 0 : 1\n\tconst bulbSweep = half === 'left' ? 0 : 1\n\treturn (\n\t\t`M ${CENTER_X} ${round(domeY)}` +\n\t\t` A ${r} ${r} 0 0 ${domeSweep} ${colOuter} ${round(domeY)}` +\n\t\t` L ${colOuter} ${round(BAR_JOIN_Y)}` +\n\t\t` A ${BULB_R} ${BULB_R} 0 0 ${bulbSweep} ${CENTER_X} ${round(BULB_BOTTOM)}` +\n\t\t` L ${CENTER_X} ${round(domeY)}` +\n\t\t` Z`\n\t)\n}\n\nexport function renderImpressionThermometer(a: ImpressionThermometerArgs) {\n\tconst maxScore = IMPRESSION_MAX_SCORE\n\tconst scColor = a.colors?.sc || FALLBACK_COLOR\n\tconst scMedian: number | null = a.sc?.median ?? null\n\tconst scTotal: number = a.sc?.total || 0\n\tconst pocMedian: number | null = a.poc?.median ?? null\n\tconst pocTotal: number = a.poc?.total || 0\n\n\tconst svg = a.holder.append('svg').attr('width', SVG_W).attr('height', SVG_H)\n\tconst root = svg.append('g')\n\tconst defs = root.append('defs')\n\tconst vessel = vesselPath()\n\n\t// Sort a copy \u2014 the caller's zones array is shared with the distribution chart.\n\tconst sortedZones = [...a.zones].sort((z1, z2) => z1.min - z2.min)\n\n\t/*\n\tDepth cues are layered white/black gradients clipped to the vessel rather than SVG filters:\n\tfilters degrade in the svg\u2192png download path, and no first-party proteinpaint client code uses\n\tthem. Clipping a plain horizontal gradient to the vessel is what makes it an inner shadow \u2014 it\n\tdarkens the edges of the actual silhouette and follows the neck curve for free.\n\t*/\n\tconst sheenId = `${a.id}-liquid-sheen`\n\tconst sheen = defs\n\t\t.append('linearGradient')\n\t\t.attr('id', sheenId)\n\t\t.attr('x1', '0')\n\t\t.attr('y1', '0')\n\t\t.attr('x2', '0')\n\t\t.attr('y2', '1')\n\tsheen.append('stop').attr('offset', '0%').attr('stop-color', '#fff').attr('stop-opacity', 0.04)\n\tsheen.append('stop').attr('offset', '45%').attr('stop-color', '#fff').attr('stop-opacity', 0.07)\n\tsheen.append('stop').attr('offset', '100%').attr('stop-color', '#000').attr('stop-opacity', 0.1)\n\n\tconst barGlossId = `${a.id}-bar-gloss`\n\tconst barGloss = defs\n\t\t.append('linearGradient')\n\t\t.attr('id', barGlossId)\n\t\t.attr('x1', '0')\n\t\t.attr('y1', '0')\n\t\t.attr('x2', '1')\n\t\t.attr('y2', '0')\n\t/*\n\tKept to a narrow highlight band rather than a broad wash: the column is only BAR_W wide, so a\n\twide white ramp desaturates the fill instead of reading as curvature. Most of the column stays\n\tthe undiluted series color, with the shading concentrated at the left highlight and right edge.\n\t*/\n\tbarGloss.append('stop').attr('offset', '0%').attr('stop-color', '#fff').attr('stop-opacity', 0.04)\n\tbarGloss.append('stop').attr('offset', '20%').attr('stop-color', '#fff').attr('stop-opacity', 0.2)\n\tbarGloss.append('stop').attr('offset', '38%').attr('stop-color', '#fff').attr('stop-opacity', 0.03)\n\tbarGloss.append('stop').attr('offset', '100%').attr('stop-color', '#000').attr('stop-opacity', 0.18)\n\n\tconst innerShadeId = `${a.id}-inner-shade`\n\tconst innerShade = defs\n\t\t.append('linearGradient')\n\t\t.attr('id', innerShadeId)\n\t\t.attr('gradientUnits', 'userSpaceOnUse')\n\t\t.attr('x1', CENTER_X - BULB_R)\n\t\t.attr('y1', 0)\n\t\t.attr('x2', CENTER_X + BULB_R)\n\t\t.attr('y2', 0)\n\tinnerShade.append('stop').attr('offset', '0%').attr('stop-color', '#000').attr('stop-opacity', 0.22)\n\tinnerShade.append('stop').attr('offset', '16%').attr('stop-color', '#000').attr('stop-opacity', 0)\n\tinnerShade.append('stop').attr('offset', '84%').attr('stop-color', '#000').attr('stop-opacity', 0)\n\tinnerShade.append('stop').attr('offset', '100%').attr('stop-color', '#000').attr('stop-opacity', 0.26)\n\n\tconst bulbShadeId = `${a.id}-bulb-shade`\n\tconst shade = defs\n\t\t.append('radialGradient')\n\t\t.attr('id', bulbShadeId)\n\t\t.attr('cx', '50%')\n\t\t.attr('cy', '50%')\n\t\t.attr('r', '50%')\n\tshade.append('stop').attr('offset', '55%').attr('stop-color', '#000').attr('stop-opacity', 0)\n\tshade.append('stop').attr('offset', '100%').attr('stop-color', '#000').attr('stop-opacity', 0.3)\n\tconst bulbGlossId = `${a.id}-bulb-gloss`\n\tconst gloss = defs\n\t\t.append('radialGradient')\n\t\t.attr('id', bulbGlossId)\n\t\t.attr('cx', '36%')\n\t\t.attr('cy', '30%')\n\t\t.attr('r', '45%')\n\tgloss.append('stop').attr('offset', '0%').attr('stop-color', '#fff').attr('stop-opacity', 0.6)\n\tgloss.append('stop').attr('offset', '70%').attr('stop-color', '#fff').attr('stop-opacity', 0.06)\n\tgloss.append('stop').attr('offset', '100%').attr('stop-color', '#fff').attr('stop-opacity', 0)\n\n\t/*\n\tOne clip for everything drawn inside the glass. The vessel path already bounds the neck flare\n\tand the bulb, so a liquid's reservoir subpath can be a plain half-width rectangle and still\n\tresolve to exactly half the reservoir's curved shape \u2014 no second clip, and no seam at the neck.\n\t*/\n\tconst vesselClipId = `${a.id}-vessel-clip`\n\tdefs.append('clipPath').attr('id', vesselClipId).append('path').attr('d', vessel)\n\n\tconst inVessel = () => root.append('g').attr('clip-path', `url(#${vesselClipId})`)\n\t// Bounding box of the vessel \u2014 the fill area for the full-height gradient overlays.\n\tconst boxX = CENTER_X - BULB_R\n\tconst boxW = 2 * BULB_R\n\tconst boxY = TUBE_TOP\n\tconst boxH = BULB_BOTTOM - TUBE_TOP\n\n\t/*\n\t1) Distribution track: one band per performance zone, filling tube and bulb (the empty state).\n\tSame colors, same 0.3 opacity and same discrete-band form the sibling response-distribution\n\tchart uses, so the pair reads as one system. Bands are discrete rather than a blended gradient\n\tbecause a module's zone shades are three tints of one hue \u2014 smoothing the boundaries away\n\tleaves a single flat wash with no readable zones. Extents come from zoneExtent().\n\t*/\n\tconst trackG = inVessel()\n\tsortedZones.forEach((z, i) => {\n\t\tconst { top, bottom } = zoneExtent(z, i, sortedZones.length)\n\t\ttrackG\n\t\t\t.append('rect')\n\t\t\t.attr('class', 'impression-zone')\n\t\t\t.attr('x', boxX)\n\t\t\t.attr('y', top)\n\t\t\t.attr('width', boxW)\n\t\t\t.attr('height', bottom - top)\n\t\t\t.attr('fill', z.color)\n\t\t\t.attr('opacity', 0.3)\n\t})\n\n\t/*\n\t2) The liquid: one element per series covering its column and its half of the reservoir, so the\n\twhole body is a single hover target. The reservoir half is always drawn \u2014 the bulb reads full\n\tregardless of the median \u2014 and the column rises out of it to the median.\n\t*/\n\tconst liquidG = inVessel()\n\tconst scX = CENTER_X - BAR_W\n\tconst pocX = CENTER_X\n\tif (scMedian != null) {\n\t\tconst scFill = liquidG\n\t\t\t.append('path')\n\t\t\t.attr('class', 'sc-fill')\n\t\t\t.attr('d', liquidPath(yOf(scMedian), 'left'))\n\t\t\t.attr('fill', scColor)\n\t\t\t.style('transition', `fill ${HOVER_MS}ms ease-out`)\n\t\ta.attachTip(\n\t\t\tscFill,\n\t\t\t`Site Coordinator median: ${scMedian} (n=${scTotal} ${scTotal === 1 ? 'SC' : 'SCs'})`,\n\t\t\thoverFill(scColor)\n\t\t)\n\t}\n\tif (pocMedian != null) {\n\t\tconst pocFill = liquidG\n\t\t\t.append('path')\n\t\t\t.attr('class', 'poc-fill')\n\t\t\t.attr('d', liquidPath(yOf(pocMedian), 'right'))\n\t\t\t.attr('fill', POC_FILL)\n\t\t\t.style('transition', `fill ${HOVER_MS}ms ease-out`)\n\t\ta.attachTip(pocFill, `POC median: ${pocMedian} (n=${pocTotal} staff responses)`, hoverFill(POC_FILL))\n\t}\n\n\t// Every layer from here down is decorative, so the two fills stay the only hover targets and\n\t// the shared profilePlot mousemove delegation keeps reading their __data__.\n\tconst overlay = () => inVessel().attr('pointer-events', 'none')\n\n\t/*\n\t4) Wetness: a vertical sheen over the horizontal cylindrical gloss, along the straight part of\n\teach bar only \u2014 it stops where the bar meets the bulb circle. A cylinder highlight belongs on a\n\tcylinder; carried into the bulb it traces the bar's edges across the reservoir, betraying two\n\tcylinders where the eye should read one body of liquid. Below the join the spherical shading in\n\tlayer 5 is the only shading the reservoir gets.\n\t*/\n\tconst wet = overlay()\n\tconst columns: { x: number; median: number }[] = []\n\tif (scMedian != null) columns.push({ x: scX, median: scMedian })\n\tif (pocMedian != null) columns.push({ x: pocX, median: pocMedian })\n\tfor (const c of columns) {\n\t\tconst d = barPath(c.x, yOf(c.median), BAR_W, BAR_JOIN_Y)\n\t\twet.append('path').attr('class', 'liquid-gloss').attr('d', d).attr('fill', `url(#${sheenId})`)\n\t\twet.append('path').attr('class', 'liquid-gloss').attr('d', d).attr('fill', `url(#${barGlossId})`)\n\t}\n\n\t// 5) Spherical shading over the reservoir, clipped so the flare crops it cleanly.\n\tconst bulbShading = overlay()\n\tbulbShading\n\t\t.append('circle')\n\t\t.attr('cx', CENTER_X)\n\t\t.attr('cy', BULB_CY)\n\t\t.attr('r', BULB_R)\n\t\t.attr('fill', `url(#${bulbShadeId})`)\n\tbulbShading\n\t\t.append('circle')\n\t\t.attr('cx', CENTER_X)\n\t\t.attr('cy', BULB_CY)\n\t\t.attr('r', BULB_R)\n\t\t.attr('fill', `url(#${bulbGlossId})`)\n\n\t// 6) Inner shadow along the silhouette's edges \u2014 the curvature cue for the glass wall.\n\toverlay()\n\t\t.append('rect')\n\t\t.attr('x', boxX)\n\t\t.attr('y', boxY)\n\t\t.attr('width', boxW)\n\t\t.attr('height', boxH)\n\t\t.attr('fill', `url(#${innerShadeId})`)\n\n\t// 7) Glass outline: one stroke around the whole vessel, drawn last so it caps every overlay.\n\troot\n\t\t.append('path')\n\t\t.attr('class', 'vessel-outline')\n\t\t.attr('d', vessel)\n\t\t.attr('fill', 'none')\n\t\t.attr('stroke', '#444')\n\t\t.attr('stroke-width', 2)\n\t\t.attr('pointer-events', 'none')\n\n\t// LEFT axis: 1..maxScore rating numbers with inward ticks + rotated title. The vessel outline\n\t// serves as the axis line, so the domain path is suppressed.\n\tconst ratings: number[] = []\n\tfor (let r = 1; r <= maxScore; r++) ratings.push(r)\n\tconst axis = root\n\t\t.append('g')\n\t\t.attr('transform', `translate(${TUBE_X}, 0)`)\n\t\t// Negative tick size points the ticks inward, into the tube; tickPadding restores the label gap.\n\t\t.call(\n\t\t\taxisLeft(yScale)\n\t\t\t\t.tickValues(ratings)\n\t\t\t\t.tickFormat(d => String(d))\n\t\t\t\t.tickSize(-5)\n\t\t\t\t.tickPadding(8)\n\t\t)\n\taxisstyle({ axis, showline: false, color: '#333' })\n\troot\n\t\t.append('text')\n\t\t.attr('transform', `translate(${TUBE_X - 32}, ${TUBE_TOP + TUBE_H / 2}) rotate(-90)`)\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', '0.9rem')\n\t\t.attr('font-weight', 'bold')\n\t\t.text(a.ratingAxisLabel)\n\n\t/*\n\tNo zone labels and no legend here: the zones are named once per card, as swatches in the shared\n\tlegend that profileForms draws under this chart and the response-distribution chart together.\n\tLabelling them in both charts put the same three words on screen twice, side by side, at two\n\tsizes and two greys.\n\t*/\n}\n", "import { scaleBand, scaleLinear } from 'd3-scale'\nimport { axisBottom, axisLeft, axisRight } from 'd3-axis'\nimport { line } from 'd3-shape'\nimport { axisstyle } from '../../dom/axisstyle.js'\nimport type { ImpressionZone } from './renderImpressionThermometer.js'\n\n/*\nResponse-distribution combo chart, one per POC responder group. x = impression rating\n1..maxScore. Site-Coordinator response frequency is a line in the module color on the LEFT\ny-axis (site counts); POC-staff response frequency is grey columns on the RIGHT y-axis (staff\ncounts). Three performance zones (Weak/Intermediate/Strong) are drawn as background bands.\nThe two y-axes are independent because POC counts far exceed SC counts (see the reference mock-up).\n*/\n\nconst POC_COLUMN_FILL = '#bdbdbd'\n// Single neutral color for all axis text (ticks + titles), so labels read consistently.\nconst AXIS_COLOR = '#333'\nconst POC_COLUMN_STROKE = '#616161'\nconst SC_POINT_R = 5\n\ntype RatingBin = { rating: number; count: number; pct: number }\n\nexport type ResponseDistributionTexts = {\n\tleftAxisLabel: string\n\trightAxisLabel: string\n\txAxisLabel: string\n}\n\nexport type ResponseDistributionArgs = {\n\t// d3 selection of the div that will hold this chart's own <svg> (inside profilePlot.dom.rightDiv).\n\tholder: any\n\tid: any\n\tmaxScore: number\n\t// Shared SC frequency distribution (site counts per rating) \u2014 the line series.\n\tscDistribution: RatingBin[]\n\t// This responder group's POC distribution (staff counts per rating) \u2014 the column series.\n\tpocDistribution: RatingBin[]\n\ttexts: ResponseDistributionTexts\n\t// Drives the background bands only \u2014 the zones are named in the shared legend, not in here.\n\tzones: ImpressionZone[]\n\t// Module color for the SC line/points (same source as the thermometer's SC color).\n\tcolors: { sc: string }\n\t// Binds tooltip text (+ optional hover descriptor) as the element's datum; read by the\n\t// shared profilePlot mousemove\u2192onMouseOver delegation. Passed in by profileForms.\n\tattachTip: (sel: any, text: string, hover?: any) => void\n}\n\nconst MARGIN = { top: 24, right: 64, bottom: 52, left: 64 }\nconst PLOT_W = 300\nconst PLOT_H = 260\n\nexport function renderResponseDistribution(a: ResponseDistributionArgs) {\n\tconst maxScore = a.maxScore\n\tconst scColor = a.colors?.sc || '#888'\n\tconst ratings: number[] = []\n\tfor (let r = 1; r <= maxScore; r++) ratings.push(r)\n\n\tconst scByRating: Record<number, RatingBin> = {}\n\tfor (const d of a.scDistribution || []) scByRating[d.rating] = d\n\tconst pocByRating: Record<number, RatingBin> = {}\n\tfor (const d of a.pocDistribution || []) pocByRating[d.rating] = d\n\n\tconst scTotal = (a.scDistribution || []).reduce((s, d) => s + (d.count || 0), 0)\n\tconst maxScCount = Math.max(1, ...ratings.map(r => scByRating[r]?.count || 0))\n\tconst maxPocCount = Math.max(1, ...ratings.map(r => pocByRating[r]?.count || 0))\n\n\tconst svgW = MARGIN.left + PLOT_W + MARGIN.right\n\tconst svgH = MARGIN.top + PLOT_H + MARGIN.bottom // the legend is the card's, not this chart's\n\tconst svg = a.holder.append('svg').attr('width', svgW).attr('height', svgH)\n\tconst plot = svg.append('g').attr('transform', `translate(${MARGIN.left}, ${MARGIN.top})`)\n\n\t// ~15% headroom above the tallest value on each axis so the line/columns don't touch the top edge.\n\tconst HEADROOM = 1.15\n\tconst x = scaleBand().domain(ratings.map(String)).range([0, PLOT_W]).padding(0.2)\n\tconst yLeft = scaleLinear()\n\t\t.domain([0, maxScCount * HEADROOM])\n\t\t.range([PLOT_H, 0])\n\t\t.nice()\n\tconst yRight = scaleLinear()\n\t\t.domain([0, maxPocCount * HEADROOM])\n\t\t.range([PLOT_H, 0])\n\t\t.nice()\n\n\t// Zone background bands. Each rating occupies a step-wide cell (band + padding); a zone spans\n\t// from the left edge of its first cell to the right edge of its last, so adjacent zones meet at\n\t// the midpoint between ratings \u2014 no white gap \u2014 and together fill the full plot width.\n\tconst bw = x.bandwidth()\n\tconst step = x.step()\n\tfor (const z of a.zones) {\n\t\tconst cMin = x(String(z.min))\n\t\tconst cMax = x(String(z.max))\n\t\tif (cMin == null || cMax == null) continue\n\t\tconst zStart = Math.max(0, cMin + bw / 2 - step / 2)\n\t\tconst zEnd = Math.min(PLOT_W, cMax + bw / 2 + step / 2)\n\t\tplot\n\t\t\t.append('rect')\n\t\t\t.attr('class', 'impression-zone')\n\t\t\t.attr('x', zStart)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', zEnd - zStart)\n\t\t\t.attr('height', PLOT_H)\n\t\t\t.attr('fill', z.color)\n\t\t\t.attr('opacity', 0.3)\n\t}\n\n\t// POC grey columns on the RIGHT axis\n\tfor (const r of ratings) {\n\t\tconst bin = pocByRating[r]\n\t\tconst count = bin?.count || 0\n\t\tconst bx = x(String(r))\n\t\tif (bx == null) continue\n\t\tconst col = plot\n\t\t\t.append('rect')\n\t\t\t.attr('class', 'poc-column')\n\t\t\t.attr('x', bx)\n\t\t\t.attr('y', yRight(count))\n\t\t\t.attr('width', x.bandwidth())\n\t\t\t.attr('height', PLOT_H - yRight(count))\n\t\t\t.attr('fill', POC_COLUMN_FILL)\n\t\t\t.attr('stroke', POC_COLUMN_STROKE)\n\t\t\t.attr('stroke-width', 0.5)\n\t\ta.attachTip(col, `POC rating ${r}: ${count} response${count === 1 ? '' : 's'}`, {\n\t\t\ton: { fill: '#8d8d8d' },\n\t\t\toff: { fill: POC_COLUMN_FILL }\n\t\t})\n\t}\n\n\t// SC series on the LEFT axis. Multi-site \u2192 a line through every rating's site count;\n\t// single site (scTotal=1) \u2192 a single round point (user discretion for one SC response).\n\tconst cx = (r: number) => (x(String(r)) ?? 0) + x.bandwidth() / 2\n\tif (scTotal === 1) {\n\t\tfor (const r of ratings) {\n\t\t\tconst count = scByRating[r]?.count || 0\n\t\t\tif (count <= 0) continue\n\t\t\tconst pt = plot\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('class', 'sc-point')\n\t\t\t\t.attr('cx', cx(r))\n\t\t\t\t.attr('cy', yLeft(count))\n\t\t\t\t.attr('r', SC_POINT_R)\n\t\t\t\t.attr('fill', scColor)\n\t\t\ta.attachTip(pt, `SC rating ${r}: ${count} response`, {\n\t\t\t\ton: { stroke: '#222', 'stroke-width': '1.5' },\n\t\t\t\toff: { stroke: 'none' }\n\t\t\t})\n\t\t}\n\t} else {\n\t\tconst lineGen = line<number>()\n\t\t\t.x(r => cx(r))\n\t\t\t.y(r => yLeft(scByRating[r]?.count || 0))\n\t\tplot\n\t\t\t.append('path')\n\t\t\t.attr('class', 'sc-line')\n\t\t\t.attr('d', lineGen(ratings))\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('stroke', scColor)\n\t\t\t.attr('stroke-width', 2)\n\t\tfor (const r of ratings) {\n\t\t\tconst count = scByRating[r]?.count || 0\n\t\t\tconst pt = plot\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('class', 'sc-point')\n\t\t\t\t.attr('cx', cx(r))\n\t\t\t\t.attr('cy', yLeft(count))\n\t\t\t\t.attr('r', 3)\n\t\t\t\t.attr('fill', scColor)\n\t\t\ta.attachTip(pt, `SC rating ${r}: ${count} response${count === 1 ? '' : 's'}`, {\n\t\t\t\ton: { stroke: '#222', 'stroke-width': '1.5' },\n\t\t\t\toff: { stroke: 'none' }\n\t\t\t})\n\t\t}\n\t}\n\n\t// Axes \u2014 all axis text uses one neutral color; series identity is carried by the line/columns\n\t// and the legend, not by the axis colors.\n\tconst xAxis = plot.append('g').attr('transform', `translate(0, ${PLOT_H})`).call(axisBottom(x))\n\taxisstyle({ axis: xAxis, showline: true, color: AXIS_COLOR })\n\tconst leftAxis = plot.append('g').call(axisLeft(yLeft).ticks(5))\n\taxisstyle({ axis: leftAxis, showline: true, color: AXIS_COLOR })\n\tconst rightAxis = plot.append('g').attr('transform', `translate(${PLOT_W}, 0)`).call(axisRight(yRight).ticks(5))\n\taxisstyle({ axis: rightAxis, showline: true, color: AXIS_COLOR })\n\n\t// Axis titles (same neutral color as the ticks)\n\tplot\n\t\t.append('text')\n\t\t.attr('transform', `translate(${PLOT_W / 2}, ${PLOT_H + 40})`)\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', '0.85rem')\n\t\t.attr('font-weight', 'bold')\n\t\t.attr('fill', AXIS_COLOR)\n\t\t.text(a.texts.xAxisLabel)\n\tplot\n\t\t.append('text')\n\t\t.attr('transform', `translate(${-MARGIN.left + 14}, ${PLOT_H / 2}) rotate(-90)`)\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', '0.82rem')\n\t\t.attr('font-weight', 'bold')\n\t\t.attr('fill', AXIS_COLOR)\n\t\t.text(a.texts.leftAxisLabel)\n\tplot\n\t\t.append('text')\n\t\t.attr('transform', `translate(${PLOT_W + MARGIN.right - 14}, ${PLOT_H / 2}) rotate(90)`)\n\t\t.attr('text-anchor', 'middle')\n\t\t.attr('font-size', '0.82rem')\n\t\t.attr('font-weight', 'bold')\n\t\t.attr('fill', AXIS_COLOR)\n\t\t.text(a.texts.rightAxisLabel)\n\n\t/*\n\tNo legend and no zone labels here: both are drawn once per card by profileForms, under this\n\tchart and the thermometer together. Rendering them per chart put the same swatches and the same\n\tthree zone names on screen twice, side by side.\n\t*/\n}\n", "import type { Div } from '../../types/d3'\nimport type { ImpressionZone } from './renderImpressionThermometer.js'\n\n/*\nOne legend per chart in an impression card: the thermometer and the response-distribution chart each\ndraw their own, so each names its series with the mark that carries it there. The distribution chart\nuses a line with a vertex dot for the SC series and a square for the POC columns; the thermometer\nuses a circle for each fill. Both legends also name the three performance zones (shared swatches).\n*/\n\nconst SWATCH_SIZE = 14 // square swatches: the POC series and the zone bands\nconst LINE_W = 22 // the SC line swatch\nconst DOT_R = 4 // the vertex marker on the SC line swatch\nconst LABEL_GAP = 6\nconst ITEM_GAP = 20\nconst ROW_H = 22\nconst PAD_X = 2 // horizontal inset so the outermost swatch strokes stay inside the svg\nconst FONT_SIZE = '0.8rem'\n\n/*\nZone swatches carry the same 0.3 opacity the bands are painted at in both charts, so the swatch is\nthe color the viewer actually sees rather than the saturated source color.\n*/\nconst ZONE_OPACITY = 0.3\n\n/*\nEach series is swatched as the mark that carries it in its chart: in the distribution chart SC is a\nline through every rating (a line with a vertex dot) and POC is a column per rating (a square); in\nthe thermometer both are fills (a circle each).\n*/\nexport type ImpressionSeriesSymbol = 'line' | 'square' | 'circle'\n\nexport type ImpressionLegendArgs = {\n\t// d3 selection of the div that will hold this legend's own <svg>.\n\tholder: Div\n\t// Series entries in draw order: SC always, POC only when the module has responder groups.\n\tseries: { color: string; label: string; symbol: ImpressionSeriesSymbol }[]\n\tzones: ImpressionZone[]\n}\n\nconst textWidth = (sel: any) => (sel.node() as SVGTextElement).getBBox().width\n\nexport function renderImpressionLegend(a: ImpressionLegendArgs) {\n\tconst holder = a.holder.style('display', 'flex').style('justify-content', 'center').style('padding-top', '8px')\n\tconst svg = holder.append('svg')\n\tconst g = svg.append('g')\n\n\t// Row 1 \u2014 series swatches (SC / POC). Laid out from x=0, then the whole row is centered below.\n\tconst seriesG = g.append('g')\n\tconst seriesCy = ROW_H / 2\n\tlet sx = 0\n\tfor (const s of a.series) {\n\t\tconst item = seriesG.append('g').attr('class', 'impression-legend-item')\n\t\tconst swatchW = s.symbol === 'line' ? LINE_W : SWATCH_SIZE\n\t\tif (s.symbol === 'line') {\n\t\t\titem\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', sx)\n\t\t\t\t.attr('y1', seriesCy)\n\t\t\t\t.attr('x2', sx + LINE_W)\n\t\t\t\t.attr('y2', seriesCy)\n\t\t\t\t.attr('stroke', s.color)\n\t\t\t\t.attr('stroke-width', 2)\n\t\t\titem\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('cx', sx + LINE_W / 2)\n\t\t\t\t.attr('cy', seriesCy)\n\t\t\t\t.attr('r', DOT_R)\n\t\t\t\t.attr('fill', s.color)\n\t\t} else if (s.symbol === 'circle') {\n\t\t\titem\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('cx', sx + SWATCH_SIZE / 2)\n\t\t\t\t.attr('cy', seriesCy)\n\t\t\t\t.attr('r', SWATCH_SIZE / 2)\n\t\t\t\t.attr('fill', s.color)\n\t\t\t\t.attr('stroke', '#666')\n\t\t\t\t.attr('stroke-width', 0.5)\n\t\t} else {\n\t\t\titem\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', sx)\n\t\t\t\t.attr('y', seriesCy - SWATCH_SIZE / 2)\n\t\t\t\t.attr('width', SWATCH_SIZE)\n\t\t\t\t.attr('height', SWATCH_SIZE)\n\t\t\t\t.attr('fill', s.color)\n\t\t\t\t.attr('stroke', '#666')\n\t\t\t\t.attr('stroke-width', 0.5)\n\t\t}\n\t\tconst label = item\n\t\t\t.append('text')\n\t\t\t.attr('x', sx + swatchW + LABEL_GAP)\n\t\t\t.attr('y', seriesCy)\n\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t.attr('font-size', FONT_SIZE)\n\t\t\t.text(s.label)\n\t\tsx += swatchW + LABEL_GAP + textWidth(label) + ITEM_GAP\n\t}\n\tconst seriesW = Math.max(0, sx - ITEM_GAP)\n\n\t// Row 2 \u2014 zone swatches (Weak / Intermediate / Strong), sorted low to high on a copy since the\n\t// caller's zones array is shared with both chart renderers.\n\tconst zonesG = g.append('g')\n\tconst zonesCy = ROW_H + ROW_H / 2\n\tlet zx = 0\n\tfor (const z of [...a.zones].sort((z1, z2) => z1.min - z2.min)) {\n\t\tconst item = zonesG.append('g').attr('class', 'impression-legend-zone')\n\t\titem\n\t\t\t.append('rect')\n\t\t\t.attr('x', zx)\n\t\t\t.attr('y', zonesCy - SWATCH_SIZE / 2)\n\t\t\t.attr('width', SWATCH_SIZE)\n\t\t\t.attr('height', SWATCH_SIZE)\n\t\t\t.attr('fill', z.color)\n\t\t\t.attr('opacity', ZONE_OPACITY)\n\t\t\t.attr('stroke', '#ccc')\n\t\t\t.attr('stroke-width', 0.5)\n\t\tconst label = item\n\t\t\t.append('text')\n\t\t\t.attr('x', zx + SWATCH_SIZE + LABEL_GAP)\n\t\t\t.attr('y', zonesCy)\n\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t.attr('font-size', FONT_SIZE)\n\t\t\t.text(z.label)\n\t\tzx += SWATCH_SIZE + LABEL_GAP + textWidth(label) + ITEM_GAP\n\t}\n\tconst zonesW = Math.max(0, zx - ITEM_GAP)\n\n\t/*\n\tCenter each row within the wider of the two, and size the svg to two rows. Rows are inset by\n\tPAD_X because swatch strokes are centered on the path: the leftmost circle/rect of the wider\n\trow sits at x=0 and its stroke would otherwise render half outside the viewport.\n\t*/\n\tconst totalW = Math.max(seriesW, zonesW)\n\tseriesG.attr('transform', `translate(${PAD_X + (totalW - seriesW) / 2}, 0)`)\n\tzonesG.attr('transform', `translate(${PAD_X + (totalW - zonesW) / 2}, 0)`)\n\tsvg.attr('width', Math.ceil(totalW) + 2 * PAD_X).attr('height', 2 * ROW_H)\n}\n", "import { getCompInit, copyMerge } from '../../rx/index.js'\nimport { getProfilePlotConfig, profilePlot, getDefaultProfilePlotSettings } from './profilePlot.js'\nimport { fillTermWrapper, fillTwLst } from '#termsetting'\nimport { axisBottom, axisTop } from 'd3-axis'\nimport { scaleLinear as d3Linear } from 'd3-scale'\nimport { select } from 'd3-selection'\nimport type { Selection } from 'd3-selection'\nimport 'd3-transition'\nimport { Tabs } from '../../dom/toggleButtons.js'\nimport { roundValueAuto } from '#shared'\nimport { dofetch3 } from '#common/dofetch'\nimport { renderImpressionThermometer, IMPRESSION_MAX_SCORE, POC_FILL } from './renderImpressionThermometer.js'\nimport { renderResponseDistribution } from './renderResponseDistribution.js'\nimport { renderImpressionLegend } from './renderImpressionLegend.js'\n\nconst YES_NO_TAB = 'Yes/No Barchart'\nconst LIKERT_TAB = 'Likert Scale'\n\n// Used to detect when the user clicked an \"Impression\" domain term in the tree\n// (parent term ID ends with '__Impression'). Such domains don't have multivalue\n// children \u2014 they wrap a SC integer term and a POC float term \u2014 so the standard\n// tabs flow is skipped and a dedicated thermometer is rendered instead.\nconst IMPRESSION_SUFFIX = '__Impression'\n\nexport class profileForms extends profilePlot {\n\tstatic type = 'profileForms' as const\n\tid: any\n\tsvg: any\n\tcomponents: any\n\tdom: any\n\txAxisScale: any\n\tshift: any\n\ttwLst: any\n\tfilterG: any\n\tactivePlot: any\n\tscScoreTerms: any\n\ttabs: any\n\tshiftTop: any\n\tcategories: any\n\tmodule: any\n\tlegendG: any\n\t//for each plot tab, a dict of sc term wrappers\n\tid2SCTW: { [key: string]: { [key: string]: any } }\n\n\t// Impression-domain mode (set in init() when config.tw.term.id ends with '__Impression')\n\tisImpressionDomain!: boolean\n\tscTW: any\n\tpocTW: any\n\t// Responder-level multivalue impression term ids under this __Impression domain\n\t// (POCFimpression_mod*). When present, the route builds the POC distribution per\n\t// responder from these instead of the per-site pocTW float.\n\tpocResponderTermIds: string[] = []\n\t// Per-module color sourced from the DB: terms.jsondata.color on the SC and POC children.\n\t// Within a module SC and POC share the same color in the DB; we capture both for safety.\n\timpressionScColor?: string\n\timpressionPocColor?: string\n\n\tconstructor(opts) {\n\t\tsuper(opts, 'profileForms')\n\t\tthis.opts = opts\n\t\tthis.id2SCTW = {}\n\t}\n\n\tasync init(appState) {\n\t\tsuper.init(appState)\n\t\tconst config = structuredClone(appState.plots.find(p => p.id === this.id))\n\t\tconst parentId: string = config.tw?.term?.id || ''\n\t\tthis.isImpressionDomain = parentId.endsWith(IMPRESSION_SUFFIX)\n\t\tconst settings = config.settings.profileForms\n\t\tthis.tabs = []\n\t\tthis.twLst = []\n\t\tif (this.isImpressionDomain) {\n\t\t\t// Children of an \"__Impression\" domain are scalar (integer SC + float POC),\n\t\t\t// not multivalue. Resolve them via getTermChildren \u2014 but note the server\n\t\t\t// joins on subcohort_terms with a cohort string, so we MUST pass the active\n\t\t\t// cohort or no children come back. Mirrors the lookup tree.js does\n\t\t\t// (state.cohortValuelst = termdbConfig.selectCohort.values[activeCohort].keys).\n\t\t\tconst cohortValuelst = appState.termdbConfig?.selectCohort\n\t\t\t\t? appState.termdbConfig.selectCohort.values[appState.activeCohort]?.keys\n\t\t\t\t: null\n\t\t\tconst childData = await this.app.vocabApi.getTermChildren({ id: parentId }, cohortValuelst)\n\t\t\tconst children: any[] = childData?.lst || []\n\t\t\tconst scChild = children.find(t => t.type === 'integer') || children[0]\n\t\t\t// pocChild may be absent \u2014 Patients & Outcomes is SC-only by design.\n\t\t\tconst pocChild = children.find(t => t.type === 'float')\n\t\t\t// Responder-level impression terms (one or more per domain). Selected by type\n\t\t\t// rather than id pattern, so the upstream POCFmpression_mod8 typo is tolerated.\n\t\t\tthis.pocResponderTermIds = children.filter(t => t.type === 'multivalue').map(t => t.id)\n\t\t\tif (!scChild) {\n\t\t\t\tconsole.error('profileForms impression-domain SC child not found:', { parentId, cohortValuelst, childData })\n\t\t\t}\n\t\t\tif (scChild) {\n\t\t\t\tthis.scTW = { id: scChild.id, q: { mode: 'continuous' } }\n\t\t\t\tawait fillTermWrapper(this.scTW, this.app.vocabApi)\n\t\t\t\t// Per-module color: every term under a module (SC/POC/responder) carries the same\n\t\t\t\t// module color in the DB. Read it off the filled tw, same as polar2/radar2/barchart2.\n\t\t\t\tthis.impressionScColor = this.scTW.term.color\n\t\t\t}\n\t\t\tif (pocChild) {\n\t\t\t\tthis.pocTW = { id: pocChild.id, q: { mode: 'continuous' } }\n\t\t\t\tawait fillTermWrapper(this.pocTW, this.app.vocabApi)\n\t\t\t\tthis.impressionPocColor = this.pocTW.term.color\n\t\t\t}\n\t\t} else {\n\t\t\tthis.twLst = await this.app.vocabApi.getMultivalueTWs({ parent_id: parentId })\n\t\t\tfor (const plot of config.options) {\n\t\t\t\tconst tws = this.twLst.filter(tw => tw.term.subtype == plot.subtype)\n\t\t\t\tif (!tws.length) continue //no terms for this plot\n\t\t\t\tconst tab: any = {\n\t\t\t\t\tlabel: plot.name,\n\t\t\t\t\tcallback: () => {\n\t\t\t\t\t\tthis.app.dispatch({ type: 'plot_edit', id: this.id, config: { activeTab: plot.name } })\n\t\t\t\t\t},\n\t\t\t\t\tactive: false\n\t\t\t\t}\n\t\t\t\tif (plot.name == config.activeTab) tab.active = true\n\t\t\t\tif (plot.hasSC) {\n\t\t\t\t\tthis.id2SCTW[plot.name] = {}\n\t\t\t\t\tfor (const tw of this.twLst) {\n\t\t\t\t\t\tif (tw.term.subtype != plot.subtype) continue\n\t\t\t\t\t\tconst scTermId = tw.term.id.replace(/^POC/, '')\n\t\t\t\t\t\tconst scTW: any = { id: scTermId }\n\t\t\t\t\t\tawait fillTermWrapper(scTW, this.app.vocabApi)\n\t\t\t\t\t\tthis.id2SCTW[plot.name][scTermId] = scTW\n\t\t\t\t\t}\n\t\t\t\t\tthis.twLst.push(...Object.values(this.id2SCTW[plot.name]))\n\t\t\t\t}\n\t\t\t\tthis.tabs.push(tab)\n\t\t\t}\n\t\t}\n\t\tconst rightDiv = this.dom.rightDiv\n\t\tconst topDiv = rightDiv.append('div')\n\t\tconst domainDiv = topDiv.append('div').style('padding-bottom', '10px').style('font-weight', 'bold')\n\n\t\tconst headerDiv = rightDiv.append('div').style('padding-bottom', '10px')\n\t\tif (!this.isImpressionDomain && this.tabs.length > 1)\n\t\t\tawait new Tabs({\n\t\t\t\tholder: topDiv,\n\t\t\t\ttabsPosition: 'horizontal',\n\t\t\t\ttabs: this.tabs\n\t\t\t}).main()\n\n\t\tconst shift = 690\n\t\tconst shiftTop = 50\n\t\tconst width = settings.svgw + shift + 500\n\t\tconst svg = rightDiv.style('padding', '20px').append('svg').attr('width', width)\n\t\tsvg\n\t\t\t.append('defs')\n\t\t\t.append('pattern')\n\t\t\t.attr('id', `${this.id}_diagonalHatch`)\n\t\t\t.attr('patternUnits', 'userSpaceOnUse')\n\t\t\t.attr('width', 4)\n\t\t\t.attr('height', 4)\n\t\t\t.append('path')\n\t\t\t.attr('d', 'M-1,1 l2,-2 M0,4 l4,-4 M3,5 l2,-2')\n\t\t\t.attr('stroke-width', 1)\n\t\t\t.attr('stroke', 'gray')\n\t\tthis.shiftTop = shiftTop\n\t\tthis.shift = shift\n\t\tconst mainG = svg.append('g').attr('transform', `translate(${shift}, ${shiftTop})`)\n\t\tconst gridG = svg.append('g').attr('transform', `translate(${shift}, ${shiftTop})`)\n\t\tthis.filterG = svg.append('g').attr('transform', `translate(${shift + settings.svgw + 60}, ${shiftTop + 40})`)\n\t\tthis.legendG = svg.append('g') //each plot will translate it to the right position\n\n\t\tconst xAxisG = svg.append('g').attr('transform', `translate(${shift}, ${shiftTop / 2})`)\n\n\t\t// Impression-domain charts (thermometer + response distribution) render into their own\n\t\t// per-group svgs inside this div, not the Likert/YesNo svg scaffolding above. Kept inside\n\t\t// rightDiv so the mousemove/mouseout tooltip delegation (profilePlot) covers them.\n\t\tconst impressionDiv = rightDiv.append('div')\n\t\tif (this.isImpressionDomain) svg.style('display', 'none')\n\n\t\tthis.dom = copyMerge(this.dom, {\n\t\t\tsvg,\n\t\t\theaderDiv,\n\t\t\tmainG,\n\t\t\tgridG,\n\t\t\tlegendG: this.legendG,\n\t\t\txAxisG,\n\t\t\tdomainDiv,\n\t\t\timpressionDiv\n\t\t})\n\t}\n\n\tasync main() {\n\t\tthis.dom.loadingDiv.style('display', '')\n\t\ttry {\n\t\t\tawait super.main()\n\t\t\tconst parents = this.config.tw.term.id.split('__')\n\t\t\tthis.module = parents[1]\n\t\t\tconst domain = parents.slice(1).join(' / ')\n\t\t\t/*\n\t\t\tThe impression view's own title already names the module, so this breadcrumb would repeat\n\t\t\tit directly above. Set display in both directions \u2014 the same instance switches modes.\n\t\t\t*/\n\t\t\tthis.dom.domainDiv.style('display', this.isImpressionDomain ? 'none' : '').text(domain)\n\t\t\tthis.dom.mainG.selectAll('*').remove()\n\t\t\tthis.dom.gridG.selectAll('*').remove()\n\t\t\tthis.dom.xAxisG.selectAll('*').remove()\n\t\t\tthis.dom.legendG.selectAll('*').remove()\n\n\t\t\tif (this.isImpressionDomain) {\n\t\t\t\tawait this.setControls()\n\t\t\t\tthis.data = await this.fetchImpressionDistribution()\n\t\t\t\tif (this.data && 'error' in this.data) throw this.data.error\n\t\t\t\tthis.renderImpression()\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.tabs.length == 0) return // no plots to show\n\t\t\tconst activeTab = this.state.config.activeTab || this.tabs[0].label\n\t\t\tthis.activePlot = this.state.config.options.find(p => p.name == activeTab)\n\t\t\tthis.scoreTerms = this.twLst.filter(tw => tw.term.subtype == this.activePlot.subtype)\n\t\t\tif (this.activePlot.hasSC) {\n\t\t\t\tthis.scScoreTerms = Object.values(this.id2SCTW[this.activePlot.name])\n\t\t\t}\n\t\t\tthis.categories = new Set()\n\t\t\tawait this.setControls()\n\t\t\tthis.renderPlot()\n\t\t\tthis.filterG.selectAll('*').remove()\n\t\t\tthis.addFilterLegend()\n\t\t} finally {\n\t\t\tthis.dom.loadingDiv.style('display', 'none')\n\t\t}\n\t}\n\n\tasync setControls(additionalInputs: any[] = []) {\n\t\tif (!this.isImpressionDomain) return super.setControls(additionalInputs)\n\t\t// In impression-domain mode scoreTerms/scScoreTerms are not initialized, so the\n\t\t// base setControls() profileForms branch (getProfileFormScores) must not fire.\n\t\t// Temporarily shadow this.type so the base treats this call like a non-forms type,\n\t\t// which still builds filteredTermValues, this.filter, and the controls UI.\n\t\tconst savedType = (this as any).type\n\t\t;(this as any).type = '__impressionDomain'\n\t\ttry {\n\t\t\tawait super.setControls(additionalInputs)\n\t\t} finally {\n\t\t\t;(this as any).type = savedType\n\t\t}\n\t}\n\n\trenderPlot() {\n\t\ttry {\n\t\t\tthis.dom.headerDiv.style('display', 'none')\n\n\t\t\tswitch (this.activePlot.name) {\n\t\t\t\tcase LIKERT_TAB:\n\t\t\t\t\tthis.renderLikert()\n\t\t\t\t\tbreak\n\t\t\t\tcase YES_NO_TAB:\n\t\t\t\t\tthis.renderYesNo()\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error('Error rendering profile forms plot:', e) //prints stack trace\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tprivate async fetchImpressionDistribution() {\n\t\tif (!this.scTW) return { error: 'missing SC term for impression domain' }\n\t\t// pocTermId is omitted when this.pocTW is undefined (SC-only modules e.g. Patients & Outcomes).\n\t\tconst body: any = {\n\t\t\tgenome: this.state.vocab.genome,\n\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\tscTermId: this.scTW.term.id,\n\t\t\tmaxScore: IMPRESSION_MAX_SCORE,\n\t\t\tfilter: this.filter,\n\t\t\tfilterByUserSites: this.settings?.filterByUserSites\n\t\t}\n\t\tif (this.pocTW) body.pocTermId = this.pocTW.term.id\n\t\tif (this.pocResponderTermIds.length) body.pocResponderTermIds = this.pocResponderTermIds\n\t\treturn dofetch3('termdb/profileImpressionDistribution', { body })\n\t}\n\n\t/*\n\tImpression-domain view: for each POC responder group render a thermometer (shared SC median +\n\tthat group's POC median, with performance zones) beside a response-distribution combo chart\n\t(SC line on the left axis, grey POC columns on the right axis). Groups stack vertically. A\n\tmodule with no POC responders (e.g. Patients & Outcomes) renders a single SC-only thermometer.\n\t*/\n\tprivate renderImpression() {\n\t\tconst holder = this.dom.impressionDiv\n\t\tholder.selectAll('*').remove()\n\t\tconst texts = this.config.impression\n\t\t// The whole view is driven off this config block (zones, titles, legend, axis labels), so a\n\t\t// dataset missing it fails here with a named cause rather than downstream on a member access.\n\t\tif (!texts) throw `Missing impression config for the plot ${this.type} in this dataset`\n\t\tconst scColor = this.impressionScColor || '#888'\n\t\tconst data = this.data\n\n\t\t// Resolve each performance-zone color from this module's colorMap gradient (config gives the\n\t\t// shade key, not a literal color): Weak=SOMETIMES (lightest) \u2026 Strong=ALMOST ALWAYS (darkest).\n\t\t// Falls back to the base module color if a shade is absent for the module.\n\t\tconst moduleShades = this.state.termdbConfig?.colorMap?.[this.module] || {}\n\t\tconst zones = texts.zones.map((z: any) => ({\n\t\t\tlabel: z.label,\n\t\t\tmin: z.min,\n\t\t\tmax: z.max,\n\t\t\tcolor: moduleShades[z.shade] || scColor\n\t\t}))\n\n\t\t// Bind tooltip text + optional hover descriptor as the element's datum. The shared\n\t\t// profilePlot mousemove\u2192onMouseOver delegation reads __data__ (same pattern as polar2/radar2).\n\t\tconst attachTip = (sel: any, text: string, hover?: any) => {\n\t\t\tsel.datum({ tip: text, ...(hover || {}) }).style('cursor', 'pointer')\n\t\t}\n\n\t\tconst responders: any[] = Array.isArray(data.responders) ? data.responders : []\n\t\tconst groups = responders.length\n\t\t\t? responders.map(r => ({\n\t\t\t\t\tgroupLabel: r.label,\n\t\t\t\t\tpoc: { median: r.median, total: r.total },\n\t\t\t\t\tpocDistribution: r.distribution\n\t\t\t }))\n\t\t\t: [{ groupLabel: null, poc: null, pocDistribution: [] }]\n\n\t\tgroups.forEach((g, i) => {\n\t\t\t/*\n\t\t\tOne self-contained block per responder group: the module title, the Site-Coordinator-vs-group\n\t\t\tcomparison line, and the applied-filters + n line, above a single bordered box holding the two\n\t\t\tcharts. Tagged so getChartImages() can collect this block's svgs for download and name them.\n\t\t\t*/\n\t\t\tconst block = holder\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sjpp-impression-card')\n\t\t\t\t.attr('data-group-label', g.groupLabel || texts.legend.sc)\n\t\t\t\t.style('width', 'fit-content')\n\t\t\t\t.style('max-width', '100%')\n\t\t\t\t.style('margin', '18px auto')\n\n\t\t\t// Centered title block: module title, the SC-vs-group comparison (POC groups only), and the\n\t\t\t// applied-filters + n line. addFilterLegend() draws into this.filterG partly above y=0, so the\n\t\t\t// group is shifted to start at (pad, pad) and the svg sized to fit it.\n\t\t\tconst header = block.append('div').style('text-align', 'center')\n\t\t\theader\n\t\t\t\t.append('div')\n\t\t\t\t.style('font-size', '1.25rem')\n\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t.style('padding', '4px 0')\n\t\t\t\t.text(texts.titleTemplate.replace('{module}', this.module))\n\t\t\tif (g.poc)\n\t\t\t\theader\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('font-size', '1.05rem')\n\t\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t\t.text(texts.comparisonTitle.replace('{group}', g.groupLabel))\n\t\t\tconst filterSvg = header.append('div').style('padding', '2px 0').append('svg')\n\t\t\tthis.filtersCount = 0\n\t\t\tthis.filterG = filterSvg.append('g')\n\t\t\tthis.addFilterLegend()\n\t\t\tconst ffb = filterSvg.node().getBBox()\n\t\t\tconst fpad = 3\n\t\t\tthis.filterG.attr('transform', `translate(${-ffb.x + fpad}, ${-ffb.y + fpad})`)\n\t\t\tfilterSvg.attr('width', Math.ceil(ffb.width + 2 * fpad)).attr('height', Math.ceil(ffb.height + 2 * fpad))\n\n\t\t\t// The bordered box: the two chart panels side by side with a vertical divider between them.\n\t\t\tconst box = block\n\t\t\t\t.append('div')\n\t\t\t\t.style('border', '1px solid #bbb')\n\t\t\t\t.style('border-radius', '8px')\n\t\t\t\t.style('background', '#fff')\n\t\t\t\t.style('margin-top', '6px')\n\t\t\t// align-items:stretch makes both panels the tallest panel's height, so the legends (pinned to\n\t\t\t// the bottom of each) line up on the same row.\n\t\t\tconst body = box\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('flex-wrap', 'wrap')\n\t\t\t\t.style('align-items', 'stretch')\n\t\t\t\t.style('justify-content', 'center')\n\n\t\t\t// A panel holds a title, the chart svg (vertically centered in the stretched height), and the\n\t\t\t// chart's own two-row legend at the bottom. `divider` draws the vertical line to the next\n\t\t\t// panel as a right border on this one.\n\t\t\tconst chartPanel = (title: string, divider: boolean) => {\n\t\t\t\tconst panel = body\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('padding', '12px 18px')\n\t\t\t\t\t.style('display', 'flex')\n\t\t\t\t\t.style('flex-direction', 'column')\n\t\t\t\t\t.style('align-items', 'center')\n\t\t\t\tif (divider) panel.style('border-right', '1px solid #ddd')\n\t\t\t\tpanel\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('text-align', 'center')\n\t\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t\t.style('font-size', '1rem')\n\t\t\t\t\t.style('padding-bottom', '4px')\n\t\t\t\t\t.text(title)\n\t\t\t\t// Grow to fill the panel height and center the chart in it; the caller appends the legend\n\t\t\t\t// after this, so it settles at the bottom \u2014 level with the other panel's legend.\n\t\t\t\tconst chartWrap = panel\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('flex', '1 1 auto')\n\t\t\t\t\t.style('display', 'flex')\n\t\t\t\t\t.style('align-items', 'center')\n\t\t\t\treturn { panel, chartHolder: chartWrap.append('div') }\n\t\t\t}\n\n\t\t\t// Thermometer panel (left); a divider follows it only when a distribution panel does.\n\t\t\tconst thermo = chartPanel(texts.chartTitles.thermometer, !!g.poc)\n\t\t\trenderImpressionThermometer({\n\t\t\t\tholder: thermo.chartHolder,\n\t\t\t\tid: `${this.id}-g${i}`,\n\t\t\t\tsc: { median: data.scMedian, total: data.scTotal },\n\t\t\t\tpoc: g.poc,\n\t\t\t\tratingAxisLabel: texts.ratingAxisLabel,\n\t\t\t\tzones,\n\t\t\t\tcolors: { sc: scColor },\n\t\t\t\tattachTip\n\t\t\t})\n\t\t\trenderImpressionLegend({\n\t\t\t\tholder: thermo.panel.append('div'),\n\t\t\t\tseries: [\n\t\t\t\t\t{ color: scColor, label: texts.legend.sc, symbol: 'circle' as const },\n\t\t\t\t\t...(g.poc ? [{ color: POC_FILL, label: texts.legend.poc, symbol: 'circle' as const }] : [])\n\t\t\t\t],\n\t\t\t\tzones\n\t\t\t})\n\n\t\t\tif (g.poc) {\n\t\t\t\tconst dist = chartPanel(texts.chartTitles.distribution, false)\n\t\t\t\trenderResponseDistribution({\n\t\t\t\t\tholder: dist.chartHolder,\n\t\t\t\t\tid: `${this.id}-dist-g${i}`,\n\t\t\t\t\tmaxScore: IMPRESSION_MAX_SCORE,\n\t\t\t\t\tscDistribution: data.scDistribution || [],\n\t\t\t\t\tpocDistribution: g.pocDistribution,\n\t\t\t\t\ttexts: texts.distribution,\n\t\t\t\t\tzones,\n\t\t\t\t\tcolors: { sc: scColor },\n\t\t\t\t\tattachTip\n\t\t\t\t})\n\t\t\t\trenderImpressionLegend({\n\t\t\t\t\tholder: dist.panel.append('div'),\n\t\t\t\t\tseries: [\n\t\t\t\t\t\t{ color: scColor, label: texts.legend.sc, symbol: 'line' as const },\n\t\t\t\t\t\t{ color: POC_FILL, label: texts.legend.poc, symbol: 'square' as const }\n\t\t\t\t\t],\n\t\t\t\t\tzones\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\t/*\n\tThe impression view renders each card's charts as separate <svg> elements under impressionDiv and\n\thides the main this.dom.svg, so the base getChartImages() \u2014 which only collects this.dom.svg \u2014\n\twould hand the download menu one empty, hidden svg (nothing downloads). Collect the card svgs\n\tinstead, keyed by the group label so a multi-card module downloads sensibly. The Likert/YesNo\n\tpath still draws into this.dom.svg, so it keeps the base behavior.\n\t*/\n\tgetChartImages() {\n\t\tif (!this.isImpressionDomain) return super.getChartImages()\n\t\tconst note = '\u00A9 2025 St. Jude Children\u2019s Research Hospital'\n\t\tconst charts: { name: string; svg: Selection<SVGSVGElement, unknown, null, undefined> }[] = []\n\t\tthis.dom.impressionDiv.selectAll('.sjpp-impression-card').each(function (this: HTMLElement) {\n\t\t\tconst card = select(this)\n\t\t\tconst label = card.attr('data-group-label') || ''\n\t\t\tcard.selectAll<SVGSVGElement, unknown>('svg').each(function (this: SVGSVGElement) {\n\t\t\t\tcharts.push({ name: `${label} ${note}`.trim(), svg: select(this) })\n\t\t\t})\n\t\t})\n\t\treturn charts\n\t}\n\n\trenderLikert() {\n\t\tthis.dom.headerDiv.style('display', 'block')\n\t\tthis.dom.headerDiv.selectAll('*').remove()\n\t\tlet y = 0\n\t\tconst step = 30\n\t\tconst height = (this.scoreTerms.length + 2) * step\n\t\tthis.dom.svg.attr('height', height + 120)\n\t\tthis.categories = new Set<string>()\n\n\t\t// First pass: render labels to measure max width\n\t\tconst labelPadding = 80\n\t\tconst tempG = this.dom.svg.append('g').style('visibility', 'hidden')\n\t\tlet maxLabelWidth = 0\n\t\tfor (const tw of this.scoreTerms) {\n\t\t\tif (tw.term.type != 'multivalue') continue\n\t\t\tconst text = getText(tw.term.details || tw.term.name)\n\t\t\tconst tempText = tempG.append('text').style('font-size', '0.85em').text(text)\n\t\t\tconst w = (tempText.node() as SVGTextElement).getBBox().width\n\t\t\tif (w > maxLabelWidth) maxLabelWidth = w\n\t\t}\n\t\ttempG.remove()\n\t\tconst shift = maxLabelWidth + labelPadding\n\t\tthis.dom.mainG.attr('transform', `translate(${shift}, ${this.shiftTop})`)\n\t\tthis.dom.gridG.attr('transform', `translate(${shift}, ${this.shiftTop})`)\n\t\tthis.filterG.attr('transform', `translate(${shift + this.settings.svgw + 60}, ${this.shiftTop + 40})`)\n\t\tthis.dom.svg.attr('width', shift + this.settings.svgw + 500)\n\t\tthis.shift = shift\n\n\t\tfor (const tw of this.scoreTerms) {\n\t\t\tif (tw.term.type != 'multivalue') continue\n\t\t\tconst dict = this.getPercentageDict(tw) //get the dict with the counts for each category for the list of samples\n\t\t\tthis.renderLikertBar(dict, y, 25, tw)\n\t\t\ty += step\n\t\t}\n\t\ty += step * 2\n\t\tconst width = this.settings.svgw\n\t\tconst posScale = d3Linear()\n\t\t\t.domain([0, 100])\n\t\t\t.range([shift, shift + width])\n\t\tconst posAxisBottom = axisBottom(posScale)\n\t\t\t.ticks(10)\n\t\t\t.tickFormat(d => d + '%')\n\t\tconst scaleG = this.dom.svg.append('g').attr('transform', `translate(0, ${y})`)\n\t\tposAxisBottom(scaleG)\n\t\t// Fixed legend display order for Likert categories\n\t\tconst likertLegendOrder = [\n\t\t\t\"I Don't Know\",\n\t\t\t'Do Not Know',\n\t\t\t'No',\n\t\t\t'Not Available',\n\t\t\t'Not Applicable For My Role',\n\t\t\t'Almost Never',\n\t\t\t'Infrequently',\n\t\t\t'Sometimes',\n\t\t\t'Frequently',\n\t\t\t'Almost Always'\n\t\t]\n\t\tconst catUpperSet = new Set([...this.categories].map(c => c.toUpperCase()))\n\t\tconst orderedCategories: string[] = likertLegendOrder.filter(c => catUpperSet.has(c.toUpperCase()))\n\t\tconst colorMap = this.state.termdbConfig.colorMap\n\t\tconst legendG = this.dom.legendG.attr('transform', `translate(0, ${y + 50})`)\n\t\tconst rectSize = 14\n\t\tconst rectTextGap = 5\n\t\tconst itemGap = 12\n\t\tlet x = 0\n\t\tfor (const category of orderedCategories) {\n\t\t\tconst key = category.toUpperCase()\n\t\t\tconst color = colorMap[this.module][key] || colorMap['*'][key] || colorMap['*'][category]\n\t\t\tconst itemG = legendG.append('g').attr('transform', `translate(${x}, 0)`)\n\t\t\titemG.append('rect').attr('width', rectSize).attr('height', rectSize).attr('fill', color)\n\t\t\tconst label = itemG\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', rectSize + rectTextGap)\n\t\t\t\t.attr('y', rectSize / 2)\n\t\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.text(category)\n\t\t\tx += rectSize + rectTextGap + (label.node() as SVGTextElement).getBBox().width + itemGap\n\t\t}\n\t}\n\n\trenderYesNo() {\n\t\tconst step = 30\n\t\tconst height = this.scoreTerms.length * step\n\t\tthis.dom.svg.attr('height', height * 3 + 200) //space for the sc, for the poc and between items\n\n\t\t// First pass: render labels to measure max width\n\t\tconst labelPadding = 50\n\t\tconst tempG = this.dom.svg.append('g').style('visibility', 'hidden')\n\t\tlet maxLabelWidth = 0\n\t\tfor (const tw of this.scoreTerms) {\n\t\t\tconst text = getText(tw.term.name)\n\t\t\tconst tempText = tempG.append('text').style('font-size', '0.8em').text(text)\n\t\t\tconst w = (tempText.node() as SVGTextElement).getBBox().width\n\t\t\tif (w > maxLabelWidth) maxLabelWidth = w\n\t\t}\n\t\ttempG.remove()\n\t\tconst shift = maxLabelWidth + labelPadding\n\t\tthis.dom.mainG.attr('transform', `translate(${shift}, ${this.shiftTop})`)\n\t\tthis.dom.gridG.attr('transform', `translate(${shift}, ${this.shiftTop})`)\n\t\tthis.dom.xAxisG.attr('transform', `translate(${shift}, ${this.shiftTop / 2})`)\n\t\tthis.filterG.attr('transform', `translate(${shift + this.settings.svgw + 60}, ${this.shiftTop + 40})`)\n\t\tthis.dom.svg.attr('width', shift + this.settings.svgw + 500)\n\t\tthis.shift = shift\n\n\t\tthis.xAxisScale = d3Linear().domain([0, 100]).range([0, this.settings.svgw])\n\t\tthis.dom.xAxisG.call(axisTop(this.xAxisScale))\n\n\t\tlet y = 0\n\t\tlet showSCBar = false\n\t\tfor (const tw of this.scoreTerms) {\n\t\t\tconst percents: { [key: string]: number } = this.getPercentageDict(tw)\n\t\t\tconst scTermId = tw.term.id.replace(/^POC/, '')\n\t\t\tconst scTW = this.id2SCTW[this.activePlot.name][scTermId]\n\t\t\tconst scPercents: { [key: string]: number } = this.getPercentageDict(scTW)\n\t\t\t// SC term stores raw categorical codes as keys (e.g. \"1\", \"2\").\n\t\t\t// POC bar uses text labels as keys (e.g. \"Yes\", \"No\").\n\t\t\t// Map SC codes to labels so scPercentKeys matches the POC bar's key format.\n\t\t\tconst scPercentKeys = Object.keys(scPercents)\n\t\t\t\t.filter(k => scPercents[k] > 0)\n\t\t\t\t.map(k => scTW.term.values?.[k]?.label || k)\n\t\t\tconst scTotal = Object.values(scPercents).reduce((a, b) => a + b, 0)\n\t\t\tshowSCBar = scTotal > 1\n\t\t\tthis.renderYesNoBar(percents, y, step, scTotal == 1 ? scPercentKeys : [])\n\t\t\tif (showSCBar) {\n\t\t\t\ty += step + 10\n\t\t\t\tthis.renderYesNoBar(scPercents, y, step, [])\n\t\t\t\tthis.dom.mainG\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text('SC')\n\t\t\t\t\t.style('font-size', '0.7em')\n\t\t\t\t\t.attr('x', this.settings.svgw + 8)\n\t\t\t\t\t.attr('y', y + step * 0.6)\n\t\t\t}\n\n\t\t\tthis.dom.mainG\n\t\t\t\t.append('text')\n\t\t\t\t.text('POC')\n\t\t\t\t.style('font-size', '0.7em')\n\t\t\t\t.attr('x', this.settings.svgw + 8)\n\t\t\t\t.attr('y', showSCBar ? y - step + 0.35 * step : y + step * 0.6)\n\t\t\tthis.dom.mainG\n\t\t\t\t.append('text')\n\t\t\t\t.attr('x', -this.shift)\n\t\t\t\t.attr('y', showSCBar ? y : y + step / 2)\n\t\t\t\t.text(getText(tw.term.name))\n\t\t\t\t.attr('font-size', '0.8em')\n\t\t\t\t.on('mouseenter', event => this.showText(event, tw.term.name))\n\t\t\t\t.on('mouseleave', () => this.tip.hide())\n\n\t\t\ty += step + 40\n\t\t}\n\t\tthis.renderLines(y - 20) //last padding not needed\n\n\t\tif (showSCBar) this.dom.legendG.attr('transform', `translate(${550}, ${30 + this.settings.svgh})`)\n\t\telse this.dom.legendG.attr('transform', `translate(${550}, ${this.settings.svgh * 0.8})`)\n\n\t\tlet x = 0\n\t\tfor (const category of this.activePlot.categories) {\n\t\t\tx += this.drawLegendRect(x, 0, category.name, this.dom.legendG, true)\n\t\t}\n\t\tlet text = this.dom.legendG\n\t\t\t.append('text')\n\t\t\t.attr('x', x + 80)\n\t\t\t.attr('y', 18)\n\t\ttext.append('tspan').style('font-weight', 'bold').text('SC:')\n\t\ttext.append('tspan').text('Site Coordinator')\n\t\ttext = this.dom.legendG\n\t\t\t.append('text')\n\t\t\t.attr('x', x + 250)\n\t\t\t.attr('y', 18)\n\t\ttext.append('tspan').style('font-weight', 'bold').text('POC:')\n\t\ttext.append('tspan').text('Point of Care Staff')\n\t}\n\n\tonMouseOver(event) {\n\t\t// Impression thermometer: elements carry their tooltip text + hover-highlight descriptor as\n\t\t// __data__ (bound by renderImpressionThermometer's attachTip). Same delegation pattern as\n\t\t// polar2/radar2 \u2014 show the tip, apply the outline, and animate the POC ball's radius.\n\t\tif (this.isImpressionDomain) {\n\t\t\tconst target = event.target\n\t\t\tconst d = target.__data__\n\t\t\tif (d?.tip) {\n\t\t\t\tconst menu = this.tip.clear()\n\t\t\t\tmenu.d.text(d.tip)\n\t\t\t\tmenu.show(event.clientX, event.clientY, true, true)\n\t\t\t\tif (d.on) for (const k in d.on) target.setAttribute(k, d.on[k]) // idempotent on repeated mousemove\n\t\t\t\tif (d.growR && !d._grown) {\n\t\t\t\t\td._grown = true\n\t\t\t\t\tselect(target).interrupt().transition().duration(150).attr('r', d.growR)\n\t\t\t\t}\n\t\t\t} else this.onMouseOut(event)\n\t\t\treturn\n\t\t}\n\t\tif (event.target.tagName == 'rect') {\n\t\t\tconst path = event.target\n\t\t\tconst d = path.__data__\n\t\t\tif (!d?.value) return this.onMouseOut(event)\n\t\t\tconst menu = this.tip.clear()\n\t\t\tconst percent = roundValueAuto(d.value, true, 1)\n\t\t\tconst row = menu.d.append('div').style('display', 'flex').style('align-items', 'center').style('gap', '5px')\n\t\t\tif (d.color)\n\t\t\t\trow\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('width', '12px')\n\t\t\t\t\t.style('height', '12px')\n\t\t\t\t\t.style('background-color', d.color)\n\t\t\t\t\t.style('flex-shrink', '0')\n\t\t\trow.append('span').text(`${d.key}: ${percent}%`)\n\t\t\tmenu.show(event.clientX, event.clientY, true, true)\n\t\t} else this.onMouseOut(event)\n\t}\n\n\tonMouseOut(event) {\n\t\t// Reset the impression thermometer's hover highlight for the element being left; the base\n\t\t// only hides the tip. Targeted via event.target (mouseout bubbles from the element).\n\t\tif (this.isImpressionDomain) {\n\t\t\tconst target = event?.target\n\t\t\tconst d = target?.__data__\n\t\t\tif (d?.off) for (const k in d.off) target.setAttribute(k, d.off[k])\n\t\t\tif (d?._grown) {\n\t\t\t\td._grown = false\n\t\t\t\tselect(target).interrupt().transition().duration(150).attr('r', d.baseR)\n\t\t\t}\n\t\t}\n\t\tthis.tip.hide()\n\t}\n\n\tgetColor(key: string) {\n\t\treturn key == 'Yes' ? this.activePlot.color : key == 'No' ? '#aaa' : `url(#${this.id}_diagonalHatch)`\n\t}\n\n\trenderLikertBar(dict: { [key: string]: number }, y: number, height: number, tw: any) {\n\t\tconst itemG = this.dom.mainG.append('g')\n\t\tlet total = 0\n\t\tfor (const key in dict) total += dict[key]\n\t\tconst key2num = {}\n\t\tfor (const key in tw.term.values) {\n\t\t\tconst category = tw.term.values[key].label.toUpperCase()\n\t\t\tkey2num[category] = Number(key)\n\t\t}\n\t\tlet x = 0\n\t\tconst keys = Object.keys(dict).sort((a, b) => key2num[a.toUpperCase()] - key2num[b.toUpperCase()])\n\t\tfor (const key of keys) {\n\t\t\t//const category = tw.term.values[key].label\n\t\t\tthis.categories.add(key)\n\t\t\tconst width = this.renderCategory(key, dict, itemG, x, height, total)\n\t\t\tx += width\n\t\t}\n\t\tconst text = getText(tw.term.details || tw.term.name)\n\t\tconst textG = this.dom.svg.append('g').attr('transform', `translate(0, ${y + this.shiftTop})`)\n\t\ttextG\n\t\t\t.append('text')\n\t\t\t.text(text)\n\t\t\t.attr('y', (height * 2) / 3)\n\t\t\t.style('font-size', '0.85em')\n\t\t\t.on('mouseenter', event => this.showText(event, tw.term.name))\n\t\t\t.on('mouseleave', () => this.tip.hide())\n\n\t\titemG.attr('transform', `translate(0, ${y})`)\n\t}\n\n\trenderCategory(category, dict, itemG, x, height, total, showPercent = false) {\n\t\tconst key = category.toUpperCase()\n\t\tconst module = this.module\n\t\tconst colorMap = this.state.termdbConfig.colorMap\n\t\tconst color = colorMap[module][key] || colorMap['*'][key]\n\t\tconst entry: any = Object.entries(dict).find(k => k[0].toUpperCase() == key)\n\t\tif (!entry) return 0\n\t\tconst value: number = entry[1]\n\t\tthis.categories.add(category)\n\n\t\tconst percent = (value / total) * 100\n\t\tconst width = (percent / 100) * this.settings.svgw\n\t\titemG\n\t\t\t.append('rect')\n\t\t\t.attr('x', x)\n\t\t\t.attr('width', width)\n\t\t\t.attr('height', height)\n\t\t\t.attr('stroke', 'gray')\n\t\t\t.attr('stroke-width', 0.5)\n\t\t\t.attr('stroke-opacity', 0.5)\n\t\t\t.attr('fill', color)\n\t\t\t.datum({ key: category, value: percent, color })\n\t\t\t.on('mouseover', event => this.onMouseOver(event))\n\t\tif (showPercent)\n\t\t\titemG\n\t\t\t\t.append('text')\n\t\t\t\t.text(`${roundValueAuto(percent, true, 1)}%`)\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.attr('x', x + width + 10)\n\t\t\t\t.attr('y', height * 0.6)\n\t\treturn width\n\t}\n\n\trenderYesNoBar(percents: { [key: string]: number }, y: number, height: number, scPercentKeys: string[]) {\n\t\tconst percentsOrdered = Object.keys(percents).sort((a, b) => -a.localeCompare(b))\n\t\tconst total = Object.values(percents).reduce((a, b) => a + b, 0)\n\t\tlet x = 0\n\t\tfor (const key of percentsOrdered) {\n\t\t\tconst color = this.getColor(key)\n\n\t\t\tconst value = percents[key]\n\t\t\tconst width = (value / total) * this.settings.svgw\n\t\t\tconst percent = (value / total) * 100\n\t\t\tthis.dom.mainG\n\t\t\t\t.append('rect')\n\t\t\t\t.attr('x', x)\n\t\t\t\t.attr('y', y)\n\t\t\t\t.attr('width', width)\n\t\t\t\t.attr('height', height)\n\t\t\t\t.attr('stroke', 'gray')\n\t\t\t\t.attr('fill', color)\n\t\t\t\t.datum({ key, value: percent, color })\n\n\t\t\tif (scPercentKeys.includes(key)) {\n\t\t\t\tconst arrowX = x + width / 2\n\t\t\t\tconst arrowSize = 6\n\t\t\t\tthis.dom.mainG\n\t\t\t\t\t.append('polygon')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'points',\n\t\t\t\t\t\t`${arrowX},${y} ${arrowX - arrowSize},${y - arrowSize * 1.5} ${arrowX + arrowSize},${y - arrowSize * 1.5}`\n\t\t\t\t\t)\n\t\t\t\t\t.attr('fill', '#c0392b')\n\t\t\t\t\t.attr('pointer-events', 'none')\n\t\t\t\tthis.dom.mainG\n\t\t\t\t\t.append('text')\n\t\t\t\t\t.text(`SC ${roundValueAuto(percent, true, 1)}%`)\n\t\t\t\t\t.style('font-size', '0.7em')\n\t\t\t\t\t.style('fill', '#c0392b')\n\t\t\t\t\t.attr('font-weight', 'bold')\n\t\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t\t.attr('x', arrowX)\n\t\t\t\t\t.attr('y', y - arrowSize * 1.5 - 3)\n\t\t\t\t\t.attr('pointer-events', 'none')\n\t\t\t}\n\n\t\t\tx += width\n\t\t}\n\t}\n\n\trenderLines(y: number) {\n\t\tconst width = this.settings.svgw\n\t\tconst color = 'lightgray'\n\t\tconst opacity = 0.5\n\t\tconst bins = 4\n\t\tconst size = width / bins\n\t\tlet x\n\t\tconst gridG = this.dom.gridG\n\t\tfor (let i = 0; i <= bins; i++) {\n\t\t\tx = i * size\n\t\t\tgridG\n\t\t\t\t.append('line')\n\t\t\t\t.attr('x1', x)\n\t\t\t\t.attr('x2', x)\n\t\t\t\t.attr('y1', 0)\n\t\t\t\t.attr('y2', y)\n\t\t\t\t.style('stroke', color)\n\t\t\t\t.style('stroke-opacity', opacity)\n\t\t\t\t.style('stroke-dasharray', '5, 5')\n\t\t}\n\t}\n\n\tdrawLegendRect(x, y, text, legendG, isYesNo = false) {\n\t\tconst key = text.toUpperCase()\n\t\tconst colorMap = this.state.termdbConfig.colorMap\n\t\t// For Yes/No bars, use getColor() so the legend always matches the bar fill\n\t\tconst color = isYesNo\n\t\t\t? this.getColor(text)\n\t\t\t: colorMap[this.module][key] || colorMap['*'][key] || colorMap['*'][text]\n\n\t\tconst size = 20\n\t\tconst gap = 15\n\t\tconst itemG = legendG.append('g').attr('transform', `translate(${x}, ${y})`)\n\t\titemG\n\t\t\t.append('rect')\n\t\t\t.attr('x', 0)\n\t\t\t.attr('y', 0)\n\t\t\t.attr('width', size)\n\t\t\t.attr('height', size)\n\t\t\t.attr('fill', color)\n\t\t\t.attr('stroke', 'gray')\n\t\t\t.attr('stroke-width', 0.5)\n\t\t\t.attr('stroke-opacity', 0.5)\n\t\t\t.attr('pointer-events', 'none')\n\t\tconst label = itemG\n\t\t\t.append('text')\n\t\t\t.attr('transform', `translate(${size + gap}, ${size / 2})`)\n\t\t\t.attr('dominant-baseline', 'central')\n\t\t\t.style('font-size', '0.85em')\n\t\t\t.text(text)\n\t\tconst labelWidth = (label.node() as SVGTextElement).getBBox().width\n\t\treturn size + gap + labelWidth + gap\n\t}\n\n\tshowText(event, text, size = 110) {\n\t\tif (text.length <= size) return\n\t\tconst menu = this.tip.clear()\n\t\tmenu.d.style('padding', '5px').text(text)\n\t\tmenu.showunder(event.target)\n\t}\n\n\tgetPercentageDict(tw) {\n\t\treturn this.data.term2Score[tw.term.id]\n\t}\n}\n\nexport async function getPlotConfig(opts, app, _activeCohort) {\n\tconst activeCohort = _activeCohort === undefined ? app.getState().activeCohort : _activeCohort\n\tconst formsConfig = await getProfilePlotConfig(activeCohort, app, opts)\n\tlet config = formsConfig\n\tconfig.settings = getDefaultProfileFormsSettings()\n\tconfig.headerTitle = 'Templates: Visualization tools to provide insights and assist in leveraging data'\n\tconfig = copyMerge(structuredClone(config), opts)\n\tfor (const plot of config.options) {\n\t\tif (plot.terms) await fillTwLst(plot.terms, app.vocabApi)\n\t}\n\n\treturn config\n}\n\nexport function getDefaultProfileFormsSettings() {\n\tconst settings = {\n\t\tcontrols: {\n\t\t\tisOpen: false\n\t\t},\n\t\tprofileForms: { svgw: 420, svgh: 480 }\n\t}\n\tconst profilePlotSettings = getDefaultProfilePlotSettings()\n\tsettings.profileForms = copyMerge(settings.profileForms, profilePlotSettings)\n\n\treturn settings\n}\n\nexport const profileFormsInit = getCompInit(profileForms)\n// this alias will allow abstracted dynamic imports\nexport const componentInit = profileFormsInit\n\nfunction getText(name, size = 110) {\n\tif (name.length > size) name = name.slice(0, size) + '...'\n\treturn name\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["text"]
|
|
7
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ABBREV_COHORT,
|
|
3
|
-
FULL_COHORT,
|
|
4
|
-
clearLocalFilters,
|
|
5
|
-
getDefaultProfilePlotSettings,
|
|
6
|
-
getProfileLogin,
|
|
7
|
-
getProfilePlotConfig,
|
|
8
|
-
loadFilterTerms,
|
|
9
|
-
makeChartBtnMenu,
|
|
10
|
-
profilePlot
|
|
11
|
-
} from "./chunk-6OUBUUC2.js";
|
|
12
|
-
import "./chunk-TKW5TW4Z.js";
|
|
13
|
-
import "./chunk-HJ6L54YS.js";
|
|
14
|
-
import "./chunk-LSEFWW72.js";
|
|
15
|
-
import "./chunk-3SHZTAGF.js";
|
|
16
|
-
import "./chunk-HYOEWQ5P.js";
|
|
17
|
-
import "./chunk-6QCYT6G2.js";
|
|
18
|
-
import "./chunk-FN5XPUPH.js";
|
|
19
|
-
import "./chunk-IIT367QZ.js";
|
|
20
|
-
import "./chunk-RZGEKL77.js";
|
|
21
|
-
import "./chunk-OTTMHVYH.js";
|
|
22
|
-
import "./chunk-GNS6CQMA.js";
|
|
23
|
-
import "./chunk-JVPWIVDT.js";
|
|
24
|
-
import "./chunk-4WF3XDQP.js";
|
|
25
|
-
import "./chunk-7JRDJNLR.js";
|
|
26
|
-
import "./chunk-M3J4MINX.js";
|
|
27
|
-
import "./chunk-PF4DSFDR.js";
|
|
28
|
-
import "./chunk-MPSLUEI4.js";
|
|
29
|
-
import "./chunk-6PNPHACF.js";
|
|
30
|
-
import "./chunk-WPHUM5S5.js";
|
|
31
|
-
import "./chunk-JNITUVXP.js";
|
|
32
|
-
import "./chunk-2KXLYFAO.js";
|
|
33
|
-
import "./chunk-LOZEKOES.js";
|
|
34
|
-
import "./chunk-VQZ2Z5YU.js";
|
|
35
|
-
import "./chunk-UJELJXJG.js";
|
|
36
|
-
import "./chunk-BZTWTH4Y.js";
|
|
37
|
-
import "./chunk-TLT4YIG3.js";
|
|
38
|
-
import "./chunk-5R63Q5KH.js";
|
|
39
|
-
import "./chunk-I6Y4O3RR.js";
|
|
40
|
-
import "./chunk-Q5RDQNIT.js";
|
|
41
|
-
import "./chunk-DQC5FFGV.js";
|
|
42
|
-
import "./chunk-HFNDKYVF.js";
|
|
43
|
-
export {
|
|
44
|
-
ABBREV_COHORT,
|
|
45
|
-
FULL_COHORT,
|
|
46
|
-
clearLocalFilters,
|
|
47
|
-
getDefaultProfilePlotSettings,
|
|
48
|
-
getProfileLogin,
|
|
49
|
-
getProfilePlotConfig,
|
|
50
|
-
loadFilterTerms,
|
|
51
|
-
makeChartBtnMenu,
|
|
52
|
-
profilePlot
|
|
53
|
-
};
|
|
54
|
-
//# sourceMappingURL=profilePlot-AP52VLLO.js.map
|