@sjcrh/proteinpaint-client 2.166.0 → 2.167.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/2dmaf-6M6QWXAQ.js +1364 -0
- package/dist/AIProjectAdmin-2NHMC3IV.js +780 -0
- package/dist/AppHeader-CTHEWSZD.js +813 -0
- package/dist/BoxPlot-3U6ZAKKO.js +44 -0
- package/dist/CorrelationVolcano-2ASIR6KY.js +616 -0
- package/dist/DifferentialAnalysis-C3NYGF7U.js +237 -0
- package/dist/Disco-2QLBZ3X5.js +3089 -0
- package/dist/Disco.UI-GPIIPM2P.js +238 -0
- package/dist/DziViewer-OHPZOH72.js +16328 -0
- package/dist/GB-FH6YQGHI.js +1099 -0
- package/dist/HicApp-TI2II3SZ.js +2218 -0
- package/dist/NumBinaryEditor-O42T63EX.js +259 -0
- package/dist/NumBinaryEditor.unit.spec-UMB2PHT5.js +277 -0
- package/dist/NumContEditor-7NOUKPCV.js +98 -0
- package/dist/NumContEditor.unit.spec-JGXJ2HLE.js +160 -0
- package/dist/NumCustomBinEditor-6CHN3KX3.js +29 -0
- package/dist/NumCustomBinEditor.unit.spec-RJPQLE3E.js +275 -0
- package/dist/NumDiscreteEditor-AFTUKU4K.js +145 -0
- package/dist/NumDiscreteEditor.unit.spec-GKR6ZNBQ.js +193 -0
- package/dist/NumRegularBinEditor-UJ5WQPHR.js +29 -0
- package/dist/NumRegularBinEditor.unit.spec-5HGJQEX7.js +220 -0
- package/dist/NumSplineEditor-JANA2DUE.js +181 -0
- package/dist/NumSplineEditor.unit.spec-UYAMAKZD.js +190 -0
- package/dist/NumericDensity-YE5R4CNP.js +29 -0
- package/dist/NumericDensity.unit.spec-SVEB5U2S.js +212 -0
- package/dist/NumericHandler-WW4M7YW2.js +30 -0
- package/dist/NumericHandler.unit.spec-2BWDFO53.js +210 -0
- package/dist/SC-UGJGMBL7.js +714 -0
- package/dist/Volcano-IU76MEIL.js +1018 -0
- package/dist/WSIViewer-3S7N4UDO.js +46959 -0
- package/dist/WsiSamplesPlot-4CAOHWCL.js +153 -0
- package/dist/adSandbox-AEBS3RTL.js +29 -0
- package/dist/alphaGenome-F2PB4SGI.js +170 -0
- package/dist/app-6SKETLMT.js +28 -0
- package/dist/app-GBEF2HBR.js +54 -0
- package/dist/app.js +16 -16
- package/dist/bam-5SE6XQJV.js +842 -0
- package/dist/barchart-AUSOT2XB.js +48 -0
- package/dist/barchart.data-GYCNBRPY.js +30 -0
- package/dist/barchart.events-QTSWNYXO.js +44 -0
- package/dist/barchart.integration.spec-LORJLJVX.js +1600 -0
- package/dist/bars.renderer-4N4QOUNI.js +12 -0
- package/dist/bars.settings-SDU7PZOS.js +10 -0
- package/dist/block-QLSIELXK.js +6291 -0
- package/dist/block.init-OOLEA6ZK.js +29 -0
- package/dist/block.mds.expressionrank-D2KUISXZ.js +350 -0
- package/dist/block.mds.geneboxplot-AMYBWXPS.js +819 -0
- package/dist/block.mds.junction-OG335MBK.js +1536 -0
- package/dist/block.mds.svcnv-WYDBQ6FV.js +6792 -0
- package/dist/block.svg-OH73245R.js +155 -0
- package/dist/block.tk.aicheck-CG5THFW2.js +274 -0
- package/dist/block.tk.ase-G2L3G5MQ.js +356 -0
- package/dist/block.tk.bam-DXWCA6EU.js +1897 -0
- package/dist/block.tk.bedgraphdot-LF3TFPNL.js +375 -0
- package/dist/block.tk.bigwig.ui-JKXZ3VDF.js +202 -0
- package/dist/block.tk.hicstraw-ZK4RKFB6.js +814 -0
- package/dist/block.tk.junction-ZB7Q2NLB.js +2355 -0
- package/dist/block.tk.junction.textmatrixui-ZYNQWKIW.js +190 -0
- package/dist/block.tk.ld-7H64HGER.js +90 -0
- package/dist/block.tk.menu-WFVKAH74.js +1020 -0
- package/dist/block.tk.pgv-632LLSBI.js +935 -0
- package/dist/brainImaging-AEPTHIQF.js +417 -0
- package/dist/chat-3XZCAFDD.js +142 -0
- package/dist/chat-3XZCAFDD.js.map +7 -0
- package/dist/chunk-22O6F463.js +619 -0
- package/dist/chunk-2HJ7OD7H.js +252 -0
- package/dist/chunk-2MN5JLZB.js +2878 -0
- package/dist/chunk-2OVIUIIL.js +1720 -0
- package/dist/chunk-2OVIUIIL.js.map +7 -0
- package/dist/chunk-37CK5IGW.js +480 -0
- package/dist/chunk-3JFEWVHR.js +80 -0
- package/dist/chunk-3MGBC64I.js +133 -0
- package/dist/chunk-3NWLWH4G.js +6364 -0
- package/dist/chunk-46T54RUY.js +1133 -0
- package/dist/chunk-46T54RUY.js.map +7 -0
- package/dist/chunk-4GKQ5PWY.js +142 -0
- package/dist/chunk-4PHD5H4A.js +226 -0
- package/dist/chunk-56IFQMJK.js +413 -0
- package/dist/chunk-5AMBV2JE.js +797 -0
- package/dist/chunk-5AMBV2JE.js.map +7 -0
- package/dist/chunk-5DMFTXUZ.js +158 -0
- package/dist/chunk-5QJDZHRU.js +95 -0
- package/dist/chunk-5WAVKWL6.js +1275 -0
- package/dist/chunk-6ISTNHM6.js +144 -0
- package/dist/chunk-6VQ4C735.js +1536 -0
- package/dist/chunk-74WMSW3E.js +229 -0
- package/dist/chunk-AFU66YOW.js +459 -0
- package/dist/chunk-AUJ2YUXV.js +14 -0
- package/dist/chunk-B65X5UQH.js +518 -0
- package/dist/chunk-B6I64LSV.js +634 -0
- package/dist/chunk-BAJ74DKS.js +419 -0
- package/dist/chunk-BAJ74DKS.js.map +7 -0
- package/dist/chunk-BTYCW3D5.js +85 -0
- package/dist/chunk-CCB5KYFQ.js +1415 -0
- package/dist/chunk-CKLYFA7H.js +467 -0
- package/dist/chunk-CLYRJ466.js +272 -0
- package/dist/chunk-CPHCZZWT.js +82 -0
- package/dist/chunk-CUADOD2T.js +217 -0
- package/dist/chunk-CV6ID6T7.js +422 -0
- package/dist/chunk-CWHBWY3B.js +190 -0
- package/dist/chunk-D53HBTYQ.js +238 -0
- package/dist/chunk-DDOM4XYV.js +1177 -0
- package/dist/chunk-DDOM4XYV.js.map +7 -0
- package/dist/chunk-DKI7YOTJ.js +196 -0
- package/dist/chunk-DNU4IPD2.js +165 -0
- package/dist/chunk-FN5XPUPH.js +83 -0
- package/dist/chunk-FN5XPUPH.js.map +7 -0
- package/dist/chunk-GLSDMBHR.js +55 -0
- package/dist/chunk-GLSDMBHR.js.map +7 -0
- package/dist/chunk-H3BSKMND.js +487 -0
- package/dist/chunk-H3BSKMND.js.map +7 -0
- package/dist/chunk-H6HP4H3U.js +2327 -0
- package/dist/chunk-HPEMEDXB.js +123 -0
- package/dist/chunk-HUDESZGX.js +1151 -0
- package/dist/chunk-ITJ2SXU5.js +467 -0
- package/dist/chunk-ITJ2SXU5.js.map +7 -0
- package/dist/chunk-J7IU77CA.js +166 -0
- package/dist/chunk-JMO7ENSD.js +381 -0
- package/dist/chunk-JTPN3BRG.js +129 -0
- package/dist/chunk-KCAMFDJH.js +323 -0
- package/dist/chunk-LD45BCVM.js +177 -0
- package/dist/chunk-LMELY5Z2.js +1412 -0
- package/dist/chunk-LVQK62CV.js +215 -0
- package/dist/chunk-MCVLRF66.js +157 -0
- package/dist/chunk-MK7RRJTX.js +1968 -0
- package/dist/chunk-MK7RRJTX.js.map +7 -0
- package/dist/chunk-MLD7DW5I.js +613 -0
- package/dist/chunk-NEF7LGNE.js +2789 -0
- package/dist/chunk-O7BAQPP3.js +256 -0
- package/dist/chunk-O7BAQPP3.js.map +7 -0
- package/dist/chunk-OARG7PAV.js +401 -0
- package/dist/chunk-OGCF6E6I.js +4947 -0
- package/dist/chunk-OGCF6E6I.js.map +7 -0
- package/dist/chunk-OGWY4MOB.js +748 -0
- package/dist/chunk-PQD6K5W5.js +2784 -0
- package/dist/chunk-Q4FYGFTQ.js +91 -0
- package/dist/chunk-QX5QVWUP.js +451 -0
- package/dist/chunk-QX5QVWUP.js.map +7 -0
- package/dist/chunk-RA2KI64U.js +303 -0
- package/dist/chunk-RHHLAKYS.js +1088 -0
- package/dist/chunk-RKV3CP4C.js +258 -0
- package/dist/chunk-RL7RU2V7.js +368 -0
- package/dist/chunk-RQ7CE7SK.js +161 -0
- package/dist/chunk-RX552WU6.js +1143 -0
- package/dist/chunk-S7V4SFKB.js +276 -0
- package/dist/chunk-SEL5UNRC.js +142 -0
- package/dist/chunk-SRBO57AD.js +297 -0
- package/dist/chunk-SYGLOTOV.js +1197 -0
- package/dist/chunk-TGZA4ETW.js +311 -0
- package/dist/chunk-TGZA4ETW.js.map +7 -0
- package/dist/chunk-UZ466XO3.js +203 -0
- package/dist/chunk-VDF5W47R.js +149 -0
- package/dist/chunk-W4SEWZF2.js +279 -0
- package/dist/chunk-W4SEWZF2.js.map +7 -0
- package/dist/chunk-W5EG334J.js +15083 -0
- package/dist/chunk-W5EG334J.js.map +7 -0
- package/dist/chunk-WTPVXDJT.js +31 -0
- package/dist/chunk-XRIM2YJZ.js +228 -0
- package/dist/chunk-YSWMQO23.js +55 -0
- package/dist/chunk-ZBZXIWSK.js +402 -0
- package/dist/chunk-ZFFHOEBE.js +117 -0
- package/dist/chunk-ZG63ZUDE.js +102 -0
- package/dist/chunk-ZGQ3BMLW.js +2676 -0
- package/dist/chunk-ZNINQ3FN.js +293 -0
- package/dist/chunk-ZQZWM544.js +4172 -0
- package/dist/condition-4FVKPSQ2.js +323 -0
- package/dist/controls-ZWBN566I.js +35 -0
- package/dist/controls.btns-H4TWTHTW.js +10 -0
- package/dist/controls.config-YU4W3CDL.js +31 -0
- package/dist/correlation-VADB4SQO.js +102 -0
- package/dist/cuminc-4BXE2YS6.js +1143 -0
- package/dist/cuminc.integration.spec-XQREKHVA.js +669 -0
- package/dist/customdata.inputui-VBQWT3M7.js +278 -0
- package/dist/dataDownload-QIZKBKH7.js +320 -0
- package/dist/dataDownload.integration.spec-MLJEHLYD.js +184 -0
- package/dist/databrowser.ui-6UIR4ULJ.js +426 -0
- package/dist/dictionary-FLWIWAC6.js +90 -0
- package/dist/e2pca-NKWSJRXM.js +341 -0
- package/dist/ep-EPN3AR6D.js +1247 -0
- package/dist/expclust.gdc.spec-ZRUH5E6E.js +298 -0
- package/dist/facet-BM7SLACF.js +437 -0
- package/dist/frequencyChart-HBXRIBAW.js +371 -0
- package/dist/frequencyChart.integration.spec-YJUYZWM6.js +301 -0
- package/dist/geneExpClustering-4VD5PAWN.js +242 -0
- package/dist/geneExpression-6OT2Y4P6.js +54 -0
- package/dist/geneExpression-EAMEZXJQ.js +310 -0
- package/dist/geneORA-RI2AG7JT.js +272 -0
- package/dist/geneVariant-FYYEOTWA.js +32 -0
- package/dist/geneVariant-PAKVDVC4.js +29 -0
- package/dist/genefusion.ui-QWC42XWQ.js +242 -0
- package/dist/geneset-XA6IWP3Q.js +186 -0
- package/dist/genomeBrowser.spec-LRKXWXNT.js +272 -0
- package/dist/grin2-O6TETVZ3.js +1044 -0
- package/dist/grin2-O6TETVZ3.js.map +7 -0
- package/dist/grin2-WLB7BY3S.js +1547 -0
- package/dist/gsea-ZM4WOPSQ.js +43 -0
- package/dist/hierCluster-LD43LLRC.js +60 -0
- package/dist/hierCluster-ZGYRS2WV.js +56 -0
- package/dist/hierCluster.config-O5HUOFNH.js +32 -0
- package/dist/hierCluster.integration.spec-37UNKHTH.js +389 -0
- package/dist/hierCluster.interactivity-B27ETKRP.js +45 -0
- package/dist/hierCluster.renderers-GWFH5ZX7.js +21 -0
- package/dist/imagePlot-LJZVGNDJ.js +134 -0
- package/dist/importPlot-RMVENQRD.js +8 -0
- package/dist/launch.adhoc-S3XHRSLN.js +36 -0
- package/dist/leftlabel.sample-J6PCA3UB.js +249 -0
- package/dist/lollipop-OZTV4C7A.js +159 -0
- package/dist/maf-3SRLCKGO.js +435 -0
- package/dist/maf-3SRLCKGO.js.map +7 -0
- package/dist/maftimeline-6F2LQJU6.js +584 -0
- package/dist/matrix-FIXOFAB4.js +60 -0
- package/dist/matrix-O5KPDLM2.js +55 -0
- package/dist/matrix.cells-SCLZA3P4.js +30 -0
- package/dist/matrix.config-WG7HFJL4.js +33 -0
- package/dist/matrix.controls-QQLBUUYP.js +31 -0
- package/dist/matrix.data-6JLF5HVI.js +35 -0
- package/dist/matrix.dom-QO7BXZ27.js +11 -0
- package/dist/matrix.groups-QMZMZ6Q7.js +26 -0
- package/dist/matrix.integration.spec-ZJYWNQ57.js +2936 -0
- package/dist/matrix.interactivity-ZZY5ET4E.js +36 -0
- package/dist/matrix.layout-XKFB4PKY.js +35 -0
- package/dist/matrix.legend-CS6DNC5V.js +22 -0
- package/dist/matrix.renderers-4LST6PBA.js +29 -0
- package/dist/matrix.serieses-3SERD6CV.js +21 -0
- package/dist/matrix.sort-UVS6WHIS.js +27 -0
- package/dist/matrix.sort.unit.spec-CTSUNUWB.js +464 -0
- package/dist/matrix.sorterUi-JDGLTLJM.js +18 -0
- package/dist/matrix.sorterUi.unit.spec-VQFMHIYI.js +335 -0
- package/dist/mavb-ECQ2CQ7F.js +723 -0
- package/dist/mds.fimo-JDYDT5NK.js +509 -0
- package/dist/mds.samplescatterplot-PEJBVSTO.js +1541 -0
- package/dist/mds.survivalplot-GYK6VRQT.js +474 -0
- package/dist/mutationSignature-43SECPTY.js +72 -0
- package/dist/numericDictTermCluster-2ER4FUKO.js +72 -0
- package/dist/oncomatrix-ZXDJMLN3.js +287 -0
- package/dist/oncomatrix.spec-HOPRIG3I.js +439 -0
- package/dist/plot.2dvaf-Y4SZUHLD.js +368 -0
- package/dist/plot.app-W5Z3C7P5.js +35 -0
- package/dist/plot.barplot-B2PRZDKV.js +93 -0
- package/dist/plot.boxplot-J7ET34FY.js +143 -0
- package/dist/plot.brainImaging-ISY4P6RT.js +51 -0
- package/dist/plot.disco-D7AL42PW.js +100 -0
- package/dist/plot.dzi-O32LH65U.js +33 -0
- package/dist/plot.ssgq-WF7262IZ.js +130 -0
- package/dist/plot.vaf2cov-OB6UKSFQ.js +250 -0
- package/dist/plot.wsi-J5S4YYXN.js +36 -0
- package/dist/polar-LIJORXR6.js +179 -0
- package/dist/profile.spec-3KE4CREI.js +71 -0
- package/dist/profileBarchart-UQHOJB5V.js +260 -0
- package/dist/profileForms-WTYVTIUN.js +365 -0
- package/dist/profilePlot-SOXXEUAT.js +50 -0
- package/dist/profileRadar-2OHJ2RIU.js +256 -0
- package/dist/profileRadarFacility-GHLG3QNG.js +256 -0
- package/dist/qualitative-B3OY7A7P.js +34 -0
- package/dist/regression-HO2TO4XT.js +57 -0
- package/dist/regression.inputs-JN3ZMIOP.js +49 -0
- package/dist/regression.inputs.term-67HVMXFZ.js +49 -0
- package/dist/regression.inputs.values.table-JXJK2YZT.js +46 -0
- package/dist/regression.integration.spec-L54ZS5VY.js +777 -0
- package/dist/regression.results-3ZSFKUNN.js +31 -0
- package/dist/regression.spec-SVWCQX2U.js +699 -0
- package/dist/report-IHX7XSOI.js +220 -0
- package/dist/runChart-QLQMK3OE.js +54 -0
- package/dist/runchart.integration.spec-5NVY5GHR.js +362 -0
- package/dist/sampleScatter.spec-4Q5CQQWH.js +193 -0
- package/dist/sampleView-7WHDFHB5.js +42 -0
- package/dist/samplelst-34GJVLVD.js +102 -0
- package/dist/samplematrix-L2HOSLUT.js +2189 -0
- package/dist/scatter-X6AAM2LJ.js +55 -0
- package/dist/scatter.integration.spec-QSH3PLBK.js +1026 -0
- package/dist/selectGenomeWithTklst-AJS2IPPW.js +125 -0
- package/dist/singleCellPlot-7JEWDVSR.js +50 -0
- package/dist/singlecell-IC5KU72L.js +1563 -0
- package/dist/singlecell-NWANPXWM.js +80 -0
- package/dist/snp-PSRNMTL6.js +73 -0
- package/dist/snplocus-QCAVDYLR.js +199 -0
- package/dist/spliceevent.a53ss.diagram-SGDJKUEC.js +142 -0
- package/dist/spliceevent.exonskip.diagram-BUYTHCK5.js +268 -0
- package/dist/spliceevent.noeventdiagram-OJZJUHXP.js +451 -0
- package/dist/ssGSEA-UUZG57MF.js +53 -0
- package/dist/stattable-324FS2HA.js +89 -0
- package/dist/summarizeCnvGeneexp-ZVZYWP43.js +136 -0
- package/dist/summarizeGeneexpSurvival-7XJRMT6M.js +90 -0
- package/dist/summarizeMutationDiagnosis-ZKLXOVY2.js +32 -0
- package/dist/summarizeMutationSurvival-S4YPGLWA.js +92 -0
- package/dist/summary-RVG7JL6Y.js +55 -0
- package/dist/summary.integration.spec-SCD35GO4.js +405 -0
- package/dist/summaryInput-DMN6DTSW.js +170 -0
- package/dist/sunburst-QZXYILRC.js +275 -0
- package/dist/survival-6CWEBRSF.js +41 -0
- package/dist/survival-J657VYLI.js +49 -0
- package/dist/survival.integration.spec-S5WE4V6M.js +601 -0
- package/dist/svgraph-NEKJL24M.js +1378 -0
- package/dist/svmr-5RQ5JQF2.js +3833 -0
- package/dist/table-CG6Z6NCJ.js +193 -0
- package/dist/termCollection-FOQNVXB7.js +80 -0
- package/dist/termInfo-5USFZGDB.js +9 -0
- package/dist/tk-2O7XOVGJ.js +37 -0
- package/dist/tp.ui-S4YUVCZH.js +1450 -0
- package/dist/tvs.dtcnv.continuous-7BPIXZ6C.js +65 -0
- package/dist/tvs.numeric-FCC2EY62.js +355 -0
- package/dist/tvs.samplelst-PKGFTULN.js +95 -0
- package/dist/violin-C7IBRTYP.js +47 -0
- package/dist/violin.integration.spec-WXRD3Z4E.js +1425 -0
- package/dist/violin.interactivity-BMG4TG5L.js +39 -0
- package/dist/violin.renderer-WUNW6ULV.js +31 -0
- package/dist/vocabulary-UUNEEBM3.js +32 -0
- package/package.json +3 -3
- package/dist/2dmaf-E4NOGWWO.js +0 -1364
- package/dist/AIProjectAdmin-3QDXMCOK.js +0 -780
- package/dist/AppHeader-IFZ57DJE.js +0 -813
- package/dist/BoxPlot-GXDTPRA5.js +0 -44
- package/dist/CorrelationVolcano-S4GUYIPT.js +0 -616
- package/dist/DifferentialAnalysis-YLKYWPUT.js +0 -237
- package/dist/Disco-OQMP3HRQ.js +0 -3089
- package/dist/Disco.UI-XB3XQP33.js +0 -238
- package/dist/DziViewer-UIRNTFNS.js +0 -16328
- package/dist/GB-KDPJTOLP.js +0 -1099
- package/dist/HicApp-XJERMLKH.js +0 -2218
- package/dist/NumBinaryEditor-5MWWWNLW.js +0 -259
- package/dist/NumBinaryEditor.unit.spec-ROGT5FOH.js +0 -277
- package/dist/NumContEditor-RRCB4CKG.js +0 -98
- package/dist/NumContEditor.unit.spec-AJTKOF7W.js +0 -160
- package/dist/NumCustomBinEditor-3GJITZ7V.js +0 -29
- package/dist/NumCustomBinEditor.unit.spec-DNBDZSHT.js +0 -275
- package/dist/NumDiscreteEditor-TARWA6CZ.js +0 -145
- package/dist/NumDiscreteEditor.unit.spec-TCSLTQ25.js +0 -193
- package/dist/NumRegularBinEditor-QF5ALVV4.js +0 -29
- package/dist/NumRegularBinEditor.unit.spec-GFNDBWNM.js +0 -220
- package/dist/NumSplineEditor-MOEUXR34.js +0 -181
- package/dist/NumSplineEditor.unit.spec-XPJOOXS4.js +0 -190
- package/dist/NumericDensity-JDE263EQ.js +0 -29
- package/dist/NumericDensity.unit.spec-RX6UGV56.js +0 -212
- package/dist/NumericHandler-XM7LUYHN.js +0 -30
- package/dist/NumericHandler.unit.spec-5EYRMII7.js +0 -210
- package/dist/SC-Z4KBNK7P.js +0 -714
- package/dist/Volcano-WYJLKM4K.js +0 -1018
- package/dist/WSIViewer-3RMG3VOA.js +0 -46959
- package/dist/WsiSamplesPlot-PAWNKI7R.js +0 -153
- package/dist/adSandbox-7H5H46SE.js +0 -29
- package/dist/alphaGenome-PODWDV5T.js +0 -170
- package/dist/app-JPURIGQW.js +0 -28
- package/dist/app-YL7S55T5.js +0 -54
- package/dist/bam-XEO47VYA.js +0 -842
- package/dist/barchart-B5M6SSJH.js +0 -48
- package/dist/barchart.data-6A6WVV4Y.js +0 -30
- package/dist/barchart.events-2GNB5KWY.js +0 -44
- package/dist/barchart.integration.spec-JEOTKIWC.js +0 -1600
- package/dist/bars.renderer-NLUBMQEO.js +0 -12
- package/dist/bars.settings-UQZ63KU4.js +0 -8
- package/dist/block-B7WMYLPO.js +0 -6291
- package/dist/block.init-KCIXEYQC.js +0 -29
- package/dist/block.mds.expressionrank-RYZXAH5Y.js +0 -350
- package/dist/block.mds.geneboxplot-LNWUEI6N.js +0 -819
- package/dist/block.mds.junction-CVIY7QMD.js +0 -1536
- package/dist/block.mds.svcnv-EUGWHSCA.js +0 -6792
- package/dist/block.svg-QBLNIGUF.js +0 -155
- package/dist/block.tk.aicheck-U6NG22FX.js +0 -274
- package/dist/block.tk.ase-U3TRZAOH.js +0 -356
- package/dist/block.tk.bam-6Y6YFVR2.js +0 -1897
- package/dist/block.tk.bedgraphdot-O3VCFX6K.js +0 -375
- package/dist/block.tk.bigwig.ui-DNBJAF72.js +0 -202
- package/dist/block.tk.hicstraw-2EIFJX7E.js +0 -814
- package/dist/block.tk.junction-UXSO5EJP.js +0 -2355
- package/dist/block.tk.junction.textmatrixui-HQ6ZKCHM.js +0 -190
- package/dist/block.tk.ld-NEB4F3UG.js +0 -90
- package/dist/block.tk.menu-BN4JPJSD.js +0 -1020
- package/dist/block.tk.pgv-A4QFVSPF.js +0 -935
- package/dist/brainImaging-ESQGNGZH.js +0 -417
- package/dist/chat-AY7RCQYY.js +0 -145
- package/dist/chat-AY7RCQYY.js.map +0 -7
- package/dist/chunk-236ZRGXA.js +0 -297
- package/dist/chunk-2DZWOGEH.js +0 -272
- package/dist/chunk-2HQJMZNY.js +0 -14
- package/dist/chunk-2MRZFUHZ.js +0 -165
- package/dist/chunk-2ZEORJCF.js +0 -215
- package/dist/chunk-3WA7SJTR.js +0 -82
- package/dist/chunk-47HG7LGD.js +0 -133
- package/dist/chunk-47X254B7.js +0 -91
- package/dist/chunk-4TPDYPGD.js +0 -1098
- package/dist/chunk-4TPDYPGD.js.map +0 -7
- package/dist/chunk-4WA2H5DE.js +0 -75
- package/dist/chunk-4WA2H5DE.js.map +0 -7
- package/dist/chunk-4XDKCFFT.js +0 -613
- package/dist/chunk-5CJJLBUZ.js +0 -229
- package/dist/chunk-5TDKRZN5.js +0 -1931
- package/dist/chunk-5TDKRZN5.js.map +0 -7
- package/dist/chunk-6MSJ3TLQ.js +0 -1151
- package/dist/chunk-7JAFXNAL.js +0 -256
- package/dist/chunk-7JAFXNAL.js.map +0 -7
- package/dist/chunk-7LKSKJCV.js +0 -480
- package/dist/chunk-7P67W6NF.js +0 -190
- package/dist/chunk-7RIC35AF.js +0 -129
- package/dist/chunk-A76B53VT.js +0 -158
- package/dist/chunk-AZ276Z7T.js +0 -2327
- package/dist/chunk-B662XJMJ.js +0 -748
- package/dist/chunk-BK7GIOC5.js +0 -4924
- package/dist/chunk-BK7GIOC5.js.map +0 -7
- package/dist/chunk-BP2F2GRB.js +0 -2676
- package/dist/chunk-BRO4KZSZ.js +0 -417
- package/dist/chunk-BRO4KZSZ.js.map +0 -7
- package/dist/chunk-C5YNONHQ.js +0 -144
- package/dist/chunk-CT3LPTWW.js +0 -1197
- package/dist/chunk-CZTC4MTE.js +0 -161
- package/dist/chunk-DA5VGV5L.js +0 -280
- package/dist/chunk-DA5VGV5L.js.map +0 -7
- package/dist/chunk-DPU66MZ7.js +0 -381
- package/dist/chunk-E6NE5IWR.js +0 -102
- package/dist/chunk-ECKWM4HB.js +0 -1536
- package/dist/chunk-EEX5VPJG.js +0 -467
- package/dist/chunk-EIMEUZP2.js +0 -323
- package/dist/chunk-ETFPL4UP.js +0 -4172
- package/dist/chunk-F3FTQWTA.js +0 -303
- package/dist/chunk-F4APZ34G.js +0 -55
- package/dist/chunk-FOXJTDTH.js +0 -166
- package/dist/chunk-FYTZCTJC.js +0 -1157
- package/dist/chunk-FYTZCTJC.js.map +0 -7
- package/dist/chunk-GBS5I24E.js +0 -1706
- package/dist/chunk-GBS5I24E.js.map +0 -7
- package/dist/chunk-GBWRKJAH.js +0 -413
- package/dist/chunk-GG67VPVD.js +0 -238
- package/dist/chunk-GZ2B634M.js +0 -123
- package/dist/chunk-HEFXMCSF.js +0 -6364
- package/dist/chunk-I26R4NJJ.js +0 -228
- package/dist/chunk-I2GCD26Y.js +0 -55
- package/dist/chunk-I2GCD26Y.js.map +0 -7
- package/dist/chunk-ICNJQHQZ.js +0 -117
- package/dist/chunk-IPAGDFO4.js +0 -80
- package/dist/chunk-J2E4FALN.js +0 -1415
- package/dist/chunk-JXHU2FIA.js +0 -2789
- package/dist/chunk-K7LZ77GD.js +0 -468
- package/dist/chunk-K7LZ77GD.js.map +0 -7
- package/dist/chunk-KACWSU3U.js +0 -487
- package/dist/chunk-KACWSU3U.js.map +0 -7
- package/dist/chunk-KGSCQRQ5.js +0 -203
- package/dist/chunk-KGYPMYQD.js +0 -1143
- package/dist/chunk-L3PMRBTA.js +0 -422
- package/dist/chunk-M7QVMSRW.js +0 -293
- package/dist/chunk-MG6GRQKO.js +0 -459
- package/dist/chunk-N5VBIEH5.js +0 -1412
- package/dist/chunk-NRYOB7WU.js +0 -252
- package/dist/chunk-NXOWHUR4.js +0 -311
- package/dist/chunk-NXOWHUR4.js.map +0 -7
- package/dist/chunk-OFQV6PRB.js +0 -1275
- package/dist/chunk-OMO754MK.js +0 -177
- package/dist/chunk-OQSP66C6.js +0 -226
- package/dist/chunk-OS46MR72.js +0 -368
- package/dist/chunk-PBJFLQGL.js +0 -142
- package/dist/chunk-PMZS3SHH.js +0 -2877
- package/dist/chunk-PPJSDC3Z.js +0 -157
- package/dist/chunk-QIS45Z4Y.js +0 -2784
- package/dist/chunk-RCVZ4L7K.js +0 -402
- package/dist/chunk-ROWCKPNW.js +0 -1088
- package/dist/chunk-RQUXELHE.js +0 -276
- package/dist/chunk-RYRCMHYR.js +0 -196
- package/dist/chunk-S7EKSDVS.js +0 -258
- package/dist/chunk-SN5QKRXO.js +0 -85
- package/dist/chunk-TZRD3FPN.js +0 -634
- package/dist/chunk-U5QRRS7K.js +0 -619
- package/dist/chunk-UOMRXQNW.js +0 -401
- package/dist/chunk-UT6W4ZZL.js +0 -15048
- package/dist/chunk-UT6W4ZZL.js.map +0 -7
- package/dist/chunk-UZV3QI5M.js +0 -518
- package/dist/chunk-VALBVQXS.js +0 -217
- package/dist/chunk-VDR5JXI2.js +0 -444
- package/dist/chunk-VDR5JXI2.js.map +0 -7
- package/dist/chunk-W4D2EYE4.js +0 -95
- package/dist/chunk-XATIKUGU.js +0 -142
- package/dist/chunk-ZHWC5SJP.js +0 -797
- package/dist/chunk-ZHWC5SJP.js.map +0 -7
- package/dist/chunk-ZL4CNBYY.js +0 -149
- package/dist/chunk-ZQ7L66GP.js +0 -31
- package/dist/condition-24HPVH23.js +0 -323
- package/dist/controls-5CSAKANR.js +0 -35
- package/dist/controls.btns-QLLBCT65.js +0 -10
- package/dist/controls.config-H4FMU5LI.js +0 -31
- package/dist/correlation-RB77VSXB.js +0 -102
- package/dist/cuminc-YZSLH5IO.js +0 -1143
- package/dist/cuminc.integration.spec-MZPT3Y5A.js +0 -669
- package/dist/customdata.inputui-CBTZFODT.js +0 -278
- package/dist/dataDownload-ZTGRVI4Q.js +0 -320
- package/dist/dataDownload.integration.spec-Q6GUTUYD.js +0 -184
- package/dist/databrowser.ui-V7E6CLUZ.js +0 -426
- package/dist/dictionary-RPC5OZMM.js +0 -90
- package/dist/e2pca-WDQHMAUM.js +0 -341
- package/dist/ep-NAM34BBI.js +0 -1247
- package/dist/expclust.gdc.spec-QB4GVDJA.js +0 -298
- package/dist/facet-DOXBBIG6.js +0 -437
- package/dist/frequencyChart-GLOIGP3T.js +0 -371
- package/dist/frequencyChart.integration.spec-B7NBBLH2.js +0 -301
- package/dist/geneExpClustering-B4S6GFNT.js +0 -242
- package/dist/geneExpression-DMU4AQP6.js +0 -310
- package/dist/geneExpression-MVVXRNEY.js +0 -54
- package/dist/geneORA-XDAITCQF.js +0 -272
- package/dist/geneVariant-N6IGEIRR.js +0 -29
- package/dist/geneVariant-QYLA2V6J.js +0 -32
- package/dist/genefusion.ui-FRBMNK7V.js +0 -242
- package/dist/geneset-GZYNBG7Y.js +0 -186
- package/dist/genomeBrowser.spec-WFIVQSE7.js +0 -272
- package/dist/grin2-I6GJF35U.js +0 -882
- package/dist/grin2-I6GJF35U.js.map +0 -7
- package/dist/grin2-ZKNNZXON.js +0 -1547
- package/dist/gsea-GFGAEC4K.js +0 -43
- package/dist/hierCluster-MF4TI3E4.js +0 -60
- package/dist/hierCluster-SDJMQLOQ.js +0 -56
- package/dist/hierCluster.config-RMEX3VTC.js +0 -32
- package/dist/hierCluster.integration.spec-3H63OHMU.js +0 -389
- package/dist/hierCluster.interactivity-4DZBRQ6P.js +0 -45
- package/dist/hierCluster.renderers-UOW7BI6N.js +0 -21
- package/dist/imagePlot-P2UHJRSL.js +0 -134
- package/dist/importPlot-PPCMNVOW.js +0 -8
- package/dist/launch.adhoc-RJWUEVRA.js +0 -36
- package/dist/leftlabel.sample-OYP6MICL.js +0 -249
- package/dist/lollipop-BXQOWLGO.js +0 -159
- package/dist/maf-YJJO773K.js +0 -448
- package/dist/maf-YJJO773K.js.map +0 -7
- package/dist/maftimeline-GHKDDWYR.js +0 -584
- package/dist/matrix-FWDLHZYR.js +0 -60
- package/dist/matrix-YMJFP53F.js +0 -55
- package/dist/matrix.cells-JH7FPY3E.js +0 -30
- package/dist/matrix.config-HIHOLDCE.js +0 -33
- package/dist/matrix.controls-EKZ543FY.js +0 -31
- package/dist/matrix.data-NKAZI2BF.js +0 -35
- package/dist/matrix.dom-RGZ52GJ2.js +0 -11
- package/dist/matrix.groups-BO53ZXXV.js +0 -26
- package/dist/matrix.integration.spec-BXTATNAC.js +0 -2936
- package/dist/matrix.interactivity-UGUMKCFN.js +0 -36
- package/dist/matrix.layout-WBIF5QTG.js +0 -35
- package/dist/matrix.legend-P3GFCXXK.js +0 -22
- package/dist/matrix.renderers-I54IHQ3S.js +0 -29
- package/dist/matrix.serieses-R2T57OYI.js +0 -21
- package/dist/matrix.sort-3GCA2GDU.js +0 -27
- package/dist/matrix.sort.unit.spec-AXGPCZZD.js +0 -464
- package/dist/matrix.sorterUi-QWRK6OGE.js +0 -18
- package/dist/matrix.sorterUi.unit.spec-H7GUVWRJ.js +0 -335
- package/dist/mavb-4EECWXYX.js +0 -723
- package/dist/mds.fimo-NHZOY43X.js +0 -509
- package/dist/mds.samplescatterplot-7A5IZ6W7.js +0 -1541
- package/dist/mds.survivalplot-SQDPUFQE.js +0 -474
- package/dist/mutationSignature-QH7PZYKL.js +0 -72
- package/dist/numericDictTermCluster-X5SGSC5K.js +0 -72
- package/dist/oncomatrix-M4C4XPQK.js +0 -287
- package/dist/oncomatrix.spec-3C642O7O.js +0 -439
- package/dist/plot.2dvaf-TILP7J53.js +0 -368
- package/dist/plot.app-DE2UQP2M.js +0 -35
- package/dist/plot.barplot-FJHS765K.js +0 -93
- package/dist/plot.boxplot-YRSHGNYZ.js +0 -143
- package/dist/plot.brainImaging-JV4OUVJY.js +0 -51
- package/dist/plot.disco-DBVPBMLG.js +0 -100
- package/dist/plot.dzi-O2OA4EBK.js +0 -33
- package/dist/plot.ssgq-YFQEZQYK.js +0 -130
- package/dist/plot.vaf2cov-YNFP5LJ4.js +0 -250
- package/dist/plot.wsi-DJB7TDIS.js +0 -36
- package/dist/polar-K5Z5FYKV.js +0 -179
- package/dist/profile.spec-A6EADWEC.js +0 -71
- package/dist/profileBarchart-EFLPJK2P.js +0 -260
- package/dist/profileForms-TG35YNLD.js +0 -365
- package/dist/profilePlot-2EW2XVTK.js +0 -50
- package/dist/profileRadar-AKUYC2O5.js +0 -256
- package/dist/profileRadarFacility-EAT66XTX.js +0 -256
- package/dist/qualitative-PHQU5DXE.js +0 -34
- package/dist/regression-EOMJRRDO.js +0 -57
- package/dist/regression.inputs-LIH5X2JM.js +0 -49
- package/dist/regression.inputs.term-OO4RZ3QB.js +0 -49
- package/dist/regression.inputs.values.table-E7WCTO2L.js +0 -46
- package/dist/regression.integration.spec-62VEQP6X.js +0 -777
- package/dist/regression.results-WAHFJ6NA.js +0 -31
- package/dist/regression.spec-IBIOTZVX.js +0 -699
- package/dist/report-MKDJXHGY.js +0 -220
- package/dist/runChart-ETM2EETF.js +0 -54
- package/dist/runchart.integration.spec-QFA4XBKB.js +0 -362
- package/dist/sampleScatter.spec-N4N7ZGZF.js +0 -193
- package/dist/sampleView-JTY3RV7I.js +0 -42
- package/dist/samplelst-RRUMBVT6.js +0 -102
- package/dist/samplematrix-L37O664Y.js +0 -2189
- package/dist/scatter-E5QHW32W.js +0 -55
- package/dist/scatter.integration.spec-FNVAJSVU.js +0 -1026
- package/dist/selectGenomeWithTklst-J6VXCYGG.js +0 -125
- package/dist/singleCellPlot-S6S6CKYX.js +0 -50
- package/dist/singlecell-4BMIKFY4.js +0 -80
- package/dist/singlecell-B4TNI23F.js +0 -1563
- package/dist/snp-PAUQ24NZ.js +0 -73
- package/dist/snplocus-HVFYZTEE.js +0 -199
- package/dist/spliceevent.a53ss.diagram-GGGHVNBF.js +0 -142
- package/dist/spliceevent.exonskip.diagram-HLMFD6LJ.js +0 -268
- package/dist/spliceevent.noeventdiagram-CKZ3BZ7Y.js +0 -451
- package/dist/ssGSEA-UGT4GH55.js +0 -53
- package/dist/stattable-6JWMALGB.js +0 -89
- package/dist/summarizeCnvGeneexp-BJOQY62E.js +0 -136
- package/dist/summarizeGeneexpSurvival-4HDHL7PE.js +0 -90
- package/dist/summarizeMutationDiagnosis-TDWO5CKU.js +0 -32
- package/dist/summarizeMutationSurvival-CJJFABOX.js +0 -92
- package/dist/summary-WOAXXIHG.js +0 -55
- package/dist/summary.integration.spec-GM73ERMN.js +0 -405
- package/dist/summaryInput-FD4SONTY.js +0 -170
- package/dist/sunburst-3LCJTBRN.js +0 -275
- package/dist/survival-A3A7IVXT.js +0 -41
- package/dist/survival-XF72VMM6.js +0 -49
- package/dist/survival.integration.spec-AU7MCAQV.js +0 -601
- package/dist/svgraph-BEMS4JDJ.js +0 -1378
- package/dist/svmr-CDEMTZPK.js +0 -3833
- package/dist/table-WYF6QCGB.js +0 -193
- package/dist/termCollection-BVQMNVY7.js +0 -80
- package/dist/termInfo-JXLIVCSO.js +0 -9
- package/dist/tk-TGIIJYBO.js +0 -37
- package/dist/tp.ui-USYF67P7.js +0 -1450
- package/dist/tvs.dtcnv.continuous-7SCTSFK3.js +0 -65
- package/dist/tvs.numeric-OLVW6US3.js +0 -355
- package/dist/tvs.samplelst-BHZHCX5V.js +0 -95
- package/dist/violin-OEOWVIZF.js +0 -47
- package/dist/violin.integration.spec-AW2U3RHO.js +0 -1425
- package/dist/violin.interactivity-3O2UDNPQ.js +0 -39
- package/dist/violin.renderer-W26FA6M7.js +0 -31
- package/dist/vocabulary-BIQYDKVY.js +0 -32
- /package/dist/{2dmaf-E4NOGWWO.js.map → 2dmaf-6M6QWXAQ.js.map} +0 -0
- /package/dist/{AIProjectAdmin-3QDXMCOK.js.map → AIProjectAdmin-2NHMC3IV.js.map} +0 -0
- /package/dist/{AppHeader-IFZ57DJE.js.map → AppHeader-CTHEWSZD.js.map} +0 -0
- /package/dist/{BoxPlot-GXDTPRA5.js.map → BoxPlot-3U6ZAKKO.js.map} +0 -0
- /package/dist/{CorrelationVolcano-S4GUYIPT.js.map → CorrelationVolcano-2ASIR6KY.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-YLKYWPUT.js.map → DifferentialAnalysis-C3NYGF7U.js.map} +0 -0
- /package/dist/{Disco-OQMP3HRQ.js.map → Disco-2QLBZ3X5.js.map} +0 -0
- /package/dist/{Disco.UI-XB3XQP33.js.map → Disco.UI-GPIIPM2P.js.map} +0 -0
- /package/dist/{DziViewer-UIRNTFNS.js.map → DziViewer-OHPZOH72.js.map} +0 -0
- /package/dist/{GB-KDPJTOLP.js.map → GB-FH6YQGHI.js.map} +0 -0
- /package/dist/{HicApp-XJERMLKH.js.map → HicApp-TI2II3SZ.js.map} +0 -0
- /package/dist/{NumBinaryEditor-5MWWWNLW.js.map → NumBinaryEditor-O42T63EX.js.map} +0 -0
- /package/dist/{NumBinaryEditor.unit.spec-ROGT5FOH.js.map → NumBinaryEditor.unit.spec-UMB2PHT5.js.map} +0 -0
- /package/dist/{NumContEditor-RRCB4CKG.js.map → NumContEditor-7NOUKPCV.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-AJTKOF7W.js.map → NumContEditor.unit.spec-JGXJ2HLE.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-3GJITZ7V.js.map → NumCustomBinEditor-6CHN3KX3.js.map} +0 -0
- /package/dist/{NumCustomBinEditor.unit.spec-DNBDZSHT.js.map → NumCustomBinEditor.unit.spec-RJPQLE3E.js.map} +0 -0
- /package/dist/{NumDiscreteEditor-TARWA6CZ.js.map → NumDiscreteEditor-AFTUKU4K.js.map} +0 -0
- /package/dist/{NumDiscreteEditor.unit.spec-TCSLTQ25.js.map → NumDiscreteEditor.unit.spec-GKR6ZNBQ.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-QF5ALVV4.js.map → NumRegularBinEditor-UJ5WQPHR.js.map} +0 -0
- /package/dist/{NumRegularBinEditor.unit.spec-GFNDBWNM.js.map → NumRegularBinEditor.unit.spec-5HGJQEX7.js.map} +0 -0
- /package/dist/{NumSplineEditor-MOEUXR34.js.map → NumSplineEditor-JANA2DUE.js.map} +0 -0
- /package/dist/{NumSplineEditor.unit.spec-XPJOOXS4.js.map → NumSplineEditor.unit.spec-UYAMAKZD.js.map} +0 -0
- /package/dist/{NumericDensity-JDE263EQ.js.map → NumericDensity-YE5R4CNP.js.map} +0 -0
- /package/dist/{NumericDensity.unit.spec-RX6UGV56.js.map → NumericDensity.unit.spec-SVEB5U2S.js.map} +0 -0
- /package/dist/{NumericHandler-XM7LUYHN.js.map → NumericHandler-WW4M7YW2.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-5EYRMII7.js.map → NumericHandler.unit.spec-2BWDFO53.js.map} +0 -0
- /package/dist/{SC-Z4KBNK7P.js.map → SC-UGJGMBL7.js.map} +0 -0
- /package/dist/{Volcano-WYJLKM4K.js.map → Volcano-IU76MEIL.js.map} +0 -0
- /package/dist/{WSIViewer-3RMG3VOA.js.map → WSIViewer-3S7N4UDO.js.map} +0 -0
- /package/dist/{WsiSamplesPlot-PAWNKI7R.js.map → WsiSamplesPlot-4CAOHWCL.js.map} +0 -0
- /package/dist/{adSandbox-7H5H46SE.js.map → adSandbox-AEBS3RTL.js.map} +0 -0
- /package/dist/{alphaGenome-PODWDV5T.js.map → alphaGenome-F2PB4SGI.js.map} +0 -0
- /package/dist/{app-JPURIGQW.js.map → app-6SKETLMT.js.map} +0 -0
- /package/dist/{app-YL7S55T5.js.map → app-GBEF2HBR.js.map} +0 -0
- /package/dist/{bam-XEO47VYA.js.map → bam-5SE6XQJV.js.map} +0 -0
- /package/dist/{barchart-B5M6SSJH.js.map → barchart-AUSOT2XB.js.map} +0 -0
- /package/dist/{barchart.data-6A6WVV4Y.js.map → barchart.data-GYCNBRPY.js.map} +0 -0
- /package/dist/{barchart.events-2GNB5KWY.js.map → barchart.events-QTSWNYXO.js.map} +0 -0
- /package/dist/{barchart.integration.spec-JEOTKIWC.js.map → barchart.integration.spec-LORJLJVX.js.map} +0 -0
- /package/dist/{bars.renderer-NLUBMQEO.js.map → bars.renderer-4N4QOUNI.js.map} +0 -0
- /package/dist/{bars.settings-UQZ63KU4.js.map → bars.settings-SDU7PZOS.js.map} +0 -0
- /package/dist/{block-B7WMYLPO.js.map → block-QLSIELXK.js.map} +0 -0
- /package/dist/{block.init-KCIXEYQC.js.map → block.init-OOLEA6ZK.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-RYZXAH5Y.js.map → block.mds.expressionrank-D2KUISXZ.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-LNWUEI6N.js.map → block.mds.geneboxplot-AMYBWXPS.js.map} +0 -0
- /package/dist/{block.mds.junction-CVIY7QMD.js.map → block.mds.junction-OG335MBK.js.map} +0 -0
- /package/dist/{block.mds.svcnv-EUGWHSCA.js.map → block.mds.svcnv-WYDBQ6FV.js.map} +0 -0
- /package/dist/{block.svg-QBLNIGUF.js.map → block.svg-OH73245R.js.map} +0 -0
- /package/dist/{block.tk.aicheck-U6NG22FX.js.map → block.tk.aicheck-CG5THFW2.js.map} +0 -0
- /package/dist/{block.tk.ase-U3TRZAOH.js.map → block.tk.ase-G2L3G5MQ.js.map} +0 -0
- /package/dist/{block.tk.bam-6Y6YFVR2.js.map → block.tk.bam-DXWCA6EU.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-O3VCFX6K.js.map → block.tk.bedgraphdot-LF3TFPNL.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-DNBJAF72.js.map → block.tk.bigwig.ui-JKXZ3VDF.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-2EIFJX7E.js.map → block.tk.hicstraw-ZK4RKFB6.js.map} +0 -0
- /package/dist/{block.tk.junction-UXSO5EJP.js.map → block.tk.junction-ZB7Q2NLB.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-HQ6ZKCHM.js.map → block.tk.junction.textmatrixui-ZYNQWKIW.js.map} +0 -0
- /package/dist/{block.tk.ld-NEB4F3UG.js.map → block.tk.ld-7H64HGER.js.map} +0 -0
- /package/dist/{block.tk.menu-BN4JPJSD.js.map → block.tk.menu-WFVKAH74.js.map} +0 -0
- /package/dist/{block.tk.pgv-A4QFVSPF.js.map → block.tk.pgv-632LLSBI.js.map} +0 -0
- /package/dist/{brainImaging-ESQGNGZH.js.map → brainImaging-AEPTHIQF.js.map} +0 -0
- /package/dist/{chunk-U5QRRS7K.js.map → chunk-22O6F463.js.map} +0 -0
- /package/dist/{chunk-NRYOB7WU.js.map → chunk-2HJ7OD7H.js.map} +0 -0
- /package/dist/{chunk-PMZS3SHH.js.map → chunk-2MN5JLZB.js.map} +0 -0
- /package/dist/{chunk-7LKSKJCV.js.map → chunk-37CK5IGW.js.map} +0 -0
- /package/dist/{chunk-IPAGDFO4.js.map → chunk-3JFEWVHR.js.map} +0 -0
- /package/dist/{chunk-47HG7LGD.js.map → chunk-3MGBC64I.js.map} +0 -0
- /package/dist/{chunk-HEFXMCSF.js.map → chunk-3NWLWH4G.js.map} +0 -0
- /package/dist/{chunk-XATIKUGU.js.map → chunk-4GKQ5PWY.js.map} +0 -0
- /package/dist/{chunk-OQSP66C6.js.map → chunk-4PHD5H4A.js.map} +0 -0
- /package/dist/{chunk-GBWRKJAH.js.map → chunk-56IFQMJK.js.map} +0 -0
- /package/dist/{chunk-A76B53VT.js.map → chunk-5DMFTXUZ.js.map} +0 -0
- /package/dist/{chunk-W4D2EYE4.js.map → chunk-5QJDZHRU.js.map} +0 -0
- /package/dist/{chunk-OFQV6PRB.js.map → chunk-5WAVKWL6.js.map} +0 -0
- /package/dist/{chunk-C5YNONHQ.js.map → chunk-6ISTNHM6.js.map} +0 -0
- /package/dist/{chunk-ECKWM4HB.js.map → chunk-6VQ4C735.js.map} +0 -0
- /package/dist/{chunk-5CJJLBUZ.js.map → chunk-74WMSW3E.js.map} +0 -0
- /package/dist/{chunk-MG6GRQKO.js.map → chunk-AFU66YOW.js.map} +0 -0
- /package/dist/{chunk-2HQJMZNY.js.map → chunk-AUJ2YUXV.js.map} +0 -0
- /package/dist/{chunk-UZV3QI5M.js.map → chunk-B65X5UQH.js.map} +0 -0
- /package/dist/{chunk-TZRD3FPN.js.map → chunk-B6I64LSV.js.map} +0 -0
- /package/dist/{chunk-SN5QKRXO.js.map → chunk-BTYCW3D5.js.map} +0 -0
- /package/dist/{chunk-J2E4FALN.js.map → chunk-CCB5KYFQ.js.map} +0 -0
- /package/dist/{chunk-EEX5VPJG.js.map → chunk-CKLYFA7H.js.map} +0 -0
- /package/dist/{chunk-2DZWOGEH.js.map → chunk-CLYRJ466.js.map} +0 -0
- /package/dist/{chunk-3WA7SJTR.js.map → chunk-CPHCZZWT.js.map} +0 -0
- /package/dist/{chunk-VALBVQXS.js.map → chunk-CUADOD2T.js.map} +0 -0
- /package/dist/{chunk-L3PMRBTA.js.map → chunk-CV6ID6T7.js.map} +0 -0
- /package/dist/{chunk-7P67W6NF.js.map → chunk-CWHBWY3B.js.map} +0 -0
- /package/dist/{chunk-GG67VPVD.js.map → chunk-D53HBTYQ.js.map} +0 -0
- /package/dist/{chunk-RYRCMHYR.js.map → chunk-DKI7YOTJ.js.map} +0 -0
- /package/dist/{chunk-2MRZFUHZ.js.map → chunk-DNU4IPD2.js.map} +0 -0
- /package/dist/{chunk-AZ276Z7T.js.map → chunk-H6HP4H3U.js.map} +0 -0
- /package/dist/{chunk-GZ2B634M.js.map → chunk-HPEMEDXB.js.map} +0 -0
- /package/dist/{chunk-6MSJ3TLQ.js.map → chunk-HUDESZGX.js.map} +0 -0
- /package/dist/{chunk-FOXJTDTH.js.map → chunk-J7IU77CA.js.map} +0 -0
- /package/dist/{chunk-DPU66MZ7.js.map → chunk-JMO7ENSD.js.map} +0 -0
- /package/dist/{chunk-7RIC35AF.js.map → chunk-JTPN3BRG.js.map} +0 -0
- /package/dist/{chunk-EIMEUZP2.js.map → chunk-KCAMFDJH.js.map} +0 -0
- /package/dist/{chunk-OMO754MK.js.map → chunk-LD45BCVM.js.map} +0 -0
- /package/dist/{chunk-N5VBIEH5.js.map → chunk-LMELY5Z2.js.map} +0 -0
- /package/dist/{chunk-2ZEORJCF.js.map → chunk-LVQK62CV.js.map} +0 -0
- /package/dist/{chunk-PPJSDC3Z.js.map → chunk-MCVLRF66.js.map} +0 -0
- /package/dist/{chunk-4XDKCFFT.js.map → chunk-MLD7DW5I.js.map} +0 -0
- /package/dist/{chunk-JXHU2FIA.js.map → chunk-NEF7LGNE.js.map} +0 -0
- /package/dist/{chunk-UOMRXQNW.js.map → chunk-OARG7PAV.js.map} +0 -0
- /package/dist/{chunk-B662XJMJ.js.map → chunk-OGWY4MOB.js.map} +0 -0
- /package/dist/{chunk-QIS45Z4Y.js.map → chunk-PQD6K5W5.js.map} +0 -0
- /package/dist/{chunk-47X254B7.js.map → chunk-Q4FYGFTQ.js.map} +0 -0
- /package/dist/{chunk-F3FTQWTA.js.map → chunk-RA2KI64U.js.map} +0 -0
- /package/dist/{chunk-ROWCKPNW.js.map → chunk-RHHLAKYS.js.map} +0 -0
- /package/dist/{chunk-S7EKSDVS.js.map → chunk-RKV3CP4C.js.map} +0 -0
- /package/dist/{chunk-OS46MR72.js.map → chunk-RL7RU2V7.js.map} +0 -0
- /package/dist/{chunk-CZTC4MTE.js.map → chunk-RQ7CE7SK.js.map} +0 -0
- /package/dist/{chunk-KGYPMYQD.js.map → chunk-RX552WU6.js.map} +0 -0
- /package/dist/{chunk-RQUXELHE.js.map → chunk-S7V4SFKB.js.map} +0 -0
- /package/dist/{chunk-PBJFLQGL.js.map → chunk-SEL5UNRC.js.map} +0 -0
- /package/dist/{chunk-236ZRGXA.js.map → chunk-SRBO57AD.js.map} +0 -0
- /package/dist/{chunk-CT3LPTWW.js.map → chunk-SYGLOTOV.js.map} +0 -0
- /package/dist/{chunk-KGSCQRQ5.js.map → chunk-UZ466XO3.js.map} +0 -0
- /package/dist/{chunk-ZL4CNBYY.js.map → chunk-VDF5W47R.js.map} +0 -0
- /package/dist/{chunk-ZQ7L66GP.js.map → chunk-WTPVXDJT.js.map} +0 -0
- /package/dist/{chunk-I26R4NJJ.js.map → chunk-XRIM2YJZ.js.map} +0 -0
- /package/dist/{chunk-F4APZ34G.js.map → chunk-YSWMQO23.js.map} +0 -0
- /package/dist/{chunk-RCVZ4L7K.js.map → chunk-ZBZXIWSK.js.map} +0 -0
- /package/dist/{chunk-ICNJQHQZ.js.map → chunk-ZFFHOEBE.js.map} +0 -0
- /package/dist/{chunk-E6NE5IWR.js.map → chunk-ZG63ZUDE.js.map} +0 -0
- /package/dist/{chunk-BP2F2GRB.js.map → chunk-ZGQ3BMLW.js.map} +0 -0
- /package/dist/{chunk-M7QVMSRW.js.map → chunk-ZNINQ3FN.js.map} +0 -0
- /package/dist/{chunk-ETFPL4UP.js.map → chunk-ZQZWM544.js.map} +0 -0
- /package/dist/{condition-24HPVH23.js.map → condition-4FVKPSQ2.js.map} +0 -0
- /package/dist/{controls-5CSAKANR.js.map → controls-ZWBN566I.js.map} +0 -0
- /package/dist/{controls.btns-QLLBCT65.js.map → controls.btns-H4TWTHTW.js.map} +0 -0
- /package/dist/{controls.config-H4FMU5LI.js.map → controls.config-YU4W3CDL.js.map} +0 -0
- /package/dist/{correlation-RB77VSXB.js.map → correlation-VADB4SQO.js.map} +0 -0
- /package/dist/{cuminc-YZSLH5IO.js.map → cuminc-4BXE2YS6.js.map} +0 -0
- /package/dist/{cuminc.integration.spec-MZPT3Y5A.js.map → cuminc.integration.spec-XQREKHVA.js.map} +0 -0
- /package/dist/{customdata.inputui-CBTZFODT.js.map → customdata.inputui-VBQWT3M7.js.map} +0 -0
- /package/dist/{dataDownload-ZTGRVI4Q.js.map → dataDownload-QIZKBKH7.js.map} +0 -0
- /package/dist/{dataDownload.integration.spec-Q6GUTUYD.js.map → dataDownload.integration.spec-MLJEHLYD.js.map} +0 -0
- /package/dist/{databrowser.ui-V7E6CLUZ.js.map → databrowser.ui-6UIR4ULJ.js.map} +0 -0
- /package/dist/{dictionary-RPC5OZMM.js.map → dictionary-FLWIWAC6.js.map} +0 -0
- /package/dist/{e2pca-WDQHMAUM.js.map → e2pca-NKWSJRXM.js.map} +0 -0
- /package/dist/{ep-NAM34BBI.js.map → ep-EPN3AR6D.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-QB4GVDJA.js.map → expclust.gdc.spec-ZRUH5E6E.js.map} +0 -0
- /package/dist/{facet-DOXBBIG6.js.map → facet-BM7SLACF.js.map} +0 -0
- /package/dist/{frequencyChart-GLOIGP3T.js.map → frequencyChart-HBXRIBAW.js.map} +0 -0
- /package/dist/{frequencyChart.integration.spec-B7NBBLH2.js.map → frequencyChart.integration.spec-YJUYZWM6.js.map} +0 -0
- /package/dist/{geneExpClustering-B4S6GFNT.js.map → geneExpClustering-4VD5PAWN.js.map} +0 -0
- /package/dist/{geneExpression-MVVXRNEY.js.map → geneExpression-6OT2Y4P6.js.map} +0 -0
- /package/dist/{geneExpression-DMU4AQP6.js.map → geneExpression-EAMEZXJQ.js.map} +0 -0
- /package/dist/{geneORA-XDAITCQF.js.map → geneORA-RI2AG7JT.js.map} +0 -0
- /package/dist/{geneVariant-N6IGEIRR.js.map → geneVariant-FYYEOTWA.js.map} +0 -0
- /package/dist/{geneVariant-QYLA2V6J.js.map → geneVariant-PAKVDVC4.js.map} +0 -0
- /package/dist/{genefusion.ui-FRBMNK7V.js.map → genefusion.ui-QWC42XWQ.js.map} +0 -0
- /package/dist/{geneset-GZYNBG7Y.js.map → geneset-XA6IWP3Q.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-WFIVQSE7.js.map → genomeBrowser.spec-LRKXWXNT.js.map} +0 -0
- /package/dist/{grin2-ZKNNZXON.js.map → grin2-WLB7BY3S.js.map} +0 -0
- /package/dist/{gsea-GFGAEC4K.js.map → gsea-ZM4WOPSQ.js.map} +0 -0
- /package/dist/{hierCluster-MF4TI3E4.js.map → hierCluster-LD43LLRC.js.map} +0 -0
- /package/dist/{hierCluster-SDJMQLOQ.js.map → hierCluster-ZGYRS2WV.js.map} +0 -0
- /package/dist/{hierCluster.config-RMEX3VTC.js.map → hierCluster.config-O5HUOFNH.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-3H63OHMU.js.map → hierCluster.integration.spec-37UNKHTH.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-4DZBRQ6P.js.map → hierCluster.interactivity-B27ETKRP.js.map} +0 -0
- /package/dist/{hierCluster.renderers-UOW7BI6N.js.map → hierCluster.renderers-GWFH5ZX7.js.map} +0 -0
- /package/dist/{imagePlot-P2UHJRSL.js.map → imagePlot-LJZVGNDJ.js.map} +0 -0
- /package/dist/{importPlot-PPCMNVOW.js.map → importPlot-RMVENQRD.js.map} +0 -0
- /package/dist/{launch.adhoc-RJWUEVRA.js.map → launch.adhoc-S3XHRSLN.js.map} +0 -0
- /package/dist/{leftlabel.sample-OYP6MICL.js.map → leftlabel.sample-J6PCA3UB.js.map} +0 -0
- /package/dist/{lollipop-BXQOWLGO.js.map → lollipop-OZTV4C7A.js.map} +0 -0
- /package/dist/{maftimeline-GHKDDWYR.js.map → maftimeline-6F2LQJU6.js.map} +0 -0
- /package/dist/{matrix-FWDLHZYR.js.map → matrix-FIXOFAB4.js.map} +0 -0
- /package/dist/{matrix-YMJFP53F.js.map → matrix-O5KPDLM2.js.map} +0 -0
- /package/dist/{matrix.cells-JH7FPY3E.js.map → matrix.cells-SCLZA3P4.js.map} +0 -0
- /package/dist/{matrix.config-HIHOLDCE.js.map → matrix.config-WG7HFJL4.js.map} +0 -0
- /package/dist/{matrix.controls-EKZ543FY.js.map → matrix.controls-QQLBUUYP.js.map} +0 -0
- /package/dist/{matrix.data-NKAZI2BF.js.map → matrix.data-6JLF5HVI.js.map} +0 -0
- /package/dist/{matrix.dom-RGZ52GJ2.js.map → matrix.dom-QO7BXZ27.js.map} +0 -0
- /package/dist/{matrix.groups-BO53ZXXV.js.map → matrix.groups-QMZMZ6Q7.js.map} +0 -0
- /package/dist/{matrix.integration.spec-BXTATNAC.js.map → matrix.integration.spec-ZJYWNQ57.js.map} +0 -0
- /package/dist/{matrix.interactivity-UGUMKCFN.js.map → matrix.interactivity-ZZY5ET4E.js.map} +0 -0
- /package/dist/{matrix.layout-WBIF5QTG.js.map → matrix.layout-XKFB4PKY.js.map} +0 -0
- /package/dist/{matrix.legend-P3GFCXXK.js.map → matrix.legend-CS6DNC5V.js.map} +0 -0
- /package/dist/{matrix.renderers-I54IHQ3S.js.map → matrix.renderers-4LST6PBA.js.map} +0 -0
- /package/dist/{matrix.serieses-R2T57OYI.js.map → matrix.serieses-3SERD6CV.js.map} +0 -0
- /package/dist/{matrix.sort-3GCA2GDU.js.map → matrix.sort-UVS6WHIS.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-AXGPCZZD.js.map → matrix.sort.unit.spec-CTSUNUWB.js.map} +0 -0
- /package/dist/{matrix.sorterUi-QWRK6OGE.js.map → matrix.sorterUi-JDGLTLJM.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-H7GUVWRJ.js.map → matrix.sorterUi.unit.spec-VQFMHIYI.js.map} +0 -0
- /package/dist/{mavb-4EECWXYX.js.map → mavb-ECQ2CQ7F.js.map} +0 -0
- /package/dist/{mds.fimo-NHZOY43X.js.map → mds.fimo-JDYDT5NK.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-7A5IZ6W7.js.map → mds.samplescatterplot-PEJBVSTO.js.map} +0 -0
- /package/dist/{mds.survivalplot-SQDPUFQE.js.map → mds.survivalplot-GYK6VRQT.js.map} +0 -0
- /package/dist/{mutationSignature-QH7PZYKL.js.map → mutationSignature-43SECPTY.js.map} +0 -0
- /package/dist/{numericDictTermCluster-X5SGSC5K.js.map → numericDictTermCluster-2ER4FUKO.js.map} +0 -0
- /package/dist/{oncomatrix-M4C4XPQK.js.map → oncomatrix-ZXDJMLN3.js.map} +0 -0
- /package/dist/{oncomatrix.spec-3C642O7O.js.map → oncomatrix.spec-HOPRIG3I.js.map} +0 -0
- /package/dist/{plot.2dvaf-TILP7J53.js.map → plot.2dvaf-Y4SZUHLD.js.map} +0 -0
- /package/dist/{plot.app-DE2UQP2M.js.map → plot.app-W5Z3C7P5.js.map} +0 -0
- /package/dist/{plot.barplot-FJHS765K.js.map → plot.barplot-B2PRZDKV.js.map} +0 -0
- /package/dist/{plot.boxplot-YRSHGNYZ.js.map → plot.boxplot-J7ET34FY.js.map} +0 -0
- /package/dist/{plot.brainImaging-JV4OUVJY.js.map → plot.brainImaging-ISY4P6RT.js.map} +0 -0
- /package/dist/{plot.disco-DBVPBMLG.js.map → plot.disco-D7AL42PW.js.map} +0 -0
- /package/dist/{plot.dzi-O2OA4EBK.js.map → plot.dzi-O32LH65U.js.map} +0 -0
- /package/dist/{plot.ssgq-YFQEZQYK.js.map → plot.ssgq-WF7262IZ.js.map} +0 -0
- /package/dist/{plot.vaf2cov-YNFP5LJ4.js.map → plot.vaf2cov-OB6UKSFQ.js.map} +0 -0
- /package/dist/{plot.wsi-DJB7TDIS.js.map → plot.wsi-J5S4YYXN.js.map} +0 -0
- /package/dist/{polar-K5Z5FYKV.js.map → polar-LIJORXR6.js.map} +0 -0
- /package/dist/{profile.spec-A6EADWEC.js.map → profile.spec-3KE4CREI.js.map} +0 -0
- /package/dist/{profileBarchart-EFLPJK2P.js.map → profileBarchart-UQHOJB5V.js.map} +0 -0
- /package/dist/{profileForms-TG35YNLD.js.map → profileForms-WTYVTIUN.js.map} +0 -0
- /package/dist/{profilePlot-2EW2XVTK.js.map → profilePlot-SOXXEUAT.js.map} +0 -0
- /package/dist/{profileRadar-AKUYC2O5.js.map → profileRadar-2OHJ2RIU.js.map} +0 -0
- /package/dist/{profileRadarFacility-EAT66XTX.js.map → profileRadarFacility-GHLG3QNG.js.map} +0 -0
- /package/dist/{qualitative-PHQU5DXE.js.map → qualitative-B3OY7A7P.js.map} +0 -0
- /package/dist/{regression-EOMJRRDO.js.map → regression-HO2TO4XT.js.map} +0 -0
- /package/dist/{regression.inputs-LIH5X2JM.js.map → regression.inputs-JN3ZMIOP.js.map} +0 -0
- /package/dist/{regression.inputs.term-OO4RZ3QB.js.map → regression.inputs.term-67HVMXFZ.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-E7WCTO2L.js.map → regression.inputs.values.table-JXJK2YZT.js.map} +0 -0
- /package/dist/{regression.integration.spec-62VEQP6X.js.map → regression.integration.spec-L54ZS5VY.js.map} +0 -0
- /package/dist/{regression.results-WAHFJ6NA.js.map → regression.results-3ZSFKUNN.js.map} +0 -0
- /package/dist/{regression.spec-IBIOTZVX.js.map → regression.spec-SVWCQX2U.js.map} +0 -0
- /package/dist/{report-MKDJXHGY.js.map → report-IHX7XSOI.js.map} +0 -0
- /package/dist/{runChart-ETM2EETF.js.map → runChart-QLQMK3OE.js.map} +0 -0
- /package/dist/{runchart.integration.spec-QFA4XBKB.js.map → runchart.integration.spec-5NVY5GHR.js.map} +0 -0
- /package/dist/{sampleScatter.spec-N4N7ZGZF.js.map → sampleScatter.spec-4Q5CQQWH.js.map} +0 -0
- /package/dist/{sampleView-JTY3RV7I.js.map → sampleView-7WHDFHB5.js.map} +0 -0
- /package/dist/{samplelst-RRUMBVT6.js.map → samplelst-34GJVLVD.js.map} +0 -0
- /package/dist/{samplematrix-L37O664Y.js.map → samplematrix-L2HOSLUT.js.map} +0 -0
- /package/dist/{scatter-E5QHW32W.js.map → scatter-X6AAM2LJ.js.map} +0 -0
- /package/dist/{scatter.integration.spec-FNVAJSVU.js.map → scatter.integration.spec-QSH3PLBK.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-J6VXCYGG.js.map → selectGenomeWithTklst-AJS2IPPW.js.map} +0 -0
- /package/dist/{singleCellPlot-S6S6CKYX.js.map → singleCellPlot-7JEWDVSR.js.map} +0 -0
- /package/dist/{singlecell-B4TNI23F.js.map → singlecell-IC5KU72L.js.map} +0 -0
- /package/dist/{singlecell-4BMIKFY4.js.map → singlecell-NWANPXWM.js.map} +0 -0
- /package/dist/{snp-PAUQ24NZ.js.map → snp-PSRNMTL6.js.map} +0 -0
- /package/dist/{snplocus-HVFYZTEE.js.map → snplocus-QCAVDYLR.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-GGGHVNBF.js.map → spliceevent.a53ss.diagram-SGDJKUEC.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-HLMFD6LJ.js.map → spliceevent.exonskip.diagram-BUYTHCK5.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-CKZ3BZ7Y.js.map → spliceevent.noeventdiagram-OJZJUHXP.js.map} +0 -0
- /package/dist/{ssGSEA-UGT4GH55.js.map → ssGSEA-UUZG57MF.js.map} +0 -0
- /package/dist/{stattable-6JWMALGB.js.map → stattable-324FS2HA.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-BJOQY62E.js.map → summarizeCnvGeneexp-ZVZYWP43.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-4HDHL7PE.js.map → summarizeGeneexpSurvival-7XJRMT6M.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-TDWO5CKU.js.map → summarizeMutationDiagnosis-ZKLXOVY2.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-CJJFABOX.js.map → summarizeMutationSurvival-S4YPGLWA.js.map} +0 -0
- /package/dist/{summary-WOAXXIHG.js.map → summary-RVG7JL6Y.js.map} +0 -0
- /package/dist/{summary.integration.spec-GM73ERMN.js.map → summary.integration.spec-SCD35GO4.js.map} +0 -0
- /package/dist/{summaryInput-FD4SONTY.js.map → summaryInput-DMN6DTSW.js.map} +0 -0
- /package/dist/{sunburst-3LCJTBRN.js.map → sunburst-QZXYILRC.js.map} +0 -0
- /package/dist/{survival-A3A7IVXT.js.map → survival-6CWEBRSF.js.map} +0 -0
- /package/dist/{survival-XF72VMM6.js.map → survival-J657VYLI.js.map} +0 -0
- /package/dist/{survival.integration.spec-AU7MCAQV.js.map → survival.integration.spec-S5WE4V6M.js.map} +0 -0
- /package/dist/{svgraph-BEMS4JDJ.js.map → svgraph-NEKJL24M.js.map} +0 -0
- /package/dist/{svmr-CDEMTZPK.js.map → svmr-5RQ5JQF2.js.map} +0 -0
- /package/dist/{table-WYF6QCGB.js.map → table-CG6Z6NCJ.js.map} +0 -0
- /package/dist/{termCollection-BVQMNVY7.js.map → termCollection-FOQNVXB7.js.map} +0 -0
- /package/dist/{termInfo-JXLIVCSO.js.map → termInfo-5USFZGDB.js.map} +0 -0
- /package/dist/{tk-TGIIJYBO.js.map → tk-2O7XOVGJ.js.map} +0 -0
- /package/dist/{tp.ui-USYF67P7.js.map → tp.ui-S4YUVCZH.js.map} +0 -0
- /package/dist/{tvs.dtcnv.continuous-7SCTSFK3.js.map → tvs.dtcnv.continuous-7BPIXZ6C.js.map} +0 -0
- /package/dist/{tvs.numeric-OLVW6US3.js.map → tvs.numeric-FCC2EY62.js.map} +0 -0
- /package/dist/{tvs.samplelst-BHZHCX5V.js.map → tvs.samplelst-PKGFTULN.js.map} +0 -0
- /package/dist/{violin-OEOWVIZF.js.map → violin-C7IBRTYP.js.map} +0 -0
- /package/dist/{violin.integration.spec-AW2U3RHO.js.map → violin.integration.spec-WXRD3Z4E.js.map} +0 -0
- /package/dist/{violin.interactivity-3O2UDNPQ.js.map → violin.interactivity-BMG4TG5L.js.map} +0 -0
- /package/dist/{violin.renderer-W26FA6M7.js.map → violin.renderer-WUNW6ULV.js.map} +0 -0
- /package/dist/{vocabulary-BIQYDKVY.js.map → vocabulary-UUNEEBM3.js.map} +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../rx/src/utils.ts", "../rx/src/Bus.ts", "../rx/src/AppApi.ts", "../rx/src/StoreApi.ts", "../rx/src/ComponentApi.ts", "../rx/src/legacy.ts", "../rx/src/StoreBase.ts"],
|
|
4
|
+
"sourcesContent": ["/**************\nUtility Classes\n***************/\n\n/******************\n Detached Helpers\n******************/\n/*\n\tMethods to attach directly to an instance\n\tinside a class contructor method.\n\t\n\tThis is recommended instead of using \n\tinheritance via \"extends\", since this \"mixin\" \n\tapproach:\n\n\t- makes it clearer which instance method corresponds\n\t to what rx method\n\t\n\t- it is not susceptible to any class prototype edits\n\t that may affect all instances that inherits from \n\t the edited class\n\n\t- avoids conceptual association of classical\n\t inheritance using the \"extends\" keyword\n*/\n\n// x, y: objects to compare\n// matched: a tracker for x nested object values that's already been inspected\n// and found to match the corresponding value in y. This is useful when\n// using deepEqual() in deepCopyFreeze(), since it returns early when\n// some value does not match, but there may have been other nested objects\n// that have already been matched that do not need to be inspected again.\n//\n// NOTE: The 2nd argument will be frozen if added to the optional matched argument.\n// May improve the matched argument later into an opts{} argument, as needed.\nexport function deepEqual(x, y, matched?: WeakMap<any, WeakSet<any>> | Map<any, WeakSet<any>>) {\n\tif (x === y) {\n\t\treturn true\n\t} else if (typeof x == 'object' && x != null && typeof y == 'object' && y != null) {\n\t\tif (matched?.get(x)?.has(y)) return true\n\t\tconst xEntries = Object.entries(x)\n\t\tconst yKeys = Object.keys(y)\n\t\tif (xEntries.length != yKeys.length) return false\n\t\t// an empty object and empty array should not equal each other\n\t\tif (!xEntries.length && x.constructor.name !== y.constructor.name) return false\n\t\t// not using for..in loop, in order to not descend into inherited props/methods\n\t\tfor (const [key, val] of xEntries) {\n\t\t\tif (!yKeys.includes(key)) return false\n\t\t\tif (!deepEqual(val, y[key], matched)) return false\n\t\t}\n\t\tif (matched) {\n\t\t\tObject.freeze(y)\n\t\t\tif (!matched.has(x)) matched.set(x, new WeakSet())\n\t\t\tmatched.get(x)!.add(y)\n\t\t}\n\t\treturn true\n\t} else return false\n}\n\nexport function deepFreeze(obj) {\n\tObject.freeze(obj)\n\t// not using for..in loop, in order to not descend into inherited props/methods\n\tfor (const value of Object.values(obj)) {\n\t\tif (value !== null && typeof value == 'object') deepFreeze(value)\n\t}\n\treturn obj\n}\n\n// input: object to copy\n// ref: may reuse another copy that's already frozen, if it already equals the input\n// matched: a tracker to supply as 3rd argument to deepEqual(), to track objects\n// that equal the second argument.\nexport function deepCopyFreeze(\n\tinput,\n\tref: any = {},\n\tmatched: WeakMap<any, WeakSet<any>> | Map<any, WeakSet<any>> = new Map()\n) {\n\t// non-objects will be returned as-is\n\tif (input === null || typeof input != 'object') return input\n\tif (input.constructor.name !== 'Object' && input.constructor.name !== 'Array') {\n\t\t// class instances (non-literal objects) will be returned as-is but frozen\n\t\tif (!matched.has(input)) matched.set(input, new WeakSet())\n\t\tmatched.get(input)!.add(input)\n\t\treturn deepFreeze(input)\n\t}\n\tif (deepEqual(input, ref, matched)) return ref\n\tconst copy = Array.isArray(input) ? [] : {}\n\t// not using for..in loop, in order to not descend into inherited props/methods\n\tfor (const [key, value] of Object.entries(input)) {\n\t\tcopy[key] = deepCopyFreeze(value, ref[key], matched)\n\t}\n\treturn Object.freeze(copy)\n}\n\nexport async function notifyComponents(components, current) {\n\tif (!components) return // allow component-less app\n\tconst called: any[] = []\n\n\tfor (const name of Object.keys(components)) {\n\t\t// when components is array, name will be index\n\t\tconst component = components[name]\n\t\tif (Array.isArray(component)) {\n\t\t\tfor (const c of component) called.push(c.update(current))\n\t\t} else if (typeof component == 'object') {\n\t\t\tif (typeof component.update == 'function') {\n\t\t\t\tcalled.push(component.update(current))\n\t\t\t} else if (!component.main) {\n\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\tif (typeof component[subname] == 'object' && typeof component[subname]?.update == 'function') {\n\t\t\t\t\t\tcalled.push(component[subname].update(current))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn Promise.all(called)\n}\n\n// Store Helpers\n// -------------\n\n/*\n\tbase: \n\t- either a state object or its JSON-stringified equivalent \n\t- will be over-written by second+ argument,\n\t similar to native Object.assign() overwrite sequence\n\n\targs\n\t- full or partial state object(s). if base is a string, then\n\t the arg object will be converted to/from JSON to\n\t create a copy for merging\n\t- the last argument may be an array of keys to force replacing\n\t an object value instead of extending it\n\n\tMerging behavior:\n\t- a base value that is an array or non-object will be replaced by matching arg key-value\n\t- a base value that is an object will be extended by a matching arg key-value\n\t- nested base object values will be extended recursively, instead of being swapped/replaced\n\t at the root level *** EXCEPT IF there is an isAtomic flag on one of these ****\n\t - the source\n\t - target object\n\t - target child object\n\t- see index.spec test for copyMerge details\n*/\nexport function copyMerge(base, ...args) {\n\tconst target = typeof base == 'string' ? fromJson(base) : base\n\tfor (const arg of args) {\n\t\tif (!arg) continue\n\t\tconst source = typeof base == 'string' ? fromJson(toJson(arg)) : arg\n\t\tfor (const [key, value] of Object.entries(source)) {\n\t\t\tif (\n\t\t\t\t!target[key] ||\n\t\t\t\tArray.isArray(target[key]) ||\n\t\t\t\ttypeof target[key] !== 'object' ||\n\t\t\t\tsource === null ||\n\t\t\t\tsource === undefined ||\n\t\t\t\tsource.isAtomic ||\n\t\t\t\ttarget?.isAtomic ||\n\t\t\t\ttarget[key]?.isAtomic\n\t\t\t) {\n\t\t\t\ttarget[key] = value\n\t\t\t} else copyMerge(target[key], value)\n\t\t}\n\t}\n\treturn target\n}\n\nexport function fromJson(objStr) {\n\t// this method should not be reused when there is\n\t// a need to recover any Set or Map values, instead\n\t// declare a class specific fromJson() method that has\n\t// new Set(arrOfValues) or new Map(arrOfPairedValues)\n\t//\n\t// also, do not use this when autogenerated IDs\n\t// need to be attached to list entries\n\t//\n\treturn JSON.parse(objStr)\n}\n\nexport function toJson(this: any, obj = null) {\n\t// this method should not be reused when there is\n\t// a need to stringify any Set or Map values,\n\t// instead declare a class specific toJson() method\n\t// that converts any Set or Map values to\n\t// [...Set] or [...Map] before JSON.stringify()\n\treturn JSON.stringify(obj ? obj : this.state)\n}\n\nexport function sleep(ms) {\n\treturn new Promise(resolve => setTimeout(resolve, ms))\n}\n\n// Component Helpers\n// -----------------\n\n// access the api of an indirectly connected component,\n// for example to subscribe an .on(event, listener) to\n// the event bus of a distant component\nexport function getComponents(components, dotSepNames) {\n\tif (!dotSepNames) return Object.assign({}, components)\n\t// string-based convenient accessor,\n\t// so instead of\n\t// app.getComponents().controls.getComponents().search,\n\t// simply\n\t// app.getComponents(\"controls.search\")\n\tconst names = dotSepNames.split('.')\n\tlet component = components\n\twhile (names.length) {\n\t\tlet name = names.shift()\n\t\tif (Array.isArray(component)) name = Number(name)\n\n\t\tif (!names.length) component = component[name]\n\t\telse if (component[name] && component[name].components) component = component[name].components\n\t\telse if (component[name] && component[name].getComponents) component = component[name].getComponents()\n\t\telse component = component[name]\n\t\tif (!component) break\n\t}\n\treturn component\n}\n", "/*\n\tA Bus instance will be its own api,\n\tsince it does not have a getApi() method.\n\tInstead, the mutable Bus instance will be hidden via the\n\tcomponent.api.on() method.\n*/\n\nexport class Bus {\n\tname: string\n\t/** \n\t \teventTypes[] \n\t\t\t- the events that this component wants to emit\n\t\t\t- e.g. ['postInit', 'postRender', 'postClick']\n\t\t\t- must not be namespaced\n\t\t\t- later, api.on() can use namespaced eventTypes\n\t*/\n\teventTypes: string[]\n\n\tevents: {\n\t\tpostInit?: (api: any) => void\n\t\tfirstRender?: (api: any) => void\n\t\tpostRender?: (api: any) => void\n\t\t//[eventName: string]?: (api: any) => void\n\t}\n\n\tdefaultArg: any\n\n\tconstructor(api, eventTypes, callbacks) {\n\t\t/*\n\t\t\tapi{} \n\t\t\t- the immutable api of the app or component\n\t\t\t\n\t\t\t\n\n\t\t\tcallbacks{}\n\t\t\t- any event listeners to set-up for this component \n\t\t\t- key: eventType, value: callback\n\n\t\t*/\n\t\tthis.name = api.type + (api.id === undefined || api.id === null ? '' : '#' + api.id)\n\t\tthis.eventTypes = eventTypes\n\t\tthis.events = {}\n\t\tthis.defaultArg = api\n\t\tif (callbacks) {\n\t\t\tfor (const [eventType, callback] of Object.entries(callbacks)) {\n\t\t\t\tthis.on(eventType, callback)\n\t\t\t}\n\t\t}\n\t}\n\n\ton(eventType, callback, opts: { wait?: number; [optsName: string]: any } = {}) {\n\t\t/*\n\t\tassign or delete a callback for an event\n\n\t\teventType\n\t\t- must match one of the eventTypes supplied to the Bus constructor\n\t\t- maybe be namespaced or not, example: \"postRender.test\" or \"postRender\"\n\t\t- any previous event-attached callbacks will be REPLACED in this bus \n\t\t when the same eventType is used as an argument again -- same behavior\n\t\t as a DOM event listener namespacing and replacement\n\n\t\tcallback\n\t\t- function. if missing will delete the eventType from bus\n\n\t\topts{}\n\t\t- optional callback configuration, such as\n\t\t.wait // to delay callback \n\t\t*/\n\t\tconst type = eventType.split('.').shift()\n\t\tif (!this.eventTypes.includes(type)) {\n\t\t\tthrow `Unknown bus event '${type}' for component ${this.name}`\n\t\t} else if (!callback) {\n\t\t\tdelete this.events[eventType]\n\t\t} else if (typeof callback == 'function') {\n\t\t\tif (eventType in this.events && !eventType.includes('.')) {\n\t\t\t\tconsole.log(`Warning: replacing ${this.name} ${eventType} callback - use event.name?`)\n\t\t\t}\n\t\t\tthis.events[eventType] = opts.wait ? arg => setTimeout(() => callback(arg), opts.wait) : callback\n\t\t} else {\n\t\t\tthrow `invalid callback for ${this.name} eventType=${eventType}`\n\t\t}\n\t\treturn this\n\t}\n\n\temit(eventType, arg = null, wait = 0, error = null) {\n\t\t/*\n\t\teventType\n\t\t- must be one of the eventTypes supplied to the Bus constructor\n\t\t- maybe be namespaced or not, example: \"postRender.test\" or \"postRender\"\n\n\t\targ\n\t\t- optional: the argument to supply to the callback\n\t\t if null or undefined, will use constructor() opts.defaultArg instead\n\n\t\twait\n\t\t- optional delay in calling the callback\n\t*/\n\t\tsetTimeout(() => {\n\t\t\tfor (const type of Object.keys(this.events)) {\n\t\t\t\tif (eventType == 'postRender' && type.startsWith('firstRender')) {\n\t\t\t\t\tthis.events[type](arg || this.defaultArg, error)\n\t\t\t\t\tdelete this.events[type]\n\t\t\t\t}\n\n\t\t\t\tif (type == eventType || type.startsWith(eventType + '.')) {\n\t\t\t\t\tthis.events[type](arg || this.defaultArg, error)\n\t\t\t\t\tif (eventType == 'postInit') delete this.events[type]\n\t\t\t\t}\n\t\t\t}\n\t\t}, wait)\n\t\treturn this\n\t}\n\n\tdestroy() {\n\t\tfor (const key in this.events) {\n\t\t\tdelete this.events[key]\n\t\t}\n\t}\n}\n", "import { type ComponentApi } from './ComponentApi.ts'\nimport { Bus } from './Bus.ts'\nimport { notifyComponents, getComponents } from './utils.ts'\n\nexport interface RxApp {\n\ttype: string\n\tapi?: AppApi\n\tid: any\n\topts: any\n\tstate: any\n\tstore: any\n\tdebug?: boolean\n\t// should require dom to automate destroy()\n\tdom: {\n\t\t[index: string]: any\n\t}\n\tcomponents: ComponentApi[] | { [name: string]: ComponentApi | { [name: string]: ComponentApi } }\n\tpreApiFreeze?: (api: AppApi) => Promise<void>\n\tinit: () => Promise<void>\n\treactsTo?: (action: { type: string; [key: string]: any }) => boolean\n\tgetState?: (appState: any) => any\n\thasStatePreMain?: boolean\n\tmain: (arg?: any) => void\n\tmainArg?: any\n\tprintError?: (any) => void\n\tdestroy?: () => void\n\n\tbus: Bus\n\teventTypes?: string[]\n\tcustomEvents?: string[]\n\twasDestroyed: boolean\n}\n\nexport class AppApi {\n\ttype = 'app'\n\tid: string\n\topts: any\n\tvocabApi: any\n\t#App: RxApp\n\tInner?: RxApp // only in debugmode\n\t#middlewares: any[] = []\n\tstate: any\n\n\t#latestActionSequenceId: number\n\t#abortController?: AbortController\n\t#componentsByType: {\n\t\t[chartType: string]: {\n\t\t\t[plotId: string]: ComponentApi\n\t\t}\n\t} = {}\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new AppApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(opts, __Class__) {\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxApp = new __Class__(opts)\n\t\tself.opts = opts\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.api = this\n\n\t\tthis.#App = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\t\tthis.opts = opts\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || (self.opts && self.opts.debug)) this.Inner = self\n\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\tself.bus = new Bus(this, self.eventTypes, opts.callbacks)\n\n\t\tthis.#latestActionSequenceId = 0\n\t}\n\n\tasync init() {\n\t\tif (this.#App.preApiFreeze) await this.#App.preApiFreeze(this)\n\t\tawait this.#App.init()\n\t\tif (this.#App.bus) this.#App.bus.emit('postInit')\n\t}\n\n\tasync dispatch(action?: any) {\n\t\tconst self = this.#App\n\t\tself.bus.emit('preDispatch')\n\t\t// any active but stale async operation, like fetch, should be canceled\n\t\t// if a new dispatch supercedes previous dispatches.\n\t\t// NOTE: this cancellation should not affect synchronous steps\n\t\tif (this.#abortController) {\n\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\tthis.#abortController = undefined\n\t\t}\n\n\t\ttry {\n\t\t\tif (this.#middlewares.length) {\n\t\t\t\tfor (const fxn of this.#middlewares.slice()) {\n\t\t\t\t\tconst result = await fxn(action)\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tif (result.cancel) return\n\t\t\t\t\t\tif (result.error) throw result.error\n\t\t\t\t\t\tif (result.deactivate) {\n\t\t\t\t\t\t\tthis.#middlewares.splice(this.#middlewares.indexOf(fxn), 1)\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// expect store.write() to be debounced and handle rapid succession of dispatches\n\t\t\t// replace app.state if there is an action\n\t\t\tif (action) self.state = await self.store.write(action)\n\t\t\tthis.#latestActionSequenceId = action?.sequenceId\n\t\t\t// TODO: may need to group calls to this.main by action type and plot.id,\n\t\t\t// in order to debounce correctly\n\t\t\tif (self.main) await self.main()\n\t\t\tconst current = { action, appState: self.state }\n\t\t\tawait notifyComponents(current.action?._notificationRoot_ || self.components, current)\n\t\t} catch (e) {\n\t\t\tif (self.wasDestroyed) return\n\t\t\tif (self.bus && this.#latestActionSequenceId == action?.sequenceId) self.bus.emit('error')\n\t\t\tif (self.printError) self.printError(e)\n\t\t\telse console.log(e)\n\t\t}\n\t\t// do not emit a postRender event if the action has become stale\n\t\tif (self.bus && this.#latestActionSequenceId == action?.sequenceId) self.bus.emit('postRender')\n\t\tthis.#abortController = undefined\n\t}\n\n\t// action: RxAction\n\tasync save(action) {\n\t\tconst self = this.#App\n\t\tif (self.wasDestroyed) return\n\t\t// save changes to store, do not notify components\n\t\tself.state = await self.store.write(action)\n\t\t// TODO: may generalize to use the key instead of hardcoding to only .recover\n\t\tif (this.#componentsByType.recover) {\n\t\t\tfor (const id in this.#componentsByType.recover) {\n\t\t\t\tconst api = this.#componentsByType.recover[id]\n\t\t\t\t// note: store.write() returns a frozen state, so safe to pass as argument\n\t\t\t\tif (api.replaceLastState) api.replaceLastState(self.state)\n\t\t\t}\n\t\t}\n\t}\n\n\tgetState() {\n\t\treturn this.#App.state\n\t}\n\t// fxn: RxAction => void\n\tmiddle(fxn) {\n\t\t/*\n\t\tadd #middlewares prior to calling dispatch()\n\t\t\n\t\tfxn(action: RxAction) \n\t\t- called in the order of being added to #middlewares array\n\t\t- must accept an action{} argument\n\t\t- do not return any value to eventually reach dispatch()\n\t\t - OR -\n\t\t- optionally return an object{}\n\t\t\t.error: \"string\" will throw\n\t\t\t.cancel: true will cancel dispatch\n\t\t\t.deactivate: true will remove the fxn from the #middlewares array\n\t\t*/\n\t\tif (typeof fxn !== 'function') throw `a middleware must be a function`\n\t\tif (this.#middlewares.includes(fxn)) throw `the function is already in the #middlewares array`\n\t\tthis.#middlewares.push(fxn)\n\t\treturn this\n\t}\n\n\t// must not expose this.bus directly since that\n\t// will also expose bus.emit() which should only\n\t// be triggered by this component\n\ton(eventType, callback) {\n\t\tconst self = this.#App\n\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\tself.bus.on(eventType, callback)\n\t\treturn this\n\t}\n\n\tgetComponents(dotSepNames = '') {\n\t\treturn getComponents(this.#App.components, dotSepNames)\n\t}\n\n\tregister(api) {\n\t\tif (!this.#componentsByType[api.type]) this.#componentsByType[api.type] = {}\n\t\tthis.#componentsByType[api.type][api.id] = api\n\t}\n\n\tderegister(api) {\n\t\tif (this.#componentsByType[api.type]?.[api.id]) delete this.#componentsByType[api.type][api.id]\n\t}\n\n\tgetAbortSignal() {\n\t\tif (!this.#abortController) this.#abortController = new AbortController()\n\t\treturn this.#abortController?.signal\n\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t// stale sequenceId // repeats 3x\n\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t}\n\n\ttriggerAbort(reason = '') {\n\t\tconst self = this.#App\n\t\tif (reason) if (reason) console.info(`triggerAbort()`, reason)\n\t\tif (this.#abortController) {\n\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\tthis.#abortController = undefined\n\t\t}\n\t\tfor (const name of Object.keys(self.components)) {\n\t\t\tconst component = self.components[name]\n\t\t\tif (!component) continue\n\t\t\tif (Array.isArray(component)) {\n\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t} else if (typeof component == 'object') {\n\t\t\t\tif (Object.keys(component).includes('triggerAbort')) {\n\t\t\t\t\tcomponent.triggerAbort()\n\t\t\t\t} else if (!component.main) {\n\t\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSequenceId() {\n\t\treturn this.#latestActionSequenceId\n\t}\n\n\tisStaleSequenceId(sequenceId) {\n\t\treturn sequenceId != this.#latestActionSequenceId\n\t}\n\n\tisAbortError(e) {\n\t\tif (e instanceof DOMException) return e.name === 'AbortError'\n\t\tif (typeof e == 'string') return e.includes('stale sequenceId') || e.includes('AbortError')\n\t\treturn false\n\t}\n\n\tdestroy() {\n\t\tconst self = this.#App\n\t\t// delete references to other objects to make it easier\n\t\t// for automatic garbage collection to find unreferenced objects\n\t\tfor (const key in self.components) {\n\t\t\tconst component = self.components[key]\n\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\tcomponent.destroy()\n\t\t\t} else if (component.holder) {\n\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t}\n\t\t\tdelete self.components[key]\n\t\t}\n\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\tif (self.dom) {\n\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\tfor (const key in self.dom) {\n\t\t\t\tdelete self.dom[key]\n\t\t\t}\n\t\t}\n\t\tif (self.bus) self.bus.destroy()\n\t\tdelete self.store\n\t\tif (self.api) delete self.api\n\t\tself.wasDestroyed = true\n\t}\n\n\tprintError(e) {\n\t\tif (this.#App.printError) this.#App.printError(e)\n\t\telse alert(e)\n\t}\n}\n", "import { deepCopyFreeze } from './utils.ts'\n\nexport interface RxStore {\n\ttype: string\n\tapi?: StoreApi\n\tid: any\n\tparentId?: string\n\topts: any\n\tdefaultState: any\n\tstate: any\n\tdebug?: boolean\n\tsequenceId: number\n\tnumPromisedWrites: number\n\tactions: {\n\t\t[actionType: string]: (action: { type: string; [prop: string]: any }) => void | Promise<void>\n\t}\n\n\tinit: () => void\n\tvalidateState?: () => void\n\tfromJson: (s: string) => any\n\ttoJson: (o: any) => string\n\tdeepFreeze: (o: any) => void\n\tcopyMerge: (_, __) => any\n}\n\nexport class StoreApi {\n\ttype: string\n\tid?: string\n\topts: any\n\n\t#Store: RxStore\n\tInner?: RxStore // only in debugmode\n\t#frozenStateCopy: any = Object.freeze({})\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new StoreApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(_opts, __Class__) {\n\t\tconst opts = this.#validateOpts(_opts, __Class__)\n\t\t//this.app = opts.app\n\t\t//this.opts = opts\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxStore = new __Class__(opts, this)\n\t\t//self.opts = opts\n\t\t//self.app = opts.app\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.api = this\n\t\tthis.#Store = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || self.opts?.debug) this.Inner = self\n\t}\n\n\t#validateOpts(opts, __Class__) {\n\t\tconst optKeys = Object.keys(opts)\n\t\tif (!optKeys.includes('app')) throw `missing opts.app`\n\t\tif (!optKeys.includes('debug')) opts.debug = opts.app.debug ?? opts.app.opts?.debug ?? false\n\t\treturn opts\n\t}\n\n\tasync init() {\n\t\tif (this.#Store.init) await this.#Store.init()\n\t\tif (this.#Store.validateState) this.#Store.validateState()\n\t\tObject.freeze(this)\n\t}\n\n\tasync write(action) {\n\t\tconst self = this.#Store\n\n\t\t// to allow an app or chart code to fail due to race condition,\n\t\t// hardcode a constant value or comment out the ++ for the sequenceID\n\t\t// !!! CRITICAL TO INCREMENT THIS !!!\n\t\taction.sequenceId = this.#Store.sequenceId++\n\t\t// avoid calls to inherited methods\n\t\tconst actions = self.constructor.prototype.actions\n\t\tif (!actions) {\n\t\t\tthrow `no store actions specified`\n\t\t}\n\t\tif (!Object.keys(actions).includes(action.type)) {\n\t\t\tthrow `Action=${action.type} must be declared in an \"actions\" property of a class.`\n\t\t}\n\t\tif (typeof actions[action.type] !== 'function') {\n\t\t\tthrow `invalid action type=${action.type}`\n\t\t}\n\t\tawait actions[action.type].call(self, action)\n\t\t// quick fix?? add custom state properties to the state to trigger special action-related handling\n\t\t// _scope_:\n\t\tself.state._scope_ = action._scope_\n\t\tif (!self.opts.debounceInterval) return this.copyState()\n\n\t\t// track the #\n\t\tself.numPromisedWrites += 1\n\t\tlet decrement = -1\n\t\treturn new Promise(resolve => {\n\t\t\tconst interval = setInterval(() => {\n\t\t\t\tself.numPromisedWrites += decrement\n\t\t\t\tdecrement = 0\n\t\t\t\tif (self.numPromisedWrites > 0) return\n\t\t\t\tclearInterval(interval)\n\t\t\t\tresolve(this.copyState())\n\t\t\t}, self.opts.debounceInterval)\n\t\t})\n\t}\n\n\tasync copyState() {\n\t\t// const time = Date.now()\n\t\tthis.#frozenStateCopy = deepCopyFreeze(this.#Store.state, this.#frozenStateCopy)\n\t\t// const self = this.#Store\n\t\t// this.#frozenStateCopy = self.fromJson(self.toJson(self.state))\n\t\t// self.deepFreeze(this.#frozenStateCopy)\n\t\t// console.log('copyState() time', Date.now() - time)\n\t\treturn this.#frozenStateCopy\n\t}\n}\n", "import type { AppApi } from './AppApi.ts'\nimport { deepEqual, notifyComponents, copyMerge, getComponents } from './utils.ts'\nimport { Bus } from './Bus.ts'\n\nexport interface RxComponent {\n\ttype: string\n\tapi?: ComponentApi\n\tapp: AppApi\n\tid: any\n\tparentId?: string\n\topts: any\n\tstate: any\n\tdebug?: boolean\n\t// should require dom to automate destroy()\n\tdom: {\n\t\t[index: string]: any\n\t}\n\tcomponents?: ComponentApi[] | { [name: string]: ComponentApi | { [name: string]: ComponentApi } }\n\tpreApiFreeze?: (api: ComponentApi) => void\n\tinit?: (appState: any) => Promise<void>\n\treactsTo?: (action: { type: string; [key: string]: any }) => boolean | undefined\n\tgetState?: (appState: any) => any\n\thasStatePreMain?: boolean\n\tmain: (arg?: any) => void\n\tmainArg?: any\n\tprintError?: (any) => void\n\tdestroy?: () => void\n\tgetChartImages?: () => any\n\n\tbus?: any\n\teventTypes?: string[]\n\tcustomEvents?: string[]\n}\n\nexport class ComponentApi {\n\ttype: string\n\tid?: string\n\n\t#Component: RxComponent\n\tInner?: RxComponent // only in debugmode\n\t#latestActionSequenceId: number\n\t#abortController?: AbortController\n\t#abortControllers: Set<AbortController>\n\t// TODO: may use #incompleteUpdate property, if the shared app abortController signal is used\n\t// #incompleteUpdate: boolean = true\n\t#bus?: Bus\n\n\tstatic getInitFxn(__Class__) {\n\t\treturn async opts => {\n\t\t\tconst api = new ComponentApi(opts, __Class__)\n\t\t\tawait api.init()\n\t\t\treturn api\n\t\t}\n\t}\n\n\tconstructor(_opts, __Class__) {\n\t\tconst opts = this.#validateOpts(_opts, __Class__)\n\t\t// the component type + id may be used later to\n\t\t// simplify getting its state from the store\n\t\tconst self: RxComponent = new __Class__(opts, this)\n\t\tself.opts = opts\n\t\tif (!self.id) self.id = opts.id || self.opts?.id\n\t\tif (!self.type) self.type = __Class__.type\n\t\tself.app = opts.app\n\t\tself.api = this\n\n\t\tthis.#Component = self\n\t\tthis.id = self.id\n\t\tthis.type = self.type || __Class__.type\n\n\t\t// make it easy to access the private instance in debug mode, for testing\n\t\tif (self.debug || (self.opts && self.opts.debug)) this.Inner = self\n\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\tself.bus = new Bus(this, self.eventTypes, opts.callbacks)\n\n\t\tthis.#latestActionSequenceId = 0\n\t\tthis.#abortControllers = new Set()\n\t}\n\n\t#validateOpts(opts, __Class__) {\n\t\tconst optKeys = Object.keys(opts)\n\t\tif (!optKeys.includes('app')) throw `missing opts.app`\n\t\tif (!optKeys.includes('debug')) opts.debug = opts.app.debug ?? opts.app.opts?.debug ?? false\n\t\tif (__Class__.type && opts.app.opts?.[__Class__.type]) {\n\t\t\tcopyMerge(opts, opts.app.opts[__Class__.type])\n\t\t}\n\t\treturn opts\n\t}\n\n\tasync init() {\n\t\tconst self = this.#Component\n\t\t// an instance may want to add or modify api properties before it is frozen\n\t\tif (self.preApiFreeze) await self.preApiFreeze(this)\n\t\t// freeze the api's properties and methods before exposing\n\t\tObject.freeze(this)\n\n\t\tif (self.init) await self.init(this.#Component.app.getState())\n\t\t// lessen confusing behavior\n\t\tif (self.state && !self.hasStatePreMain) {\n\t\t\tdelete self.state\n\t\t\tconsole.warn(\n\t\t\t\t`${self.type}: rx deleted this.state after init()` +\n\t\t\t\t\t`to avoid confusing behavior, such as the component not rendering initially ` +\n\t\t\t\t\t`because this.state would not have changed between init() and the first time ` +\n\t\t\t\t\t`main() is called. To skip this warning and retain this.state after init(), ` +\n\t\t\t\t\t`set this.hasStatePreMain = true in the ${self.type} constructor.`\n\t\t\t)\n\t\t}\n\t}\n\n\t// current: {action: RxAction, appState}\n\tasync update(current) {\n\t\tconst self = this.#Component\n\t\t// TODO: may use #incompleteUpdate property, if the shared app abortController signal is used\n\t\tif (/*!this.#incompleteUpdate &&*/ current.action && self.reactsTo && !self.reactsTo(current.action)) return\n\t\tconst componentState = self.getState ? self.getState(current.appState) : current.appState\n\t\t// no new state computed for this component\n\t\tif (!componentState) return\n\t\t// force update if there is no action, or\n\t\t// if the current and pending state is not equal\n\t\tif (!current.action /*|| this.#incompleteUpdate*/ || !deepEqual(componentState, self.state)) {\n\t\t\t//this.#incompleteUpdate = true\n\t\t\tif (current.action) this.#latestActionSequenceId = current.action.sequenceId\n\t\t\tif (this.#abortController) {\n\t\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\t\tthis.#abortController = undefined //new AbortController()\n\t\t\t}\n\n\t\t\tif (self.mainArg == 'state') {\n\t\t\t\t// some components may require passing state to its .main() method,\n\t\t\t\t// for example when extending a simple object class into an rx-component\n\t\t\t\ttry {\n\t\t\t\t\tawait self.main(componentState)\n\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t} catch (e) {\n\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\tthrow e\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.state = componentState\n\t\t\t\tif (self.main) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tawait self.main()\n\t\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tthis.#abortController = undefined\n\t\t\t\t\t\tif (self.app.isAbortError(e)) return\n\t\t\t\t\t\tif (self.bus) self.bus.emit('error')\n\t\t\t\t\t\tthrow e\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\ttry {\n\t\t\t// notify children\n\t\t\tawait notifyComponents(self.components, current)\n\t\t\tif (self.bus && (!current.action || current.action.sequenceId === this.#latestActionSequenceId))\n\t\t\t\tself.bus.emit('postRender')\n\t\t\t//this.#incompleteUpdate = false\n\t\t\treturn this\n\t\t} catch (e: any) {\n\t\t\tif (self.printError) self.printError(e)\n\t\t\telse if (self.dom?.errdiv) throw { message: e.message || e.error || e, errdiv: self.dom?.errdiv }\n\t\t\telse throw e\n\t\t}\n\t}\n\n\tgetComponents(dotSepNames = '') {\n\t\treturn getComponents(this.#Component.components, dotSepNames)\n\t}\n\n\t// must not expose self.bus directly since that\n\t// will also expose bus.emit() which should only\n\t// be triggered by this component\n\ton(eventType, callback) {\n\t\tconst self = this.#Component\n\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\tself.bus.on(eventType, callback)\n\t\treturn this\n\t}\n\n\t// getComponents(dotSepNames = '') {\n\t// \treturn getComponents(self.components, dotSepNames)\n\t// }\n\t//\n\n\t// When an async function takes a while to resolve, such as for server requests,\n\t// a subsequent action may trigger another request before the first one resolves,\n\t// in that case should ignore the stale response/result from the async function.\n\t// This is an api function so that code that has access to this component api\n\t// can also tie-in a function call to the fresheness of the component action.\n\t//\n\tasync detectStale(asyncFxn, opts: { abortCtrl?: AbortController; wait?: number } = {}) {\n\t\tconst abortControllers = this.#abortControllers\n\t\t//let errMsg = ''\n\t\ttry {\n\t\t\tconst actionSequenceId = this.#latestActionSequenceId\n\t\t\tconst promises: Promise<any>[] = []\n\t\t\tlet i, promResolve\n\t\t\tif (opts.abortCtrl) {\n\t\t\t\tabortControllers.add(opts.abortCtrl)\n\t\t\t\tpromises.push(\n\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\tpromResolve = resolve\n\t\t\t\t\t\ti = setInterval(() => {\n\t\t\t\t\t\t\tif (actionSequenceId !== this.#latestActionSequenceId) {\n\t\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\topts.abortCtrl?.abort()\n\t\t\t\t\t\t\t\t\tthrow `stale sequenceId`\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\treject(e)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}, opts.wait || 100)\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t\tpromises.push(asyncFxn())\n\t\t\t// the setInterval does not resolve, so Promise.race can only be \"won\" by the asyncFxn() result,\n\t\t\t// but the race can be aborted by the reject() inside the setInterval\n\t\t\tconst result = await Promise.race(promises)\n\t\t\tif (i) clearInterval(i)\n\t\t\tif (promResolve) promResolve()\n\t\t\tif (opts.abortCtrl && abortControllers.has(opts.abortCtrl)) abortControllers.delete(opts.abortCtrl)\n\t\t\tif (this.#latestActionSequenceId !== actionSequenceId) {\n\t\t\t\t// another state change has been dispatched between the start and completion of the server request\n\t\t\t\tconsole.warn('aborted state update, the returned data corresponds to a stale action.sequenceId')\n\t\t\t\tif (opts.abortCtrl) opts.abortCtrl.abort()\n\t\t\t\treturn [result, true]\n\t\t\t}\n\t\t\treturn [result]\n\t\t} catch (e) {\n\t\t\tif (typeof e == 'string' && e.includes('sequenceId')) console.warn(e)\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tgetAbortSignal() {\n\t\tif (!this.#abortController) this.#abortController = new AbortController()\n\t\treturn this.#abortController?.signal\n\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t// stale sequenceId // repeats 3x\n\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t}\n\n\ttriggerAbort(reason = '') {\n\t\tif (reason) console.info(`triggerAbort()`, reason)\n\t\tif (this.#abortController) {\n\t\t\tthis.#abortController.abort('stale sequenceId')\n\t\t\tthis.#abortController = undefined\n\t\t}\n\t\tfor (const c of this.#abortControllers.values()) {\n\t\t\ttry {\n\t\t\t\tc.abort()\n\t\t\t\tthis.#abortControllers.delete(c)\n\t\t\t} catch (e) {\n\t\t\t\t// ok to\n\t\t\t\tconsole.warn('unable to cancel fetch: ', e)\n\t\t\t\tthis.#abortControllers.delete(c)\n\t\t\t}\n\t\t}\n\t\tconst self = this.#Component\n\t\tif (!self.components) return\n\t\tfor (const name of Object.keys(self.components)) {\n\t\t\tconst component = self.components[name]\n\t\t\tif (Array.isArray(component)) {\n\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t} else if (Object.keys(component).includes('triggerAbort')) {\n\t\t\t\tcomponent.triggerAbort()\n\t\t\t} else if (component && typeof component == 'object' && !component.main) {\n\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tgetSequenceId() {\n\t\treturn this.#latestActionSequenceId\n\t}\n\n\tisStaleSequenceId(sequenceId) {\n\t\treturn sequenceId != this.#latestActionSequenceId\n\t}\n\n\tdestroy() {\n\t\tconst self = this.#Component\n\t\t// delete references to other objects to make it easier\n\t\t// for automatic garbage collection to find unreferenced objects\n\t\tself.app.deregister(self.api)\n\t\tfor (const key in self.components) {\n\t\t\tconst component = self.components[key]\n\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\tcomponent.destroy()\n\t\t\t} else if (component.holder) {\n\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t}\n\t\t\tdelete self.components[key]\n\t\t}\n\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\tif (self.dom) {\n\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\tfor (const key in self.dom) {\n\t\t\t\tif (typeof self.dom[key]?.remove == 'function') self.dom[key].remove()\n\t\t\t\tdelete self.dom[key]\n\t\t\t}\n\t\t}\n\t\tif (self.bus) self.bus.destroy()\n\t\tif (self.api) delete self.api\n\t}\n\n\t// defaults for optional preApiFreeze addons\n\treplaceLastState(_) {}\n\n\tgetChartImages() {\n\t\treturn this.#Component.getChartImages ? this.#Component.getChartImages() : null\n\t}\n}\n", "// !!! TODO: migrate all rx code to strictly-defined typescript and\n// to use classes (with private #Inner) instead of closures !!!\nimport { deepEqual, deepFreeze, notifyComponents, copyMerge, fromJson, toJson, getComponents } from './utils.ts'\nimport { AppApi } from './AppApi.ts'\nimport { StoreApi } from './StoreApi.ts'\nimport { ComponentApi } from './ComponentApi.ts'\nimport { Bus } from './Bus.ts'\n\n/*\n*********** Exported ***********\ngetInitFxn()\ngetStoreApi()\ngetAppApi()\ngetComponentApi()\nBus (class)\nnotifyComponents()\ngetComponents()\ncopyMerge()\nfromJson()\ntoJson()\ndeepFreeze()\ndeepEqual()\n*********** Internal ***********\n\nInstances, APIs, and callback arguments are documented at:\nhttps://docs.google.com/document/d/1G3LqbtsCEkGw4ABA_VognhjVnUHnsVYAGdXyhYG374M/edit#\n\n*/\n\n/************\n Init Factory\n*************/\n\n/* \n\tgetInitFxn()\n\t- returns a _Class_ initiator function that\n\t\t- creates a _Class_ instance\n\t\t- optionally attaches an api.Inner reference to the instance for debugging\n\t\t- optionally creates an instance.bus property if there is an instance.eventTypes property\n\t\t- freezes and returns an immutable instance API\n\n\tDesign goal: \n\t- to protect _Class_ instance properties from being changed arbitrarily \n\t by any code that has a reference to it\n\t- Flexibility to use the generated instance outside of the rx framework/notification flow,\n\t\twith or without an coordinating \"app\"\n*/\n// deprecated: use <AppApi | StoreApi | ComponentApi>.getInitFxn\nexport function getInitFxn(_Class_) {\n\t/*\n\t\topts\n\t\t- the argument to the _Class_ constructor\n\t*/\n\treturn opts => {\n\t\t// create a _Class_ instance with mutable private properties and methods\n\t\tconst self = new _Class_(opts)\n\n\t\tif (!self.api && self.type) {\n\t\t\tif (self.type == 'app') prepApp(self, opts)\n\t\t\telse if (self.type == 'store') prepStore(self, opts)\n\t\t\telse prepComponent(self, opts)\n\t\t}\n\n\t\t// get the instance's api that may hide its mutable props and methods\n\t\t// - if there is already an instance api as constructed, use it\n\t\t// - if not, expose the mutable instance as its public api\n\t\tconst api = self.api || self\n\t\t// optionally expose the hidden instance to debugging and testing code\n\t\tif (self.debug || (self.opts && self.opts.debug)) api.Inner = self\n\t\t// an instance may want to add or modify api properties before it is frozen\n\t\tif (typeof self.preApiFreeze == 'function') self.preApiFreeze(api)\n\t\t// freeze the api's properties and methods before exposing\n\t\tObject.freeze(api)\n\n\t\t// the optional instance.init() is expected to be an async function,\n\t\t// which is not compatible within a constructor() function,\n\t\t// so call it here if it is available as an instance method\n\t\tif (self.init) {\n\t\t\t// return a Promise thar resolves to the instance API;\n\t\t\t// the parent component must use the await keyword\n\t\t\t// when using this initializer to get the instance's API\n\t\t\treturn self\n\t\t\t\t.init()\n\t\t\t\t.then(() => {\n\t\t\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\t\t\treturn api\n\t\t\t\t})\n\t\t\t\t.catch(e => {\n\t\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\t\tif (self.bus) self.bus.emit('postInit', null, 0, e)\n\t\t\t\t\telse throw e\n\t\t\t\t})\n\t\t} else {\n\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\t// return the instance API; the parent component that uses this initializer\n\t\t\t// does NOT have to use the await keyword\n\t\t\treturn api\n\t\t}\n\t}\n}\n\nexport function getAppInit(_Class_) {\n\tif (_Class_.type) return AppApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepApp)\n}\n\nexport function getStoreInit(_Class_) {\n\tif (_Class_.type) return StoreApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepStore)\n}\n\nexport function getCompInit(_Class_) {\n\tif (_Class_.type) return ComponentApi.getInitFxn(_Class_)\n\treturn getInitPrepFxn(_Class_, prepComponent)\n}\n\nfunction getInitPrepFxn(_Class_, prepFxn) {\n\tif (typeof prepFxn != 'function') throw 'prepFxn must be a function'\n\n\t/*\n\t\topts\n\t\t- the argument to the _Class_ constructor\n\t*/\n\treturn async opts => {\n\t\tlet self\n\t\ttry {\n\t\t\tif (opts.app?.opts && 'debug' in opts.app.opts && !('debug' in opts) && opts != opts.app.opts) {\n\t\t\t\t// propagate debugmode from app.opts, if not set directly on the current opts object\n\t\t\t\topts.debug = opts.app.opts.debug\n\t\t\t}\n\t\t\t// create a _Class_ instance with mutable private properties and methods\n\t\t\tself = new _Class_(opts)\n\t\t\tprepFxn(self, opts)\n\n\t\t\t// get the instance's api that may hide its mutable props and methods\n\t\t\t// - if there is already an instance api as constructed, use it\n\t\t\t// - if not, expose the instance as its public api\n\t\t\tconst api = self.api || self\n\t\t\t// optionally expose the hidden instance to debugging and testing code\n\t\t\tif (self.debug || (self.opts && self.opts.debug)) api.Inner = self\n\t\t\t// an instance may want to add or modify api properties before it is frozen\n\t\t\tif (self.preApiFreeze) await self.preApiFreeze(api)\n\t\t\t// freeze the api's properties and methods before exposing\n\t\t\tObject.freeze(api)\n\n\t\t\t// instance.init() can be an async function\n\t\t\t// which is not compatible within a constructor() function,\n\t\t\t// so call it here if it is available as an instance method\n\t\t\tif (self.init) {\n\t\t\t\tif (self.app && self.app != self) await self.init(self.app.getState())\n\t\t\t\telse await self.init()\n\n\t\t\t\t// lessen confusing behavior\n\t\t\t\tif (self.type != 'app' && self.type != 'store' && self.state && !self.hasStatePreMain) {\n\t\t\t\t\tdelete self.state\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`${self.type}: rx deleted this.state after init()` +\n\t\t\t\t\t\t\t`to avoid confusing behavior, such as the component not rendering initially ` +\n\t\t\t\t\t\t\t`because this.state would not have changed between init() and the first time ` +\n\t\t\t\t\t\t\t`main() is called. To skip this warning and retain this.state after init(), ` +\n\t\t\t\t\t\t\t`set this.hasStatePreMain = true in the ${self.type} constructor.`\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.emit('postInit')\n\t\t\treturn api\n\t\t} catch (error) {\n\t\t\tconsole.log('error:', error)\n\t\t\tif (self?.bus) self.bus.emit('postInit', null, 0, error)\n\t\t\tif (!self?.printError) throw error\n\t\t}\n\t}\n}\n\n/*\n\tmay apply overrides to instance opts\n\tif there is an instance.type key in app.opts\n*/\nexport function getOpts(_opts, instance) {\n\tconst opts = Object.assign({}, instance.opts || {}, _opts)\n\tif (!instance.app) return opts\n\tif (instance.type in instance.app.opts) {\n\t\t/*\n\t\t\tAlways override opts with any app.opts that is available\n\t\t\tfor the instance's component type, supplied as an appInit() argument.\n\n\t\t\tTODO: May want the ability to NOT override an existing key-value\n\t\t\tin opts, only apply app.opts[instance.type] override for key-values\n\t\t\tthat are not in opts. Need to see an actual use case before working on this.\n\t\t*/\n\t\tconst overrides = instance.app.opts[instance.type]\n\t\tif (instance.validateOpts) instance.validateOpts(overrides)\n\t\tcopyMerge(opts, overrides)\n\t}\n\tif ('debug' in instance.app) opts.debug = instance.app.debug\n\telse if (instance.app.opts && 'debug' in instance.app.opts) opts.debug = instance.app.opts.debug\n\treturn opts\n}\n\n/*\n\tParallelize the potentially async initialization of multiple components\n\n\tinitPromises{}\n\t- keys: component names\n\t- values: Promise\n*/\nexport async function multiInit(initPromises) {\n\tconst components = {}\n\tawait Promise.all(Object.values(initPromises))\n\tfor (const name in initPromises) {\n\t\tcomponents[name] = await initPromises[name]\n\t}\n\treturn components\n}\n\n/****************\n API Generators\n*****************/\n\n// deprecated: use StoreApi\nexport function prepStore(self, opts) {\n\tif (self.validateOpts) self.validateOpts(opts)\n\tself.app = opts.app\n\tself.opts = getOpts(opts, self)\n\tself.api = getStoreApi(self)\n\tself.copyMerge = copyMerge\n\tself.deepFreeze = deepFreeze\n\t// see comments on when not to reuse rx.fromJson, rx.toJson\n\tif (!self.fromJson) self.fromJson = fromJson // used in store.api.copyState()\n\tif (!self.toJson) self.toJson = toJson // used in store.api.copyState()\n\tself.state = copyMerge(self.toJson(self.defaultState), opts.state)\n\tif (self.validateState) self.validateState()\n}\n\n// the action.sequenceId can be used by a chart/app\n// to identify the state that corresponds to an async step\n// like a server data request, so that a really late-arriving data\n// can be rejected if the state that was associated with that requested\n// is already stale/superseded by a subsequent state update\nlet sequenceId = 0\n\n/*\ntype RxAction = {\n type: string // one of the methods in [StoreClass].prototype.actions, for example see mass/store.js\n id?: string // a component identifier to help with routing the dispatched action\n [key=string]: any // the payload, depends on the action.type, can make this action into a union\n\n _notificationRoot_?: RxComponentApi[] \n\t\t\t\t\t\t\t\t\t\t\t\t// may be used to directly notify specific components that are known to be affected by an action,\n \t\t\t\t\t\t\t\t\t\t// this will cause the dispatch notification to skip all components above or outside the \n \t\t\t\t\t\t\t\t\t\t// _notificationRoot_, !!! use only rarely when absolutely sure of excluding other components !!!\n\n _scope_?: 'none' | 'local' | 'global'\n \t\t\t\t\t\t\t\t\t\t\t// indicates where this action should be tracked by a history tracker such as a recover component\n // NOTE: may be deprecated(???) in favor of ._notificationRoot_\n}\n*/\n\n// deprecated: use StoreApi\nexport function getStoreApi(self) {\n\tself.history = []\n\tself.currIndex = -1\n\tlet numPromisedWrites = 0\n\tconst api = {\n\t\t// action: RxAction\n\t\tasync write(action) {\n\t\t\t// to allow an app or chart code to fail due to race condition,\n\t\t\t// hardcode a constant value or comment out the ++ for the sequenceID\n\t\t\t// !!! CRITICAL TO INCREMENT THIS !!!\n\t\t\taction.sequenceId = sequenceId++\n\t\t\t// avoid calls to inherited methods\n\t\t\tconst actions = self.constructor.prototype.actions\n\t\t\tif (!actions) {\n\t\t\t\tthrow `no store actions specified`\n\t\t\t}\n\t\t\tif (!Object.keys(actions).includes(action.type)) {\n\t\t\t\tthrow `Action=${action.type} must be declared in an \"actions\" property of a class.`\n\t\t\t}\n\t\t\tif (typeof actions[action.type] !== 'function') {\n\t\t\t\tthrow `invalid action type=${action.type}`\n\t\t\t}\n\t\t\tawait actions[action.type].call(self, action)\n\t\t\t// quick fix?? add custom state properties to the state to trigger special action-related handling\n\t\t\t// _scope_:\n\t\t\tself.state._scope_ = action._scope_\n\t\t\tif (!self.opts.debounceInterval) return api.copyState()\n\n\t\t\t// track the #\n\t\t\tnumPromisedWrites += 1\n\t\t\tlet decrement = -1\n\t\t\treturn new Promise(resolve => {\n\t\t\t\tconst interval = setInterval(() => {\n\t\t\t\t\tnumPromisedWrites += decrement\n\t\t\t\t\tdecrement = 0\n\t\t\t\t\tif (numPromisedWrites > 0) return\n\t\t\t\t\tclearInterval(interval)\n\t\t\t\t\tresolve(api.copyState())\n\t\t\t\t}, self.opts.debounceInterval)\n\t\t\t})\n\t\t},\n\t\tasync copyState() {\n\t\t\tconst stateCopy = self.fromJson(self.toJson(self.state))\n\t\t\tself.deepFreeze(stateCopy)\n\t\t\treturn stateCopy\n\t\t}\n\t}\n\treturn api\n}\n\n// deprecated: use AppApi\nexport function prepApp(self, opts) {\n\ttry {\n\t\tif (self.validateOpts) self.validateOpts(opts)\n\t\tif ('id' in opts) self.id = opts[self.type].id\n\t\tself.opts = opts\n\t\tself.api = getAppApi(self)\n\t} catch (e) {\n\t\tconsole.error(e)\n\t\tif (self.printError) self.printError(e)\n\t\telse alert(e)\n\t}\n}\n\n// deprecated: use AppApi\nexport function getAppApi(self) {\n\t// optional registry for component instances\n\tconst componentsByType: { [name: string]: any } = {}\n\tconst middlewares: any[] = []\n\tlet latestActionSequenceId\n\tconst api = {\n\t\ttype: self.type,\n\t\topts: self.opts,\n\t\t// action: RxAction\n\t\tasync dispatch(action) {\n\t\t\tself.bus.emit('preDispatch')\n\t\t\ttry {\n\t\t\t\tif (middlewares.length) {\n\t\t\t\t\tfor (const fxn of middlewares.slice()) {\n\t\t\t\t\t\tconst result = await fxn(action)\n\t\t\t\t\t\tif (result) {\n\t\t\t\t\t\t\tif (result.cancel) return\n\t\t\t\t\t\t\tif (result.error) throw result.error\n\t\t\t\t\t\t\tif (result.deactivate) {\n\t\t\t\t\t\t\t\tmiddlewares.splice(middlewares.indexOf(fxn), 1)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// expect store.write() to be debounced and handle rapid succession of dispatches\n\t\t\t\t// replace app.state if there is an action\n\t\t\t\tif (action) self.state = await self.store.write(action)\n\t\t\t\tlatestActionSequenceId = action?.sequenceId\n\t\t\t\t// TODO: may need to group calls to self.main by action type and plot.id,\n\t\t\t\t// in order to debounce correctly\n\t\t\t\tif (self.main) await self.main()\n\t\t\t\tconst current = { action, appState: self.state }\n\t\t\t\tawait notifyComponents(current.action?._notificationRoot_ || self.components, current)\n\t\t\t} catch (e) {\n\t\t\t\tif (self.wasDestroyed) return\n\t\t\t\tif (self.bus && latestActionSequenceId == action?.sequenceId) self.bus.emit('error')\n\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\telse console.log(e)\n\t\t\t}\n\t\t\t// do not emit a postRender event if the action has become stale\n\t\t\tif (self.bus && latestActionSequenceId == action?.sequenceId) self.bus.emit('postRender')\n\t\t},\n\t\t// action: RxAction\n\t\tasync save(action) {\n\t\t\t// save changes to store, do not notify components\n\t\t\tself.state = await self.store.write(action)\n\t\t\t// TODO: may generalize to use the key instead of hardcoding to only .recover\n\t\t\tif (componentsByType.recover) {\n\t\t\t\tfor (const id in componentsByType.recover) {\n\t\t\t\t\tconst api = componentsByType.recover[id]\n\t\t\t\t\t// note: store.write() returns a frozen state, so safe to pass as argument\n\t\t\t\t\tapi.replaceLastState(self.state)\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetState() {\n\t\t\treturn self.state\n\t\t},\n\t\t// fxn: RxAction => void\n\t\tmiddle(fxn) {\n\t\t\t/*\n\t\t\tadd middlewares prior to calling dispatch()\n\t\t\t\n\t\t\tfxn(action: RxAction) \n\t\t\t- called in the order of being added to middlewares array\n\t\t\t- must accept an action{} argument\n\t\t\t- do not return any value to eventually reach dispatch()\n\t\t\t - OR -\n\t\t\t- optionally return an object{}\n\t\t\t\t.error: \"string\" will throw\n\t\t\t\t.cancel: true will cancel dispatch\n\t\t\t\t.deactivate: true will remove the fxn from the middlewares array\n\t\t\t*/\n\t\t\tif (typeof fxn !== 'function') throw `a middleware must be a function`\n\t\t\tif (middlewares.includes(fxn)) throw `the function is already in the middlewares array`\n\t\t\tmiddlewares.push(fxn)\n\t\t\treturn api\n\t\t},\n\t\t// must not expose this.bus directly since that\n\t\t// will also expose bus.emit() which should only\n\t\t// be triggered by this component\n\t\ton(eventType, callback) {\n\t\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\t\tself.bus.on(eventType, callback)\n\t\t\treturn api\n\t\t},\n\t\tgetComponents(dotSepNames = '') {\n\t\t\treturn getComponents(self.components, dotSepNames)\n\t\t},\n\t\tregister(api) {\n\t\t\tif (!componentsByType[api.type]) componentsByType[api.type] = {}\n\t\t\tcomponentsByType[api.type][api.id] = api\n\t\t},\n\t\tderegister(api) {\n\t\t\tif (componentsByType[api.type]?.[api.id]) delete componentsByType[api.type][api.id]\n\t\t},\n\t\ttriggerAbort(reason = '') {\n\t\t\tif (reason) if (reason) console.info(`triggerAbort()`, reason)\n\t\t\tfor (const name of Object.keys(self.components)) {\n\t\t\t\tconst component = self.components[name]\n\t\t\t\tif (!component) continue\n\t\t\t\tif (Array.isArray(component)) {\n\t\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t\t} else if (typeof component == 'object') {\n\t\t\t\t\tif (Object.keys(component).includes('triggerAbort')) {\n\t\t\t\t\t\tcomponent.triggerAbort()\n\t\t\t\t\t} else if (!component.main) {\n\t\t\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdestroy() {\n\t\t\t// delete references to other objects to make it easier\n\t\t\t// for automatic garbage collection to find unreferenced objects\n\t\t\tfor (const key in self.components) {\n\t\t\t\tconst component = self.components[key]\n\t\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\t\tcomponent.destroy()\n\t\t\t\t} else if (component.holder) {\n\t\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t\t}\n\t\t\t\tdelete self.components[key]\n\t\t\t}\n\t\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\t\tif (self.dom) {\n\t\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\t\tfor (const key in self.dom) {\n\t\t\t\t\tdelete self.dom[key]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.destroy()\n\t\t\tdelete self.store\n\t\t\tif (self.api) delete self.api\n\t\t\tself.wasDestroyed = true\n\t\t}\n\t}\n\n\tif (!self.bus) {\n\t\tif (!self.eventTypes) self.eventTypes = ['preDispatch', 'postInit', 'postRender', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\t// set up a required event bus\n\t\tconst callbacks = (self.opts.app && self.opts.app.callbacks) || self.opts.callbacks || {}\n\t\tself.bus = new Bus(api, self.eventTypes, callbacks)\n\t}\n\treturn api\n}\n\n// deprecated: use ComponentApi\nexport function prepComponent(self, opts) {\n\tif (!opts.app) throw `missing self.opts.app in prepComponent(${self.type})`\n\tself.app = opts.app\n\tself.opts = getOpts(opts, self)\n\tif (self.validateOpts) self.validateOpts(opts)\n\t// the component type + id may be used later to\n\t// simplify getting its state from the store\n\tif ('id' in opts) self.id = self.opts.id\n\tself.api = getComponentApi(self)\n}\n\n// deprecated: use ComponentApi\nexport function getComponentApi(self) {\n\tif (!('type' in self)) {\n\t\tthrow `The component's type must be set before calling this.getComponentApi(this).`\n\t}\n\n\t// track abortController instances to optionally cancel active async steps,\n\t// for example to cancel matrix data requests when the view is closed\n\tconst abortControllers = new Set()\n\n\t// remember the action.sequenceId that caused the last state change\n\tlet latestActionSequenceId, abortController\n\n\tconst api = {\n\t\ttype: self.type,\n\t\tid: self.id,\n\t\t// current: {action: RxAction, appState}\n\t\tasync update(current) {\n\t\t\tif (current.action && self.reactsTo && !self.reactsTo(current.action)) return\n\t\t\tconst componentState = self.getState ? self.getState(current.appState) : current.appState\n\t\t\t// no new state computed for this component\n\t\t\tif (!componentState) return\n\t\t\t// force update if there is no action, or\n\t\t\t// if the current and pending state is not equal\n\t\t\tif (!current.action || !deepEqual(componentState, self.state)) {\n\t\t\t\tif (current.action) latestActionSequenceId = current.action.sequenceId\n\t\t\t\tif (abortController) abortController.abort()\n\t\t\t\tif (self.mainArg == 'state') {\n\t\t\t\t\t// some components may require passing state to its .main() method,\n\t\t\t\t\t// for example when extending a simple object class into an rx-component\n\t\t\t\t\tawait self.main(componentState)\n\t\t\t\t} else {\n\t\t\t\t\tself.state = componentState\n\t\t\t\t\tif (self.main) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tawait self.main()\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\tif (self.bus) self.bus.emit('error')\n\t\t\t\t\t\t\tthrow e\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tabortController = undefined\n\t\t\t}\n\t\t\ttry {\n\t\t\t\t// notify children\n\t\t\t\tawait notifyComponents(self.components, current)\n\t\t\t\tif (self.bus && (!current.action || current.action.sequenceId === latestActionSequenceId))\n\t\t\t\t\tself.bus.emit('postRender')\n\t\t\t\treturn api\n\t\t\t} catch (e: any) {\n\t\t\t\tif (self.printError) self.printError(e)\n\t\t\t\telse if (self.dom?.errdiv) throw { message: e.message || e.error || e, errdiv: self.dom?.errdiv }\n\t\t\t\telse throw e\n\t\t\t}\n\t\t},\n\t\t// must not expose self.bus directly since that\n\t\t// will also expose bus.emit() which should only\n\t\t// be triggered by this component\n\t\ton(eventType, callback) {\n\t\t\tif (!self.eventTypes) throw `no eventTypes[] for ${self.type} component`\n\t\t\tself.bus.on(eventType, callback)\n\t\t\treturn api\n\t\t},\n\t\tgetComponents(dotSepNames = '') {\n\t\t\treturn getComponents(self.components, dotSepNames)\n\t\t},\n\t\t//\n\t\t// When an async function takes a while to resolve, such as for server requests,\n\t\t// a subsequent action may trigger another request before the first one resolves,\n\t\t// in that case should ignore the stale response/result from the async function.\n\t\t// This is an api function so that code that has access to this component api\n\t\t// can also tie-in a function call to the fresheness of the component action.\n\t\t//\n\t\tasync detectStale(asyncFxn, opts: { abortCtrl?: AbortController; wait?: number } = {}) {\n\t\t\ttry {\n\t\t\t\tconst actionSequenceId = latestActionSequenceId\n\t\t\t\tconst promises: any[] = []\n\t\t\t\tlet i, promResolve\n\t\t\t\tif (opts.abortCtrl) {\n\t\t\t\t\tabortControllers.add(opts.abortCtrl)\n\t\t\t\t\tpromises.push(\n\t\t\t\t\t\tnew Promise((resolve, reject) => {\n\t\t\t\t\t\t\tpromResolve = resolve\n\t\t\t\t\t\t\ti = setInterval(() => {\n\t\t\t\t\t\t\t\tif (actionSequenceId !== latestActionSequenceId) {\n\t\t\t\t\t\t\t\t\tclearInterval(i)\n\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\topts.abortCtrl?.abort()\n\t\t\t\t\t\t\t\t\t\tthrow `stale sequenceId`\n\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\treject(e)\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}, opts.wait || 100)\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tpromises.push(asyncFxn())\n\t\t\t\t// the setInterval does not resolve, so Promise.race can only be \"won\" by the asyncFxn() result,\n\t\t\t\t// but the race can be aborted by the reject() inside the setInterval\n\t\t\t\tconst result = await Promise.race(promises)\n\t\t\t\tif (i) clearInterval(i)\n\t\t\t\tif (promResolve) promResolve()\n\t\t\t\tif (opts.abortCtrl && abortControllers.has(opts.abortCtrl)) abortControllers.delete(opts.abortCtrl)\n\t\t\t\tif (latestActionSequenceId !== actionSequenceId) {\n\t\t\t\t\t// another state change has been dispatched between the start and completion of the server request\n\t\t\t\t\tconsole.warn('aborted state update, the returned data corresponds to a stale action.sequenceId')\n\t\t\t\t\tif (opts.abortCtrl) opts.abortCtrl.abort()\n\t\t\t\t\treturn [result, true]\n\t\t\t\t}\n\t\t\t\treturn [result]\n\t\t\t} catch (e) {\n\t\t\t\tif (typeof e == 'string' && e.includes('sequenceId')) console.warn(e)\n\t\t\t\tthrow e\n\t\t\t}\n\t\t},\n\t\tgetAbortSignal() {\n\t\t\tif (!abortController) abortController = new AbortController()\n\t\t\treturn abortController?.signal\n\t\t\t// NOTE: the same signal can be reused to cancel different fetch requests, as tested pasting and running the following in the browser console:\n\t\t\t// > const ac = new AbortController(); for(let i=0; i<3; i++) fetch('/healthcheck', {signal: ac.signal}).then(r=>r.json()).then(console.log).catch(console.log); const t = setTimeout(()=>ac.abort('stale sequenceId'), 0);\n\t\t\t// stale sequenceId // repeats 3x\n\t\t\t// // can also change timeout to 1000, to see that aborting is okay after the signaled fetch completes\n\t\t},\n\t\ttriggerAbort(reason = '') {\n\t\t\tif (reason) console.info(`triggerAbort()`, reason)\n\t\t\tfor (const c of (abortControllers as Set<AbortController>).values()) {\n\t\t\t\ttry {\n\t\t\t\t\tc.abort()\n\t\t\t\t\tabortControllers.delete(c)\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// ok to\n\t\t\t\t\tconsole.warn('unable to cancel fetch: ', e)\n\t\t\t\t\tabortControllers.delete(c)\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (!self.components) return\n\t\t\tfor (const name of Object.keys(self.components)) {\n\t\t\t\tconst component = self.components[name]\n\t\t\t\tif (Array.isArray(component)) {\n\t\t\t\t\tfor (const c of component) c.triggerAbort()\n\t\t\t\t} else if (Object.keys(component).includes('triggerAbort')) {\n\t\t\t\t\tcomponent.triggerAbort()\n\t\t\t\t} else if (component && typeof component == 'object' && !component.main) {\n\t\t\t\t\tfor (const subname of Object.keys(component)) {\n\t\t\t\t\t\tif (typeof component[subname].triggerAbort == 'function') {\n\t\t\t\t\t\t\tcomponent[subname].triggerAbort()\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tgetSequenceId() {\n\t\t\treturn latestActionSequenceId\n\t\t},\n\t\tisStaleSequenceId(sequenceId) {\n\t\t\treturn sequenceId != latestActionSequenceId\n\t\t},\n\t\tdestroy() {\n\t\t\t// delete references to other objects to make it easier\n\t\t\t// for automatic garbage collection to find unreferenced objects\n\t\t\tself.app.deregister(self.api)\n\t\t\tfor (const key in self.components) {\n\t\t\t\tconst component = self.components[key]\n\t\t\t\tif (typeof component.destroy == 'function') {\n\t\t\t\t\tcomponent.destroy()\n\t\t\t\t} else if (component.holder) {\n\t\t\t\t\tcomponent.holder.selectAll('*').remove()\n\t\t\t\t}\n\t\t\t\tdelete self.components[key]\n\t\t\t}\n\t\t\tif (typeof self.destroy == 'function') self.destroy()\n\t\t\tif (self.dom) {\n\t\t\t\tif (self.dom.holder) self.dom.holder.selectAll('*').remove()\n\t\t\t\tfor (const key in self.dom) {\n\t\t\t\t\tif (typeof self.dom[key]?.remove == 'function') self.dom[key].remove()\n\t\t\t\t\tdelete self.dom[key]\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (self.bus) self.bus.destroy()\n\t\t\tif (self.api) delete self.api\n\t\t}\n\t}\n\n\tif (!self.bus) {\n\t\tif (!self.eventTypes) self.eventTypes = ['postInit', 'postRender', 'postPrintError', 'firstRender', 'error']\n\t\tif (self.customEvents) self.eventTypes.push(...self.customEvents)\n\t\t// set up a required event bus\n\t\tself.bus = new Bus(api, self.eventTypes, (self.opts && self.opts.callbacks) || {})\n\t}\n\n\t// must not freeze returned api, as getInitFxn() will add api.Inner\n\treturn api\n}\n", "import { type AppApi } from './AppApi'\n\nexport class StoreBase {\n\ttype: string = 'store'\n\tapp: AppApi\n\t//type: string\n\t//id: string\n\topts: any\n\tid: string\n\tstate: any\n\t// dom: any\n\t// config: any\n\n\t/** use for assigning unique IDs where needed\n\t * may be used later to simplify getting component state by type and id */\n\tprevGeneratedId = 0\n\n\t// the action.sequenceId can be used by a chart/app\n\t// to identify the state that corresponds to an async step\n\t// like a server data request, so that a really late-arriving data\n\t// can be rejected if the state that was associated with that requested\n\t// is already stale/superseded by a subsequent state update\n\tsequenceId: number = 0\n\n\tnumPromisedWrites: number = 0\n\n\tconstructor(opts) {\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.app = this.opts.app\n\t\tthis.id = opts.id\n\t}\n\n\tvalidateOpts(o: any = {}) {\n\t\treturn o\n\t}\n\n\tfromJson(objStr) {\n\t\t// this base method should not be reused when there is\n\t\t// a need to recover any Set or Map values, instead\n\t\t// declare a class specific fromJson() method that has\n\t\t// new Set(arrOfValues) or new Map(arrOfPairedValues)\n\t\t//\n\t\t// also, do not use this when autogenerated IDs\n\t\t// need to be attached to list entries\n\t\t//\n\t\treturn JSON.parse(objStr)\n\t}\n\n\ttoJson(this: any, obj: any = null) {\n\t\t// this base method should not be reused when there is\n\t\t// a need to stringify any Set or Map values,\n\t\t// instead declare a class specific toJson() method\n\t\t// that converts any Set or Map values to\n\t\t// [...Set] or [...Map] before JSON.stringify()\n\t\treturn JSON.stringify(obj ? obj : this.state)\n\t}\n\n\tdeepFreeze(obj) {\n\t\tObject.freeze(obj)\n\t\t// not using for..in loop, in order to not descend into inherited props/methods\n\t\tfor (const value of Object.values(obj)) {\n\t\t\tif (value !== null && typeof value == 'object') this.deepFreeze(value)\n\t\t}\n\t}\n\n\tcopyMerge(base, ...args) {\n\t\tconst target = typeof base == 'string' ? this.fromJson(base) : base\n\t\tfor (const arg of args) {\n\t\t\tif (arg) {\n\t\t\t\tconst source = typeof base == 'string' ? this.fromJson(this.toJson(arg)) : arg\n\t\t\t\tfor (const key in source) {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!target[key] ||\n\t\t\t\t\t\tArray.isArray(target[key]) ||\n\t\t\t\t\t\ttypeof target[key] !== 'object' ||\n\t\t\t\t\t\tsource === null ||\n\t\t\t\t\t\tsource === undefined ||\n\t\t\t\t\t\tsource.isAtomic ||\n\t\t\t\t\t\ttarget?.isAtomic ||\n\t\t\t\t\t\ttarget[key]?.isAtomic\n\t\t\t\t\t)\n\t\t\t\t\t\ttarget[key] = source[key]\n\t\t\t\t\telse this.copyMerge(target[key], source[key])\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn target\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["sequenceId", "sequenceId", "api", "sequenceId"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import {
|
|
2
|
+
TermTypeGroups,
|
|
3
|
+
dtTerms,
|
|
4
|
+
dtgeneexpression,
|
|
5
|
+
dtmetaboliteintensity,
|
|
6
|
+
dtssgsea
|
|
7
|
+
} from "./chunk-6VQ4C735.js";
|
|
8
|
+
|
|
9
|
+
// ../shared/utils/src/terms.js
|
|
10
|
+
var ROOT_SAMPLE_TYPE = 1;
|
|
11
|
+
var DEFAULT_SAMPLE_TYPE = 2;
|
|
12
|
+
var NumericModes = {
|
|
13
|
+
continuous: "continuous",
|
|
14
|
+
discrete: "discrete"
|
|
15
|
+
};
|
|
16
|
+
var TermTypes = {
|
|
17
|
+
GENE_VARIANT: "geneVariant",
|
|
18
|
+
GENE_EXPRESSION: "geneExpression",
|
|
19
|
+
SSGSEA: "ssGSEA",
|
|
20
|
+
CATEGORICAL: "categorical",
|
|
21
|
+
INTEGER: "integer",
|
|
22
|
+
FLOAT: "float",
|
|
23
|
+
SNP: "snp",
|
|
24
|
+
SNP_LIST: "snplst",
|
|
25
|
+
SNP_LOCUS: "snplocus",
|
|
26
|
+
CONDITION: "condition",
|
|
27
|
+
SURVIVAL: "survival",
|
|
28
|
+
SAMPLELST: "samplelst",
|
|
29
|
+
METABOLITE_INTENSITY: "metaboliteIntensity",
|
|
30
|
+
SINGLECELL_GENE_EXPRESSION: "singleCellGeneExpression",
|
|
31
|
+
SINGLECELL_CELLTYPE: "singleCellCellType",
|
|
32
|
+
MULTIVALUE: "multivalue",
|
|
33
|
+
DATE: "date",
|
|
34
|
+
TERM_COLLECTION: "termCollection"
|
|
35
|
+
};
|
|
36
|
+
var dtTermTypes = new Set(dtTerms.map((t) => t.type));
|
|
37
|
+
for (const dtTermType of dtTermTypes) {
|
|
38
|
+
TermTypes[dtTermType.toUpperCase()] = dtTermType;
|
|
39
|
+
}
|
|
40
|
+
var NUMERIC_DICTIONARY_TERM = "numericDictTerm";
|
|
41
|
+
var TermTypes2Dt = {
|
|
42
|
+
[TermTypes.GENE_EXPRESSION]: dtgeneexpression,
|
|
43
|
+
[TermTypes.SSGSEA]: dtssgsea,
|
|
44
|
+
[TermTypes.METABOLITE_INTENSITY]: dtmetaboliteintensity
|
|
45
|
+
};
|
|
46
|
+
var typeGroup = {
|
|
47
|
+
[TermTypes.CATEGORICAL]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
48
|
+
[TermTypes.CONDITION]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
49
|
+
[TermTypes.FLOAT]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
50
|
+
[TermTypes.INTEGER]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
51
|
+
[TermTypes.SAMPLELST]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
52
|
+
[TermTypes.SURVIVAL]: TermTypeGroups.DICTIONARY_VARIABLES,
|
|
53
|
+
[TermTypes.GENE_VARIANT]: TermTypeGroups.MUTATION_CNV_FUSION,
|
|
54
|
+
[TermTypes.SNP]: TermTypeGroups.SNP,
|
|
55
|
+
[TermTypes.SNP_LIST]: TermTypeGroups.SNP_LIST,
|
|
56
|
+
[TermTypes.SNP_LOCUS]: TermTypeGroups.SNP_LOCUS,
|
|
57
|
+
[TermTypes.GENE_EXPRESSION]: TermTypeGroups.GENE_EXPRESSION,
|
|
58
|
+
[TermTypes.SSGSEA]: TermTypeGroups.SSGSEA,
|
|
59
|
+
[TermTypes.METABOLITE_INTENSITY]: TermTypeGroups.METABOLITE_INTENSITY,
|
|
60
|
+
[TermTypes.TERM_COLLECTION]: TermTypeGroups.TERM_COLLECTION
|
|
61
|
+
};
|
|
62
|
+
var nonDictTypes = /* @__PURE__ */ new Set([
|
|
63
|
+
TermTypes.SNP,
|
|
64
|
+
TermTypes.SNP_LIST,
|
|
65
|
+
TermTypes.SNP_LOCUS,
|
|
66
|
+
TermTypes.GENE_EXPRESSION,
|
|
67
|
+
TermTypes.SSGSEA,
|
|
68
|
+
TermTypes.GENE_VARIANT,
|
|
69
|
+
TermTypes.METABOLITE_INTENSITY,
|
|
70
|
+
TermTypes.SINGLECELL_GENE_EXPRESSION,
|
|
71
|
+
TermTypes.SINGLECELL_CELLTYPE
|
|
72
|
+
]);
|
|
73
|
+
for (const dtTermType of dtTermTypes) {
|
|
74
|
+
nonDictTypes.add(TermTypes[dtTermType.toUpperCase()]);
|
|
75
|
+
}
|
|
76
|
+
var numericTypes = /* @__PURE__ */ new Set([
|
|
77
|
+
TermTypes.INTEGER,
|
|
78
|
+
TermTypes.FLOAT,
|
|
79
|
+
TermTypes.GENE_EXPRESSION,
|
|
80
|
+
TermTypes.SSGSEA,
|
|
81
|
+
TermTypes.METABOLITE_INTENSITY,
|
|
82
|
+
TermTypes.SINGLECELL_GENE_EXPRESSION,
|
|
83
|
+
TermTypes.DATE
|
|
84
|
+
]);
|
|
85
|
+
var annoNumericTypes = /* @__PURE__ */ new Set([TermTypes.INTEGER, TermTypes.FLOAT, TermTypes.DATE]);
|
|
86
|
+
var categoricalTypes = /* @__PURE__ */ new Set([TermTypes.CATEGORICAL, TermTypes.SNP]);
|
|
87
|
+
var singleSampleTerms = /* @__PURE__ */ new Set([TermTypes.SINGLECELL_GENE_EXPRESSION]);
|
|
88
|
+
function isNumericTerm(term) {
|
|
89
|
+
if (!term) return false;
|
|
90
|
+
return numericTypes.has(term.type);
|
|
91
|
+
}
|
|
92
|
+
function isCategoricalTerm(term) {
|
|
93
|
+
if (!term) return false;
|
|
94
|
+
return categoricalTypes.has(term.type);
|
|
95
|
+
}
|
|
96
|
+
function isDictionaryType(type) {
|
|
97
|
+
return !isNonDictionaryType(type);
|
|
98
|
+
}
|
|
99
|
+
function isNonDictionaryType(type) {
|
|
100
|
+
if (!type) throw new Error("Type is not defined");
|
|
101
|
+
return nonDictTypes.has(type);
|
|
102
|
+
}
|
|
103
|
+
function equals(t1, t2) {
|
|
104
|
+
if (!t1) throw new Error("First term is not defined ");
|
|
105
|
+
if (!t2) throw new Error("Second term is not defined ");
|
|
106
|
+
if (t1.type !== t2.type) return false;
|
|
107
|
+
if (isDictionaryType(t1.type) && isDictionaryType(t2.type) && t1.type != TermTypes.SAMPLELST) return t1.id === t2.id;
|
|
108
|
+
switch (t1.type) {
|
|
109
|
+
case TermTypes.GENE_EXPRESSION:
|
|
110
|
+
return t1.gene == t2.gene;
|
|
111
|
+
case TermTypes.SSGSEA:
|
|
112
|
+
return t1.id == t2.id;
|
|
113
|
+
case TermTypes.METABOLITE_INTENSITY:
|
|
114
|
+
return t1.name == t2.name;
|
|
115
|
+
case TermTypes.GENE_VARIANT:
|
|
116
|
+
return t1.gene == t2.gene || t1.chr == t2.chr && t1.start == t2.start && t1.stop == t2.stop;
|
|
117
|
+
// TO DO: Add more cases
|
|
118
|
+
// case TermTypes.SNP_LIST:
|
|
119
|
+
// case TermTypes.SNP_LOCUS:
|
|
120
|
+
// case TermTypes.SAMPLELST:
|
|
121
|
+
default:
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
var typeMap = {
|
|
126
|
+
categorical: "Categorical",
|
|
127
|
+
condition: "Condition",
|
|
128
|
+
float: "Numerical",
|
|
129
|
+
integer: "Numerical",
|
|
130
|
+
geneExpression: "Gene Expression",
|
|
131
|
+
ssGSEA: "Geneset Expression",
|
|
132
|
+
geneVariant: "Gene Variant",
|
|
133
|
+
metaboliteIntensity: "Metabolite Intensity",
|
|
134
|
+
multiValue: "Multi Value",
|
|
135
|
+
singleCellGeneExpression: "Single Cell, Gene Expression",
|
|
136
|
+
singleCellCellType: "Single Cell, Cell Type",
|
|
137
|
+
snplocus: "SNP Locus",
|
|
138
|
+
snp: "SNP",
|
|
139
|
+
snplst: "SNP List",
|
|
140
|
+
numericDictTerm: "Numeric Dictionary Term",
|
|
141
|
+
termCollection: "Term Collection"
|
|
142
|
+
};
|
|
143
|
+
function termType2label(type) {
|
|
144
|
+
return typeMap[type] || "Unknown term type";
|
|
145
|
+
}
|
|
146
|
+
function getDateFromNumber(value) {
|
|
147
|
+
const year = Math.floor(value);
|
|
148
|
+
const january1st = new Date(year, 0, 1);
|
|
149
|
+
const totalDays = getDaysInYear(year);
|
|
150
|
+
const time = Math.round((value - year) * totalDays) * oneDayTime;
|
|
151
|
+
const date = new Date(january1st.getTime() + time);
|
|
152
|
+
return date;
|
|
153
|
+
}
|
|
154
|
+
var oneDayTime = 24 * 60 * 60 * 1e3;
|
|
155
|
+
function getDateStrFromNumber(value) {
|
|
156
|
+
const date = getDateFromNumber(value);
|
|
157
|
+
return date.toLocaleDateString("en-US", {
|
|
158
|
+
year: "numeric",
|
|
159
|
+
month: "long"
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
function getNumberFromDate(date) {
|
|
163
|
+
const year = date.getFullYear();
|
|
164
|
+
const january1st = new Date(year, 0, 1);
|
|
165
|
+
const diffDays = (date - january1st) / oneDayTime;
|
|
166
|
+
const daysTotal = getDaysInYear(year);
|
|
167
|
+
const decimal = diffDays / daysTotal;
|
|
168
|
+
return year + decimal;
|
|
169
|
+
}
|
|
170
|
+
function getDaysInYear(year) {
|
|
171
|
+
const isLeap = new Date(year, 1, 29).getMonth() === 1;
|
|
172
|
+
const days = isLeap ? 366 : 365;
|
|
173
|
+
return days;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export {
|
|
177
|
+
ROOT_SAMPLE_TYPE,
|
|
178
|
+
DEFAULT_SAMPLE_TYPE,
|
|
179
|
+
NumericModes,
|
|
180
|
+
TermTypes,
|
|
181
|
+
dtTermTypes,
|
|
182
|
+
NUMERIC_DICTIONARY_TERM,
|
|
183
|
+
TermTypes2Dt,
|
|
184
|
+
typeGroup,
|
|
185
|
+
numericTypes,
|
|
186
|
+
isNumericTerm,
|
|
187
|
+
isCategoricalTerm,
|
|
188
|
+
isDictionaryType,
|
|
189
|
+
isNonDictionaryType,
|
|
190
|
+
equals,
|
|
191
|
+
termType2label,
|
|
192
|
+
getDateFromNumber,
|
|
193
|
+
getDateStrFromNumber,
|
|
194
|
+
getNumberFromDate
|
|
195
|
+
};
|
|
196
|
+
//# sourceMappingURL=chunk-DKI7YOTJ.js.map
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getEmptyCell,
|
|
3
|
+
maySetEmptyCell,
|
|
4
|
+
setCellProps
|
|
5
|
+
} from "./chunk-OARG7PAV.js";
|
|
6
|
+
import {
|
|
7
|
+
__export
|
|
8
|
+
} from "./chunk-HFNDKYVF.js";
|
|
9
|
+
|
|
10
|
+
// plots/matrix/matrix.serieses.js
|
|
11
|
+
var matrix_serieses_exports = {};
|
|
12
|
+
__export(matrix_serieses_exports, {
|
|
13
|
+
getSerieses: () => getSerieses
|
|
14
|
+
});
|
|
15
|
+
function getSerieses(data) {
|
|
16
|
+
const s = this.settings.matrix;
|
|
17
|
+
const serieses = [];
|
|
18
|
+
const { colw, dx, dy, xMin, xMax } = this.dimensions;
|
|
19
|
+
const dvt = this.config.divideBy || {};
|
|
20
|
+
const divideByTermId = "id" in dvt ? dvt.id : dvt.name;
|
|
21
|
+
const legendGroups = {};
|
|
22
|
+
this.colorScaleByTermId = {};
|
|
23
|
+
for (const t of this.termOrder) {
|
|
24
|
+
const $id = t.tw.$id;
|
|
25
|
+
const termid = "id" in t.tw.term ? t.tw.term.id : t.tw.term.name;
|
|
26
|
+
const isDivideByTerm = termid === divideByTermId;
|
|
27
|
+
const emptyGridCells = [];
|
|
28
|
+
const cellht = t.grp.type == "hierCluster" ? s.clusterRowh : dy;
|
|
29
|
+
const htAdjust = t.grp.type == "hierCluster" ? 0 : t.totalHtAdjustments;
|
|
30
|
+
const y = s.transpose ? 0 : t.totalIndex * cellht + t.visibleGrpIndex * s.rowgspace + htAdjust;
|
|
31
|
+
const twSpecificSettings = this.config.settings.matrix.twSpecificSettings;
|
|
32
|
+
const hoverY0 = (twSpecificSettings[$id]?.contBarGap || 0) + y;
|
|
33
|
+
const series = {
|
|
34
|
+
t,
|
|
35
|
+
tw: t.tw,
|
|
36
|
+
cells: [],
|
|
37
|
+
y,
|
|
38
|
+
hoverY0,
|
|
39
|
+
hoverY1: hoverY0 + (twSpecificSettings[$id]?.contBarH || cellht)
|
|
40
|
+
};
|
|
41
|
+
for (const so of this.unfilteredSampleOrder) {
|
|
42
|
+
const { totalIndex, grpIndex, row } = so;
|
|
43
|
+
series.x = !s.transpose ? 0 : t.totalIndex * dx + t.visibleGrpIndex * s.colgspace;
|
|
44
|
+
const anno = row[$id];
|
|
45
|
+
const cellTemplate = {
|
|
46
|
+
s: so,
|
|
47
|
+
sample: row.sample,
|
|
48
|
+
tw: t.tw,
|
|
49
|
+
term: t.tw.term,
|
|
50
|
+
termid,
|
|
51
|
+
$id,
|
|
52
|
+
totalIndex,
|
|
53
|
+
grpIndex,
|
|
54
|
+
row,
|
|
55
|
+
t,
|
|
56
|
+
seriesY: y
|
|
57
|
+
};
|
|
58
|
+
if (!anno) {
|
|
59
|
+
if (!so.grp.isExcluded && (s.useCanvas || so.grp)) {
|
|
60
|
+
const cell = getEmptyCell(cellTemplate, s, this.dimensions);
|
|
61
|
+
series.cells.push(cell);
|
|
62
|
+
}
|
|
63
|
+
continue;
|
|
64
|
+
}
|
|
65
|
+
const key = anno.key;
|
|
66
|
+
const values = anno.filteredValues || anno.values || [anno.value];
|
|
67
|
+
const numRects = s.cellEncoding == "oncoprint" ? 1 : values.length;
|
|
68
|
+
const height = !s.transpose ? s.rowh / numRects : colw;
|
|
69
|
+
const width = !s.transpose ? colw : colw / values.length;
|
|
70
|
+
const siblingCells = [];
|
|
71
|
+
if (!anno || !anno.renderedValues?.length) {
|
|
72
|
+
if (!so.grp.isExcluded && (s.useCanvas || so.grp)) {
|
|
73
|
+
const cell = getEmptyCell(cellTemplate, s, this.dimensions);
|
|
74
|
+
series.cells.push(cell);
|
|
75
|
+
}
|
|
76
|
+
continue;
|
|
77
|
+
}
|
|
78
|
+
for (const [i, value] of values.entries()) {
|
|
79
|
+
const cell = Object.assign({ key, siblingCells }, cellTemplate);
|
|
80
|
+
cell.valueIndex = i;
|
|
81
|
+
let legend;
|
|
82
|
+
if (typeof t.tw.setCellProps == "function") {
|
|
83
|
+
legend = t.tw.setCellProps(cell, anno, value, s, t, this, width, height, dx, dy, i);
|
|
84
|
+
} else {
|
|
85
|
+
const cellProps = t.grp.type == "hierCluster" ? setCellProps["hierCluster"] : t.tw.term.type == "geneVariant" && (t.tw?.q?.type == "predefined-groupset" || t.tw?.q?.type == "custom-groupset") || t.tw.term.type == "samplelst" ? setCellProps["categorical"] : setCellProps[t.tw.term.type];
|
|
86
|
+
legend = cellProps(cell, t.tw, anno, value, s, t, this, width, height, dx, dy, i);
|
|
87
|
+
}
|
|
88
|
+
if (!s.useCanvas && (cell.x + cell.width < xMin || cell.x - cell.width > xMax)) continue;
|
|
89
|
+
if (legend) {
|
|
90
|
+
for (const l of [legendGroups, so.grp.legendGroups]) {
|
|
91
|
+
if (!l) continue;
|
|
92
|
+
if (!l[legend.group]) {
|
|
93
|
+
l[legend.group] = {
|
|
94
|
+
ref: legend.ref,
|
|
95
|
+
values: {},
|
|
96
|
+
order: legend.order,
|
|
97
|
+
$id,
|
|
98
|
+
origin: legend.entry.origin
|
|
99
|
+
};
|
|
100
|
+
if (legend.entry.dt) l[legend.group].dt = [legend.entry.dt];
|
|
101
|
+
}
|
|
102
|
+
const lg = l[legend.group];
|
|
103
|
+
if (lg.dt && !lg.dt.includes(legend.entry.dt)) lg.dt.push(legend.entry.dt);
|
|
104
|
+
const legendK = legend.entry.origin ? legend.entry.origin + legend.value : legend.value;
|
|
105
|
+
if (!lg.values[legendK]) {
|
|
106
|
+
lg.values[legendK] = JSON.parse(JSON.stringify(legend.entry));
|
|
107
|
+
if (legend.entry.scale) lg.values[legendK].scale = legend.entry.scale;
|
|
108
|
+
}
|
|
109
|
+
if (!lg.values[legendK].samples) lg.values[legendK].samples = /* @__PURE__ */ new Set();
|
|
110
|
+
lg.values[legendK].samples.add(row.sample);
|
|
111
|
+
if (isDivideByTerm) {
|
|
112
|
+
lg.values[legend.value].isExcluded = so.grp.isExcluded;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (!so.grp.isExcluded) {
|
|
117
|
+
if (anno.renderedValues.includes(value)) series.cells.push(cell);
|
|
118
|
+
siblingCells.push(cell);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
if (s.showGrid == "rect" && !so.grp.isExcluded) {
|
|
122
|
+
const cell = t.grp.type == "hierCluster" ? getEmptyCell(cellTemplate, s, this.dimensions) : maySetEmptyCell[t.tw.term.type]?.(siblingCells, cellTemplate, s, this.dimensions);
|
|
123
|
+
if (cell) emptyGridCells.push(cell);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (emptyGridCells.length) series.cells.unshift(...emptyGridCells);
|
|
127
|
+
if (series.cells.length) serieses.push(series);
|
|
128
|
+
}
|
|
129
|
+
addAllHiddenLegendGroups(legendGroups, this);
|
|
130
|
+
this.legendData = this.getLegendData(legendGroups, data.refs, this);
|
|
131
|
+
for (const grp of this.sampleGroups) {
|
|
132
|
+
grp.legendData = this.getLegendData(grp.legendGroups, data.refs, this);
|
|
133
|
+
}
|
|
134
|
+
return serieses;
|
|
135
|
+
}
|
|
136
|
+
function addAllHiddenLegendGroups(legendGroups, self) {
|
|
137
|
+
for (const valueFilter of self.config.legendValueFilter.lst) {
|
|
138
|
+
if (valueFilter.tvs.term.type == "categorical" && !legendGroups[valueFilter.tvs.term.$id]) {
|
|
139
|
+
legendGroups[valueFilter.tvs.term.$id] = {
|
|
140
|
+
ref: {},
|
|
141
|
+
values: {},
|
|
142
|
+
$id: valueFilter.tvs.term.$id
|
|
143
|
+
};
|
|
144
|
+
} else if (valueFilter.tvs.term.type == "geneVariant" && !legendGroups[valueFilter.legendGrpName]) {
|
|
145
|
+
legendGroups[valueFilter.legendGrpName] = {
|
|
146
|
+
ref: {},
|
|
147
|
+
values: {},
|
|
148
|
+
dt: [valueFilter.tvs.values[0].dt],
|
|
149
|
+
origin: valueFilter.tvs.values[0].origin
|
|
150
|
+
};
|
|
151
|
+
} else if ((valueFilter.tvs.term.type == "integer" || valueFilter.tvs.term.type == "float") && !legendGroups[valueFilter.tvs.term.$id]) {
|
|
152
|
+
legendGroups[valueFilter.tvs.term.$id] = {
|
|
153
|
+
ref: {},
|
|
154
|
+
values: {},
|
|
155
|
+
$id: valueFilter.tvs.term.$id
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export {
|
|
162
|
+
getSerieses,
|
|
163
|
+
matrix_serieses_exports
|
|
164
|
+
};
|
|
165
|
+
//# sourceMappingURL=chunk-DNU4IPD2.js.map
|