@sjcrh/proteinpaint-client 2.185.0 → 2.186.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-F5QNP7AQ.js +1371 -0
- package/dist/AIProjectAdmin-ROSQHK6Q.js +827 -0
- package/dist/AIProjectAdmin-ROSQHK6Q.js.map +7 -0
- package/dist/AppHeader-STVCDLET.js +833 -0
- package/dist/BoxPlot-CU7MEBH7.js +1217 -0
- package/dist/CorrelationVolcano-OE4R2GS3.js +617 -0
- package/dist/DE-SR7PJPKI.js +93 -0
- package/dist/DEinput-PRIAIBFH.js +299 -0
- package/dist/DEinput-PRIAIBFH.js.map +7 -0
- package/dist/DifferentialAnalysis-UWTYK7NU.js +241 -0
- package/dist/Disco-IL6REGSA.js +3235 -0
- package/dist/Disco.UI-JHHLS5BA.js +242 -0
- package/dist/DmrPlot-DDP53T3F.js +640 -0
- package/dist/GB-F4LMYMHF.js +1127 -0
- package/dist/GB-F4LMYMHF.js.map +7 -0
- package/dist/GeneExpInput-ZWBC226P.js +363 -0
- package/dist/GeneExpInput-ZWBC226P.js.map +7 -0
- package/dist/HicApp-RVFHTYED.js +2248 -0
- package/dist/NumBinaryEditor-B3FXQAOH.js +268 -0
- package/dist/NumBinaryEditor.unit.spec-75YQJ2U6.js +284 -0
- package/dist/NumContEditor-5PYW3OLY.js +105 -0
- package/dist/NumContEditor.unit.spec-F7ZRDGBN.js +167 -0
- package/dist/NumCustomBinEditor-TBT6GLYQ.js +36 -0
- package/dist/NumCustomBinEditor.unit.spec-6YHU45XV.js +282 -0
- package/dist/NumDiscreteEditor-N6OJYSJA.js +177 -0
- package/dist/NumDiscreteEditor.unit.spec-HQS5RZ6R.js +200 -0
- package/dist/NumRegularBinEditor-HSDDKVNG.js +36 -0
- package/dist/NumRegularBinEditor.unit.spec-33KN2MVM.js +225 -0
- package/dist/NumSplineEditor-XERKOACS.js +190 -0
- package/dist/NumSplineEditor.unit.spec-MPVM6KSC.js +197 -0
- package/dist/NumericDensity-35EKYW3V.js +36 -0
- package/dist/NumericDensity.unit.spec-OR24PPRJ.js +219 -0
- package/dist/NumericHandler-D6ZNGRE3.js +37 -0
- package/dist/NumericHandler.unit.spec-EKPGVSXI.js +217 -0
- package/dist/RunChart2-7DOXOFXV.js +756 -0
- package/dist/SC-APZRV4H6.js +826 -0
- package/dist/SC-APZRV4H6.js.map +7 -0
- package/dist/Volcano-X4ZWK644.js +1344 -0
- package/dist/Volcano-X4ZWK644.js.map +7 -0
- package/dist/WSIViewer-E247ELKN.js +47971 -0
- package/dist/WsiSamplesPlot-3522VRB5.js +163 -0
- package/dist/adSandbox-IDFY5P2P.js +36 -0
- package/dist/alphaGenome-F3W7GJQ5.js +173 -0
- package/dist/app-2HDSFMRM.js +47 -0
- package/dist/app-LIWPFL7C.js +35 -0
- package/dist/app.js +10 -10
- package/dist/bam-TBHHSATL.js +857 -0
- package/dist/barchart-HHFCBOZE.js +45 -0
- package/dist/barchart.events-UQUSSRXB.js +45 -0
- package/dist/barchart.integration.spec-OF3MWFQ5.js +1675 -0
- package/dist/barchart2-XRMPCBBU.js +309 -0
- package/dist/block-5UEORHFB.js +6200 -0
- package/dist/block.init-QSSFUVIT.js +36 -0
- package/dist/block.mds.expressionrank-VBIIJHQF.js +357 -0
- package/dist/block.mds.geneboxplot-KSBHXBNX.js +826 -0
- package/dist/block.mds.junction-FWZWMZJ2.js +1543 -0
- package/dist/block.mds.svcnv-UXORVLH2.js +6799 -0
- package/dist/block.svg-6KIGW4QH.js +162 -0
- package/dist/block.tk.aicheck-DK566Q4C.js +281 -0
- package/dist/block.tk.ase-2GB2VJJ6.js +363 -0
- package/dist/block.tk.bam-RQNOLY52.js +1904 -0
- package/dist/block.tk.bedgraphdot-N4YMZFO4.js +382 -0
- package/dist/block.tk.bigwig.ui-4S7L7D7D.js +209 -0
- package/dist/block.tk.hicstraw-AHFNQKCS.js +821 -0
- package/dist/block.tk.junction-7E6SNQMQ.js +2362 -0
- package/dist/block.tk.junction.textmatrixui-3C5JVYX5.js +197 -0
- package/dist/block.tk.ld-TOUCLT3W.js +97 -0
- package/dist/block.tk.menu-JCV5ORD6.js +1027 -0
- package/dist/block.tk.pgv-CUU22U6M.js +942 -0
- package/dist/brainImaging-MTQTXNNL.js +421 -0
- package/dist/chunk-2UYBBUXK.js +293 -0
- package/dist/chunk-2VPEFXEJ.js +4207 -0
- package/dist/chunk-2YC6ZVE4.js +20377 -0
- package/dist/chunk-2YC6ZVE4.js.map +7 -0
- package/dist/chunk-37MD3Y5G.js +1230 -0
- package/dist/chunk-37MD3Y5G.js.map +7 -0
- package/dist/chunk-3QHIL3V3.js +55 -0
- package/dist/chunk-44VXWKYJ.js +129 -0
- package/dist/chunk-52D6EGUS.js +95 -0
- package/dist/chunk-5FHM3L4I.js +102 -0
- package/dist/chunk-62TF2MCH.js +142 -0
- package/dist/chunk-67QM2NUK.js +6364 -0
- package/dist/chunk-6AAPHEWK.js +676 -0
- package/dist/chunk-6KPGMUHS.js +153 -0
- package/dist/chunk-6WBIZXNI.js +455 -0
- package/dist/chunk-7AAJVXEG.js +302 -0
- package/dist/chunk-AFJRAR4N.js +1271 -0
- package/dist/chunk-BBNO6JLO.js +200 -0
- package/dist/chunk-BBNO6JLO.js.map +7 -0
- package/dist/chunk-CVRYZMDE.js +148 -0
- package/dist/chunk-DGUTCYH2.js +276 -0
- package/dist/chunk-DHNXATHC.js +158 -0
- package/dist/chunk-DXHATYHE.js +180 -0
- package/dist/chunk-DXHATYHE.js.map +7 -0
- package/dist/chunk-E3BI23UK.js +229 -0
- package/dist/chunk-E4JDHA3C.js +621 -0
- package/dist/chunk-FOJWYEGV.js +228 -0
- package/dist/chunk-FTN7Y34O.js +158 -0
- package/dist/chunk-GAOUV4ID.js +1943 -0
- package/dist/chunk-GAOUV4ID.js.map +7 -0
- package/dist/chunk-GRG5MMPN.js +2815 -0
- package/dist/chunk-GSU4PZN3.js +482 -0
- package/dist/chunk-I55NLUCQ.js +1823 -0
- package/dist/chunk-I55NLUCQ.js.map +7 -0
- package/dist/chunk-IIRU2JLK.js +217 -0
- package/dist/chunk-JCB74ZSK.js +272 -0
- package/dist/chunk-JUDWPYMA.js +824 -0
- package/dist/chunk-KT6VZBC7.js +1087 -0
- package/dist/chunk-L2HBHFTK.js +2370 -0
- package/dist/chunk-LKADRF3Q.js +368 -0
- package/dist/chunk-MAXFRUGM.js +407 -0
- package/dist/chunk-MQN7RYCK.js +37 -0
- package/dist/chunk-OEUI4CYZ.js +470 -0
- package/dist/chunk-OM36XUQL.js +34 -0
- package/dist/chunk-P5LNIH5X.js +54 -0
- package/dist/chunk-PG62PRMF.js +102 -0
- package/dist/chunk-Q3J3F2NU.js +205 -0
- package/dist/chunk-RYCOJY7M.js +188 -0
- package/dist/chunk-RYCOJY7M.js.map +7 -0
- package/dist/chunk-RZBV6474.js +117 -0
- package/dist/chunk-T5V4OC27.js +442 -0
- package/dist/chunk-TXJG4N6S.js +4992 -0
- package/dist/chunk-TXJG4N6S.js.map +7 -0
- package/dist/chunk-UCKSUNSJ.js +335 -0
- package/dist/chunk-W4TLYHZO.js +514 -0
- package/dist/chunk-WPZUXKIB.js +56 -0
- package/dist/chunk-XM47XD6G.js +215 -0
- package/dist/chunk-XVA3UOWD.js +263 -0
- package/dist/chunk-XVA3UOWD.js.map +7 -0
- package/dist/chunk-YIMRBXQK.js +1210 -0
- package/dist/chunk-YIMRBXQK.js.map +7 -0
- package/dist/chunk-YL7VT4QT.js +1159 -0
- package/dist/chunk-YL7VT4QT.js.map +7 -0
- package/dist/chunk-YWBUK4B7.js +291 -0
- package/dist/chunk-YWBUK4B7.js.map +7 -0
- package/dist/chunk-YZHGLSKQ.js +50 -0
- package/dist/chunk-ZGOOZK3I.js +203 -0
- package/dist/chunk-ZH2VP6Q6.js +95 -0
- package/dist/chunk-ZLOQXO5K.js +14 -0
- package/dist/chunk-ZMNDBPJU.js +100 -0
- package/dist/chunk-ZRTW6X3F.js +2784 -0
- package/dist/chunk-ZTT52MBP.js +2681 -0
- package/dist/condition-VUACUQYF.js +330 -0
- package/dist/controls-N4MPSNO4.js +39 -0
- package/dist/controls.config-PRXVODCM.js +37 -0
- package/dist/correlation-QJZUYDFH.js +96 -0
- package/dist/cuminc-JJHXW55V.js +1147 -0
- package/dist/cuminc.integration.spec-IXS2UO2O.js +676 -0
- package/dist/customdata.inputui-DUHO6M6I.js +287 -0
- package/dist/dataDownload-OFB7TYDB.js +328 -0
- package/dist/dataDownload.integration.spec-4HWDQO4C.js +191 -0
- package/dist/databrowser.ui-FGZ5SWG3.js +430 -0
- package/dist/databrowser.ui-FGZ5SWG3.js.map +7 -0
- package/dist/dictionary-BSKN37CP.js +109 -0
- package/dist/dnaMethylation-5QNEEGC6.js +36 -0
- package/dist/dnaMethylation.integration.spec-YIX3JSA7.js +201 -0
- package/dist/dofetch-KFMGQY7G.js +50 -0
- package/dist/e2pca-VX42HDYZ.js +348 -0
- package/dist/ep-B6ZNETLI.js +1254 -0
- package/dist/expclust.gdc.spec-SGECIILQ.js +305 -0
- package/dist/facet-2W5SBPGP.js +519 -0
- package/dist/gb-67KTSE2W.js +86 -0
- package/dist/gb-67KTSE2W.js.map +7 -0
- package/dist/geneExpClustering-6A7364T5.js +247 -0
- package/dist/geneExpression-NAM2UEYN.js +36 -0
- package/dist/geneExpression-WF56ODMZ.js +312 -0
- package/dist/geneExpression.unit.spec-DNE2T3WI.js +100 -0
- package/dist/geneORA-33FK2YOS.js +276 -0
- package/dist/geneVariant-C7PCNBOQ.js +37 -0
- package/dist/geneVariant-REELFRRA.js +39 -0
- package/dist/geneVariant.integration.spec-GNXUGDKL.js +196 -0
- package/dist/genefusion.ui-WO5EPJDS.js +306 -0
- package/dist/geneset-4C6ZLVMN.js +201 -0
- package/dist/geneset-4C6ZLVMN.js.map +7 -0
- package/dist/genomeBrowser.spec-VPAKTUJF.js +279 -0
- package/dist/grin2-AJFEBD43.js +852 -0
- package/dist/grin2-AJFEBD43.js.map +7 -0
- package/dist/grin2-GYHUYNEF.js +1554 -0
- package/dist/gsea-PE5WZ5ZI.js +45 -0
- package/dist/hierCluster-FH6YJHRT.js +61 -0
- package/dist/hierCluster-IFM5I5QN.js +57 -0
- package/dist/hierCluster.config-M57ZIWMB.js +38 -0
- package/dist/hierCluster.integration.spec-Z64RL7MC.js +393 -0
- package/dist/hierCluster.interactivity-CDBAJXOY.js +52 -0
- package/dist/imagePlot-NFEE6IGV.js +161 -0
- package/dist/imagePlot-NFEE6IGV.js.map +7 -0
- package/dist/importPlot-OWKXSK77.js +8 -0
- package/dist/isoformExpression-66XLJG73.js +38 -0
- package/dist/isoformExpression.unit.spec-QJX2IRHL.js +206 -0
- package/dist/launch.adhoc-JCWID253.js +40 -0
- package/dist/leftlabel.sample-5NZ6VQDN.js +257 -0
- package/dist/lollipop-BPFDEM2R.js +169 -0
- package/dist/lollipop-BPFDEM2R.js.map +7 -0
- package/dist/maf-HIS2FQXK.js +450 -0
- package/dist/maftimeline-UPJJQE23.js +591 -0
- package/dist/matrix-62CN2KXR.js +56 -0
- package/dist/matrix-SPEDEB3J.js +61 -0
- package/dist/matrix.config-XB6WFXUY.js +39 -0
- package/dist/matrix.integration.spec-NN7OR5XM.js +3070 -0
- package/dist/matrix.interactivity-OWMHUJCX.js +40 -0
- package/dist/matrix.layout-27QB6MWK.js +42 -0
- package/dist/matrix.renderers-EPXES5E4.js +36 -0
- package/dist/matrix.sort.unit.spec-NBT5FSZ6.js +470 -0
- package/dist/matrix.sorterUi.unit.spec-QKGUE4RR.js +340 -0
- package/dist/mavb-M7Y74OWQ.js +730 -0
- package/dist/mds.fimo-WCDFA7HG.js +516 -0
- package/dist/mds.samplescatterplot-ZDHQ3MKJ.js +1548 -0
- package/dist/mds.survivalplot-R74DL2RA.js +481 -0
- package/dist/oncomatrix-MOITJBII.js +293 -0
- package/dist/oncomatrix.spec-NALJBPYS.js +446 -0
- package/dist/plot.2dvaf-IE2EZEFA.js +375 -0
- package/dist/plot.app-HTW6TZEH.js +39 -0
- package/dist/plot.barplot-NCQEPEOY.js +100 -0
- package/dist/plot.boxplot-WNKVBVJJ.js +150 -0
- package/dist/plot.brainImaging-2Z3TOO6J.js +51 -0
- package/dist/plot.disco-4JAEIAYK.js +101 -0
- package/dist/plot.dzi-ZGLOVJJN.js +33 -0
- package/dist/plot.ssgq-IHUILM43.js +137 -0
- package/dist/plot.vaf2cov-ZYCQMD27.js +257 -0
- package/dist/plot.wsi-3GISVBDH.js +36 -0
- package/dist/polar-4AUAZHBV.js +184 -0
- package/dist/polar2-SRD4WWXU.js +226 -0
- package/dist/profile.spec-TOITKBBZ.js +78 -0
- package/dist/profileBarchart-Z4SYIYBE.js +265 -0
- package/dist/profileForms-RA7XQ2QT.js +438 -0
- package/dist/profilePlot-4BM3XZVK.js +52 -0
- package/dist/profileRadar-EYBESEPI.js +261 -0
- package/dist/profileRadarFacility-FZYTFM26.js +261 -0
- package/dist/proteinView-F6XKT2A5.js +1122 -0
- package/dist/proteinView-F6XKT2A5.js.map +7 -0
- package/dist/proteomeAbundance-3RJMRXYI.js +68 -0
- package/dist/proteomeAbundance-3RJMRXYI.js.map +7 -0
- package/dist/proteomeAbundance-65R6M4YQ.js +21 -0
- package/dist/qualitative-E7WL6DN4.js +41 -0
- package/dist/radar2-I6FN5SUX.js +314 -0
- package/dist/radarFacility2-GVK7PT3V.js +323 -0
- package/dist/regression-TIR5D354.js +54 -0
- package/dist/regression.inputs-2AMJCJ3L.js +46 -0
- package/dist/regression.inputs.term-D6D2QEUB.js +46 -0
- package/dist/regression.inputs.values.table-M3IPLGDJ.js +43 -0
- package/dist/regression.integration.spec-ROUSXLMH.js +782 -0
- package/dist/regression.results-YD5S74YS.js +38 -0
- package/dist/regression.spec-4OXBBTNO.js +706 -0
- package/dist/report-ETNALKTY.js +220 -0
- package/dist/sampleScatter.spec-LECMFMI2.js +200 -0
- package/dist/sampleView-B5TM7JOW.js +46 -0
- package/dist/samplelst-GFQCG4SS.js +109 -0
- package/dist/samplematrix-OMTNWCJK.js +2196 -0
- package/dist/sc-MIEEZBWG.js +84 -0
- package/dist/scatter-ETOZ722F.js +800 -0
- package/dist/scatter.integration.spec-TS4PNRLX.js +1194 -0
- package/dist/selectGenomeWithTklst-Y5QIM2JB.js +132 -0
- package/dist/singleCellCellType-HOJHZF5W.js +36 -0
- package/dist/singleCellCellType.unit.spec-MH5V3RPX.js +158 -0
- package/dist/singleCellGeneExpression-YVQ5TIKN.js +36 -0
- package/dist/singleCellGeneExpression.unit.spec-BMFFT5HO.js +151 -0
- package/dist/singleCellPlot-3YFUYA2Y.js +51 -0
- package/dist/singlecell-FK5JETW5.js +1570 -0
- package/dist/singlecell-RL7V7DIC.js +84 -0
- package/dist/snp-FT7HB3XN.js +36 -0
- package/dist/snp.unit.spec-CLYVYPPG.js +174 -0
- package/dist/snplocus-M5SEQGAC.js +206 -0
- package/dist/spliceevent.a53ss.diagram-EJ5CTRCZ.js +149 -0
- package/dist/spliceevent.exonskip.diagram-ETXMOHZ3.js +275 -0
- package/dist/spliceevent.noeventdiagram-S2O4ZM2Z.js +458 -0
- package/dist/ssGSEA-6PMDQDTJ.js +36 -0
- package/dist/ssGSEA.unit.spec-JD5T4R2N.js +86 -0
- package/dist/summarizeCnvGeneexp-GCHNKTIU.js +161 -0
- package/dist/summarizeGeneexpSurvival-R2RYQZ3M.js +106 -0
- package/dist/summarizeMutationCnv-LB2BIYRL.js +162 -0
- package/dist/summarizeMutationDiagnosis-3JUY75LM.js +38 -0
- package/dist/summarizeMutationSurvival-VYLRWTCF.js +97 -0
- package/dist/summary-2QQ72IEQ.js +47 -0
- package/dist/summary.integration.spec-XXU362UQ.js +412 -0
- package/dist/summaryInput-OZHZG3PV.js +233 -0
- package/dist/sunburst-CMCJCANX.js +282 -0
- package/dist/survival-EBD4DHO7.js +44 -0
- package/dist/survival-ISLRRPKU.js +56 -0
- package/dist/survival.integration.spec-FS7V4OXK.js +800 -0
- package/dist/svgraph-KGLNUM7W.js +1385 -0
- package/dist/svmr-NXZ5VLKH.js +3840 -0
- package/dist/table-ISOQOI6C.js +198 -0
- package/dist/termCollection-7ZSU3I45.js +36 -0
- package/dist/termCollection-V2A5BDQB.js +177 -0
- package/dist/termCollection.unit.spec-6VLCJGOU.js +206 -0
- package/dist/tk-6AB6XYIE.js +44 -0
- package/dist/tp.ui-2O4UW5N7.js +1457 -0
- package/dist/tvs.dt-CY6TOQVB.js +37 -0
- package/dist/tvs.dtcnv.categorical-AYQ432TW.js +38 -0
- package/dist/tvs.dtcnv.continuous-XVDL6SG3.js +70 -0
- package/dist/tvs.dtfusion-V3AV7A6Q.js +38 -0
- package/dist/tvs.dtsnvindel-XM3NXIT7.js +38 -0
- package/dist/tvs.dtsv-Z2GYRINW.js +38 -0
- package/dist/tvs.samplelst-C4FB63G7.js +102 -0
- package/dist/tvs.termCollection-VHTSC2ST.js +157 -0
- package/dist/violin-KGGTUQFF.js +44 -0
- package/dist/violin.integration.spec-5EW6PLJX.js +1423 -0
- package/dist/violin.interactivity-RI4RURGO.js +36 -0
- package/dist/violin.renderer-EWU2IFZE.js +38 -0
- package/dist/vocabulary-VLIGC7OP.js +39 -0
- package/package.json +3 -3
- package/src/databrowser/dictionary.parse.js +14 -2
- package/dist/2dmaf-X7LATQT7.js +0 -1371
- package/dist/AIProjectAdmin-GUBKURGO.js +0 -830
- package/dist/AIProjectAdmin-GUBKURGO.js.map +0 -7
- package/dist/AppHeader-RDOFP322.js +0 -833
- package/dist/BoxPlot-AZF2EMGQ.js +0 -1217
- package/dist/CorrelationVolcano-VXW35SXU.js +0 -617
- package/dist/DE-NLGMZ44O.js +0 -93
- package/dist/DEinput-OJ7P4UMP.js +0 -297
- package/dist/DEinput-OJ7P4UMP.js.map +0 -7
- package/dist/DifferentialAnalysis-G75VUHDI.js +0 -241
- package/dist/Disco-DX4S44SI.js +0 -3235
- package/dist/Disco.UI-5FYIACCU.js +0 -242
- package/dist/DmrPlot-HWYITHK2.js +0 -640
- package/dist/GB-DBTMRVYH.js +0 -1125
- package/dist/GB-DBTMRVYH.js.map +0 -7
- package/dist/GeneExpInput-DWB7OYT2.js +0 -335
- package/dist/GeneExpInput-DWB7OYT2.js.map +0 -7
- package/dist/HicApp-XPZVZXB7.js +0 -2248
- package/dist/NumBinaryEditor-M6MJYIHK.js +0 -268
- package/dist/NumBinaryEditor.unit.spec-W6MMYDAW.js +0 -284
- package/dist/NumContEditor-YRVENTS5.js +0 -105
- package/dist/NumContEditor.unit.spec-A6OH4TI7.js +0 -167
- package/dist/NumCustomBinEditor-BLBOYSCQ.js +0 -36
- package/dist/NumCustomBinEditor.unit.spec-55V5CKLB.js +0 -282
- package/dist/NumDiscreteEditor-DTRM6VL2.js +0 -177
- package/dist/NumDiscreteEditor.unit.spec-YMB6QRER.js +0 -200
- package/dist/NumRegularBinEditor-XW4SVA7S.js +0 -36
- package/dist/NumRegularBinEditor.unit.spec-VAHC3VOD.js +0 -225
- package/dist/NumSplineEditor-H22HTRFR.js +0 -190
- package/dist/NumSplineEditor.unit.spec-4JUADXZR.js +0 -197
- package/dist/NumericDensity-ECSZCQRX.js +0 -36
- package/dist/NumericDensity.unit.spec-SXXCXM4X.js +0 -219
- package/dist/NumericHandler-CMBN3FZX.js +0 -37
- package/dist/NumericHandler.unit.spec-UYTJG2Z2.js +0 -217
- package/dist/RunChart2-MVFWLXZX.js +0 -756
- package/dist/SC-BRC3J2O4.js +0 -797
- package/dist/SC-BRC3J2O4.js.map +0 -7
- package/dist/Volcano-WMNFZSX2.js +0 -1234
- package/dist/Volcano-WMNFZSX2.js.map +0 -7
- package/dist/WSIViewer-2Z636FMA.js +0 -47971
- package/dist/WsiSamplesPlot-LN75PND3.js +0 -163
- package/dist/adSandbox-AJ7QUDOI.js +0 -36
- package/dist/alphaGenome-PVCRXAQK.js +0 -173
- package/dist/app-DWYCAFRP.js +0 -47
- package/dist/app-RENXV7VR.js +0 -35
- package/dist/bam-5G6IT6OX.js +0 -857
- package/dist/barchart-MLCCU6SU.js +0 -45
- package/dist/barchart.events-B6HQTLK2.js +0 -45
- package/dist/barchart.integration.spec-S43A7C7N.js +0 -1675
- package/dist/barchart2-QMKEN6MN.js +0 -309
- package/dist/block-IGBB4BJH.js +0 -6200
- package/dist/block.init-NLCYAKV4.js +0 -36
- package/dist/block.mds.expressionrank-TZWGRDY7.js +0 -357
- package/dist/block.mds.geneboxplot-OAFROYDL.js +0 -826
- package/dist/block.mds.junction-NSLXTW3D.js +0 -1543
- package/dist/block.mds.svcnv-ICPG4BW6.js +0 -6799
- package/dist/block.svg-DTFVIAAC.js +0 -162
- package/dist/block.tk.aicheck-ZIMIBWHA.js +0 -281
- package/dist/block.tk.ase-I7UNK5BK.js +0 -363
- package/dist/block.tk.bam-W7JG46RS.js +0 -1904
- package/dist/block.tk.bedgraphdot-XAQJPKGJ.js +0 -382
- package/dist/block.tk.bigwig.ui-YQOJPJSG.js +0 -209
- package/dist/block.tk.hicstraw-OWWGGCHU.js +0 -821
- package/dist/block.tk.junction-V63ZQQX6.js +0 -2362
- package/dist/block.tk.junction.textmatrixui-B7KXX7WN.js +0 -197
- package/dist/block.tk.ld-2J6CT74S.js +0 -97
- package/dist/block.tk.menu-6AQLG7PW.js +0 -1027
- package/dist/block.tk.pgv-4V6PKVCQ.js +0 -942
- package/dist/brainImaging-WRBGYLHK.js +0 -421
- package/dist/chat-X2BCTEDF.js +0 -148
- package/dist/chat-X2BCTEDF.js.map +0 -7
- package/dist/chunk-23VG37CB.js +0 -1939
- package/dist/chunk-23VG37CB.js.map +0 -7
- package/dist/chunk-2VOHINOC.js +0 -262
- package/dist/chunk-2VOHINOC.js.map +0 -7
- package/dist/chunk-3AK6GP4M.js +0 -215
- package/dist/chunk-3B7EWIVB.js +0 -153
- package/dist/chunk-3JAC5CHL.js +0 -407
- package/dist/chunk-3QBZ2Y77.js +0 -188
- package/dist/chunk-3QBZ2Y77.js.map +0 -7
- package/dist/chunk-3T2PCWII.js +0 -442
- package/dist/chunk-4BTAI6HQ.js +0 -100
- package/dist/chunk-4JVNATQR.js +0 -621
- package/dist/chunk-4ZCR6CPK.js +0 -4964
- package/dist/chunk-4ZCR6CPK.js.map +0 -7
- package/dist/chunk-5MW5VMWD.js +0 -2784
- package/dist/chunk-5ZBEDKBD.js +0 -158
- package/dist/chunk-65YTZS3R.js +0 -203
- package/dist/chunk-6ZCHECOT.js +0 -1816
- package/dist/chunk-6ZCHECOT.js.map +0 -7
- package/dist/chunk-73ZT6NAT.js +0 -34
- package/dist/chunk-7HJ6H7AZ.js +0 -2681
- package/dist/chunk-AFXYPMFZ.js +0 -117
- package/dist/chunk-BL4ALBZ7.js +0 -37
- package/dist/chunk-BRCDZJBQ.js +0 -824
- package/dist/chunk-EBGX226R.js +0 -205
- package/dist/chunk-EHXI36HJ.js +0 -2815
- package/dist/chunk-ENP4FLOX.js +0 -293
- package/dist/chunk-FDOSJKDA.js +0 -1209
- package/dist/chunk-FDOSJKDA.js.map +0 -7
- package/dist/chunk-HP2BASCY.js +0 -1159
- package/dist/chunk-HP2BASCY.js.map +0 -7
- package/dist/chunk-HROKXT4K.js +0 -14
- package/dist/chunk-HTMXVOTH.js +0 -482
- package/dist/chunk-IA7S4UL5.js +0 -302
- package/dist/chunk-JFIOYO3M.js +0 -272
- package/dist/chunk-JMJW3ERE.js +0 -470
- package/dist/chunk-K7XWZSQA.js +0 -148
- package/dist/chunk-KSN3EVKI.js +0 -102
- package/dist/chunk-L5SOHZ5V.js +0 -229
- package/dist/chunk-LMGE54CQ.js +0 -54
- package/dist/chunk-LOMVTHAM.js +0 -95
- package/dist/chunk-MSW7OS2O.js +0 -276
- package/dist/chunk-MVCGSYS2.js +0 -50
- package/dist/chunk-N2HBIQKU.js +0 -102
- package/dist/chunk-NL3DVEVX.js +0 -158
- package/dist/chunk-O4WJSZC3.js +0 -1087
- package/dist/chunk-OLUDD6EC.js +0 -2370
- package/dist/chunk-OVPVPPRG.js +0 -55
- package/dist/chunk-OYEISJSJ.js +0 -289
- package/dist/chunk-OYEISJSJ.js.map +0 -7
- package/dist/chunk-P2JDCMXW.js +0 -4207
- package/dist/chunk-PMDXCESS.js +0 -514
- package/dist/chunk-PXYYICV7.js +0 -1271
- package/dist/chunk-PZ3KIUWJ.js +0 -56
- package/dist/chunk-QEWMCAJW.js +0 -335
- package/dist/chunk-QLWDUZ5K.js +0 -129
- package/dist/chunk-QRSIID3T.js +0 -95
- package/dist/chunk-ST644IDH.js +0 -217
- package/dist/chunk-UOOMFM7K.js +0 -6364
- package/dist/chunk-VGHSLILD.js +0 -368
- package/dist/chunk-W35IOI74.js +0 -228
- package/dist/chunk-XKF4KMCB.js +0 -146
- package/dist/chunk-XKF4KMCB.js.map +0 -7
- package/dist/chunk-XVDWYTJ6.js +0 -676
- package/dist/chunk-YQVEBFGT.js +0 -455
- package/dist/chunk-YWUVCXFS.js +0 -20271
- package/dist/chunk-YWUVCXFS.js.map +0 -7
- package/dist/chunk-ZT3PB4XX.js +0 -1150
- package/dist/chunk-ZT3PB4XX.js.map +0 -7
- package/dist/chunk-ZVSXHCGP.js +0 -142
- package/dist/condition-CZX2GSN4.js +0 -330
- package/dist/controls-BQR3WY5W.js +0 -39
- package/dist/controls.config-TAVZDHFZ.js +0 -37
- package/dist/correlation-BIWVZNC6.js +0 -96
- package/dist/cuminc-EDXOOI5R.js +0 -1147
- package/dist/cuminc.integration.spec-UZA7BDTB.js +0 -676
- package/dist/customdata.inputui-PEB4CE7J.js +0 -287
- package/dist/dataDownload-KANEHJXJ.js +0 -328
- package/dist/dataDownload.integration.spec-23WLHSWJ.js +0 -191
- package/dist/databrowser.ui-B2TNECC4.js +0 -419
- package/dist/databrowser.ui-B2TNECC4.js.map +0 -7
- package/dist/dictionary-YOTUFVES.js +0 -109
- package/dist/dnaMethylation-TRFAZWRJ.js +0 -36
- package/dist/dnaMethylation.integration.spec-SPFZO76D.js +0 -201
- package/dist/dofetch-MH4MRMGY.js +0 -50
- package/dist/e2pca-AFVAFUJ2.js +0 -348
- package/dist/ep-4FXTLWB4.js +0 -1254
- package/dist/expclust.gdc.spec-SFOCKBLR.js +0 -305
- package/dist/facet-SY6PYSTN.js +0 -519
- package/dist/gb-JUV63QCN.js +0 -93
- package/dist/gb-JUV63QCN.js.map +0 -7
- package/dist/geneExpClustering-FOY77R7P.js +0 -247
- package/dist/geneExpression-AHKX57BT.js +0 -312
- package/dist/geneExpression-D2F2KVGY.js +0 -36
- package/dist/geneExpression.unit.spec-SR2BGZQL.js +0 -100
- package/dist/geneORA-VJMYI4BT.js +0 -276
- package/dist/geneVariant-LFM5SO2P.js +0 -37
- package/dist/geneVariant-OIKEV4JM.js +0 -39
- package/dist/geneVariant.integration.spec-T6BINPIN.js +0 -196
- package/dist/genefusion.ui-NLMW5XMI.js +0 -306
- package/dist/geneset-HKXFHM5K.js +0 -197
- package/dist/geneset-HKXFHM5K.js.map +0 -7
- package/dist/genomeBrowser.spec-DRYIFJLY.js +0 -279
- package/dist/grin2-GJKLNT4J.js +0 -1031
- package/dist/grin2-GJKLNT4J.js.map +0 -7
- package/dist/grin2-LGI535FF.js +0 -1554
- package/dist/gsea-Z7DSDFOA.js +0 -45
- package/dist/hierCluster-HC2B5XRR.js +0 -61
- package/dist/hierCluster-PLHVN5S3.js +0 -57
- package/dist/hierCluster.config-E3DIJWL5.js +0 -38
- package/dist/hierCluster.integration.spec-OQLPUQG4.js +0 -393
- package/dist/hierCluster.interactivity-LRNPDTEH.js +0 -52
- package/dist/imagePlot-GUXRGYQA.js +0 -139
- package/dist/imagePlot-GUXRGYQA.js.map +0 -7
- package/dist/importPlot-M5HGLHRO.js +0 -8
- package/dist/isoformExpression-PADLHHR5.js +0 -38
- package/dist/isoformExpression.unit.spec-5BPAL4OS.js +0 -206
- package/dist/launch.adhoc-JH6ZZFDB.js +0 -40
- package/dist/leftlabel.sample-NS2TBANH.js +0 -257
- package/dist/lollipop-W6NOHHCP.js +0 -166
- package/dist/lollipop-W6NOHHCP.js.map +0 -7
- package/dist/maf-NOHIKTUP.js +0 -450
- package/dist/maftimeline-WGWE52EF.js +0 -591
- package/dist/matrix-B6NPQFFF.js +0 -61
- package/dist/matrix-UAKRJL5A.js +0 -56
- package/dist/matrix.config-KJNJXPJJ.js +0 -39
- package/dist/matrix.integration.spec-VAXIR3E6.js +0 -3070
- package/dist/matrix.interactivity-H4MCMJXU.js +0 -40
- package/dist/matrix.layout-RFKQJM5D.js +0 -42
- package/dist/matrix.renderers-7JJIC6VC.js +0 -36
- package/dist/matrix.sort.unit.spec-MQQVWWNT.js +0 -470
- package/dist/matrix.sorterUi.unit.spec-LG4TI7VF.js +0 -340
- package/dist/mavb-EIZHS6F4.js +0 -730
- package/dist/mds.fimo-XVC6MI7W.js +0 -516
- package/dist/mds.samplescatterplot-PRR4TKYI.js +0 -1548
- package/dist/mds.survivalplot-3OG4Y2B6.js +0 -481
- package/dist/oncomatrix-SO6S6IIB.js +0 -293
- package/dist/oncomatrix.spec-VXTF44K5.js +0 -446
- package/dist/plot.2dvaf-JW5OJJXV.js +0 -375
- package/dist/plot.app-T3GVCFQ3.js +0 -39
- package/dist/plot.barplot-2TYP6DPI.js +0 -100
- package/dist/plot.boxplot-HOQHM7JF.js +0 -150
- package/dist/plot.brainImaging-5AI7BSD4.js +0 -51
- package/dist/plot.disco-HNNZHK5Z.js +0 -101
- package/dist/plot.dzi-4OQSO7SY.js +0 -33
- package/dist/plot.ssgq-VZTTGECT.js +0 -137
- package/dist/plot.vaf2cov-ASEELRDV.js +0 -257
- package/dist/plot.wsi-MDWYLU4R.js +0 -36
- package/dist/polar-QSY6JG4P.js +0 -184
- package/dist/polar2-FD6656VD.js +0 -226
- package/dist/profile.spec-V7EQBXT2.js +0 -78
- package/dist/profileBarchart-EIKHZAPD.js +0 -265
- package/dist/profileForms-NGFRXPFF.js +0 -438
- package/dist/profilePlot-2UFKJ2OC.js +0 -52
- package/dist/profileRadar-B2R7OV5F.js +0 -261
- package/dist/profileRadarFacility-ILC7POCI.js +0 -261
- package/dist/proteinView-AS6ZV2JT.js +0 -758
- package/dist/proteinView-AS6ZV2JT.js.map +0 -7
- package/dist/proteomeAbundance-6J5YF4V2.js +0 -63
- package/dist/proteomeAbundance-6J5YF4V2.js.map +0 -7
- package/dist/proteomeAbundance-OF27N347.js +0 -21
- package/dist/qualitative-CSUO2WG5.js +0 -41
- package/dist/radar2-L2HGCUYR.js +0 -314
- package/dist/radarFacility2-HXUUTRYO.js +0 -323
- package/dist/regression-Y4NYGZSA.js +0 -54
- package/dist/regression.inputs-RWFIJLNF.js +0 -46
- package/dist/regression.inputs.term-QIU5SHTN.js +0 -46
- package/dist/regression.inputs.values.table-FM6QTSEV.js +0 -43
- package/dist/regression.integration.spec-YRKKU7HL.js +0 -782
- package/dist/regression.results-YUDCHUZJ.js +0 -38
- package/dist/regression.spec-G4GIIV32.js +0 -706
- package/dist/report-2N4FBR4Q.js +0 -220
- package/dist/sampleScatter.spec-UIUYO4WR.js +0 -200
- package/dist/sampleView-TOK5Y5KU.js +0 -46
- package/dist/samplelst-YW5ZS3GJ.js +0 -109
- package/dist/samplematrix-447BHSO7.js +0 -2196
- package/dist/sc-O2PL3FL2.js +0 -84
- package/dist/scatter-4DXHOWVY.js +0 -800
- package/dist/scatter.integration.spec-ZPTM3AGQ.js +0 -1194
- package/dist/selectGenomeWithTklst-3RLZFW62.js +0 -132
- package/dist/singleCellCellType-3LQJXS7H.js +0 -36
- package/dist/singleCellCellType.unit.spec-UJM72SP4.js +0 -158
- package/dist/singleCellGeneExpression-JOWJWPIQ.js +0 -36
- package/dist/singleCellGeneExpression.unit.spec-VY5CGRZH.js +0 -151
- package/dist/singleCellPlot-IVLVKOO6.js +0 -51
- package/dist/singlecell-VJJZJZF7.js +0 -1570
- package/dist/singlecell-VQJ2252L.js +0 -84
- package/dist/snp-ALMKZKL2.js +0 -36
- package/dist/snp.unit.spec-GJQBAHGQ.js +0 -174
- package/dist/snplocus-WCNCMFWZ.js +0 -206
- package/dist/spliceevent.a53ss.diagram-4Q4JF4RX.js +0 -149
- package/dist/spliceevent.exonskip.diagram-IOYOKELT.js +0 -275
- package/dist/spliceevent.noeventdiagram-77ZCOHSF.js +0 -458
- package/dist/ssGSEA-QTXXIN4K.js +0 -36
- package/dist/ssGSEA.unit.spec-LQESATT3.js +0 -86
- package/dist/summarizeCnvGeneexp-YKUQGDQF.js +0 -161
- package/dist/summarizeGeneexpSurvival-ARGG5VDC.js +0 -106
- package/dist/summarizeMutationCnv-FMZYT3EC.js +0 -162
- package/dist/summarizeMutationDiagnosis-ZX7I46SC.js +0 -38
- package/dist/summarizeMutationSurvival-RCFMTT43.js +0 -97
- package/dist/summary-QLL5YVI2.js +0 -47
- package/dist/summary.integration.spec-DHY6XCEJ.js +0 -412
- package/dist/summaryInput-ANCUQGIB.js +0 -233
- package/dist/sunburst-RDNFBOCK.js +0 -282
- package/dist/survival-BG7QV52L.js +0 -44
- package/dist/survival-WSN36OQE.js +0 -56
- package/dist/survival.integration.spec-37KAJ5IK.js +0 -800
- package/dist/svgraph-A5WGHW4S.js +0 -1385
- package/dist/svmr-CYRHHWZF.js +0 -3840
- package/dist/table-VHO7E5PI.js +0 -198
- package/dist/termCollection-E4Q6GLXN.js +0 -177
- package/dist/termCollection-HSVSH7TJ.js +0 -36
- package/dist/termCollection.unit.spec-ZCE3TUMS.js +0 -206
- package/dist/tk-GPRHDN4K.js +0 -44
- package/dist/tp.ui-LTUA3FSL.js +0 -1457
- package/dist/tvs.dt-G43PAAKD.js +0 -37
- package/dist/tvs.dtcnv.categorical-UHDS2TGZ.js +0 -38
- package/dist/tvs.dtcnv.continuous-ZNGYQKTD.js +0 -70
- package/dist/tvs.dtfusion-JBEEUDUS.js +0 -38
- package/dist/tvs.dtsnvindel-XXN5Q7RN.js +0 -38
- package/dist/tvs.dtsv-MO6L7HHV.js +0 -38
- package/dist/tvs.samplelst-HKY6UUJM.js +0 -102
- package/dist/tvs.termCollection-TY6FPL25.js +0 -157
- package/dist/violin-YHE3WSGR.js +0 -44
- package/dist/violin.integration.spec-F2UD7BHC.js +0 -1423
- package/dist/violin.interactivity-LVDTDEPQ.js +0 -36
- package/dist/violin.renderer-IIEIUGRI.js +0 -38
- package/dist/vocabulary-WQRYXBRO.js +0 -39
- /package/dist/{2dmaf-X7LATQT7.js.map → 2dmaf-F5QNP7AQ.js.map} +0 -0
- /package/dist/{AppHeader-RDOFP322.js.map → AppHeader-STVCDLET.js.map} +0 -0
- /package/dist/{BoxPlot-AZF2EMGQ.js.map → BoxPlot-CU7MEBH7.js.map} +0 -0
- /package/dist/{CorrelationVolcano-VXW35SXU.js.map → CorrelationVolcano-OE4R2GS3.js.map} +0 -0
- /package/dist/{DE-NLGMZ44O.js.map → DE-SR7PJPKI.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-G75VUHDI.js.map → DifferentialAnalysis-UWTYK7NU.js.map} +0 -0
- /package/dist/{Disco-DX4S44SI.js.map → Disco-IL6REGSA.js.map} +0 -0
- /package/dist/{Disco.UI-5FYIACCU.js.map → Disco.UI-JHHLS5BA.js.map} +0 -0
- /package/dist/{DmrPlot-HWYITHK2.js.map → DmrPlot-DDP53T3F.js.map} +0 -0
- /package/dist/{HicApp-XPZVZXB7.js.map → HicApp-RVFHTYED.js.map} +0 -0
- /package/dist/{NumBinaryEditor-M6MJYIHK.js.map → NumBinaryEditor-B3FXQAOH.js.map} +0 -0
- /package/dist/{NumBinaryEditor.unit.spec-W6MMYDAW.js.map → NumBinaryEditor.unit.spec-75YQJ2U6.js.map} +0 -0
- /package/dist/{NumContEditor-YRVENTS5.js.map → NumContEditor-5PYW3OLY.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-A6OH4TI7.js.map → NumContEditor.unit.spec-F7ZRDGBN.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-BLBOYSCQ.js.map → NumCustomBinEditor-TBT6GLYQ.js.map} +0 -0
- /package/dist/{NumCustomBinEditor.unit.spec-55V5CKLB.js.map → NumCustomBinEditor.unit.spec-6YHU45XV.js.map} +0 -0
- /package/dist/{NumDiscreteEditor-DTRM6VL2.js.map → NumDiscreteEditor-N6OJYSJA.js.map} +0 -0
- /package/dist/{NumDiscreteEditor.unit.spec-YMB6QRER.js.map → NumDiscreteEditor.unit.spec-HQS5RZ6R.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-XW4SVA7S.js.map → NumRegularBinEditor-HSDDKVNG.js.map} +0 -0
- /package/dist/{NumRegularBinEditor.unit.spec-VAHC3VOD.js.map → NumRegularBinEditor.unit.spec-33KN2MVM.js.map} +0 -0
- /package/dist/{NumSplineEditor-H22HTRFR.js.map → NumSplineEditor-XERKOACS.js.map} +0 -0
- /package/dist/{NumSplineEditor.unit.spec-4JUADXZR.js.map → NumSplineEditor.unit.spec-MPVM6KSC.js.map} +0 -0
- /package/dist/{NumericDensity-ECSZCQRX.js.map → NumericDensity-35EKYW3V.js.map} +0 -0
- /package/dist/{NumericDensity.unit.spec-SXXCXM4X.js.map → NumericDensity.unit.spec-OR24PPRJ.js.map} +0 -0
- /package/dist/{NumericHandler-CMBN3FZX.js.map → NumericHandler-D6ZNGRE3.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-UYTJG2Z2.js.map → NumericHandler.unit.spec-EKPGVSXI.js.map} +0 -0
- /package/dist/{RunChart2-MVFWLXZX.js.map → RunChart2-7DOXOFXV.js.map} +0 -0
- /package/dist/{WSIViewer-2Z636FMA.js.map → WSIViewer-E247ELKN.js.map} +0 -0
- /package/dist/{WsiSamplesPlot-LN75PND3.js.map → WsiSamplesPlot-3522VRB5.js.map} +0 -0
- /package/dist/{adSandbox-AJ7QUDOI.js.map → adSandbox-IDFY5P2P.js.map} +0 -0
- /package/dist/{alphaGenome-PVCRXAQK.js.map → alphaGenome-F3W7GJQ5.js.map} +0 -0
- /package/dist/{app-DWYCAFRP.js.map → app-2HDSFMRM.js.map} +0 -0
- /package/dist/{app-RENXV7VR.js.map → app-LIWPFL7C.js.map} +0 -0
- /package/dist/{bam-5G6IT6OX.js.map → bam-TBHHSATL.js.map} +0 -0
- /package/dist/{barchart-MLCCU6SU.js.map → barchart-HHFCBOZE.js.map} +0 -0
- /package/dist/{barchart.events-B6HQTLK2.js.map → barchart.events-UQUSSRXB.js.map} +0 -0
- /package/dist/{barchart.integration.spec-S43A7C7N.js.map → barchart.integration.spec-OF3MWFQ5.js.map} +0 -0
- /package/dist/{barchart2-QMKEN6MN.js.map → barchart2-XRMPCBBU.js.map} +0 -0
- /package/dist/{block-IGBB4BJH.js.map → block-5UEORHFB.js.map} +0 -0
- /package/dist/{block.init-NLCYAKV4.js.map → block.init-QSSFUVIT.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-TZWGRDY7.js.map → block.mds.expressionrank-VBIIJHQF.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-OAFROYDL.js.map → block.mds.geneboxplot-KSBHXBNX.js.map} +0 -0
- /package/dist/{block.mds.junction-NSLXTW3D.js.map → block.mds.junction-FWZWMZJ2.js.map} +0 -0
- /package/dist/{block.mds.svcnv-ICPG4BW6.js.map → block.mds.svcnv-UXORVLH2.js.map} +0 -0
- /package/dist/{block.svg-DTFVIAAC.js.map → block.svg-6KIGW4QH.js.map} +0 -0
- /package/dist/{block.tk.aicheck-ZIMIBWHA.js.map → block.tk.aicheck-DK566Q4C.js.map} +0 -0
- /package/dist/{block.tk.ase-I7UNK5BK.js.map → block.tk.ase-2GB2VJJ6.js.map} +0 -0
- /package/dist/{block.tk.bam-W7JG46RS.js.map → block.tk.bam-RQNOLY52.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-XAQJPKGJ.js.map → block.tk.bedgraphdot-N4YMZFO4.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-YQOJPJSG.js.map → block.tk.bigwig.ui-4S7L7D7D.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-OWWGGCHU.js.map → block.tk.hicstraw-AHFNQKCS.js.map} +0 -0
- /package/dist/{block.tk.junction-V63ZQQX6.js.map → block.tk.junction-7E6SNQMQ.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-B7KXX7WN.js.map → block.tk.junction.textmatrixui-3C5JVYX5.js.map} +0 -0
- /package/dist/{block.tk.ld-2J6CT74S.js.map → block.tk.ld-TOUCLT3W.js.map} +0 -0
- /package/dist/{block.tk.menu-6AQLG7PW.js.map → block.tk.menu-JCV5ORD6.js.map} +0 -0
- /package/dist/{block.tk.pgv-4V6PKVCQ.js.map → block.tk.pgv-CUU22U6M.js.map} +0 -0
- /package/dist/{brainImaging-WRBGYLHK.js.map → brainImaging-MTQTXNNL.js.map} +0 -0
- /package/dist/{chunk-ENP4FLOX.js.map → chunk-2UYBBUXK.js.map} +0 -0
- /package/dist/{chunk-P2JDCMXW.js.map → chunk-2VPEFXEJ.js.map} +0 -0
- /package/dist/{chunk-OVPVPPRG.js.map → chunk-3QHIL3V3.js.map} +0 -0
- /package/dist/{chunk-QLWDUZ5K.js.map → chunk-44VXWKYJ.js.map} +0 -0
- /package/dist/{chunk-QRSIID3T.js.map → chunk-52D6EGUS.js.map} +0 -0
- /package/dist/{chunk-N2HBIQKU.js.map → chunk-5FHM3L4I.js.map} +0 -0
- /package/dist/{chunk-ZVSXHCGP.js.map → chunk-62TF2MCH.js.map} +0 -0
- /package/dist/{chunk-UOOMFM7K.js.map → chunk-67QM2NUK.js.map} +0 -0
- /package/dist/{chunk-XVDWYTJ6.js.map → chunk-6AAPHEWK.js.map} +0 -0
- /package/dist/{chunk-3B7EWIVB.js.map → chunk-6KPGMUHS.js.map} +0 -0
- /package/dist/{chunk-YQVEBFGT.js.map → chunk-6WBIZXNI.js.map} +0 -0
- /package/dist/{chunk-IA7S4UL5.js.map → chunk-7AAJVXEG.js.map} +0 -0
- /package/dist/{chunk-PXYYICV7.js.map → chunk-AFJRAR4N.js.map} +0 -0
- /package/dist/{chunk-K7XWZSQA.js.map → chunk-CVRYZMDE.js.map} +0 -0
- /package/dist/{chunk-MSW7OS2O.js.map → chunk-DGUTCYH2.js.map} +0 -0
- /package/dist/{chunk-5ZBEDKBD.js.map → chunk-DHNXATHC.js.map} +0 -0
- /package/dist/{chunk-L5SOHZ5V.js.map → chunk-E3BI23UK.js.map} +0 -0
- /package/dist/{chunk-4JVNATQR.js.map → chunk-E4JDHA3C.js.map} +0 -0
- /package/dist/{chunk-W35IOI74.js.map → chunk-FOJWYEGV.js.map} +0 -0
- /package/dist/{chunk-NL3DVEVX.js.map → chunk-FTN7Y34O.js.map} +0 -0
- /package/dist/{chunk-EHXI36HJ.js.map → chunk-GRG5MMPN.js.map} +0 -0
- /package/dist/{chunk-HTMXVOTH.js.map → chunk-GSU4PZN3.js.map} +0 -0
- /package/dist/{chunk-ST644IDH.js.map → chunk-IIRU2JLK.js.map} +0 -0
- /package/dist/{chunk-JFIOYO3M.js.map → chunk-JCB74ZSK.js.map} +0 -0
- /package/dist/{chunk-BRCDZJBQ.js.map → chunk-JUDWPYMA.js.map} +0 -0
- /package/dist/{chunk-O4WJSZC3.js.map → chunk-KT6VZBC7.js.map} +0 -0
- /package/dist/{chunk-OLUDD6EC.js.map → chunk-L2HBHFTK.js.map} +0 -0
- /package/dist/{chunk-VGHSLILD.js.map → chunk-LKADRF3Q.js.map} +0 -0
- /package/dist/{chunk-3JAC5CHL.js.map → chunk-MAXFRUGM.js.map} +0 -0
- /package/dist/{chunk-BL4ALBZ7.js.map → chunk-MQN7RYCK.js.map} +0 -0
- /package/dist/{chunk-JMJW3ERE.js.map → chunk-OEUI4CYZ.js.map} +0 -0
- /package/dist/{chunk-73ZT6NAT.js.map → chunk-OM36XUQL.js.map} +0 -0
- /package/dist/{chunk-LMGE54CQ.js.map → chunk-P5LNIH5X.js.map} +0 -0
- /package/dist/{chunk-KSN3EVKI.js.map → chunk-PG62PRMF.js.map} +0 -0
- /package/dist/{chunk-EBGX226R.js.map → chunk-Q3J3F2NU.js.map} +0 -0
- /package/dist/{chunk-AFXYPMFZ.js.map → chunk-RZBV6474.js.map} +0 -0
- /package/dist/{chunk-3T2PCWII.js.map → chunk-T5V4OC27.js.map} +0 -0
- /package/dist/{chunk-QEWMCAJW.js.map → chunk-UCKSUNSJ.js.map} +0 -0
- /package/dist/{chunk-PMDXCESS.js.map → chunk-W4TLYHZO.js.map} +0 -0
- /package/dist/{chunk-PZ3KIUWJ.js.map → chunk-WPZUXKIB.js.map} +0 -0
- /package/dist/{chunk-3AK6GP4M.js.map → chunk-XM47XD6G.js.map} +0 -0
- /package/dist/{chunk-MVCGSYS2.js.map → chunk-YZHGLSKQ.js.map} +0 -0
- /package/dist/{chunk-65YTZS3R.js.map → chunk-ZGOOZK3I.js.map} +0 -0
- /package/dist/{chunk-LOMVTHAM.js.map → chunk-ZH2VP6Q6.js.map} +0 -0
- /package/dist/{chunk-HROKXT4K.js.map → chunk-ZLOQXO5K.js.map} +0 -0
- /package/dist/{chunk-4BTAI6HQ.js.map → chunk-ZMNDBPJU.js.map} +0 -0
- /package/dist/{chunk-5MW5VMWD.js.map → chunk-ZRTW6X3F.js.map} +0 -0
- /package/dist/{chunk-7HJ6H7AZ.js.map → chunk-ZTT52MBP.js.map} +0 -0
- /package/dist/{condition-CZX2GSN4.js.map → condition-VUACUQYF.js.map} +0 -0
- /package/dist/{controls-BQR3WY5W.js.map → controls-N4MPSNO4.js.map} +0 -0
- /package/dist/{controls.config-TAVZDHFZ.js.map → controls.config-PRXVODCM.js.map} +0 -0
- /package/dist/{correlation-BIWVZNC6.js.map → correlation-QJZUYDFH.js.map} +0 -0
- /package/dist/{cuminc-EDXOOI5R.js.map → cuminc-JJHXW55V.js.map} +0 -0
- /package/dist/{cuminc.integration.spec-UZA7BDTB.js.map → cuminc.integration.spec-IXS2UO2O.js.map} +0 -0
- /package/dist/{customdata.inputui-PEB4CE7J.js.map → customdata.inputui-DUHO6M6I.js.map} +0 -0
- /package/dist/{dataDownload-KANEHJXJ.js.map → dataDownload-OFB7TYDB.js.map} +0 -0
- /package/dist/{dataDownload.integration.spec-23WLHSWJ.js.map → dataDownload.integration.spec-4HWDQO4C.js.map} +0 -0
- /package/dist/{dictionary-YOTUFVES.js.map → dictionary-BSKN37CP.js.map} +0 -0
- /package/dist/{dnaMethylation-TRFAZWRJ.js.map → dnaMethylation-5QNEEGC6.js.map} +0 -0
- /package/dist/{dnaMethylation.integration.spec-SPFZO76D.js.map → dnaMethylation.integration.spec-YIX3JSA7.js.map} +0 -0
- /package/dist/{dofetch-MH4MRMGY.js.map → dofetch-KFMGQY7G.js.map} +0 -0
- /package/dist/{e2pca-AFVAFUJ2.js.map → e2pca-VX42HDYZ.js.map} +0 -0
- /package/dist/{ep-4FXTLWB4.js.map → ep-B6ZNETLI.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-SFOCKBLR.js.map → expclust.gdc.spec-SGECIILQ.js.map} +0 -0
- /package/dist/{facet-SY6PYSTN.js.map → facet-2W5SBPGP.js.map} +0 -0
- /package/dist/{geneExpClustering-FOY77R7P.js.map → geneExpClustering-6A7364T5.js.map} +0 -0
- /package/dist/{geneExpression-D2F2KVGY.js.map → geneExpression-NAM2UEYN.js.map} +0 -0
- /package/dist/{geneExpression-AHKX57BT.js.map → geneExpression-WF56ODMZ.js.map} +0 -0
- /package/dist/{geneExpression.unit.spec-SR2BGZQL.js.map → geneExpression.unit.spec-DNE2T3WI.js.map} +0 -0
- /package/dist/{geneORA-VJMYI4BT.js.map → geneORA-33FK2YOS.js.map} +0 -0
- /package/dist/{geneVariant-LFM5SO2P.js.map → geneVariant-C7PCNBOQ.js.map} +0 -0
- /package/dist/{geneVariant-OIKEV4JM.js.map → geneVariant-REELFRRA.js.map} +0 -0
- /package/dist/{geneVariant.integration.spec-T6BINPIN.js.map → geneVariant.integration.spec-GNXUGDKL.js.map} +0 -0
- /package/dist/{genefusion.ui-NLMW5XMI.js.map → genefusion.ui-WO5EPJDS.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-DRYIFJLY.js.map → genomeBrowser.spec-VPAKTUJF.js.map} +0 -0
- /package/dist/{grin2-LGI535FF.js.map → grin2-GYHUYNEF.js.map} +0 -0
- /package/dist/{gsea-Z7DSDFOA.js.map → gsea-PE5WZ5ZI.js.map} +0 -0
- /package/dist/{hierCluster-HC2B5XRR.js.map → hierCluster-FH6YJHRT.js.map} +0 -0
- /package/dist/{hierCluster-PLHVN5S3.js.map → hierCluster-IFM5I5QN.js.map} +0 -0
- /package/dist/{hierCluster.config-E3DIJWL5.js.map → hierCluster.config-M57ZIWMB.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-OQLPUQG4.js.map → hierCluster.integration.spec-Z64RL7MC.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-LRNPDTEH.js.map → hierCluster.interactivity-CDBAJXOY.js.map} +0 -0
- /package/dist/{importPlot-M5HGLHRO.js.map → importPlot-OWKXSK77.js.map} +0 -0
- /package/dist/{isoformExpression-PADLHHR5.js.map → isoformExpression-66XLJG73.js.map} +0 -0
- /package/dist/{isoformExpression.unit.spec-5BPAL4OS.js.map → isoformExpression.unit.spec-QJX2IRHL.js.map} +0 -0
- /package/dist/{launch.adhoc-JH6ZZFDB.js.map → launch.adhoc-JCWID253.js.map} +0 -0
- /package/dist/{leftlabel.sample-NS2TBANH.js.map → leftlabel.sample-5NZ6VQDN.js.map} +0 -0
- /package/dist/{maf-NOHIKTUP.js.map → maf-HIS2FQXK.js.map} +0 -0
- /package/dist/{maftimeline-WGWE52EF.js.map → maftimeline-UPJJQE23.js.map} +0 -0
- /package/dist/{matrix-B6NPQFFF.js.map → matrix-62CN2KXR.js.map} +0 -0
- /package/dist/{matrix-UAKRJL5A.js.map → matrix-SPEDEB3J.js.map} +0 -0
- /package/dist/{matrix.config-KJNJXPJJ.js.map → matrix.config-XB6WFXUY.js.map} +0 -0
- /package/dist/{matrix.integration.spec-VAXIR3E6.js.map → matrix.integration.spec-NN7OR5XM.js.map} +0 -0
- /package/dist/{matrix.interactivity-H4MCMJXU.js.map → matrix.interactivity-OWMHUJCX.js.map} +0 -0
- /package/dist/{matrix.layout-RFKQJM5D.js.map → matrix.layout-27QB6MWK.js.map} +0 -0
- /package/dist/{matrix.renderers-7JJIC6VC.js.map → matrix.renderers-EPXES5E4.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-MQQVWWNT.js.map → matrix.sort.unit.spec-NBT5FSZ6.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-LG4TI7VF.js.map → matrix.sorterUi.unit.spec-QKGUE4RR.js.map} +0 -0
- /package/dist/{mavb-EIZHS6F4.js.map → mavb-M7Y74OWQ.js.map} +0 -0
- /package/dist/{mds.fimo-XVC6MI7W.js.map → mds.fimo-WCDFA7HG.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-PRR4TKYI.js.map → mds.samplescatterplot-ZDHQ3MKJ.js.map} +0 -0
- /package/dist/{mds.survivalplot-3OG4Y2B6.js.map → mds.survivalplot-R74DL2RA.js.map} +0 -0
- /package/dist/{oncomatrix-SO6S6IIB.js.map → oncomatrix-MOITJBII.js.map} +0 -0
- /package/dist/{oncomatrix.spec-VXTF44K5.js.map → oncomatrix.spec-NALJBPYS.js.map} +0 -0
- /package/dist/{plot.2dvaf-JW5OJJXV.js.map → plot.2dvaf-IE2EZEFA.js.map} +0 -0
- /package/dist/{plot.app-T3GVCFQ3.js.map → plot.app-HTW6TZEH.js.map} +0 -0
- /package/dist/{plot.barplot-2TYP6DPI.js.map → plot.barplot-NCQEPEOY.js.map} +0 -0
- /package/dist/{plot.boxplot-HOQHM7JF.js.map → plot.boxplot-WNKVBVJJ.js.map} +0 -0
- /package/dist/{plot.brainImaging-5AI7BSD4.js.map → plot.brainImaging-2Z3TOO6J.js.map} +0 -0
- /package/dist/{plot.disco-HNNZHK5Z.js.map → plot.disco-4JAEIAYK.js.map} +0 -0
- /package/dist/{plot.dzi-4OQSO7SY.js.map → plot.dzi-ZGLOVJJN.js.map} +0 -0
- /package/dist/{plot.ssgq-VZTTGECT.js.map → plot.ssgq-IHUILM43.js.map} +0 -0
- /package/dist/{plot.vaf2cov-ASEELRDV.js.map → plot.vaf2cov-ZYCQMD27.js.map} +0 -0
- /package/dist/{plot.wsi-MDWYLU4R.js.map → plot.wsi-3GISVBDH.js.map} +0 -0
- /package/dist/{polar-QSY6JG4P.js.map → polar-4AUAZHBV.js.map} +0 -0
- /package/dist/{polar2-FD6656VD.js.map → polar2-SRD4WWXU.js.map} +0 -0
- /package/dist/{profile.spec-V7EQBXT2.js.map → profile.spec-TOITKBBZ.js.map} +0 -0
- /package/dist/{profileBarchart-EIKHZAPD.js.map → profileBarchart-Z4SYIYBE.js.map} +0 -0
- /package/dist/{profileForms-NGFRXPFF.js.map → profileForms-RA7XQ2QT.js.map} +0 -0
- /package/dist/{profilePlot-2UFKJ2OC.js.map → profilePlot-4BM3XZVK.js.map} +0 -0
- /package/dist/{profileRadar-B2R7OV5F.js.map → profileRadar-EYBESEPI.js.map} +0 -0
- /package/dist/{profileRadarFacility-ILC7POCI.js.map → profileRadarFacility-FZYTFM26.js.map} +0 -0
- /package/dist/{proteomeAbundance-OF27N347.js.map → proteomeAbundance-65R6M4YQ.js.map} +0 -0
- /package/dist/{qualitative-CSUO2WG5.js.map → qualitative-E7WL6DN4.js.map} +0 -0
- /package/dist/{radar2-L2HGCUYR.js.map → radar2-I6FN5SUX.js.map} +0 -0
- /package/dist/{radarFacility2-HXUUTRYO.js.map → radarFacility2-GVK7PT3V.js.map} +0 -0
- /package/dist/{regression-Y4NYGZSA.js.map → regression-TIR5D354.js.map} +0 -0
- /package/dist/{regression.inputs-RWFIJLNF.js.map → regression.inputs-2AMJCJ3L.js.map} +0 -0
- /package/dist/{regression.inputs.term-QIU5SHTN.js.map → regression.inputs.term-D6D2QEUB.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-FM6QTSEV.js.map → regression.inputs.values.table-M3IPLGDJ.js.map} +0 -0
- /package/dist/{regression.integration.spec-YRKKU7HL.js.map → regression.integration.spec-ROUSXLMH.js.map} +0 -0
- /package/dist/{regression.results-YUDCHUZJ.js.map → regression.results-YD5S74YS.js.map} +0 -0
- /package/dist/{regression.spec-G4GIIV32.js.map → regression.spec-4OXBBTNO.js.map} +0 -0
- /package/dist/{report-2N4FBR4Q.js.map → report-ETNALKTY.js.map} +0 -0
- /package/dist/{sampleScatter.spec-UIUYO4WR.js.map → sampleScatter.spec-LECMFMI2.js.map} +0 -0
- /package/dist/{sampleView-TOK5Y5KU.js.map → sampleView-B5TM7JOW.js.map} +0 -0
- /package/dist/{samplelst-YW5ZS3GJ.js.map → samplelst-GFQCG4SS.js.map} +0 -0
- /package/dist/{samplematrix-447BHSO7.js.map → samplematrix-OMTNWCJK.js.map} +0 -0
- /package/dist/{sc-O2PL3FL2.js.map → sc-MIEEZBWG.js.map} +0 -0
- /package/dist/{scatter-4DXHOWVY.js.map → scatter-ETOZ722F.js.map} +0 -0
- /package/dist/{scatter.integration.spec-ZPTM3AGQ.js.map → scatter.integration.spec-TS4PNRLX.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-3RLZFW62.js.map → selectGenomeWithTklst-Y5QIM2JB.js.map} +0 -0
- /package/dist/{singleCellCellType-3LQJXS7H.js.map → singleCellCellType-HOJHZF5W.js.map} +0 -0
- /package/dist/{singleCellCellType.unit.spec-UJM72SP4.js.map → singleCellCellType.unit.spec-MH5V3RPX.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-JOWJWPIQ.js.map → singleCellGeneExpression-YVQ5TIKN.js.map} +0 -0
- /package/dist/{singleCellGeneExpression.unit.spec-VY5CGRZH.js.map → singleCellGeneExpression.unit.spec-BMFFT5HO.js.map} +0 -0
- /package/dist/{singleCellPlot-IVLVKOO6.js.map → singleCellPlot-3YFUYA2Y.js.map} +0 -0
- /package/dist/{singlecell-VJJZJZF7.js.map → singlecell-FK5JETW5.js.map} +0 -0
- /package/dist/{singlecell-VQJ2252L.js.map → singlecell-RL7V7DIC.js.map} +0 -0
- /package/dist/{snp-ALMKZKL2.js.map → snp-FT7HB3XN.js.map} +0 -0
- /package/dist/{snp.unit.spec-GJQBAHGQ.js.map → snp.unit.spec-CLYVYPPG.js.map} +0 -0
- /package/dist/{snplocus-WCNCMFWZ.js.map → snplocus-M5SEQGAC.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-4Q4JF4RX.js.map → spliceevent.a53ss.diagram-EJ5CTRCZ.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-IOYOKELT.js.map → spliceevent.exonskip.diagram-ETXMOHZ3.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-77ZCOHSF.js.map → spliceevent.noeventdiagram-S2O4ZM2Z.js.map} +0 -0
- /package/dist/{ssGSEA-QTXXIN4K.js.map → ssGSEA-6PMDQDTJ.js.map} +0 -0
- /package/dist/{ssGSEA.unit.spec-LQESATT3.js.map → ssGSEA.unit.spec-JD5T4R2N.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-YKUQGDQF.js.map → summarizeCnvGeneexp-GCHNKTIU.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-ARGG5VDC.js.map → summarizeGeneexpSurvival-R2RYQZ3M.js.map} +0 -0
- /package/dist/{summarizeMutationCnv-FMZYT3EC.js.map → summarizeMutationCnv-LB2BIYRL.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-ZX7I46SC.js.map → summarizeMutationDiagnosis-3JUY75LM.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-RCFMTT43.js.map → summarizeMutationSurvival-VYLRWTCF.js.map} +0 -0
- /package/dist/{summary-QLL5YVI2.js.map → summary-2QQ72IEQ.js.map} +0 -0
- /package/dist/{summary.integration.spec-DHY6XCEJ.js.map → summary.integration.spec-XXU362UQ.js.map} +0 -0
- /package/dist/{summaryInput-ANCUQGIB.js.map → summaryInput-OZHZG3PV.js.map} +0 -0
- /package/dist/{sunburst-RDNFBOCK.js.map → sunburst-CMCJCANX.js.map} +0 -0
- /package/dist/{survival-BG7QV52L.js.map → survival-EBD4DHO7.js.map} +0 -0
- /package/dist/{survival-WSN36OQE.js.map → survival-ISLRRPKU.js.map} +0 -0
- /package/dist/{survival.integration.spec-37KAJ5IK.js.map → survival.integration.spec-FS7V4OXK.js.map} +0 -0
- /package/dist/{svgraph-A5WGHW4S.js.map → svgraph-KGLNUM7W.js.map} +0 -0
- /package/dist/{svmr-CYRHHWZF.js.map → svmr-NXZ5VLKH.js.map} +0 -0
- /package/dist/{table-VHO7E5PI.js.map → table-ISOQOI6C.js.map} +0 -0
- /package/dist/{termCollection-HSVSH7TJ.js.map → termCollection-7ZSU3I45.js.map} +0 -0
- /package/dist/{termCollection-E4Q6GLXN.js.map → termCollection-V2A5BDQB.js.map} +0 -0
- /package/dist/{termCollection.unit.spec-ZCE3TUMS.js.map → termCollection.unit.spec-6VLCJGOU.js.map} +0 -0
- /package/dist/{tk-GPRHDN4K.js.map → tk-6AB6XYIE.js.map} +0 -0
- /package/dist/{tp.ui-LTUA3FSL.js.map → tp.ui-2O4UW5N7.js.map} +0 -0
- /package/dist/{tvs.dt-G43PAAKD.js.map → tvs.dt-CY6TOQVB.js.map} +0 -0
- /package/dist/{tvs.dtcnv.categorical-UHDS2TGZ.js.map → tvs.dtcnv.categorical-AYQ432TW.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-ZNGYQKTD.js.map → tvs.dtcnv.continuous-XVDL6SG3.js.map} +0 -0
- /package/dist/{tvs.dtfusion-JBEEUDUS.js.map → tvs.dtfusion-V3AV7A6Q.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-XXN5Q7RN.js.map → tvs.dtsnvindel-XM3NXIT7.js.map} +0 -0
- /package/dist/{tvs.dtsv-MO6L7HHV.js.map → tvs.dtsv-Z2GYRINW.js.map} +0 -0
- /package/dist/{tvs.samplelst-HKY6UUJM.js.map → tvs.samplelst-C4FB63G7.js.map} +0 -0
- /package/dist/{tvs.termCollection-TY6FPL25.js.map → tvs.termCollection-VHTSC2ST.js.map} +0 -0
- /package/dist/{violin-YHE3WSGR.js.map → violin-KGGTUQFF.js.map} +0 -0
- /package/dist/{violin.integration.spec-F2UD7BHC.js.map → violin.integration.spec-5EW6PLJX.js.map} +0 -0
- /package/dist/{violin.interactivity-LVDTDEPQ.js.map → violin.interactivity-RI4RURGO.js.map} +0 -0
- /package/dist/{violin.renderer-IIEIUGRI.js.map → violin.renderer-EWU2IFZE.js.map} +0 -0
- /package/dist/{vocabulary-WQRYXBRO.js.map → vocabulary-VLIGC7OP.js.map} +0 -0
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../mass/search.js", "../mass/sessionBtn.js", "../mass/about.ts", "../mass/nav.js"],
|
|
4
|
-
"sourcesContent": ["import { getCompInit } from '../rx'\nimport { select, selectAll } from 'd3-selection'\nimport { Menu } from '../dom/menu'\nimport { debounce } from 'debounce'\nimport { sayerror } from '../dom/sayerror.ts'\n//import { graphable } from '../../common/termutils'\n\n/*\nsteps:\nuser input at <input> will call doSearch()\ndoSearch() lets app dispatch an action, type: search_\nbut the action will NOT update app state\napp notifies all components with the action\nonly main() of the \"search component\" will responds to the action to perform querying and display result\n\nopts{}\n.holder\n.click_term()\n.disable_terms[]\n\nTODO\nallow to search categories, e.g. hodgkin lymphoma from diaggrp, how to act upon clicking?\n\n */\n\nclass MassSearch {\n\tstatic type = 'search'\n\n\tconstructor(opts) {\n\t\tthis.type = MassSearch.type\n\t\tsetRenderers(this)\n\t\tsetInteractivity(this)\n\t}\n\n\tasync init(appState) {\n\t\tthis.dom = {\n\t\t\tholder: this.opts.holder,\n\t\t\tholderNode: this.opts.holder.node(),\n\t\t\ttip: new Menu({ padding: '5px' })\n\t\t}\n\t\tthis.initUI()\n\t}\n\n\treactsTo(action) {\n\t\treturn action.type.startsWith('search') || action.type.startsWith('cohort')\n\t}\n\n\tgetState(appState) {\n\t\treturn {\n\t\t\tcohortStr:\n\t\t\t\tappState.activeCohort == -1 || !appState.termdbConfig.selectCohort\n\t\t\t\t\t? ''\n\t\t\t\t\t: appState.termdbConfig.selectCohort.values[appState.activeCohort].keys.slice().sort().join(','),\n\t\t\tsearch: appState.search,\n\t\t\tnav: appState.nav\n\t\t}\n\t}\n\n\tasync main() {\n\t\t// show/hide search input from the tree\n\t\tthis.dom.holder.style('display', this.state.search.isVisible ? 'inline-block' : 'none')\n\t}\n\n\tasync doSearch(str) {\n\t\tif (!str) {\n\t\t\tthis.clear({ hide: true })\n\t\t\tthis.bus.emit('postSearch', [])\n\t\t\treturn\n\t\t}\n\t\tconst data = await this.app.vocabApi.findTerm(str, this.state.cohortStr, this.opts.usecase, this.opts.targetType)\n\t\tif (!data.lst || data.lst.length == 0) {\n\t\t\tthis.noResult()\n\t\t} else {\n\t\t\t// found terms\n\t\t\tthis.showTerms(data)\n\t\t}\n\t\tthis.bus.emit('postSearch', data)\n\t}\n}\n\nexport const searchInit = getCompInit(MassSearch)\n\nfunction setRenderers(self) {\n\tself.initUI = () => {\n\t\tself.dom.holder.style('display', self.search && self.search.isVisible == false ? 'none' : 'inline-block')\n\t\tself.dom.input = self.dom.holder\n\t\t\t.style('text-align', 'center')\n\t\t\t.append('input')\n\t\t\t.attr('type', 'search')\n\t\t\t.attr('class', 'tree_search')\n\t\t\t.attr('placeholder', 'Search')\n\t\t\t.style('width', '180px')\n\t\t\t.style('display', 'block')\n\t\t\t.on('input', debounce(self.onInput, 300))\n\n\t\tself.dom.resultDiv = self.dom.tip.d\n\t\t\t.style('border-left', self.opts.resultsHolder ? '' : 'solid 1px rgb(133,182,225)')\n\t\t\t.style('padding-left', '5px')\n\t}\n\tself.noResult = () => {\n\t\tself.clear()\n\t\tself.dom.resultDiv.append('div').text('No match').style('padding', '3px 3px 3px 0px').style('opacity', 0.5)\n\t}\n\tself.showTerms = data => {\n\t\t// add disabled terms to opts.disable_terms\n\t\tif (self.opts.disable_terms)\n\t\t\tdata.lst.forEach(t => {\n\t\t\t\tif (t.disabled) self.opts.disable_terms.push(t)\n\t\t\t})\n\t\tself.clear({ hide: !data.lst.length })\n\t\tif (data.lst.length) {\n\t\t\tself.dom.resultDiv.append('table').selectAll().data(data.lst).enter().append('tr').each(self.showTerm)\n\t\t}\n\t}\n\tself.showTerm = function (term) {\n\t\tconst tr = select(this)\n\t\tconst button = tr.append('td').text(term.name)\n\n\t\tif (term.type) {\n\t\t\t// has term type, show button for clicking\n\t\t\tbutton\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t.attr('data-testid', `sjpp-mass-search-term-${term.id}`)\n\t\t\t\t.on('click', async () => {\n\t\t\t\t\tif (self.state.nav?.activeTab == 0) {\n\t\t\t\t\t\t// see notes in about.ts line 340\n\t\t\t\t\t\tawait self.app.dispatch({\n\t\t\t\t\t\t\ttype: 'tab_set',\n\t\t\t\t\t\t\tactiveTab: 1\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tself.app.dispatch({\n\t\t\t\t\t\ttype: 'plot_create',\n\t\t\t\t\t\tconfig: {\n\t\t\t\t\t\t\tchartType: term.type == 'survival' ? 'survival' : 'summary',\n\t\t\t\t\t\t\tterm: { term }\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\tself.clear({ hide: true })\n\t\t\t\t})\n\t\t} else {\n\t\t\t// no term type, not clickable\n\t\t\tbutton.style('padding', '5px 10px').style('opacity', 0.5)\n\t\t}\n\n\t\ttr.append('td')\n\t\t\t.text((term.__ancestorNames || []).join(' > '))\n\t\t\t.style('opacity', 0.5)\n\t\t\t.style('font-size', '.7em')\n\t}\n\tself.clear = (opts = {}) => {\n\t\tself.dom.tip.clear()\n\t\tif (opts.hide) self.dom.tip.hide()\n\t\telse self.dom.tip.showunder(self.dom.holderNode)\n\t}\n}\n\nfunction setInteractivity(self) {\n\tself.onInput = async () => {\n\t\tconst str = self.dom.input.property('value')\n\t\t// do not trim space from input so that 'age ' will not match with 'agent'\n\t\ttry {\n\t\t\t//await self.main({ str })\n\t\t\tawait self.doSearch(str)\n\t\t} catch (e) {\n\t\t\tself.clear()\n\t\t\tsayerror(self.dom.resultDiv, 'Error: ' + (e.message || e))\n\t\t\tif (e.stack) console.log(e.stack)\n\t\t}\n\t}\n}\n", "import { getCompInit } from '#rx'\nimport { Menu } from '#dom/menu'\nimport { to_textfile } from '#dom/downloadTextfile'\nimport { dofetch3 } from '#common/dofetch'\nimport { parentCorsMessage } from '#common/embedder-helpers'\nimport { select } from 'd3-selection'\nimport { importPlot } from '#plots/importPlot.js'\n\nclass MassSessionBtn {\n\tstatic type = 'sessionBtn'\n\n\tconstructor() {\n\t\tthis.type = MassSessionBtn.type\n\t\tthis.route = 'termdb'\n\t\tthis.embedderOrigin = window.location.origin\n\t\tthis.hostURL = sessionStorage.getItem('hostURL') || this.embedderOrigin\n\t}\n\n\tasync init(appState) {\n\t\tconst tip = new Menu({ padding: '0px' })\n\t\tconst copytip = new Menu({ padding: '5px' })\n\t\tthis.dom = {\n\t\t\tbutton: this.opts.button,\n\t\t\ttip,\n\t\t\tcopytip\n\t\t}\n\n\t\tthis.dom.button.on('click', event => {\n\t\t\tevent.stopPropagation()\n\t\t\tthis.dom.tip.clear()\n\t\t\tthis.showMenu()\n\t\t})\n\n\t\tthis.dslabel = appState.vocab.dslabel\n\t\tthis.savedSessions = JSON.parse(localStorage.getItem('savedMassSessions') || `{}`)\n\t\tthis.requiredAuth = appState.termdbConfig?.requiredAuth?.find(a => a.route == this.route && a.type == 'jwt')\n\t}\n\n\tasync showMenu() {\n\t\tthis.dom.tip.clear().d.style('padding', 0)\n\t\tthis.dom.tip.d.attr('id', 'sjpp-session-menu')\n\t\tconst gt = `<span style='margin-left: 24px; float: right'>></span>`\n\t\tconst options = [\n\t\t\t{ label: `Open`, title: 'Recover a saved session', callback: this.open },\n\t\t\t{ label: `Save`, title: 'Save the current view', callback: this.save },\n\t\t\t{ label: `Share`, title: 'Share the current view', callback: this.getSessionUrl }\n\t\t]\n\n\t\tif (!this.serverCachedSessions) await this.setServerCachedSessions()\n\t\tif (Object.keys(this.savedSessions).length || Object.keys(this.serverCachedSessions).length) {\n\t\t\toptions.push({ label: `Delete`, title: 'Delete a saved session', callback: this.delete })\n\t\t}\n\n\t\tthis.dom.tip\n\t\t\t.clear()\n\t\t\t.d.selectAll('.sja_menuoption sja_sharp_border')\n\t\t\t.data(options)\n\t\t\t.enter()\n\t\t\t.append('div')\n\t\t\t.attr('class', 'sja_menuoption sja_sharp_border')\n\t\t\t.attr('data-testid', d => `sjpp-session-btn-${d.label.toLowerCase().replace(/\\s/g, '-')}`)\n\t\t\t.attr('aria-label', d => d.title)\n\t\t\t.html(d => d.label)\n\t\t\t.on('click', (event, d) => {\n\t\t\t\tthis.dom.tip.clear().d.style('padding', '10px')\n\t\t\t\tevent.stopPropagation()\n\t\t\t\tthis.showBackBtn()\n\t\t\t\td.callback.call(this)\n\t\t\t})\n\n\t\tthis.dom.tip.showunder(this.dom.button.node())\n\t}\n\n\tasync open() {\n\t\tconst radioName = `sjpp-session-open-radio-` + Math.random().toString().slice(-6)\n\t\t// always open in the current tab for now, to avoid the tricky part of the code\n\t\t// that involves parent-child window messaging\n\t\t// TODO: re-enable when the new tab option works reliably\n\t\tthis.dom.tip.d.append('div').style('display', 'none').style('padding', '3px 9px').html(`\n\t\t\t<b>Open in</b>\n\t\t\t<label>\n\t\t\t\t<input type='radio' name='${radioName}' value='new' style='margin-right: 0; vertical-align: bottom'/>\n\t\t\t\t<span>a new tab</span>\n\t\t\t</label>\n\t\t\t<label style='margin-left: 5px'>\n\t\t\t\t<input type='radio' name='${radioName}' value='current' checked=checked style='margin-right: 0; vertical-align: bottom'/>\n\t\t\t\t<span>current tab</span>\n\t\t\t</label>\n\t\t`)\n\n\t\tconst t = await this.listSessions({\n\t\t\ttrClickHandler: async (event, d) => {\n\t\t\t\tconst { loc, id } = d\n\t\t\t\tif (!id) return\n\t\t\t\tif (loc.includes('browser')) {\n\t\t\t\t\tthis.sessionName = id\n\t\t\t\t\tconst state = structuredClone(this.savedSessions[id])\n\t\t\t\t\tawait preprocessState(state, this.app)\n\t\t\t\t\tconst targetWindow = this.dom.tip.d.node().querySelector(`[name=\"${radioName}\"]:checked`).value\n\t\t\t\t\tif (targetWindow == 'current') {\n\t\t\t\t\t\tthis.app.dispatch({ type: 'app_refresh', state })\n\t\t\t\t\t} else if (window.location.origin == this.hostURL) {\n\t\t\t\t\t\twindow.open(`/?mass-session-id=${id}&src=browser`)\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (state.embedder) parentCorsMessage({ state })\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tconst { protocol, host, search, origin, href } = window.location\n\t\t\t\t\t\t\tconst embedder = { protocol, host, search, origin, href }\n\t\t\t\t\t\t\tparentCorsMessage({ state: Object.assign({ embedder }, state) })\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t} else if (loc == 'server') {\n\t\t\t\t\tconst headers = await this.app.vocabApi.mayGetAuthHeaders(this.route)\n\t\t\t\t\tconst body = { id, route: this.route, dslabel: this.dslabel, embedder: window.location.hostname }\n\t\t\t\t\tconst res = await dofetch3(`/massSession?`, { headers, body })\n\t\t\t\t\tif (!res.state) throw res.error || 'unable to get the cached session from the server'\n\t\t\t\t\tawait preprocessState(res.state, this.app)\n\t\t\t\t\tthis.savedSessions[id] = res.state\n\n\t\t\t\t\tconst targetWindow = this.dom.tip.d.node().querySelector(`[name=\"${radioName}\"]:checked`).value\n\t\t\t\t\tif (targetWindow == 'current') {\n\t\t\t\t\t\tthis.app.dispatch({ type: 'app_refresh', state: res.state })\n\t\t\t\t\t} else if (window.location.origin == this.hostURL) {\n\t\t\t\t\t\twindow.open(`/?mass-session-id=${id}&src=cred&dslabel=${this.dslabel}&route=${this.route}`)\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// server-cached sessions should have an state.embedder object, no need to check\n\t\t\t\t\t\tparentCorsMessage(res)\n\t\t\t\t\t}\n\t\t\t\t\tthis.dom.tip.hide()\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tt.headtr.select('th').html('Open from')\n\n\t\t// open session from a local file\n\t\tconst tr1 = t.tbody.insert('tr', 'tr')\n\t\ttr1.append('td').style('text-align', 'center').style('padding', '3px 9px').html('Local file')\n\t\tconst label = tr1.append('td').style('text-align', 'left').append('label')\n\t\tlabel\n\t\t\t.append('span')\n\t\t\t.style('padding', '3px 9px')\n\t\t\t.style('text-decoration', 'underline')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.html('Choose File')\n\t\tlabel\n\t\t\t.append('input')\n\t\t\t.attr('type', 'file')\n\t\t\t.attr('placeholder', 'file name')\n\t\t\t.style('opacity', 0)\n\t\t\t.style('width', '0.1px')\n\t\t\t.style('height', '0.1px')\n\t\t\t.style('position', 'absolute')\n\t\t\t.on('change', async () => {\n\t\t\t\tconst file = event.target.files.item(0)\n\t\t\t\tconst json = await file.text()\n\t\t\t\tlet sessionName = file.name\n\t\t\t\tif (this.savedSessions[sessionName]) {\n\t\t\t\t\tsessionName = prompt(\n\t\t\t\t\t\t`Leave as-is to overwrite a session with the same name, or enter a different session name.`,\n\t\t\t\t\t\tsessionName\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tthis.sessionName = sessionName\n\t\t\t\tconst state = JSON.parse(json)\n\t\t\t\tawait preprocessState(state, this.app)\n\t\t\t\tthis.savedSessions[sessionName] = state\n\t\t\t\tlocalStorage.setItem('savedMassSessions', JSON.stringify(this.savedSessions))\n\t\t\t\tconst targetWindow = this.dom.tip.d.node().querySelector(`[name=\"${radioName}\"]:checked`).value\n\t\t\t\tif (targetWindow == 'current') {\n\t\t\t\t\tthis.app.dispatch({ type: 'app_refresh', state })\n\t\t\t\t} else if (window.location.origin == this.hostURL) {\n\t\t\t\t\twindow.open(`/?mass-session-id=${sessionName}&src=browser`)\n\t\t\t\t} else {\n\t\t\t\t\tif (state.embedder) parentCorsMessage({ state })\n\t\t\t\t\telse {\n\t\t\t\t\t\tconst { protocol, host, search, origin, href } = window.location\n\t\t\t\t\t\tconst embedder = { protocol, host, search, origin, href }\n\t\t\t\t\t\tparentCorsMessage({ state: Object.assign({ embedder }, state) })\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.dom.tip.hide()\n\t\t\t})\n\t}\n\n\tasync listSessions(opts = {}) {\n\t\tconst table = this.dom.tip.d.append('table').attr('class', 'sjpp-controls-table')\n\n\t\tconst headtr = table.append('thead').append('tr')\n\t\theadtr\n\t\t\t.selectAll('th')\n\t\t\t.data(['Cache Location', 'Session ID'])\n\t\t\t.enter()\n\t\t\t.append('th')\n\t\t\t.style('text-align', (d, i) => (i === 0 ? 'center' : 'left'))\n\t\t\t.style('padding', '3px 9px')\n\t\t\t.html(d => d)\n\n\t\tconst sessionIds = Object.keys(this.savedSessions).map(id => ({ loc: 'browser', id }))\n\t\tif (!this.serverCachedSessions) await this.setServerCachedSessions()\n\t\tsessionIds.push(...this.serverCachedSessions.map(id => ({ loc: 'server', id })))\n\n\t\tconst tbody = table.append('tbody')\n\t\tconst trs = tbody\n\t\t\t.selectAll('tr')\n\t\t\t.data(sessionIds)\n\t\t\t.enter()\n\t\t\t.append('tr')\n\t\t\t.on('click', opts.trClickHandler || null)\n\n\t\ttrs\n\t\t\t.selectAll('td')\n\t\t\t.data(d => [d, d])\n\t\t\t.enter()\n\t\t\t.append('td')\n\t\t\t.style('text-align', (d, i) => (i === 0 ? 'center' : 'left'))\n\t\t\t.style('padding', '3px 9px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.html((d, i) => (i === 0 ? d.loc : d.id))\n\n\t\tif (!this.serverCachedSessions.length && this.requiredAuth && !this.app.vocabApi.hasVerifiedToken()) {\n\t\t\tconst tbody2 = table\n\t\t\t\t.append('tbody')\n\t\t\t\t.append('tr')\n\t\t\t\t.selectAll('td')\n\t\t\t\t.data(['server', 'requires sign-in'])\n\t\t\t\t.enter()\n\t\t\t\t.append('td')\n\t\t\t\t.style('text-align', (d, i) => (i === 0 ? 'center' : 'left'))\n\t\t\t\t.style('padding', '3px 9px')\n\t\t\t\t.html(d => d)\n\t\t}\n\t\treturn { table, headtr, tbody, trs }\n\t}\n\n\tasync setServerCachedSessions() {\n\t\tconst state = this.app.getState()\n\t\tthis.requiredAuth = state.termdbConfig?.requiredAuth?.find(a => a.route == this.route && a.type == 'jwt')\n\t\tif (!this.requiredAuth) {\n\t\t\tthis.serverCachedSessions = []\n\t\t\treturn\n\t\t}\n\t\tconst headers = this.app.vocabApi.mayGetAuthHeaders(this.route)\n\t\tconst body = { route: this.route, dslabel: this.dslabel, embedder: window.location.hostname }\n\t\tconst res = await dofetch3('/sessionIds', { headers, body })\n\t\tthis.serverCachedSessions = res.sessionIds || []\n\t}\n\n\tasync save(d) {\n\t\tconst div = this.dom.tip.d\n\t\tconst inputDiv = div.append('div')\n\t\tinputDiv.append('span').html('Save as')\n\t\tconst sessionNames = Object.keys(this.savedSessions)\n\t\tif (!this.serverCachedSessions) await this.setServerCachedSessions()\n\t\tsessionNames.push(...this.serverCachedSessions.filter(d => !sessionNames.includes(d)))\n\t\tconst placeholder = this.sessionName || 'unnamed-session'\n\t\tconst input = inputDiv\n\t\t\t.append('input')\n\t\t\t.attr('type', 'text')\n\t\t\t.attr('placeholder', placeholder)\n\t\t\t.style('width', '220px')\n\t\t\t.on('input', () => {\n\t\t\t\tsearchResultDiv.selectAll('*').remove()\n\t\t\t\tconst value = input.property('value')\n\t\t\t\tconst exactMatch = sessionNames.filter(s => s === value)\n\t\t\t\tconst startsWith = sessionNames.filter(s => s.startsWith(value))\n\t\t\t\tconst includes = sessionNames.filter(s => s.includes(value) && s !== value && !startsWith.includes(s))\n\t\t\t\tsearchResultDiv\n\t\t\t\t\t.selectAll('div')\n\t\t\t\t\t.data([...exactMatch, ...startsWith, ...includes])\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t\t.attr('data-testid', `sjpp-save-session-option`)\n\t\t\t\t\t.html(d => d)\n\t\t\t\t\t.on('click', (event, d) => {\n\t\t\t\t\t\tinput.property('value', d)\n\t\t\t\t\t\tsearchResultDiv.selectAll('*').remove()\n\t\t\t\t\t})\n\t\t\t})\n\n\t\tconst searchResultDiv = div.append('div')\n\t\tconst submitDiv = div.append('div')\n\t\tsubmitDiv.append('span').html('Save to ')\n\t\tsubmitDiv\n\t\t\t.append('button')\n\t\t\t.style('min-width', '80px')\n\t\t\t.html('Browser')\n\t\t\t.attr(\n\t\t\t\t'title',\n\t\t\t\t`Save the session in your current browser's cache. The session can be easily recovered, but not shared among your other devices`\n\t\t\t)\n\t\t\t.on('click', () => {\n\t\t\t\tthis.sessionName = input.property('value') || placeholder\n\t\t\t\tthis.savedSessions[this.sessionName] = this.app.getState()\n\t\t\t\tlocalStorage.setItem('savedMassSessions', JSON.stringify(this.savedSessions))\n\t\t\t\tthis.confirmAction(`Cached '<b>${this.sessionName}</b>' in browser`)\n\t\t\t})\n\n\t\tsubmitDiv\n\t\t\t.append('button')\n\t\t\t.style('min-width', '80px')\n\t\t\t.html('File')\n\t\t\t.attr(\n\t\t\t\t'title',\n\t\t\t\t`Save the session into a local file. The session can be easily recoved using the 'Open from local file' option.`\n\t\t\t)\n\t\t\t.on('click', () => {\n\t\t\t\tconst name = input.property('value') || placeholder\n\t\t\t\tthis.savedSessions[name] = this.app.getState()\n\t\t\t\tthis.download(name)\n\t\t\t\tthis.confirmAction(`Downloaded '<b>${name}</b>'`)\n\t\t\t})\n\n\t\t// assume that a jwt-type credential will include the user email in the jwt payload,\n\t\t// which could be trusted for saving sessions under cachedir/termdbSessions/[embedderHostName]/[email]\n\t\tif (this.requiredAuth) {\n\t\t\tconst requiresSignIn = this.app.vocabApi.hasVerifiedToken() ? '' : 'Requires sign-in. '\n\t\t\tsubmitDiv\n\t\t\t\t.append('button')\n\t\t\t\t.style('min-width', '80px')\n\t\t\t\t.html('Server')\n\t\t\t\t.attr(\n\t\t\t\t\t'title',\n\t\t\t\t\t`${requiresSignIn}Save the session into a remote server. The session can be easily shared across your different devices and recovered using the 'Open from server' option.`\n\t\t\t\t)\n\t\t\t\t.property('disabled', !this.app.vocabApi.hasVerifiedToken())\n\t\t\t\t.on('click', async () => {\n\t\t\t\t\tif (!this.app.vocabApi.hasVerifiedToken()) {\n\t\t\t\t\t\talert('Requires sign-in')\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t\tconst name = input.property('value') || placeholder\n\t\t\t\t\tthis.savedSessions[name] = this.app.getState()\n\t\t\t\t\tconst res = await this.getSessionUrl(name)\n\t\t\t\t\tif (res.id != name) throw `error saving ${name}`\n\t\t\t\t\t// this.download(name)\n\t\t\t\t\tthis.confirmAction(`Saved '<b>${name}</b>' on the server`)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tdownload(name = '') {\n\t\tconst sessionName = name || this.sessionName\n\t\tconst ext = sessionName?.endsWith('.txt') ? '' : '.txt'\n\t\tconst filename = `${sessionName}${ext}`\n\t\tto_textfile(filename, JSON.stringify(this.savedSessions[sessionName]))\n\t}\n\n\tasync getSessionUrl(filename = '') {\n\t\tconst headers = await this.app.vocabApi.mayGetAuthHeaders('termdb')\n\t\tconst state = structuredClone(this.app.getState())\n\t\tconst { protocol, host, search, origin, href } = window.location\n\t\tstate.embedder = { protocol, host, search, origin, href }\n\t\tif (filename) {\n\t\t\t// a non-empty filename value implies saving by email and having auth session,\n\t\t\t// since it's easy for different users to use the same non-random filename\n\t\t\tstate.__sessionFor__ = {\n\t\t\t\troute: this.route,\n\t\t\t\tfilename,\n\t\t\t\tdslabel: this.dslabel,\n\t\t\t\tembedder: window.location.hostname\n\t\t\t}\n\t\t}\n\t\tconst res = await dofetch3('/massSession', {\n\t\t\theaders,\n\t\t\tmethod: 'POST',\n\t\t\tbody: JSON.stringify(state)\n\t\t})\n\n\t\tif (filename) {\n\t\t\treturn res\n\t\t} else {\n\t\t\tconst url = `${this.hostURL}/?mass-session-id=${res.id}&noheader=1`\n\t\t\tthis.dom.tip.showunder(this.dom.button.node())\n\t\t\tconst linkDiv = this.dom.tip.d.append('div').style('margin', '10px')\n\t\t\tlinkDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'flex')\n\t\t\t\t.style('margin-bottom', '12px')\n\t\t\t\t.html(`Open or copy the session link.`)\n\n\t\t\tconst a = linkDiv.append('a').style('display', 'none').attr('href', url).attr('target', '_blank').html(res.id)\n\n\t\t\t// open button\n\t\t\tlinkDiv\n\t\t\t\t.append('button')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.text('Open link')\n\t\t\t\t.on('click', () => {\n\t\t\t\t\ta.node().click()\n\t\t\t\t})\n\n\t\t\t// copy button\n\t\t\tlinkDiv\n\t\t\t\t.append('button')\n\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t.text('Copy link')\n\t\t\t\t.on('click', async event => {\n\t\t\t\t\tawait navigator.clipboard.writeText(url)\n\t\t\t\t\tthis.dom.copytip.clear().showunder(event.target)\n\t\t\t\t\tthis.dom.copytip.d.append('div').html('✓')\n\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\tthis.dom.copytip.hide()\n\t\t\t\t\t}, 1000)\n\t\t\t\t})\n\n\t\t\tif (this.hostURL != window.location.origin) {\n\t\t\t\t// Avoid the multi-window/tab sequence to recover the session:\n\t\t\t\t// intercept the click on the URL link, so that the embedder URL is opened\n\t\t\t\t// instead of the hostURL with mass session id, and this window will post\n\t\t\t\t// a message to the child window with the link data instead\n\t\t\t\t//\n\t\t\t\t// NOTE: the multi-window/tab sequence is only necessary when the URL link\n\t\t\t\t// was not opened by the embedder window\n\t\t\t\t//\n\t\t\t\ta.on('click', event => {\n\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\tparentCorsMessage({ state }, 'noredirect')\n\t\t\t\t\treturn false\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tlinkDiv.append('div').html(`\n\t\t\t\t\t<br>\n\t\t\t\t\t<div style=\"max-width: 400px; font-size: 1em; opacity:.6\">\n\t\t\t\t\t<span>NOTES</span>\n\t\t\t\t\t<ul>\n\t\t\t\t\t<li>A recovered session may hide data or views to users that are not authorized to access the saved datasets or features.</li>\n\t\t\t\t\t<li>This session will be saved for ${this.opts.massSessionDuration} days.</li>\n\t\t\t\t\t</ul>\n\t\t\t\t\t</div>`)\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.dom.button.property('disabled', false)\n\t\t\t}, 1000)\n\t\t}\n\t}\n\n\tasync delete() {\n\t\tconst t = await this.listSessions({\n\t\t\ttrClickHandler: function (event) {\n\t\t\t\tconst input = this.lastChild.querySelector('input')\n\t\t\t\tconst checked = event.target == input ? input.checked : !input.checked\n\t\t\t\tselect(this).style('text-decoration', checked ? 'line-through' : '')\n\t\t\t\tif (event.target != input) input.checked = checked\n\t\t\t\tconst checkedRows = t.table.node().querySelectorAll('input:checked')\n\t\t\t\tsubmitBtn.property('disabled', checkedRows.length ? false : true)\n\t\t\t}\n\t\t})\n\n\t\t// add a 3rd column for the checkboxes\n\t\tt.headtr.append('th').html('Delete')\n\t\tt.trs.each(function (d) {\n\t\t\tselect(this)\n\t\t\t\t.append('td')\n\t\t\t\t.style('text-align', 'center')\n\t\t\t\t.append('input')\n\t\t\t\t.attr('type', 'checkbox')\n\t\t\t\t.attr('value', d.id)\n\t\t})\n\n\t\tconst submitBtn = this.dom.tip.d\n\t\t\t.append('div')\n\t\t\t.style('text-align', 'center')\n\t\t\t.append('button')\n\t\t\t.html('Delete selected sessions')\n\t\t\t.property('disabled', true)\n\t\t\t.on('click', async () => {\n\t\t\t\tconst inputs = t.table.node().querySelectorAll('input')\n\t\t\t\tconst sessionIdsDeletedFromServer = []\n\t\t\t\tfor (const input of inputs) {\n\t\t\t\t\tif (select(input).property('checked')) {\n\t\t\t\t\t\tconst d = input.parentNode.parentNode.__data__\n\t\t\t\t\t\tif (d.loc == 'browser') {\n\t\t\t\t\t\t\tdelete this.savedSessions[input.value] //checkedIds.push(input.value)\n\t\t\t\t\t\t} else if (d.loc == 'server') {\n\t\t\t\t\t\t\tdelete this.serverCachedSessions[input.value]\n\t\t\t\t\t\t\tsessionIdsDeletedFromServer.push(input.value)\n\t\t\t\t\t\t} else throw `unknown cache location=${d.loc}`\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlocalStorage.setItem('savedMassSessions', JSON.stringify(this.savedSessions))\n\t\t\t\ttry {\n\t\t\t\t\tconst headers = await this.app.vocabApi.mayGetAuthHeaders('termdb')\n\t\t\t\t\tconst body = {\n\t\t\t\t\t\tids: sessionIdsDeletedFromServer,\n\t\t\t\t\t\troute: this.route,\n\t\t\t\t\t\tdslabel: this.dslabel,\n\t\t\t\t\t\tembedder: window.location.hostname\n\t\t\t\t\t}\n\t\t\t\t\tconst res = dofetch3(`/massSession?`, { method: 'DELETE', headers, body })\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t\tthis.dom.tip.hide()\n\t\t\t})\n\t}\n\n\tshowBackBtn() {\n\t\tthis.dom.tip.d\n\t\t\t.append('div')\n\t\t\t.attr('class', 'sja_clbtext2')\n\t\t\t.style('margin-bottom', '10px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.html(`< Session Menu`)\n\t\t\t.on('click', () => this.showMenu())\n\t}\n\n\tconfirmAction(html) {\n\t\tthis.dom.tip.clear().d.append('div').html(html).transition().delay(3000).duration(1000).style('opacity', 0)\n\n\t\tsetTimeout(() => {\n\t\t\tthis.dom.tip.hide()\n\t\t}, 3500)\n\t}\n}\n\n// may need to edit state based on updated expectations,\n// such as new or deprecated plot settings keys/values\nasync function preprocessState(state, app) {\n\tdelete state.termdbConfig\n\tif (state.plots) {\n\t\tconst promises = []\n\t\tfor (const plot of state.plots) {\n\t\t\tpromises.push(\n\t\t\t\t(async () => {\n\t\t\t\t\tconst _ = await importPlot(plot.chartType)\n\t\t\t\t\treturn await _.getPlotConfig(plot, app)\n\t\t\t\t})()\n\t\t\t)\n\t\t}\n\t\ttry {\n\t\t\tawait Promise.all(promises)\n\t\t} catch (e) {\n\t\t\tconsole.log(e)\n\t\t\tapp.printError(e)\n\t\t}\n\t}\n}\n\nexport const sessionBtnInit = getCompInit(MassSessionBtn)\n", "import { getId } from './nav'\nimport { type AppApi, getCompInit } from '#rx'\nimport type { Elem, Div, H2 } from '../types/d3'\nimport type { SelectCohortEntry } from '#types'\nimport { renderTable, type TableRow } from '#dom'\nimport { select } from 'd3-selection'\n\n/* \n\"about\" tab will display following contents inside this.subheader:\n- if ds uses subcohorts:\n\t- <h2> for selectCohort.title\n\t- description\n\t- radio button options\n- custom html via massNav.about.html (todo images and cartoon)\n- active items to launch demo plots\n- server info\n*/\n\nconst cohortTableActiveColor = 'yellow'\n\n// this type is fully defined in MassNav def in dataset.ts but not in a form that can extract \"about\" config to share. thus need to repeat here to avoid tsc err\ntype AboutObj = {\n\thtml: string\n\tactiveItems?: { items: any }\n}\n\ntype MassAboutOpts = {\n\t/** Optional. Set in the dataset file under .massNav.tabs.about. Otherwise null. */\n\taboutOverrides: AboutObj | null\n\t/** Required. Provided from nav component */\n\tapp: AppApi\n\t/** Required. Provided from nav component */\n\tinstanceNum: number\n\t/** Optional. Set in the dataset file under .termdb.selectCohort. Otherwise null. */\n\tselectCohort: SelectCohortEntry | null\n\t/** Required. .dom.subheader.about in nav component, assigned to this.subheader */\n\tsubheader: Elem\n}\n\ntype MassAboutDom = {\n\t/** Fine print dom shown between the cohort specific content and the server info */\n\tcohortAsterisk?: Div\n\t/** Displays description */\n\tcohortDescription: Div\n\t/** Div for cohort radio buttons */\n\tcohortOpts?: Div\n\t/** Text above radio cohort options */\n\tcohortPrompt?: Div\n\t/** */\n\tcohortTable?: Div\n\t/** Title above the cohort introduction/content */\n\tcohortTitle?: H2\n}\n//TODO: Make a validate opts fn\nexport class MassAbout {\n\tstatic type = 'about'\n\n\taboutOverrides: AboutObj | null\n\tapp: AppApi\n\tdom: MassAboutDom\n\tinstanceNum: number\n\tselectCohort: SelectCohortEntry | null\n\tsubheader: Elem // where all contents are rendered\n\ttype: string\n\topts: MassAboutOpts\n\tstate: any\n\n\tconstructor(opts: MassAboutOpts) {\n\t\tthis.opts = opts\n\t\tthis.type = MassAbout.type\n\t\tthis.app = opts.app\n\t\tthis.subheader = opts.subheader\n\t\tthis.instanceNum = opts.instanceNum\n\t\tthis.aboutOverrides = opts.aboutOverrides\n\t\tthis.selectCohort = opts.selectCohort\n\t\tthis.dom = {\n\t\t\tcohortDescription: this.subheader\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-about-cohort-desc')\n\t\t\t\t.style('margin-left', '10px')\n\t\t}\n\n\t\tif (opts?.selectCohort?.title) {\n\t\t\tthis.dom.cohortTitle = opts.subheader\n\t\t\t\t.append('h2')\n\t\t\t\t.attr('data-testid', 'sjpp-about-cohort-title')\n\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t.text(opts.selectCohort.title)\n\t\t}\n\n\t\tif (opts.selectCohort?.prompt) {\n\t\t\tthis.dom.cohortPrompt = this.subheader\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-about-cohort-prompt')\n\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t.style('padding-top', '30px')\n\t\t\t\t.style('padding-bottom', '10px')\n\t\t\t\t.style('font-weight', 'bold')\n\t\t\t\t.style('font-size', '1.2em')\n\t\t\t\t.text(opts.selectCohort.prompt)\n\t\t}\n\n\t\tif (opts.selectCohort) {\n\t\t\tthis.dom.cohortOpts = this.subheader.append('div').style('margin-bottom', '30px').style('margin-left', '10px')\n\t\t}\n\t}\n\n\t/* render all contents into this.subheader\n\tdo it through init() means that contents are rendered just once on launching mass ui and won't be rerendered or updated\n\tsince there's no reason to update about tab contents while user is interacting with mass ui\n\t*/\n\tinit(appState) {\n\t\t/** If selectCohort available, options in the about html will not show */\n\t\tthis.initCohort(appState)\n\t\tthis.initCustomHtml()\n\t\tthis.initActiveItems()\n\t\t//Always show the release version and server launch date at the bottom\n\t\tthis.showServerInfo()\n\t}\n\n\tasync main() {\n\t\t// do not render unless the cohort tab is active\n\t\tif (this.state.nav.activeTab !== 0) return\n\t\tawait this.renderCohortsTable()\n\t\tif (this.opts.selectCohort) {\n\t\t\tif (this.opts.selectCohort.description) {\n\t\t\t\tthis.dom.cohortDescription.html(this.opts.selectCohort.description)\n\t\t\t} else if (this.opts.selectCohort.descriptionByCohort) {\n\t\t\t\tthis.dom.cohortDescription.html(\n\t\t\t\t\tthis.opts.selectCohort.descriptionByCohort[\n\t\t\t\t\t\tthis.state.termdbConfig.selectCohort.values[this.state.activeCohort].keys.join(',')\n\t\t\t\t\t]\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\tinitCohort = appState => {\n\t\tif (this.selectCohort == null) return\n\t\t//Move to validate opts fn\n\t\tif (!this.selectCohort.values) return\n\n\t\tconst instanceNum = this.instanceNum\n\t\tconst activeCohort = appState.activeCohort\n\t\tconst app = this.app\n\n\t\t//TODO: replace with make_radios\n\t\tthis.dom\n\t\t\t.cohortOpts!.append('table')\n\t\t\t.attr('data-testid', 'sjpp-about-cohort-options-table')\n\t\t\t.selectAll('tr')\n\t\t\t.data(this.selectCohort.values)\n\t\t\t.enter()\n\t\t\t.append('tr')\n\t\t\t.each(function (d, i, nodes) {\n\t\t\t\tconst tr = select(nodes[i])\n\t\t\t\tconst td0 = tr.append('td')\n\t\t\t\tconst radioName = 'sja-termdb-cohort-' + instanceNum\n\t\t\t\tconst radioId = radioName + '-' + i\n\t\t\t\ttd0\n\t\t\t\t\t.append('input')\n\t\t\t\t\t.style('scale', '1.2')\n\t\t\t\t\t.attr('type', 'radio')\n\t\t\t\t\t.attr('name', radioName)\n\t\t\t\t\t.attr('id', radioId)\n\t\t\t\t\t.attr('value', i)\n\t\t\t\t\t.property('checked', i === activeCohort)\n\t\t\t\t\t.style('margin-right', '5px')\n\t\t\t\t\t.style('margin-left', '0px')\n\t\t\t\t\t.on('click', async event => {\n\t\t\t\t\t\tconst state = app.getState()\n\t\t\t\t\t\tconst clearOnChange = state.termdbConfig.selectCohort.clearOnChange\n\t\t\t\t\t\tif (clearOnChange) {\n\t\t\t\t\t\t\tconst subactions: any[] = []\n\t\t\t\t\t\t\tconst toBeCleared: string[] = []\n\t\t\t\t\t\t\tconst plots = state.plots\n\t\t\t\t\t\t\tconst filter = state.termfilter.filter.lst.find(f => f.tag == 'filterUiRoot')?.lst\n\t\t\t\t\t\t\tconst groups = state.groups\n\n\t\t\t\t\t\t\tif (clearOnChange.plots && plots?.length) toBeCleared.push('plots')\n\t\t\t\t\t\t\tfor (const plot of plots) {\n\t\t\t\t\t\t\t\tsubactions.push({\n\t\t\t\t\t\t\t\t\ttype: 'plot_delete',\n\t\t\t\t\t\t\t\t\tid: plot.id\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (clearOnChange.filter && filter?.length) toBeCleared.push('filters')\n\t\t\t\t\t\t\tsubactions.push({\n\t\t\t\t\t\t\t\ttype: 'filter_replace',\n\t\t\t\t\t\t\t\tfilter: {\n\t\t\t\t\t\t\t\t\ttype: 'tvslst',\n\t\t\t\t\t\t\t\t\tin: true,\n\t\t\t\t\t\t\t\t\tjoin: '',\n\t\t\t\t\t\t\t\t\ttag: 'filterUiRoot',\n\t\t\t\t\t\t\t\t\tlst: []\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif (clearOnChange.groups && groups?.length) {\n\t\t\t\t\t\t\t\ttoBeCleared.push('groups')\n\t\t\t\t\t\t\t\tfor (const group of groups) {\n\t\t\t\t\t\t\t\t\tsubactions.push({\n\t\t\t\t\t\t\t\t\t\ttype: 'delete_group',\n\t\t\t\t\t\t\t\t\t\tname: group.name\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor (const term of state.customTerms) {\n\t\t\t\t\t\t\t\t\tsubactions.push({\n\t\t\t\t\t\t\t\t\t\ttype: 'delete_customTerm',\n\t\t\t\t\t\t\t\t\t\tname: term.name\n\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsubactions.push({ type: 'cohort_set', activeCohort: i })\n\t\t\t\t\t\t\tif (toBeCleared.length) {\n\t\t\t\t\t\t\t\tconst confirm = window.confirm(\n\t\t\t\t\t\t\t\t\t`Changing the cohort will clear all ${joinByComma(\n\t\t\t\t\t\t\t\t\t\ttoBeCleared\n\t\t\t\t\t\t\t\t\t)}. To proceed, click \"OK\". To save the session, click \"Cancel\" and then click the \"Session\" button at the top of the page.`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\tif (!confirm) {\n\t\t\t\t\t\t\t\t\tevent.preventDefault()\n\t\t\t\t\t\t\t\t\treturn\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tapp.dispatch({\n\t\t\t\t\t\t\t\ttype: 'app_refresh',\n\t\t\t\t\t\t\t\tsubactions\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t} else app.dispatch({ type: 'cohort_set', activeCohort: i })\n\t\t\t\t\t})\n\n\t\t\t\ttd0\n\t\t\t\t\t.append('label')\n\t\t\t\t\t.style('font-size', '1.4em')\n\t\t\t\t\t.attr('for', radioId)\n\t\t\t\t\t.attr('colspan', 2)\n\t\t\t\t\t.style('cursor', 'pointer')\n\t\t\t\t\t.html((d: any) => d.label)\n\n\t\t\t\ttr.selectAll('td')\n\t\t\t\t\t.style('max-width', '600px')\n\t\t\t\t\t.style('padding-bottom', '10px')\n\t\t\t\t\t.style('padding-right', '20px')\n\t\t\t\t\t.style('vertical-align', 'top')\n\t\t\t})\n\n\t\tthis.dom.cohortTable = this.subheader\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-about-cohort-table')\n\t\t\t.style('margin-left', '12px')\n\n\t\tif (this.selectCohort.asterisk) {\n\t\t\tthis.dom.cohortAsterisk = this.subheader\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-about-cohort-asterisk')\n\t\t\t\t.style('margin', '10px')\n\t\t\t\t.style('font-size', '.8em')\n\t\t\t\t.text(this.selectCohort.asterisk)\n\t\t}\n\t}\n\n\trenderCohortsTable = async () => {\n\t\tif (!this.dom.cohortTable) return\n\t\tthis.dom.cohortTable.selectAll('*').remove()\n\t\tconst columns = [{ label: 'Feature' }]\n\t\tconst rows: TableRow[] = []\n\t\tconst result = await this.app.vocabApi.getCohortsData()\n\t\tif ('error' in result) throw result.error\n\t\tif (this.selectCohort?.values) {\n\t\t\t// selectCohort.values[] contains ordered set of cohorts\n\t\t\t// ensure cohorts in cohorts table follow this order\n\t\t\tconst values = this.selectCohort.values\n\t\t\tresult.cohorts.sort((a, b) => {\n\t\t\t\tconst aIndex = values.findIndex(v => v.keys.toString() == a.cohort)\n\t\t\t\tconst bIndex = values.findIndex(v => v.keys.toString() == b.cohort)\n\t\t\t\tif (aIndex < bIndex) return -1\n\t\t\t\tif (aIndex > bIndex) return 1\n\t\t\t\treturn 0\n\t\t\t})\n\t\t}\n\t\tif (!result.cfeatures.length) return\n\t\tfor (const feature of result.features) rows.push([{ value: feature.name }])\n\t\tfor (const cohort of result.cohorts) {\n\t\t\tif (cohort.subcohorts?.length) continue\n\t\t\tcolumns.push({ label: cohort.name })\n\t\t\tfor (const [i, feature] of result.features.entries()) {\n\t\t\t\tconst cf = result.cfeatures.find(cf => cf.idfeature === feature.idfeature && cf.cohort === cohort.cohort)\n\t\t\t\tif (cf) rows[i].push({ value: cf.value })\n\t\t\t}\n\t\t}\n\n\t\trenderTable({\n\t\t\trows,\n\t\t\tcolumns,\n\t\t\tdiv: this.dom.cohortTable,\n\t\t\tshowLines: false,\n\t\t\tmaxHeight: '60vh',\n\t\t\theader: { style: { 'font-size': '1.2em', 'font-weight': 'bold' } }\n\t\t})\n\n\t\tthis.dom.cohortTable.select('table').style('border-collapse', 'collapse')\n\t\tthis.dom.cohortTable.selectAll(`tbody > tr > td`).style('background-color', 'transparent').style('padding', '6px')\n\t\tconst state = this.app.getState()\n\t\tconst selectCohort = state.termdbConfig.selectCohort\n\t\tconst activeCohort = state.activeCohort\n\t\tconst keys = selectCohort.values[activeCohort].keys\n\t\tlet selector = `tbody > tr > td:nth-child(${activeCohort + 2})`\n\t\tconst combined = keys.length > 1\n\t\tif (combined) {\n\t\t\tselector = ''\n\t\t\tfor (const key of keys) {\n\t\t\t\tconst i = result.cohorts.map(c => c.cohort).indexOf(key)\n\t\t\t\tif (selector !== '') selector += ','\n\t\t\t\tselector += `tbody > tr > td:nth-child(${i + 2})`\n\t\t\t}\n\t\t}\n\t\tconst activeColumns = this.dom.cohortTable.selectAll(selector)\n\t\tconst color = state.termdbConfig.massNav?.activeColor || cohortTableActiveColor\n\t\tactiveColumns.style('background-color', color)\n\t}\n\n\tinitCustomHtml = () => {\n\t\tif (this.selectCohort != null) return\n\t\tif (!this.aboutOverrides?.html) return\n\t\tthis.subheader\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-custom-about-content')\n\t\t\t.style('padding', '10px')\n\t\t\t.html(this.aboutOverrides.html)\n\t}\n\n\tinitActiveItems = () => {\n\t\tif (!this.aboutOverrides?.activeItems) return\n\n\t\t// todo: customize general holder by activeItems.holderStyle{}\n\t\tconst div = this.subheader\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-custom-about-activeItems')\n\t\t\t.style('padding', '0px 0px 20px 20px')\n\n\t\tfor (const item of this.aboutOverrides.activeItems.items) {\n\t\t\t// todo: by item.type, item.divStyle{}\n\t\t\tdiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('margin', '5px')\n\t\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t\t.attr('data-testid', 'sjpp-custom-active-item-btn')\n\t\t\t\t.html(item.title)\n\t\t\t\t.on('click', async () => {\n\t\t\t\t\t/* First, set the active tab to toggle to the plots tab and wait for the tab to be set,\n\t\t\t\t\totherwise the plotDiv is hidden when rendering and\n\t\t\t\t\tmay cause issues. A known issue is that getMaxLabelWidth getBBox on a hidden div returns width=0\n\t\t\t\t\tthis affects the legend rendering in plots like the scatter resulting in overlapping texts\n\t\t\t\t\t*/\n\t\t\t\t\tawait this.app.dispatch({\n\t\t\t\t\t\ttype: 'tab_set',\n\t\t\t\t\t\tactiveTab: 1\n\t\t\t\t\t})\n\t\t\t\t\t// after switching tab so plot div is shown, dispatch to create the plot\n\t\t\t\t\tthis.app.dispatch({\n\t\t\t\t\t\ttype: 'plot_create',\n\t\t\t\t\t\tid: getId(),\n\t\t\t\t\t\tconfig: structuredClone(item.plot)\n\t\t\t\t\t})\n\t\t\t\t})\n\t\t}\n\t}\n\n\tshowServerInfo = () => {\n\t\tconst state = this.app.getState()\n\t\tconst about = state.termdbConfig.massNav?.tabs?.about\n\t\tif (!about && !this.app.opts.pkgver && !this.app.opts.launchDate) return\n\t\tconst dataRelease = about?.dataRelease\n\t\tconst additionalInfo = about?.additionalInfo\n\t\tconst div = this.subheader\n\t\t\t.append('div')\n\t\t\t.attr('data-testid', 'sjpp-about-server-info')\n\t\t\t.style('margin', '10px')\n\t\t\t.style('font-size', '.8em')\n\n\t\tconst htmlArr: string[] = []\n\t\tif (dataRelease) {\n\t\t\thtmlArr.push(`Data Release: <a href=${dataRelease.link} target=_blank>${dataRelease.version}</a>`)\n\t\t}\n\t\tif (this.app.opts.pkgver) {\n\t\t\thtmlArr.push(\n\t\t\t\t`Software Release: <a href=https://github.com/stjude/proteinpaint/pkgs/container/ppfull target=_blank>${this.app.opts.pkgver}</a>`\n\t\t\t)\n\t\t}\n\t\tif (this.app.opts.launchDate) {\n\t\t\thtmlArr.push(`Server Launched: ${this.app.opts.launchDate}`)\n\t\t}\n\t\tif (additionalInfo) {\n\t\t\thtmlArr.push(additionalInfo)\n\t\t}\n\t\tdiv.append('div').html(htmlArr.join('; '))\n\t}\n}\n\nexport const aboutInit = getCompInit(MassAbout)\n\nfunction joinByComma(arr) {\n\tif (!arr.length) return ''\n\telse if (arr.length == 1) return arr[0]\n\telse if (arr.length == 2) return arr.join(' and ')\n\telse return `${arr.slice(0, -1).join(', ')}, and ${arr.slice(-1)}`\n}\n", "import { getCompInit, multiInit } from '#rx'\nimport { recoverInit } from '../rx/src/recover'\nimport { searchInit } from './search'\nimport { chartsInit } from './charts'\nimport { groupsInit } from './groups'\nimport { sessionBtnInit } from './sessionBtn'\nimport { aboutInit } from './about.ts'\nimport { dofetch3 } from '#common/dofetch'\nimport { Menu, icons as icon_functions } from '#dom'\nimport { getFilterItemByTag, filterRxCompInit } from '#filter/filter'\n\n/*\ntodo: steps to add a new tab\n*/\n\nconst activeTabBgColor = '#ececec', // default bg color of active tab; inactive tab is transparent\n\tactiveTabBgColorHover = '#e0e0e0',\n\tactiveTabTextColor = 'black',\n\tinactiveTabBgColorHover = '#fcfced',\n\tinactiveTabTextColor = 'gray'\n\n// to be used for assigning unique\n// radio button names by object instance\n// otherwise termdp app popups\nlet instanceNum = 0\n\n// to distinguish from IDs assigned by other code or users\nconst idPrefix = '_MASS_AUTOID_' + Math.random().toString().slice(-6)\nlet id = (+new Date()).toString().slice(-8)\n\nconst headtip = new Menu({ padding: '0px', offsetX: 0, offsetY: 0 })\nheadtip.d.style('z-index', 5555)\n// headtip must get a crazy high z-index so it can stay on top of all, no matter if server config has base_zindex or not\n\n// data elements for navigation header tabs\nconst aboutTab = { top: 'ABOUT', mid: '', btm: '', subheader: 'about' }\nconst chartTab = { top: 'CHARTS', mid: 'NONE', btm: '', subheader: 'charts' }\nconst groupsTab = { top: 'GROUPS', mid: 'NONE', btm: '', subheader: 'groups' }\nconst filterTab = { top: 'FILTER', mid: 'NONE', btm: '', subheader: 'filter' }\nconst cartTab = { top: 'CART', mid: 'NONE', btm: '', subheader: 'cart' }\n\nexport function getId() {\n\treturn idPrefix + '_' + id++\n}\n\nclass TdbNav {\n\tstatic type = 'nav'\n\n\tconstructor(opts) {\n\t\tthis.type = TdbNav.type\n\t\tthis.instanceNum = instanceNum++\n\t\tthis.tabs = [] // array of tab objects corresponding to what's shown on header, based on ds customization. hidden tabs are not in this array. filled in initUI()\n\t\tthis.activeTab = 0 // array index for .tabs[]; -1 for no active tabs and all closed\n\t\tthis.activeCohort = 0 // -1 = unselected, 0,1,2... = selected\n\t\tthis.samplecounts = {} // tracks sample count by .activeCohort value and stringified filter json\n\t\tthis.searching = false\n\t\tthis.massSessionDuration = opts.massSessionDuration\n\t\tthis.sessionDaysLeft = opts.app.opts.sessionDaysLeft || null\n\t\tthis.sessionId = opts.app.opts.sessionId || null\n\t\tthis.pkgver = opts.pkgver || null //Release version\n\t\tsetInteractivity(this)\n\t\tsetRenderers(this)\n\t}\n\n\tasync init(appState) {\n\t\ttry {\n\t\t\tthis.cohortFilter = getFilterItemByTag(appState.termfilter.filter, 'cohortFilter')\n\t\t\tthis.initUI(appState)\n\t\t\tif (appState?.termdbConfig?.selectCohort) {\n\t\t\t\tthis.dom.tds.filter(d => d.colNum === 0).style('display', '')\n\t\t\t\tthis.cohortNames = appState.termdbConfig.selectCohort.values.map(d => d.keys.slice().sort().join(','))\n\t\t\t}\n\n\t\t\tthis.components = await multiInit({\n\t\t\t\tsearch: searchInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tholder: this.dom.searchDiv,\n\t\t\t\t\tusecase: { target: 'summary', detail: 'term' },\n\t\t\t\t\ttargetType: 'Dictionary Variables'\n\t\t\t\t}),\n\t\t\t\tfilter: filterRxCompInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\t\tholder: this.dom.subheader.filter.append('div').style('margin', '5px'),\n\t\t\t\t\thideLabel: this.opts.header_mode === 'with_tabs',\n\t\t\t\t\temptyLabel: '+Add new filter',\n\t\t\t\t\tcallback: filter => {\n\t\t\t\t\t\tthis.app.dispatch({\n\t\t\t\t\t\t\ttype: 'filter_replace',\n\t\t\t\t\t\t\tfilter\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t}),\n\t\t\t\tcharts: chartsInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tholder: this.dom.subheader.charts,\n\t\t\t\t\tvocab: this.opts.vocab\n\t\t\t\t}),\n\t\t\t\tgroups: groupsInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tholder: this.dom.subheader.groups,\n\t\t\t\t\tvocab: this.opts.vocab\n\t\t\t\t}),\n\t\t\t\trecover: recoverInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tholder: this.dom.recoverDiv,\n\t\t\t\t\t// TODO: ???? may limit the tracked state to only the filter, activeCohort ???\n\t\t\t\t\tgetState: appState => appState,\n\t\t\t\t\treactsTo: action => action.type != 'plot_edit',\n\t\t\t\t\tmaxHistoryLen: 5\n\t\t\t\t}),\n\t\t\t\tsessionBtn: sessionBtnInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tbutton: this.dom.saveBtn,\n\t\t\t\t\tmassSessionDuration: this.opts.massSessionDuration,\n\t\t\t\t\tsessionDaysLeft: this.app.opts.sessionDaysLeft || null\n\t\t\t\t}),\n\t\t\t\tabout: aboutInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tsubheader: this.dom.subheader.about,\n\t\t\t\t\tinstanceNum: this.instanceNum,\n\t\t\t\t\taboutOverrides: appState?.termdbConfig?.massNav?.tabs?.about || null,\n\t\t\t\t\tselectCohort: appState?.termdbConfig?.selectCohort || null\n\t\t\t\t})\n\t\t\t})\n\t\t\tthis.mayShowMessage_sessionDaysLeft()\n\t\t} catch (e) {\n\t\t\tthrow e\n\t\t}\n\t}\n\n\treactsTo(action) {\n\t\tif (action.type.includes('cache_termq')) return true\n\t\tif (action.type.startsWith('filter')) return true\n\t\tif (action.type.startsWith('cohort')) return true\n\t\tif (action.type.startsWith('tab')) return true\n\n\t\t// do not use startsWith('plot_') to exclude 'plot_edit' as no need for nav to react to that\n\t\tif (action.type == 'plot_prep') return true\n\t\tif (action.type == 'plot_create') return true\n\t\tif (action.type == 'plot_delete') return true\n\n\t\tif (action.type == 'app_refresh') return true\n\t\tif (action.type.endsWith('_customTerm')) return true\n\t\tif (action.type.endsWith('_group')) return true\n\t}\n\n\tgetState(appState) {\n\t\treturn {\n\t\t\tsearching: this.searching, // for detection of internal state change\n\t\t\tnav: appState.nav,\n\t\t\tactiveCohort: appState.activeCohort,\n\t\t\ttermdbConfig: appState.termdbConfig,\n\t\t\tfilter: appState.termfilter.filter,\n\t\t\tplots: appState.plots,\n\t\t\tgroups: appState.groups\n\t\t}\n\t}\n\n\tasync main() {\n\t\tthis.dom.tabDiv.style('display', this.state.nav.header_mode === 'with_tabs' ? 'inline-block' : 'none')\n\t\tthis.dom.tip.hide()\n\t\tthis.activeTab = this.state.nav.activeTab\n\t\tthis.prevCohort = this.activeCohort\n\t\tthis.activeCohort = +this.state.activeCohort\n\t\tthis.filterUiRoot = getFilterItemByTag(this.state.filter, 'filterUiRoot')\n\t\tthis.cohortFilter = getFilterItemByTag(this.state.filter, 'cohortFilter')\n\t\tif (this.cohortNames) {\n\t\t\tthis.activeCohortName = this.cohortNames[this.activeCohort]\n\t\t\tif (this.activeCohort !== -1)\n\t\t\t\tthis.activeCohortLabel = this.state.termdbConfig.selectCohort.values[this.activeCohort].shortLabel\n\t\t}\n\t\tthis.filterJSON = JSON.stringify(this.state.filter)\n\n\t\tthis.cohortsData = await this.app.vocabApi.getCohortsData()\n\n\t\tif (this.state.nav.header_mode === 'with_tabs') {\n\t\t\tif (!(this.activeCohort in this.samplecounts)) {\n\t\t\t\tthis.samplecounts[this.activeCohort] = await this.app.vocabApi.getCohortSampleCount(this.activeCohortName)\n\t\t\t}\n\t\t\tif (!(this.filterJSON in this.samplecounts)) {\n\t\t\t\tif (!this.filterUiRoot || !this.filterUiRoot.lst.length) {\n\t\t\t\t\tthis.samplecounts[this.filterJSON] = this.samplecounts[this.activeCohort]\n\t\t\t\t} else {\n\t\t\t\t\tconst n = await this.app.vocabApi.getFilteredSampleCount(this.filterJSON)\n\t\t\t\t\tthis.samplecounts[this.filterJSON] = n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.updateUI()\n\t}\n}\n\nexport const navInit = getCompInit(TdbNav)\n\nfunction setRenderers(self) {\n\tself.initUI = appState => {\n\t\tconst verifiedToken = self.app.vocabApi.verifiedToken\n\t\tconst invalidTokenErrorHandling = appState.termdbConfig.invalidTokenErrorHandling\n\t\t//Show error message if login failed and all charts require login. If the dataset does not require login verifiedToken is true\n\t\t//Currently only the profile and carereg always require a token.\n\t\t// Note that if the user did not login the public token was used. So only if the user did login and the token passed was invalid this error is shown\n\t\tif (!verifiedToken && invalidTokenErrorHandling?.affectedCharts?.includes('*'))\n\t\t\tthrow new Error(appState.termdbConfig.invalidTokenErrorHandling.errorMessage)\n\t\tconst header = self.opts.holder.append('div').style('white-space', 'nowrap')\n\t\tconst massNav = appState.termdbConfig?.massNav || {}\n\t\tlet titleDiv = header\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('float', 'right')\n\t\t\t.style('font-size', '1.1em')\n\t\t\t.style('margin', '50px 10px 0 0')\n\t\t\t.text(massNav?.title?.text) //this line will be executed in update UI to reflect cohort changes\n\n\t\tconst tabDiv = header.append('div').style('display', 'none').style('vertical-align', 'bottom')\n\t\tconst controlsDiv = header\n\t\t\t//Fix for adding message underneath the search bar and buttons\n\t\t\t.append('div')\n\t\t\t.style('vertical-align', 'top')\n\t\t\t.style('margin', '10px')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('float', 'right')\n\n\t\tif (self.opts.header_mode === 'only_buttons') {\n\t\t\t// if header_mode is only_buttons, show only buttons\n\t\t\ttabDiv.style('display', 'none')\n\t\t\ttitleDiv.style('display', 'none')\n\t\t\tcontrolsDiv.style('display', 'none')\n\t\t}\n\t\tself.opts.holder.attr('class', 'sjpp-nav')\n\t\tself.dom = {\n\t\t\tholder: self.opts.holder,\n\t\t\theader,\n\t\t\ttabDiv,\n\t\t\tcontrolsDiv,\n\t\t\tsearchDiv: controlsDiv.append('div').style('margin', '10px'),\n\t\t\tsessionDiv: controlsDiv.append('div').style('display', 'inline-block'),\n\t\t\trecoverDiv: controlsDiv.append('div').style('display', 'inline-block'),\n\t\t\tpdfDiv: controlsDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('padding', '4px')\n\t\t\t\t.style('vertical-align', 'middle'),\n\t\t\tdeleteAllDiv: controlsDiv\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('padding', '4px')\n\t\t\t\t.style('vertical-align', 'middle'),\n\n\t\t\thelpDiv: controlsDiv.append('div').style('display', 'none'),\n\t\t\tsessionElapsedMessageDiv: controlsDiv.append('div').style('display', 'none'),\n\t\t\tsubheaderDiv: self.opts.holder.append('div').style('display', 'block').style('border-bottom', '1px solid #000'),\n\t\t\tmessageDiv: self.opts.holder.append('div').style('margin', '30px').style('display', 'none'),\n\t\t\ttitleDiv,\n\t\t\ttip: new Menu({ padding: '5px' })\n\t\t}\n\t\ticon_functions['trash'](self.dom.deleteAllDiv, {\n\t\t\thandler: self.deletePlots,\n\t\t\ttitle: 'Delete all plots. To revert, click Undo button'\n\t\t})\n\n\t\ticon_functions['pdf'](self.dom.pdfDiv, {\n\t\t\thandler: self.opts.downloadPlots,\n\t\t\ttitle: 'Generate a PDF of all the plots opened'\n\t\t})\n\n\t\tif (self.opts.header_mode === 'with_cohortHtmlSelect') {\n\t\t\t// not part of filter div\n\t\t\tself.dom.cohortStandaloneDiv = header\n\t\t\t\t.append('div')\n\t\t\t\t.style('display', 'inline-block')\n\t\t\t\t.style('margin', '10px')\n\t\t\t\t.style('vertical-align', 'top')\n\n\t\t\tself.dom.cohortStandaloneDiv.append('label').html('Cohort: ')\n\t\t\tself.dom.cohortSelect = self.dom.cohortStandaloneDiv.append('select').on('change', async function () {\n\t\t\t\tself.app.dispatch({ type: 'cohort_set', activeCohort: +this.value })\n\t\t\t})\n\n\t\t\tself.dom.cohortSelect\n\t\t\t\t.selectAll('option')\n\t\t\t\t.data(appState.termdbConfig.selectCohort.values)\n\t\t\t\t.enter()\n\t\t\t\t.append('option')\n\t\t\t\t.attr('value', (d, i) => i)\n\t\t\t\t.property('selected', (d, i) => i === appState.activeCohort)\n\t\t\t\t.html(d => d.shortLabel)\n\t\t}\n\n\t\tself.dom.subheader = Object.freeze({\n\t\t\t// For either the COHORT or ABOUT tab\n\t\t\tabout: self.dom.subheaderDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-mass-nav-subheader-about')\n\t\t\t\t.style('display', 'none'),\n\t\t\tsearch: self.dom.subheaderDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-mass-nav-subheader-search')\n\t\t\t\t.style('display', 'none'),\n\t\t\tgroups: self.dom.subheaderDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-mass-nav-subheader-groups')\n\t\t\t\t.style('display', 'none'),\n\t\t\tcharts: self.dom.subheaderDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-mass-nav-subheader-charts')\n\t\t\t\t.style('display', 'none'),\n\t\t\tfilter: self.dom.subheaderDiv\n\t\t\t\t.append('div')\n\t\t\t\t.attr('data-testid', 'sjpp-mass-nav-subheader-filter')\n\t\t\t\t.style('display', 'none')\n\t\t\t// cart: self.dom.subheaderDiv.append('div').style('display', 'none').html('<br/>Cart feature under construction - work in progress<br/> <br/>'),\n\t\t})\n\n\t\tif (!massNav.tabs?.about?.hide) {\n\t\t\t// about tab is not hidden\n\t\t\tself.tabs.push(aboutTab)\n\t\t\t// about tab contents are conditionally determined by 1) override 2) ds using or not using cohort.\n\t\t\t// furbish an override object with default properties based on conditions if those properties are missing\n\t\t\tconst override = Object.assign({}, massNav.tabs?.about)\n\t\t\tif (appState.termdbConfig?.selectCohort) {\n\t\t\t\t// ds has cohort selection and no customization to about tab\n\t\t\t\tif (!override.top) override.top = 'COHORT'\n\t\t\t\t// do not assign \"mid\" here as it will be dynamically assigned with active cohort name\n\t\t\t} else {\n\t\t\t\t// ds doesn't use cohort selection. if mid is missing, use dslabel\n\t\t\t\tif (!override.mid) override.mid = self.pickDatasetLabel(appState)\n\t\t\t}\n\t\t\tObject.assign(aboutTab, override) // apply ds customizations\n\t\t}\n\t\tif (!massNav.tabs?.charts?.hide) {\n\t\t\t// charts tab is not hidden\n\t\t\tself.tabs.push(chartTab)\n\t\t\tObject.assign(chartTab, massNav.tabs?.charts)\n\t\t}\n\t\tif (!massNav.tabs?.groups?.hide) {\n\t\t\t// group tab is not hidden\n\t\t\tself.tabs.push(groupsTab)\n\t\t\tObject.assign(groupsTab, massNav.tabs?.groups)\n\t\t}\n\t\tif (!massNav.tabs?.filter?.hide) {\n\t\t\t// filter tab is not hidden\n\t\t\tself.tabs.push(filterTab)\n\t\t\tObject.assign(filterTab, massNav.tabs?.filter)\n\t\t}\n\n\t\tconst table = self.dom.tabDiv\n\t\t\t.append('table')\n\t\t\t.attr('data-testid', 'sjpp-nav-tabs-table')\n\t\t\t.style('border-collapse', 'collapse')\n\n\t\t// using a table layout for tabs, iterate through each tab\n\t\t// once for each of [top, mid, btm] row\n\t\ttable\n\t\t\t.selectAll('tr')\n\t\t\t.data(['top', 'mid', 'btm'])\n\t\t\t.enter()\n\t\t\t.append('tr')\n\t\t\t.attr('class', (d, i) => `sjpp-nav-tabs-row-${i}`)\n\t\t\t.style('font-size', (d, i) => (i == 1 ? '20px' : '12px'))\n\t\t\t.selectAll('td')\n\t\t\t.data((key, i) =>\n\t\t\t\tself.tabs.map((row, colNum) => {\n\t\t\t\t\treturn { rowNum: i, key, colNum, label: row[key], subheader: row.subheader }\n\t\t\t\t})\n\t\t\t)\n\t\t\t.enter()\n\t\t\t.append('td')\n\t\t\t.attr('class', d => `sjpp-nav-tab-col-${d.colNum}`)\n\t\t\t// hide the about (e.g. cohort tab) until there is termdbConfig.selectCohort or termdbCongfig.massNav.tabs.about\n\t\t\t.style('display', 'none') // d => (d.colNum === 0 || self.activeCohort !== -1 ? '' : 'none'))\n\t\t\t.style('width', '100px')\n\t\t\t.style('padding', d => (d.rowNum === 0 ? '12px 12px 3px 12px' : '3px 12px'))\n\t\t\t.style('text-align', 'center')\n\t\t\t.style('border-left', '1px solid #ccc')\n\t\t\t.style('border-right', '1px solid #ccc')\n\t\t\t.style('color', '#aaa')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.html(d => d.label)\n\t\t\t.on('click', (event, d) => {\n\t\t\t\tself.setTab(event, d)\n\t\t\t})\n\t\t\t.on('mouseover', (event, d) => {\n\t\t\t\tself.mouseover(event, d)\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\tself.mouseout()\n\t\t\t})\n\n\t\tself.dom.trs = table.selectAll('tr')\n\t\tself.dom.tds = table.selectAll('td')\n\t\tself.subheaderKeys = self.tabs.map(d => d.subheader)\n\n\t\tself.dom.saveBtn = self.dom.sessionDiv\n\t\t\t.append('button')\n\t\t\t.attr('data-testid', 'sjpp-nav-session-btn')\n\t\t\t.style('margin', '10px')\n\t\t\t.text('Session \u25BC')\n\n\t\t//.on('click', self.getSessionUrl)\n\n\t\tif (self.sessionDaysLeft != null) {\n\t\t\t//Only show if called from `mass-session-id` URL\n\t\t\tself.dom.fileBtn = self.dom.sessionDiv\n\t\t\t\t.append('button')\n\t\t\t\t.attr('data-testid', 'sjpp-nav-file-btn')\n\t\t\t\t.style('margin', '10px')\n\t\t\t\t.text('Export Session')\n\t\t\t\t.on('click', event => {\n\t\t\t\t\tself.getSessionFile(event)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tself.deletePlots = () => {\n\t\tconst state = self.app.getState()\n\t\tconst subactions = []\n\t\tfor (const plot of state.plots) subactions.push({ type: 'plot_delete', id: plot.id })\n\n\t\tself.app.dispatch({ type: 'app_refresh', subactions })\n\t}\n\n\tself.mayShowMessage_sessionDaysLeft = () => {\n\t\tif (!Number.isFinite(self.sessionDaysLeft)) {\n\t\t\t// info not available, do not show msg\n\t\t\treturn\n\t\t}\n\t\tself.dom.sessionElapsedMessageDiv.style('display', 'block')\n\t\tself.dom.remainingDaysMessage = self.dom.sessionElapsedMessageDiv\n\t\t\t.append('div')\n\t\t\t.style('display', 'block')\n\t\t\t.style('opacity', '0.65')\n\t\t\t.html(\n\t\t\t\t`<u>${self.sessionDaysLeft} days</u> left until this session is removed. Click the \"Session \u25BC\" button and select \"Save\" option to create a new one.`\n\t\t\t)\n\t}\n\n\tself.updateUI = async () => {\n\t\tif (!self.dom.subheaderDiv) return\n\t\tif (self.activeTab && self.state.termdbConfig.selectCohort && self.activeCohort == -1) {\n\t\t\t// showing charts or filter tab; cohort selection is enabled but no cohort is selected\n\t\t\tself.dom.subheaderDiv.style('display', 'none')\n\t\t\tself.dom.messageDiv.selectAll('text').remove()\n\t\t\tself.dom.messageDiv.style('display', '').text('No cohort selected. Please select a cohort in the \"COHORT\" tab.')\n\t\t} else {\n\t\t\tif (self.dom.subheaderDiv) self.dom.subheaderDiv.style('display', self.activeTab != -1 ? 'block' : 'none')\n\t\t\tif (self.dom.messageDiv) self.dom.messageDiv.style('display', 'none')\n\t\t}\n\t\tconst selectCohort = self.state.termdbConfig.selectCohort\n\t\tconst massNav = self.state.termdbConfig.massNav\n\t\tself.dom.searchDiv.style('display', selectCohort && self.activeCohort == -1 ? 'none' : 'inline-block')\n\t\t//self.dom.holder.style('margin-bottom', self.state.nav.header_mode === 'with_tabs' ? '20px' : '')//To be checked why it was needed\n\t\tself.dom.header.style('border-bottom', self.state.nav.header_mode === 'with_tabs' ? '1px solid #000' : '')\n\t\tself.dom.tds\n\t\t\t.style('display', '')\n\t\t\t//Only show black text when the tab is active and the subheader is displayed\n\t\t\t.style('color', d => (d.colNum == self.activeTab ? activeTabTextColor : inactiveTabTextColor))\n\t\t\t.style('background-color', d =>\n\t\t\t\td.colNum == self.activeTab && self.dom.subheaderDiv.style('display') != 'none'\n\t\t\t\t\t? self.state.termdbConfig.massNav?.activeColor || activeTabBgColor\n\t\t\t\t\t: 'transparent'\n\t\t\t)\n\t\t\t.html(function (d, i) {\n\t\t\t\tif (d.key == 'top') return this.innerHTML\n\n\t\t\t\tif (d.subheader == 'groups') {\n\t\t\t\t\tif (d.key == 'mid') return self.state.groups.length || 'NONE'\n\t\t\t\t\treturn ''\n\t\t\t\t}\n\n\t\t\t\tif (d.subheader === 'charts') {\n\t\t\t\t\t// only a plot in it's own sandbox will be counted; do not separately count child plots in the same sandbox\n\t\t\t\t\tconst n = self.state.plots.filter(p => !p.parentId).length\n\t\t\t\t\tif (d.key == 'mid') return !n ? 'NONE' : n\n\t\t\t\t\telse return ''\n\t\t\t\t} else if (d.subheader === 'about') {\n\t\t\t\t\tif (self.activeCohort != -1 && self.activeCohort in self.samplecounts) {\n\t\t\t\t\t\tconst aboutMap = {\n\t\t\t\t\t\t\ttop: this.innerHTML,\n\t\t\t\t\t\t\tmid: self.activeCohortLabel,\n\t\t\t\t\t\t\tbtm: self.samplecounts[self.activeCohort]\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn aboutMap[d.key] || ''\n\t\t\t\t\t} else if (!selectCohort) {\n\t\t\t\t\t\tconst aboutMap = {\n\t\t\t\t\t\t\ttop: massNav?.tabs?.about?.top || 'ABOUT',\n\t\t\t\t\t\t\tmid: massNav?.tabs?.about?.mid || this.innerHTML,\n\t\t\t\t\t\t\tbtm: massNav?.tabs?.about?.btm || self.samplecounts[self.activeCohort]\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn aboutMap[d.key] || ''\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn d.key === 'mid' ? 'NONE' : this.innerHTML\n\t\t\t\t\t}\n\t\t\t\t} else if (d.subheader === 'filter') {\n\t\t\t\t\tconst filter = self.filterUiRoot ? self.filterUiRoot : { lst: [] }\n\t\t\t\t\tif (filter.lst.length === 0) {\n\t\t\t\t\t\t// Do not show number of samples at bottom of FILTER tab when no filter applied\n\t\t\t\t\t\treturn d.key === 'mid' ? 'NONE' : ''\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst n = self.samplecounts[self.filterJSON] != undefined ? '' + self.samplecounts[self.filterJSON] : ''\n\t\t\t\t\t\treturn d.key === 'mid' ? filter.lst.length : n\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\treturn d.key === 'mid' ? this.innerHTML : ' '\n\t\t\t\t}\n\t\t\t})\n\n\t\t// const visibleSubheaders = []\n\t\tfor (const key in self.dom.subheader) {\n\t\t\tself.dom.subheader[key].style(\n\t\t\t\t'display',\n\t\t\t\tself.activeTab == -1 ? 'none' : self.tabs[self.activeTab].subheader === key ? 'block' : 'none'\n\t\t\t)\n\t\t}\n\n\t\tif (self.opts.header_mode === 'with_cohortHtmlSelect') {\n\t\t\tself.dom.cohortSelect.selectAll('option').property('value', self.activeCohort)\n\t\t}\n\t}\n}\n\nfunction setInteractivity(self) {\n\tself.setTab = async (event, d) => {\n\t\t//Reset the activeTab to the current tab if no tab is selected\n\t\tif (self.activeTab == -1) self.activeTab == d.colNum\n\t\tif (d.colNum === self.activeTab && !self.searching) {\n\t\t\t// The about tab should not be hidden on double click with or without plots\n\t\t\tif (self.activeTab == 0) return\n\t\t\tself.prevCohort = self.activeCohort\n\t\t\tawait self.updateUI()\n\n\t\t\t// if the user double-clicks on the same tab, hide the subheader\n\t\t\tself.app.dispatch({ type: 'tab_set', activeTab: -1 })\n\t\t\treturn\n\t\t}\n\t\tself.activeTab = d.colNum\n\t\tself.searching = false\n\t\tself.app.dispatch({ type: 'tab_set', activeTab: self.activeTab })\n\t\tconst chartsIdx = self.subheaderKeys.indexOf('charts')\n\t\tif (self.activeTab == chartsIdx && self.activeCohort != -1 && !self.state.plots.length) {\n\t\t\t// show dictionary or default plot in charts tab if no other\n\t\t\t// plots have been created\n\t\t\tconst defaultChartType = self.state.termdbConfig.defaultChartType || 'dictionary'\n\t\t\tself.app.dispatch({\n\t\t\t\ttype: 'plot_create',\n\t\t\t\tid: getId(),\n\t\t\t\tconfig: { chartType: defaultChartType }\n\t\t\t})\n\t\t}\n\t}\n\n\tself.mouseover = (event, d) => {\n\t\tconst defaultActiveColor = self.state.termdbConfig.massNav?.activeColor || activeTabBgColor\n\t\tself.dom.tds.style('background-color', t => {\n\t\t\t//light yellow for inactive tabs and grey-yellow for this active tab\n\t\t\tif (t.colNum === d.colNum)\n\t\t\t\treturn self.activeTab == t.colNum\n\t\t\t\t\t? self.state.termdbConfig.massNav?.activeColorHover || activeTabBgColorHover\n\t\t\t\t\t: inactiveTabBgColorHover\n\t\t\treturn self.activeTab == t.colNum ? defaultActiveColor : 'transparent'\n\t\t})\n\t}\n\n\tself.mouseout = () => {\n\t\tconst defaultActiveColor = self.state.termdbConfig.massNav?.activeColor || activeTabBgColor\n\t\tself.dom.tds.style('background-color', t => (self.activeTab == t.colNum ? defaultActiveColor : 'transparent'))\n\t}\n\n\tself.getSessionFile = async event => {\n\t\t//Download mass-session-id file\n\t\tconst res = await dofetch3(`/massSession?id=${self.sessionId}`)\n\t\tconst a = document.createElement('a')\n\t\tconst dataStr = 'data:application/json;charset=utf-8,' + encodeURIComponent(JSON.stringify(res.state))\n\t\ta.setAttribute('href', dataStr)\n\t\ta.download = `${self.sessionId}.json`\n\t\ta.click()\n\t\ta.remove()\n\t}\n\n\tself.pickDatasetLabel = appState => {\n\t\tconst dslabel = appState.vocab.dslabel.toUpperCase()\n\t\treturn dslabel.length > 10 ? `${dslabel.slice(0, 10)}...` : dslabel\n\t}\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["event", "id", "d", "instanceNum", "event", "d", "cf", "setInteractivity", "setRenderers", "appState", "event"]
|
|
7
|
-
}
|
package/dist/chunk-ZVSXHCGP.js
DELETED
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
runproteinpaint
|
|
3
|
-
} from "./chunk-EHXI36HJ.js";
|
|
4
|
-
|
|
5
|
-
// test/front.helpers.js
|
|
6
|
-
var serverData = /* @__PURE__ */ Object.create(null);
|
|
7
|
-
function getRunPp(appname = "", defaultArgs = {}, _host = "http://localhost:3000") {
|
|
8
|
-
const host = window.testHost || _host;
|
|
9
|
-
const arg = {
|
|
10
|
-
host: window.testHost || _host,
|
|
11
|
-
noheader: 1,
|
|
12
|
-
nobox: true,
|
|
13
|
-
debug: 1,
|
|
14
|
-
norecover: true
|
|
15
|
-
};
|
|
16
|
-
if (appname == "mass" || appname == "termdb") {
|
|
17
|
-
defaultArgs.debounceInterval = 0;
|
|
18
|
-
}
|
|
19
|
-
if (appname) arg[appname] = defaultArgs;
|
|
20
|
-
else copyMerge(arg, defaultArgs);
|
|
21
|
-
const argStr = JSON.stringify(arg);
|
|
22
|
-
return function runpp(overrides = {}) {
|
|
23
|
-
const argCopy = JSON.parse(argStr);
|
|
24
|
-
if (appname) copyMerge(argCopy[appname], overrides);
|
|
25
|
-
else copyMerge(argCopy, overrides);
|
|
26
|
-
if (appname && defaultArgs.fetchOpts) {
|
|
27
|
-
argCopy[appname].fetchOpts = defaultArgs.fetchOpts;
|
|
28
|
-
}
|
|
29
|
-
return runproteinpaint(Object.assign(argCopy, { serverData }));
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function copyMerge(base, ...args) {
|
|
33
|
-
const target = typeof base == "string" ? JSON.parse(base) : base;
|
|
34
|
-
for (const arg of args) {
|
|
35
|
-
if (arg) {
|
|
36
|
-
const source = typeof base == "string" ? JSON.parse(JSON.stringify(arg)) : arg;
|
|
37
|
-
for (const key in source) {
|
|
38
|
-
if (!target[key] || Array.isArray(target[key]) || typeof target[key] !== "object") target[key] = source[key];
|
|
39
|
-
else copyMerge(target[key], source[key]);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
return target;
|
|
44
|
-
}
|
|
45
|
-
function rideInit(opts = {}) {
|
|
46
|
-
const self = new Ride(opts);
|
|
47
|
-
const rideApi = {
|
|
48
|
-
// ride on the default event bus
|
|
49
|
-
to(callback, sub = {}) {
|
|
50
|
-
self.addToThen(callback, Object.assign({}, opts, sub));
|
|
51
|
-
return rideApi;
|
|
52
|
-
},
|
|
53
|
-
use(triggerFxn, sub = {}) {
|
|
54
|
-
self.addUseThen(triggerFxn, Object.assign({}, opts, sub));
|
|
55
|
-
return rideApi;
|
|
56
|
-
},
|
|
57
|
-
change(sub = {}) {
|
|
58
|
-
Object.assign(opts, sub);
|
|
59
|
-
return rideApi;
|
|
60
|
-
},
|
|
61
|
-
// run callback without using bus, with or without timeout
|
|
62
|
-
run(callback, after = 0) {
|
|
63
|
-
self.addRunThen(callback, after, opts);
|
|
64
|
-
return rideApi;
|
|
65
|
-
},
|
|
66
|
-
// close the event bus
|
|
67
|
-
done(test) {
|
|
68
|
-
if (opts.bus) self.resolved.then(() => opts.bus.on(opts.eventType, null));
|
|
69
|
-
self.resolved.then(() => {
|
|
70
|
-
test.end();
|
|
71
|
-
if (!opts.preserve && test._ok && opts.arg.Inner.app && typeof opts.arg.Inner.app.destroy == "function") {
|
|
72
|
-
opts.arg.Inner.app.destroy();
|
|
73
|
-
}
|
|
74
|
-
}).catch(console.log);
|
|
75
|
-
return rideApi;
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
return Object.freeze(rideApi);
|
|
79
|
-
}
|
|
80
|
-
var Ride = class {
|
|
81
|
-
// mutable but private access props and methods
|
|
82
|
-
// when used inside rideInit()
|
|
83
|
-
constructor(opts) {
|
|
84
|
-
this.validateOpts(opts);
|
|
85
|
-
this.resolved = Promise.resolve();
|
|
86
|
-
}
|
|
87
|
-
validateOpts(opts) {
|
|
88
|
-
try {
|
|
89
|
-
if (opts.eventType && !opts.bus) {
|
|
90
|
-
if (!opts.arg) throw "must specify opts.bus or opts.arg for rideInit() argument";
|
|
91
|
-
opts.bus = opts.arg;
|
|
92
|
-
}
|
|
93
|
-
if (opts.bus) {
|
|
94
|
-
if (typeof opts.eventType !== "string") throw "invalid default.eventType";
|
|
95
|
-
opts.bus.on(opts.eventType, null);
|
|
96
|
-
return opts;
|
|
97
|
-
}
|
|
98
|
-
} catch (e) {
|
|
99
|
-
console.log(e);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
addToThen(callback, opts) {
|
|
103
|
-
this.resolved = this.resolved.then(async (triggerFxn) => {
|
|
104
|
-
opts.bus.on(opts.eventType, null);
|
|
105
|
-
return new Promise(async (resolve, reject) => {
|
|
106
|
-
opts.bus.on(opts.eventType, async () => {
|
|
107
|
-
await sleep(opts.wait);
|
|
108
|
-
callback(opts.arg);
|
|
109
|
-
resolve();
|
|
110
|
-
});
|
|
111
|
-
if (triggerFxn) await triggerFxn();
|
|
112
|
-
});
|
|
113
|
-
});
|
|
114
|
-
}
|
|
115
|
-
// prepare a trigger function for use in the pattern
|
|
116
|
-
// rideInit().use(triggerFxn).to(...)
|
|
117
|
-
//
|
|
118
|
-
// .use() enables setting a different opts.arg to be used for triggerFxn
|
|
119
|
-
//
|
|
120
|
-
addUseThen(triggerFxn, opts) {
|
|
121
|
-
this.resolved = this.resolved.then(async (prevTriggerFxn) => {
|
|
122
|
-
if (typeof prevTriggerFxn == "function") await prevTriggerFxn();
|
|
123
|
-
await sleep(isNaN(opts.wait) ? 0 : opts.wait);
|
|
124
|
-
return () => triggerFxn(opts.arg);
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
|
-
addRunThen(callback, after, opts) {
|
|
128
|
-
this.resolved = this.resolved.then(async () => {
|
|
129
|
-
await sleep(typeof after == "number" ? after : 0);
|
|
130
|
-
callback(opts.arg);
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
};
|
|
134
|
-
function sleep(ms) {
|
|
135
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
export {
|
|
139
|
-
getRunPp,
|
|
140
|
-
rideInit
|
|
141
|
-
};
|
|
142
|
-
//# sourceMappingURL=chunk-ZVSXHCGP.js.map
|