@sjcrh/proteinpaint-client 2.120.2-0 → 2.121.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{2dmaf-3YAPML7R.js → 2dmaf-GQ56V5IY.js} +2 -2
- package/dist/{AppHeader-NNCIIIDL.js → AppHeader-YORJU7NY.js} +10 -10
- package/dist/{AppHeader-NNCIIIDL.js.map → AppHeader-YORJU7NY.js.map} +2 -2
- package/dist/{Disco-OUCIMQ3K.js → Disco-C4PP4OK7.js} +6 -6
- package/dist/Disco-C4PP4OK7.js.map +7 -0
- package/dist/{Disco.UI-UDP2IWK6.js → Disco.UI-5WWLGIF6.js} +7 -7
- package/dist/Disco.UI-5WWLGIF6.js.map +7 -0
- package/dist/{HicApp-254XY5RT.js → HicApp-GTQV6NNI.js} +13 -11
- package/dist/HicApp-GTQV6NNI.js.map +7 -0
- package/dist/{Volcano-JC63QOMR.js → Volcano-MYV4U242.js} +7 -7
- package/dist/{WSISamplesPlot-6RHJCH37.js → WSISamplesPlot-DOIMYRQG.js} +5 -5
- package/dist/WSISamplesPlot-DOIMYRQG.js.map +7 -0
- package/dist/{WSIViewer-N6FK5AQM.js → WSIViewer-FNZWA6TO.js} +2 -2
- package/dist/{WSIViewer-N6FK5AQM.js.map → WSIViewer-FNZWA6TO.js.map} +2 -2
- package/dist/{adSandbox-ZAOGPZOD.js → adSandbox-3XJ4IBCV.js} +4 -4
- package/dist/{app-KLWSIH5Q.js → app-BX6HUEKE.js} +4 -4
- package/dist/{app-GXNRL6CG.js → app-LXWIYGSL.js} +18 -18
- package/dist/app.js +5 -5
- package/dist/{bam-66XOEBJG.js → bam-XDSFK476.js} +6 -6
- package/dist/{barchart-DREOLMVH.js → barchart-63CXKGSM.js} +7 -7
- package/dist/{barchart.events-4HOJCVNT.js → barchart.events-4I6UMT5G.js} +7 -7
- package/dist/{block-AY42OXUR.js → block-FWQVN7RK.js} +13 -13
- package/dist/{block.init-YREYRG3G.js → block.init-HJHKMQMX.js} +2 -2
- package/dist/{block.mds.svcnv-KEAGINBS.js → block.mds.svcnv-AHH5YS35.js} +4 -4
- package/dist/{block.mds2-67OAXWZI.js → block.mds2-65NNFLEZ.js} +5 -5
- package/dist/{block.tk.aicheck-KIMAFWVY.js → block.tk.aicheck-F7U4PQCD.js} +4 -4
- package/dist/{block.tk.bam-ULX64ZJF.js → block.tk.bam-3EZBFRV6.js} +4 -4
- package/dist/{block.tk.hicstraw-XFNT6OWO.js → block.tk.hicstraw-Z24YN6DK.js} +5 -10
- package/dist/block.tk.hicstraw-Z24YN6DK.js.map +7 -0
- package/dist/{block.tk.junction.textmatrixui-AC4PFVWI.js → block.tk.junction.textmatrixui-DLNTVT3M.js} +3 -3
- package/dist/{block.tk.ld-K74BIBFQ.js → block.tk.ld-5RGFPBRE.js} +5 -5
- package/dist/{boxplot-XTTXCHBO.js → boxplot-R2P7ARAM.js} +7 -7
- package/dist/{brainImaging-DK66PMOL.js → brainImaging-DNX64WKL.js} +6 -6
- package/dist/{categorical-HOTJYU5A.js → categorical-AYULLKEB.js} +6 -6
- package/dist/{chunk-FUTVBIAM.js → chunk-2JMKHTAW.js} +7 -7
- package/dist/chunk-2JMKHTAW.js.map +7 -0
- package/dist/{chunk-UILZE6KO.js → chunk-2PVS7H3Z.js} +9 -9
- package/dist/{chunk-T3XZABZN.js → chunk-3JEJSOKU.js} +3 -3
- package/dist/{chunk-5YQOXJ7R.js → chunk-3T6NPBLM.js} +2 -2
- package/dist/chunk-3T6NPBLM.js.map +7 -0
- package/dist/{chunk-JB6I5GHW.js → chunk-5Y4WONNK.js} +310 -115
- package/dist/chunk-5Y4WONNK.js.map +7 -0
- package/dist/{chunk-MKTJ6ST6.js → chunk-6DE5P5DS.js} +12 -30
- package/dist/chunk-6DE5P5DS.js.map +7 -0
- package/dist/{chunk-GI3ZRY52.js → chunk-6JL54O4P.js} +74 -74
- package/dist/{chunk-ZAGTZBK5.js → chunk-6XOGWEZI.js} +5 -5
- package/dist/{chunk-XGAR7GVW.js → chunk-77IJMMLI.js} +3 -3
- package/dist/{chunk-JDBRI5NA.js → chunk-7DAHUF5G.js} +2 -2
- package/dist/{chunk-KPRFRU7R.js → chunk-7IV7VAMU.js} +2 -2
- package/dist/{chunk-TI3T6MB3.js → chunk-AR3F6YDF.js} +9 -9
- package/dist/{chunk-6SOXSLQY.js → chunk-AVFEHF7U.js} +2 -2
- package/dist/{chunk-TKRG242T.js → chunk-BMQ2ZRYK.js} +3 -3
- package/dist/{chunk-S6KNYXKA.js → chunk-BUDN4RT5.js} +5 -5
- package/dist/{chunk-LPKBEUDP.js → chunk-E22ERNRO.js} +2 -2
- package/dist/{chunk-7STYHA77.js → chunk-EHEZYAQR.js} +2 -2
- package/dist/{chunk-PCICQDBA.js → chunk-EHT3JAWO.js} +3 -3
- package/dist/{chunk-YOJFT2ZF.js → chunk-F7CFGCUG.js} +37 -37
- package/dist/{chunk-3X3AT22S.js → chunk-GBZWCTYD.js} +12 -12
- package/dist/{chunk-IMF3BYR7.js → chunk-HJQQ2SGA.js} +74 -74
- package/dist/{chunk-YSFKSWLZ.js → chunk-HR6PJH65.js} +1 -1
- package/dist/chunk-HR6PJH65.js.map +7 -0
- package/dist/{chunk-5SHCEL32.js → chunk-IYCOIRJT.js} +3 -3
- package/dist/{chunk-MFC4COTK.js → chunk-J53XKJDB.js} +78 -78
- package/dist/{chunk-DBWATZPQ.js → chunk-JR5DWX6E.js} +1 -2
- package/dist/chunk-JR5DWX6E.js.map +7 -0
- package/dist/{chunk-JETHUHAZ.js → chunk-JSJSBLJU.js} +2 -2
- package/dist/{chunk-QPGIQBPV.js → chunk-KPY2KHZ4.js} +4 -4
- package/dist/{chunk-VSFNL3TZ.js → chunk-KQLFFKQ7.js} +7 -7
- package/dist/chunk-KQLFFKQ7.js.map +7 -0
- package/dist/{chunk-EIUOYQAD.js → chunk-KTU4ICSW.js} +3 -3
- package/dist/{chunk-YBXUSIC4.js → chunk-LDLC26FR.js} +4 -4
- package/dist/{chunk-WGAB66NR.js → chunk-MLZ63TZU.js} +4 -4
- package/dist/{chunk-HP2ECEVB.js → chunk-N3KK6GNO.js} +7 -7
- package/dist/chunk-N3KK6GNO.js.map +7 -0
- package/dist/{chunk-O7ENDGWD.js → chunk-OUBALE73.js} +75 -75
- package/dist/{chunk-BJZGG3ZB.js → chunk-POYMOUBX.js} +2 -2
- package/dist/{chunk-OYVYT52Z.js → chunk-Q3ERWJEV.js} +18 -18
- package/dist/{chunk-66LQTSWM.js → chunk-QPS2Q2OM.js} +3 -3
- package/dist/{chunk-XWNXJZI4.js → chunk-QSOUMKSU.js} +2 -2
- package/dist/{chunk-IVPZPC2Z.js → chunk-QU3UOWIG.js} +3 -3
- package/dist/{chunk-LJKNAQ6K.js → chunk-T66NFBS6.js} +2 -2
- package/dist/{chunk-6JY7WKW4.js → chunk-TJE2EJN5.js} +2 -2
- package/dist/{chunk-JWNIWAYN.js → chunk-TUWMI3PW.js} +2 -2
- package/dist/{chunk-M6O2VNPV.js → chunk-U6BBIWIR.js} +8 -8
- package/dist/{chunk-3CELEWFI.js → chunk-UYMOZ5E3.js} +5 -5
- package/dist/{chunk-XAZVWHK5.js → chunk-V3VGGQHW.js} +3 -3
- package/dist/{chunk-K3Q4KZFN.js → chunk-X5UKXHHM.js} +8 -8
- package/dist/{chunk-6KVWYSH3.js → chunk-X7KAOMV7.js} +3 -3
- package/dist/chunk-X7KAOMV7.js.map +7 -0
- package/dist/{chunk-537FIK5B.js → chunk-XIJYBPX7.js} +1 -1
- package/dist/chunk-XIJYBPX7.js.map +7 -0
- package/dist/{chunk-3ZVZ2DW5.js → chunk-XWUQB5FH.js} +9 -9
- package/dist/chunk-XWUQB5FH.js.map +7 -0
- package/dist/{chunk-2H7W7COZ.js → chunk-YO7GSCII.js} +2 -2
- package/dist/{chunk-3SMK652J.js → chunk-ZY7DX4OF.js} +4 -4
- package/dist/{condition-QQUKUA22.js → condition-WWX4PGNL.js} +4 -4
- package/dist/{controls-U66TX4FD.js → controls-Y5NJNZB7.js} +6 -6
- package/dist/{controls.config-DU5NRJ63.js → controls.config-TRELYAY2.js} +5 -5
- package/dist/{correlationVolcano-HSI3T4KF.js → correlationVolcano-RVUUMLNA.js} +6 -6
- package/dist/{cuminc-LVJZD7KC.js → cuminc-45BYEOGB.js} +6 -6
- package/dist/{dataDownload-YN4MRMHI.js → dataDownload-OTRNUKZP.js} +4 -4
- package/dist/{databrowser.ui-3QVBVIRR.js → databrowser.ui-XGQDX26I.js} +18 -18
- package/dist/{density-DYA5FUGR.js → density-CAONXDND.js} +2 -2
- package/dist/{dictionary-J2UADFSJ.js → dictionary-YH6NPXO4.js} +4 -4
- package/dist/{differentialAnalysis-NF6UJBMD.js → differentialAnalysis-MVYEUD6Z.js} +10 -10
- package/dist/{expclust.gdc.spec-XEPCOTEM.js → expclust.gdc.spec-E6J6QLLA.js} +7 -7
- package/dist/{facet-TNN4I6DC.js → facet-NVDCDSNU.js} +6 -6
- package/dist/{geneExpClustering-PKKVZWHZ.js → geneExpClustering-B7B4O6QJ.js} +6 -6
- package/dist/{geneExpression-EE7JFZKZ.js → geneExpression-VPGCQFVS.js} +4 -4
- package/dist/{geneExpression-HC7VEZZ6.js → geneExpression-Y67FBTFO.js} +6 -6
- package/dist/{geneORA-HRJD3JZK.js → geneORA-U3K3GTV2.js} +6 -6
- package/dist/{geneVariant-X35UWDOY.js → geneVariant-E365J7ND.js} +6 -6
- package/dist/{geneVariant-SCXH5XBL.js → geneVariant-Y63QVKCL.js} +2 -2
- package/dist/{geneset-NWUVVEIW.js → geneset-TRQUGXK4.js} +4 -4
- package/dist/{genomeBrowser-H4243HBY.js → genomeBrowser-B47VCBXK.js} +7 -7
- package/dist/{genomeBrowser.controls-QWCZW74G.js → genomeBrowser.controls-DQ3FVS66.js} +5 -5
- package/dist/{genomeBrowser.spec-XMU3RTCI.js → genomeBrowser.spec-XQG2LOTL.js} +7 -7
- package/dist/{groupsetting-QES4UZ37.js → groupsetting-B4V3XABP.js} +5 -5
- package/dist/{gsea-BTSNJS72.js → gsea-NCECDVNW.js} +7 -7
- package/dist/{hierCluster-PYHGUNDV.js → hierCluster-CSG2JJP4.js} +14 -14
- package/dist/{hierCluster-VOOXVGMV.js → hierCluster-VXKQKYXK.js} +13 -13
- package/dist/{hierCluster.config-VVOUNFE5.js → hierCluster.config-L6F4AWMQ.js} +6 -6
- package/dist/{hierCluster.integration.spec-6NOOUINW.js → hierCluster.integration.spec-J6Z2ZN3A.js} +11 -11
- package/dist/{hierCluster.interactivity-TW5MVHTO.js → hierCluster.interactivity-TYMOMFGH.js} +5 -5
- package/dist/{imagePlot-XDZF4XHN.js → imagePlot-RQAXRAVT.js} +7 -7
- package/dist/{launch.adhoc-MENOHEYY.js → launch.adhoc-H7ADF5G5.js} +7 -7
- package/dist/{leftlabel.sample-YC7K2VPG.js → leftlabel.sample-WS55LAQI.js} +6 -6
- package/dist/{lollipop-YCGBDCR4.js → lollipop-4U66PRRW.js} +3 -3
- package/dist/{maf-BPMSRPMA.js → maf-SW6DKKZZ.js} +4 -4
- package/dist/{maftimeline-STX67MD4.js → maftimeline-G5H4MUHA.js} +2 -2
- package/dist/{matrix-LHDS33JW.js → matrix-QL62QDST.js} +11 -11
- package/dist/{matrix-POHWI2E4.js → matrix-VRV2DXYF.js} +11 -11
- package/dist/{matrix.config-BQ42MMLF.js → matrix.config-SEOCXMD7.js} +5 -5
- package/dist/{matrix.controls-WSMJG44K.js → matrix.controls-53B2Z7IM.js} +6 -6
- package/dist/{matrix.interactivity-ARJCML7X.js → matrix.interactivity-6XKAO54H.js} +5 -5
- package/dist/{matrix.layout-AIYQT7UF.js → matrix.layout-FDZML545.js} +5 -5
- package/dist/{matrix.renderers-3IQ2YVVI.js → matrix.renderers-W5M4G5CA.js} +5 -5
- package/dist/{matrix.sort.unit.spec-3CC4THJL.js → matrix.sort.unit.spec-TCFANLHP.js} +5 -5
- package/dist/{matrix.sorterUi.unit.spec-76K44CQP.js → matrix.sorterUi.unit.spec-XCRZR2S7.js} +6 -6
- package/dist/{mavb-UOGTPFVQ.js → mavb-GTFSPEC6.js} +3 -3
- package/dist/{mds.samplescatterplot-6GZYTFAL.js → mds.samplescatterplot-SX3B7ET5.js} +6 -6
- package/dist/{metaboliteIntensity-JYLMTV7P.js → metaboliteIntensity-E37INWBD.js} +6 -6
- package/dist/multivalue-HYDSBU2L.js +9 -0
- package/dist/multivalue-HYDSBU2L.js.map +7 -0
- package/dist/{notify-AUOJCXPX.js → notify-WTYKNVQR.js} +2 -2
- package/dist/{notify-AUOJCXPX.js.map → notify-WTYKNVQR.js.map} +1 -1
- package/dist/{numeric-U23JD7DL.js → numeric-CT4INXME.js} +6 -6
- package/dist/{numeric.binary-QZTG2B7K.js → numeric.binary-VUHIIO5L.js} +6 -6
- package/dist/{numeric.continuous-3ICRWD4P.js → numeric.continuous-4DUUC32I.js} +4 -4
- package/dist/{numeric.discrete-S3HUUNHX.js → numeric.discrete-W5TID4N7.js} +6 -6
- package/dist/{numeric.spline-YL7GTTYF.js → numeric.spline-PZ3JB27D.js} +5 -5
- package/dist/{numeric.toggle-VNCNZGQN.js → numeric.toggle-WVIE4OMQ.js} +5 -5
- package/dist/{oncomatrix-LWCBV7WD.js → oncomatrix-WAPLPWMM.js} +6 -6
- package/dist/{oncomatrix.spec-JX4W6XH5.js → oncomatrix.spec-YAXO7ODN.js} +7 -7
- package/dist/{plot.app-2HZIATM5.js → plot.app-7VJSB6JQ.js} +6 -6
- package/dist/{plot.brainImaging-5G3RLVNH.js → plot.brainImaging-TCGWIWTB.js} +2 -2
- package/dist/{plot.disco-CJOLZIBA.js → plot.disco-M3XT7AGH.js} +2 -2
- package/dist/{plot.dzi-BEITTWA7.js → plot.dzi-V5BELN3S.js} +2 -2
- package/dist/{plot.ssgq-SL3NOX3S.js → plot.ssgq-UF6JQBDD.js} +2 -2
- package/dist/{plot.wsi-UPWZY33Z.js → plot.wsi-TJSU5XJG.js} +2 -2
- package/dist/{profile.spec-OBELRIB2.js → profile.spec-EJSJGPEB.js} +7 -7
- package/dist/{profileBarchart-BZJAWLAL.js → profileBarchart-RZR32KVV.js} +7 -7
- package/dist/{profileForms-5XJXZD6A.js → profileForms-BABGVK6C.js} +7 -7
- package/dist/{profilePlot-DDBCIP4H.js → profilePlot-FUOZYTXB.js} +7 -7
- package/dist/{profilePolar-F27XKG6X.js → profilePolar-WXDFARQO.js} +7 -7
- package/dist/{profileRadar-LUC4E6DF.js → profileRadar-JDTQ36CL.js} +7 -7
- package/dist/{profileRadarFacility-3ZF63CY2.js → profileRadarFacility-EVXUAVAJ.js} +7 -7
- package/dist/{regression-FFC6RJEQ.js → regression-TSLBGQ5Y.js} +14 -14
- package/dist/{regression.inputs-6B5W52DO.js → regression.inputs-6GYCYAXH.js} +14 -14
- package/dist/{regression.inputs.term-XNI2FTZH.js → regression.inputs.term-RTBHE2R3.js} +14 -14
- package/dist/{regression.inputs.values.table-TM7Z75CE.js → regression.inputs.values.table-CSADQRSX.js} +12 -12
- package/dist/{regression.results-ILCXQWWG.js → regression.results-R6FJ55SQ.js} +5 -5
- package/dist/{runChart-HPT2W257.js → runChart-PFWO4WX2.js} +21 -21
- package/dist/runChart-PFWO4WX2.js.map +7 -0
- package/dist/{sampleScatter-FL4ZAJB5.js → sampleScatter-AAK5R435.js} +10 -10
- package/dist/{sampleScatter.interactivity-2UDAWZQQ.js → sampleScatter.interactivity-VH2HGJ2O.js} +9 -9
- package/dist/{sampleScatter.renderer-5VEQMWUT.js → sampleScatter.renderer-276RIDQD.js} +10 -10
- package/dist/{sampleScatter.rendererThree-KIUH3S52.js → sampleScatter.rendererThree-MQCOQIMJ.js} +10 -10
- package/dist/{sampleView-XA2K4VNM.js → sampleView-5SBDVLAY.js} +7 -7
- package/dist/{samplelst-VAZVLMTH.js → samplelst-I22DEAPR.js} +4 -4
- package/dist/{samplematrix-RYDMBM3C.js → samplematrix-RKAG6AOQ.js} +2 -2
- package/dist/{sc-4FFLHNXZ.js → sc-QW47PNDH.js} +5 -5
- package/dist/{sc-4FFLHNXZ.js.map → sc-QW47PNDH.js.map} +2 -2
- package/dist/{scatter-G7SH4OA7.js → scatter-MTDTVL2Y.js} +6 -6
- package/dist/{selectGenomeWithTklst-5S27QIR7.js → selectGenomeWithTklst-WYF6R5XE.js} +3 -3
- package/dist/{singleCellCellType-ZGVXCGIM.js → singleCellCellType-JBXCEZYY.js} +6 -6
- package/dist/{singleCellGeneExpression-IKSILSMF.js → singleCellGeneExpression-IGCMXQO6.js} +6 -6
- package/dist/{singleCellPlot-GZA4QNQK.js → singleCellPlot-2JNDSWCD.js} +10 -10
- package/dist/{singlecell-3XJ5J4RH.js → singlecell-CT3JFS54.js} +6 -6
- package/dist/{snp-PSJWGXYZ.js → snp-RG2VGFYZ.js} +2 -2
- package/dist/{snp-FCZ3FWTH.js → snp-TBOUCK27.js} +6 -6
- package/dist/{snplocus-MWB3PVNN.js → snplocus-ZJSSX4HT.js} +4 -4
- package/dist/{summary-PQS7MKYA.js → summary-2KLXDSZV.js} +16 -16
- package/dist/{survival-236TXTLJ.js → survival-25SL45CO.js} +6 -6
- package/dist/{survival-4OX73TM2.js → survival-2NT2MWIA.js} +5 -5
- package/dist/{svmr-KY7F4Q2H.js → svmr-BQPJEYSE.js} +2 -2
- package/dist/{table-KGBADOUC.js → table-JODLDULV.js} +6 -6
- package/dist/{tk-BHSIXTYZ.js → tk-VR6XQ2NX.js} +6 -6
- package/dist/{tp.ui-3227INMG.js → tp.ui-5433ZTNK.js} +5 -5
- package/dist/{tvs.dt-LO2JNHUV.js → tvs.dt-6NI6CKPN.js} +5 -5
- package/dist/{tvs.dtcnv-5FWW2P6V.js → tvs.dtcnv-2PEMUQ43.js} +5 -5
- package/dist/{tvs.dtfusion-HS6DGOSX.js → tvs.dtfusion-IEFPISVB.js} +5 -5
- package/dist/{tvs.dtsnvindel-O66SYXJZ.js → tvs.dtsnvindel-CXR5HVBG.js} +5 -5
- package/dist/{tvs.dtsv-KO2SWOFX.js → tvs.dtsv-GHMAQSCI.js} +5 -5
- package/dist/{tvs.geneVariant-DBTX5PZZ.js → tvs.geneVariant-IVO6PXMQ.js} +7 -7
- package/dist/{tvs.samplelst-FKAEJOWF.js → tvs.samplelst-SH7UPRUU.js} +4 -4
- package/dist/{violin-3C5NK2BZ.js → violin-AHQM2T7O.js} +9 -9
- package/dist/{violin.interactivity-6TCXZ4FC.js → violin.interactivity-6QGYEMFY.js} +5 -5
- package/dist/{violin.renderer-TMOOXXEL.js → violin.renderer-HD5TYEXM.js} +5 -5
- package/dist/{vocabulary-6LQ36LN4.js → vocabulary-XFAVCPRG.js} +4 -4
- package/dist/{volcano-35W7FJT2.js → volcano-NELNEZLZ.js} +7 -7
- package/package.json +3 -3
- package/dist/Disco-OUCIMQ3K.js.map +0 -7
- package/dist/Disco.UI-UDP2IWK6.js.map +0 -7
- package/dist/HicApp-254XY5RT.js.map +0 -7
- package/dist/WSISamplesPlot-6RHJCH37.js.map +0 -7
- package/dist/block.tk.hicstraw-XFNT6OWO.js.map +0 -7
- package/dist/chunk-3ZVZ2DW5.js.map +0 -7
- package/dist/chunk-537FIK5B.js.map +0 -7
- package/dist/chunk-5YQOXJ7R.js.map +0 -7
- package/dist/chunk-6KVWYSH3.js.map +0 -7
- package/dist/chunk-DBWATZPQ.js.map +0 -7
- package/dist/chunk-FUTVBIAM.js.map +0 -7
- package/dist/chunk-HP2ECEVB.js.map +0 -7
- package/dist/chunk-JB6I5GHW.js.map +0 -7
- package/dist/chunk-MKTJ6ST6.js.map +0 -7
- package/dist/chunk-VSFNL3TZ.js.map +0 -7
- package/dist/chunk-YSFKSWLZ.js.map +0 -7
- package/dist/multivalue-AKXLFG47.js +0 -9
- package/dist/multivalue-AKXLFG47.js.map +0 -7
- package/dist/runChart-HPT2W257.js.map +0 -7
- /package/dist/{2dmaf-3YAPML7R.js.map → 2dmaf-GQ56V5IY.js.map} +0 -0
- /package/dist/{Volcano-JC63QOMR.js.map → Volcano-MYV4U242.js.map} +0 -0
- /package/dist/{adSandbox-ZAOGPZOD.js.map → adSandbox-3XJ4IBCV.js.map} +0 -0
- /package/dist/{app-GXNRL6CG.js.map → app-BX6HUEKE.js.map} +0 -0
- /package/dist/{app-KLWSIH5Q.js.map → app-LXWIYGSL.js.map} +0 -0
- /package/dist/{bam-66XOEBJG.js.map → bam-XDSFK476.js.map} +0 -0
- /package/dist/{barchart-DREOLMVH.js.map → barchart-63CXKGSM.js.map} +0 -0
- /package/dist/{barchart.events-4HOJCVNT.js.map → barchart.events-4I6UMT5G.js.map} +0 -0
- /package/dist/{block-AY42OXUR.js.map → block-FWQVN7RK.js.map} +0 -0
- /package/dist/{block.init-YREYRG3G.js.map → block.init-HJHKMQMX.js.map} +0 -0
- /package/dist/{block.mds.svcnv-KEAGINBS.js.map → block.mds.svcnv-AHH5YS35.js.map} +0 -0
- /package/dist/{block.mds2-67OAXWZI.js.map → block.mds2-65NNFLEZ.js.map} +0 -0
- /package/dist/{block.tk.aicheck-KIMAFWVY.js.map → block.tk.aicheck-F7U4PQCD.js.map} +0 -0
- /package/dist/{block.tk.bam-ULX64ZJF.js.map → block.tk.bam-3EZBFRV6.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-AC4PFVWI.js.map → block.tk.junction.textmatrixui-DLNTVT3M.js.map} +0 -0
- /package/dist/{block.tk.ld-K74BIBFQ.js.map → block.tk.ld-5RGFPBRE.js.map} +0 -0
- /package/dist/{boxplot-XTTXCHBO.js.map → boxplot-R2P7ARAM.js.map} +0 -0
- /package/dist/{brainImaging-DK66PMOL.js.map → brainImaging-DNX64WKL.js.map} +0 -0
- /package/dist/{categorical-HOTJYU5A.js.map → categorical-AYULLKEB.js.map} +0 -0
- /package/dist/{chunk-UILZE6KO.js.map → chunk-2PVS7H3Z.js.map} +0 -0
- /package/dist/{chunk-T3XZABZN.js.map → chunk-3JEJSOKU.js.map} +0 -0
- /package/dist/{chunk-GI3ZRY52.js.map → chunk-6JL54O4P.js.map} +0 -0
- /package/dist/{chunk-ZAGTZBK5.js.map → chunk-6XOGWEZI.js.map} +0 -0
- /package/dist/{chunk-XGAR7GVW.js.map → chunk-77IJMMLI.js.map} +0 -0
- /package/dist/{chunk-JDBRI5NA.js.map → chunk-7DAHUF5G.js.map} +0 -0
- /package/dist/{chunk-KPRFRU7R.js.map → chunk-7IV7VAMU.js.map} +0 -0
- /package/dist/{chunk-TI3T6MB3.js.map → chunk-AR3F6YDF.js.map} +0 -0
- /package/dist/{chunk-6SOXSLQY.js.map → chunk-AVFEHF7U.js.map} +0 -0
- /package/dist/{chunk-TKRG242T.js.map → chunk-BMQ2ZRYK.js.map} +0 -0
- /package/dist/{chunk-S6KNYXKA.js.map → chunk-BUDN4RT5.js.map} +0 -0
- /package/dist/{chunk-LPKBEUDP.js.map → chunk-E22ERNRO.js.map} +0 -0
- /package/dist/{chunk-7STYHA77.js.map → chunk-EHEZYAQR.js.map} +0 -0
- /package/dist/{chunk-PCICQDBA.js.map → chunk-EHT3JAWO.js.map} +0 -0
- /package/dist/{chunk-YOJFT2ZF.js.map → chunk-F7CFGCUG.js.map} +0 -0
- /package/dist/{chunk-3X3AT22S.js.map → chunk-GBZWCTYD.js.map} +0 -0
- /package/dist/{chunk-IMF3BYR7.js.map → chunk-HJQQ2SGA.js.map} +0 -0
- /package/dist/{chunk-5SHCEL32.js.map → chunk-IYCOIRJT.js.map} +0 -0
- /package/dist/{chunk-MFC4COTK.js.map → chunk-J53XKJDB.js.map} +0 -0
- /package/dist/{chunk-JETHUHAZ.js.map → chunk-JSJSBLJU.js.map} +0 -0
- /package/dist/{chunk-QPGIQBPV.js.map → chunk-KPY2KHZ4.js.map} +0 -0
- /package/dist/{chunk-EIUOYQAD.js.map → chunk-KTU4ICSW.js.map} +0 -0
- /package/dist/{chunk-YBXUSIC4.js.map → chunk-LDLC26FR.js.map} +0 -0
- /package/dist/{chunk-WGAB66NR.js.map → chunk-MLZ63TZU.js.map} +0 -0
- /package/dist/{chunk-O7ENDGWD.js.map → chunk-OUBALE73.js.map} +0 -0
- /package/dist/{chunk-BJZGG3ZB.js.map → chunk-POYMOUBX.js.map} +0 -0
- /package/dist/{chunk-OYVYT52Z.js.map → chunk-Q3ERWJEV.js.map} +0 -0
- /package/dist/{chunk-66LQTSWM.js.map → chunk-QPS2Q2OM.js.map} +0 -0
- /package/dist/{chunk-XWNXJZI4.js.map → chunk-QSOUMKSU.js.map} +0 -0
- /package/dist/{chunk-IVPZPC2Z.js.map → chunk-QU3UOWIG.js.map} +0 -0
- /package/dist/{chunk-LJKNAQ6K.js.map → chunk-T66NFBS6.js.map} +0 -0
- /package/dist/{chunk-6JY7WKW4.js.map → chunk-TJE2EJN5.js.map} +0 -0
- /package/dist/{chunk-JWNIWAYN.js.map → chunk-TUWMI3PW.js.map} +0 -0
- /package/dist/{chunk-M6O2VNPV.js.map → chunk-U6BBIWIR.js.map} +0 -0
- /package/dist/{chunk-3CELEWFI.js.map → chunk-UYMOZ5E3.js.map} +0 -0
- /package/dist/{chunk-XAZVWHK5.js.map → chunk-V3VGGQHW.js.map} +0 -0
- /package/dist/{chunk-K3Q4KZFN.js.map → chunk-X5UKXHHM.js.map} +0 -0
- /package/dist/{chunk-2H7W7COZ.js.map → chunk-YO7GSCII.js.map} +0 -0
- /package/dist/{chunk-3SMK652J.js.map → chunk-ZY7DX4OF.js.map} +0 -0
- /package/dist/{condition-QQUKUA22.js.map → condition-WWX4PGNL.js.map} +0 -0
- /package/dist/{controls-U66TX4FD.js.map → controls-Y5NJNZB7.js.map} +0 -0
- /package/dist/{controls.config-DU5NRJ63.js.map → controls.config-TRELYAY2.js.map} +0 -0
- /package/dist/{correlationVolcano-HSI3T4KF.js.map → correlationVolcano-RVUUMLNA.js.map} +0 -0
- /package/dist/{cuminc-LVJZD7KC.js.map → cuminc-45BYEOGB.js.map} +0 -0
- /package/dist/{dataDownload-YN4MRMHI.js.map → dataDownload-OTRNUKZP.js.map} +0 -0
- /package/dist/{databrowser.ui-3QVBVIRR.js.map → databrowser.ui-XGQDX26I.js.map} +0 -0
- /package/dist/{density-DYA5FUGR.js.map → density-CAONXDND.js.map} +0 -0
- /package/dist/{dictionary-J2UADFSJ.js.map → dictionary-YH6NPXO4.js.map} +0 -0
- /package/dist/{differentialAnalysis-NF6UJBMD.js.map → differentialAnalysis-MVYEUD6Z.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-XEPCOTEM.js.map → expclust.gdc.spec-E6J6QLLA.js.map} +0 -0
- /package/dist/{facet-TNN4I6DC.js.map → facet-NVDCDSNU.js.map} +0 -0
- /package/dist/{geneExpClustering-PKKVZWHZ.js.map → geneExpClustering-B7B4O6QJ.js.map} +0 -0
- /package/dist/{geneExpression-EE7JFZKZ.js.map → geneExpression-VPGCQFVS.js.map} +0 -0
- /package/dist/{geneExpression-HC7VEZZ6.js.map → geneExpression-Y67FBTFO.js.map} +0 -0
- /package/dist/{geneORA-HRJD3JZK.js.map → geneORA-U3K3GTV2.js.map} +0 -0
- /package/dist/{geneVariant-X35UWDOY.js.map → geneVariant-E365J7ND.js.map} +0 -0
- /package/dist/{geneVariant-SCXH5XBL.js.map → geneVariant-Y63QVKCL.js.map} +0 -0
- /package/dist/{geneset-NWUVVEIW.js.map → geneset-TRQUGXK4.js.map} +0 -0
- /package/dist/{genomeBrowser-H4243HBY.js.map → genomeBrowser-B47VCBXK.js.map} +0 -0
- /package/dist/{genomeBrowser.controls-QWCZW74G.js.map → genomeBrowser.controls-DQ3FVS66.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-XMU3RTCI.js.map → genomeBrowser.spec-XQG2LOTL.js.map} +0 -0
- /package/dist/{groupsetting-QES4UZ37.js.map → groupsetting-B4V3XABP.js.map} +0 -0
- /package/dist/{gsea-BTSNJS72.js.map → gsea-NCECDVNW.js.map} +0 -0
- /package/dist/{hierCluster-PYHGUNDV.js.map → hierCluster-CSG2JJP4.js.map} +0 -0
- /package/dist/{hierCluster-VOOXVGMV.js.map → hierCluster-VXKQKYXK.js.map} +0 -0
- /package/dist/{hierCluster.config-VVOUNFE5.js.map → hierCluster.config-L6F4AWMQ.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-6NOOUINW.js.map → hierCluster.integration.spec-J6Z2ZN3A.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-TW5MVHTO.js.map → hierCluster.interactivity-TYMOMFGH.js.map} +0 -0
- /package/dist/{imagePlot-XDZF4XHN.js.map → imagePlot-RQAXRAVT.js.map} +0 -0
- /package/dist/{launch.adhoc-MENOHEYY.js.map → launch.adhoc-H7ADF5G5.js.map} +0 -0
- /package/dist/{leftlabel.sample-YC7K2VPG.js.map → leftlabel.sample-WS55LAQI.js.map} +0 -0
- /package/dist/{lollipop-YCGBDCR4.js.map → lollipop-4U66PRRW.js.map} +0 -0
- /package/dist/{maf-BPMSRPMA.js.map → maf-SW6DKKZZ.js.map} +0 -0
- /package/dist/{maftimeline-STX67MD4.js.map → maftimeline-G5H4MUHA.js.map} +0 -0
- /package/dist/{matrix-LHDS33JW.js.map → matrix-QL62QDST.js.map} +0 -0
- /package/dist/{matrix-POHWI2E4.js.map → matrix-VRV2DXYF.js.map} +0 -0
- /package/dist/{matrix.config-BQ42MMLF.js.map → matrix.config-SEOCXMD7.js.map} +0 -0
- /package/dist/{matrix.controls-WSMJG44K.js.map → matrix.controls-53B2Z7IM.js.map} +0 -0
- /package/dist/{matrix.interactivity-ARJCML7X.js.map → matrix.interactivity-6XKAO54H.js.map} +0 -0
- /package/dist/{matrix.layout-AIYQT7UF.js.map → matrix.layout-FDZML545.js.map} +0 -0
- /package/dist/{matrix.renderers-3IQ2YVVI.js.map → matrix.renderers-W5M4G5CA.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-3CC4THJL.js.map → matrix.sort.unit.spec-TCFANLHP.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-76K44CQP.js.map → matrix.sorterUi.unit.spec-XCRZR2S7.js.map} +0 -0
- /package/dist/{mavb-UOGTPFVQ.js.map → mavb-GTFSPEC6.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-6GZYTFAL.js.map → mds.samplescatterplot-SX3B7ET5.js.map} +0 -0
- /package/dist/{metaboliteIntensity-JYLMTV7P.js.map → metaboliteIntensity-E37INWBD.js.map} +0 -0
- /package/dist/{numeric-U23JD7DL.js.map → numeric-CT4INXME.js.map} +0 -0
- /package/dist/{numeric.binary-QZTG2B7K.js.map → numeric.binary-VUHIIO5L.js.map} +0 -0
- /package/dist/{numeric.continuous-3ICRWD4P.js.map → numeric.continuous-4DUUC32I.js.map} +0 -0
- /package/dist/{numeric.discrete-S3HUUNHX.js.map → numeric.discrete-W5TID4N7.js.map} +0 -0
- /package/dist/{numeric.spline-YL7GTTYF.js.map → numeric.spline-PZ3JB27D.js.map} +0 -0
- /package/dist/{numeric.toggle-VNCNZGQN.js.map → numeric.toggle-WVIE4OMQ.js.map} +0 -0
- /package/dist/{oncomatrix-LWCBV7WD.js.map → oncomatrix-WAPLPWMM.js.map} +0 -0
- /package/dist/{oncomatrix.spec-JX4W6XH5.js.map → oncomatrix.spec-YAXO7ODN.js.map} +0 -0
- /package/dist/{plot.app-2HZIATM5.js.map → plot.app-7VJSB6JQ.js.map} +0 -0
- /package/dist/{plot.brainImaging-5G3RLVNH.js.map → plot.brainImaging-TCGWIWTB.js.map} +0 -0
- /package/dist/{plot.disco-CJOLZIBA.js.map → plot.disco-M3XT7AGH.js.map} +0 -0
- /package/dist/{plot.dzi-BEITTWA7.js.map → plot.dzi-V5BELN3S.js.map} +0 -0
- /package/dist/{plot.ssgq-SL3NOX3S.js.map → plot.ssgq-UF6JQBDD.js.map} +0 -0
- /package/dist/{plot.wsi-UPWZY33Z.js.map → plot.wsi-TJSU5XJG.js.map} +0 -0
- /package/dist/{profile.spec-OBELRIB2.js.map → profile.spec-EJSJGPEB.js.map} +0 -0
- /package/dist/{profileBarchart-BZJAWLAL.js.map → profileBarchart-RZR32KVV.js.map} +0 -0
- /package/dist/{profileForms-5XJXZD6A.js.map → profileForms-BABGVK6C.js.map} +0 -0
- /package/dist/{profilePlot-DDBCIP4H.js.map → profilePlot-FUOZYTXB.js.map} +0 -0
- /package/dist/{profilePolar-F27XKG6X.js.map → profilePolar-WXDFARQO.js.map} +0 -0
- /package/dist/{profileRadar-LUC4E6DF.js.map → profileRadar-JDTQ36CL.js.map} +0 -0
- /package/dist/{profileRadarFacility-3ZF63CY2.js.map → profileRadarFacility-EVXUAVAJ.js.map} +0 -0
- /package/dist/{regression-FFC6RJEQ.js.map → regression-TSLBGQ5Y.js.map} +0 -0
- /package/dist/{regression.inputs-6B5W52DO.js.map → regression.inputs-6GYCYAXH.js.map} +0 -0
- /package/dist/{regression.inputs.term-XNI2FTZH.js.map → regression.inputs.term-RTBHE2R3.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-TM7Z75CE.js.map → regression.inputs.values.table-CSADQRSX.js.map} +0 -0
- /package/dist/{regression.results-ILCXQWWG.js.map → regression.results-R6FJ55SQ.js.map} +0 -0
- /package/dist/{sampleScatter-FL4ZAJB5.js.map → sampleScatter-AAK5R435.js.map} +0 -0
- /package/dist/{sampleScatter.interactivity-2UDAWZQQ.js.map → sampleScatter.interactivity-VH2HGJ2O.js.map} +0 -0
- /package/dist/{sampleScatter.renderer-5VEQMWUT.js.map → sampleScatter.renderer-276RIDQD.js.map} +0 -0
- /package/dist/{sampleScatter.rendererThree-KIUH3S52.js.map → sampleScatter.rendererThree-MQCOQIMJ.js.map} +0 -0
- /package/dist/{sampleView-XA2K4VNM.js.map → sampleView-5SBDVLAY.js.map} +0 -0
- /package/dist/{samplelst-VAZVLMTH.js.map → samplelst-I22DEAPR.js.map} +0 -0
- /package/dist/{samplematrix-RYDMBM3C.js.map → samplematrix-RKAG6AOQ.js.map} +0 -0
- /package/dist/{scatter-G7SH4OA7.js.map → scatter-MTDTVL2Y.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-5S27QIR7.js.map → selectGenomeWithTklst-WYF6R5XE.js.map} +0 -0
- /package/dist/{singleCellCellType-ZGVXCGIM.js.map → singleCellCellType-JBXCEZYY.js.map} +0 -0
- /package/dist/{singleCellGeneExpression-IKSILSMF.js.map → singleCellGeneExpression-IGCMXQO6.js.map} +0 -0
- /package/dist/{singleCellPlot-GZA4QNQK.js.map → singleCellPlot-2JNDSWCD.js.map} +0 -0
- /package/dist/{singlecell-3XJ5J4RH.js.map → singlecell-CT3JFS54.js.map} +0 -0
- /package/dist/{snp-PSJWGXYZ.js.map → snp-RG2VGFYZ.js.map} +0 -0
- /package/dist/{snp-FCZ3FWTH.js.map → snp-TBOUCK27.js.map} +0 -0
- /package/dist/{snplocus-MWB3PVNN.js.map → snplocus-ZJSSX4HT.js.map} +0 -0
- /package/dist/{summary-PQS7MKYA.js.map → summary-2KLXDSZV.js.map} +0 -0
- /package/dist/{survival-236TXTLJ.js.map → survival-25SL45CO.js.map} +0 -0
- /package/dist/{survival-4OX73TM2.js.map → survival-2NT2MWIA.js.map} +0 -0
- /package/dist/{svmr-KY7F4Q2H.js.map → svmr-BQPJEYSE.js.map} +0 -0
- /package/dist/{table-KGBADOUC.js.map → table-JODLDULV.js.map} +0 -0
- /package/dist/{tk-BHSIXTYZ.js.map → tk-VR6XQ2NX.js.map} +0 -0
- /package/dist/{tp.ui-3227INMG.js.map → tp.ui-5433ZTNK.js.map} +0 -0
- /package/dist/{tvs.dt-LO2JNHUV.js.map → tvs.dt-6NI6CKPN.js.map} +0 -0
- /package/dist/{tvs.dtcnv-5FWW2P6V.js.map → tvs.dtcnv-2PEMUQ43.js.map} +0 -0
- /package/dist/{tvs.dtfusion-HS6DGOSX.js.map → tvs.dtfusion-IEFPISVB.js.map} +0 -0
- /package/dist/{tvs.dtsnvindel-O66SYXJZ.js.map → tvs.dtsnvindel-CXR5HVBG.js.map} +0 -0
- /package/dist/{tvs.dtsv-KO2SWOFX.js.map → tvs.dtsv-GHMAQSCI.js.map} +0 -0
- /package/dist/{tvs.geneVariant-DBTX5PZZ.js.map → tvs.geneVariant-IVO6PXMQ.js.map} +0 -0
- /package/dist/{tvs.samplelst-FKAEJOWF.js.map → tvs.samplelst-SH7UPRUU.js.map} +0 -0
- /package/dist/{violin-3C5NK2BZ.js.map → violin-AHQM2T7O.js.map} +0 -0
- /package/dist/{violin.interactivity-6TCXZ4FC.js.map → violin.interactivity-6QGYEMFY.js.map} +0 -0
- /package/dist/{violin.renderer-TMOOXXEL.js.map → violin.renderer-HD5TYEXM.js.map} +0 -0
- /package/dist/{vocabulary-6LQ36LN4.js.map → vocabulary-XFAVCPRG.js.map} +0 -0
- /package/dist/{volcano-35W7FJT2.js.map → volcano-NELNEZLZ.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
renderSandboxFormDiv
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XIJYBPX7.js";
|
|
4
4
|
import "./chunk-OOXGYSYW.js";
|
|
5
5
|
import {
|
|
6
6
|
axisstyle,
|
|
@@ -1358,4 +1358,4 @@ export {
|
|
|
1358
1358
|
d2mafparseinput,
|
|
1359
1359
|
d2mafui
|
|
1360
1360
|
};
|
|
1361
|
-
//# sourceMappingURL=2dmaf-
|
|
1361
|
+
//# sourceMappingURL=2dmaf-GQ56V5IY.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeButton,
|
|
3
3
|
openSandbox
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-KTU4ICSW.js";
|
|
5
5
|
import {
|
|
6
6
|
get_tklst
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-Q3ERWJEV.js";
|
|
8
|
+
import "./chunk-6XOGWEZI.js";
|
|
9
9
|
import "./chunk-ENVXABDK.js";
|
|
10
10
|
import "./chunk-MKAF2BHB.js";
|
|
11
11
|
import {
|
|
@@ -16,17 +16,17 @@ import "./chunk-3MHUREQ3.js";
|
|
|
16
16
|
import "./chunk-IQIXGTQV.js";
|
|
17
17
|
import {
|
|
18
18
|
block_init_default
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-V3VGGQHW.js";
|
|
20
20
|
import {
|
|
21
21
|
InputSearch
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-5Y4WONNK.js";
|
|
23
23
|
import "./chunk-5QFQN4X5.js";
|
|
24
24
|
import "./chunk-KXPFII7Q.js";
|
|
25
|
-
import "./chunk-
|
|
25
|
+
import "./chunk-HR6PJH65.js";
|
|
26
26
|
import "./chunk-6VOTOFR2.js";
|
|
27
27
|
import {
|
|
28
28
|
newSandboxDiv
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-XIJYBPX7.js";
|
|
30
30
|
import {
|
|
31
31
|
throwMsgWithFilePathAndFnName
|
|
32
32
|
} from "./chunk-WLU3JZQN.js";
|
|
@@ -223,7 +223,7 @@ async function findgene2paint(str, app, genomename, jwt) {
|
|
|
223
223
|
debugmode: app.debugmode
|
|
224
224
|
};
|
|
225
225
|
first_genetrack_tolist(g, par2.tklst);
|
|
226
|
-
import("./block-
|
|
226
|
+
import("./block-FWQVN7RK.js").then((b) => new b.Block(par2)).catch((err) => {
|
|
227
227
|
app.error0(err);
|
|
228
228
|
});
|
|
229
229
|
return;
|
|
@@ -807,7 +807,7 @@ var AppHeader = class _AppHeader {
|
|
|
807
807
|
debugmode: app.debugmode
|
|
808
808
|
};
|
|
809
809
|
first_genetrack_tolist(g, par.tklst);
|
|
810
|
-
import("./block-
|
|
810
|
+
import("./block-FWQVN7RK.js").then((b) => new b.Block(par));
|
|
811
811
|
app.drawer.dispatch({ type: "is_apps_btn_active", value: false });
|
|
812
812
|
});
|
|
813
813
|
return g_browser_btn;
|
|
@@ -820,4 +820,4 @@ var AppHeader = class _AppHeader {
|
|
|
820
820
|
export {
|
|
821
821
|
AppHeader
|
|
822
822
|
};
|
|
823
|
-
//# sourceMappingURL=AppHeader-
|
|
823
|
+
//# sourceMappingURL=AppHeader-YORJU7NY.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/header/omniSearch.js", "../appdrawer/card.js", "../appdrawer/dsButton.js", "../appdrawer/layout.js", "../appdrawer/mainBtn.js", "../appdrawer/store.js", "../appdrawer/app.js", "../src/header/AppHeader.ts"],
|
|
4
|
-
"sourcesContent": ["import { dofetch3 } from '#common/dofetch'\nimport { openSandbox } from '../../appdrawer/adSandbox'\nimport { newSandboxDiv, throwMsgWithFilePathAndFnName } from '#dom'\nimport { string2pos } from '../coord'\nimport * as parseurl from '../app.parseurl'\nimport urlmap from '#common/urlmap'\nimport { first_genetrack_tolist } from '#common/1stGenetk'\nimport blockinit from '../block.init'\nimport { select as d3select } from 'd3-selection'\n\n/*\n----EXPORTED----\nsearchItems()\nfindgenelst()\nfindgene2paint()\n\n----Internal----\nfindAppDrawerElements()\ngetExampleNames()\ngetFilteredElements()\n*/\n\nexport async function searchItems(app, tip, help, publications, jwt) {\n\tconst userInput = d3select('input').property('value').trim()\n\tconst data = [\n\t\t{\n\t\t\ttitle: 'Genes',\n\t\t\tdefault: true,\n\t\t\titems: await findgenelst(userInput, app.selectgenome.property('value'), jwt),\n\t\t\tcolor: '#F2F2F2',\n\t\t\tcallback: d => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\tfindgene2paint(d, app, app.selectgenome.property('value'), jwt)\n\t\t\t}\n\t\t}\n\t]\n\tawait findAppDrawerElements(app, userInput, data, tip)\n\t//Keep 'Help' section second last\n\tdata.push({\n\t\ttitle: 'Help',\n\t\tdefault: false,\n\t\titems: help.filter(d => d.label.toLowerCase().includes(userInput.toLowerCase())),\n\t\tcolor: '#faebd9',\n\t\tcallback: d => {\n\t\t\twindow.open(d.link, d.label)\n\t\t}\n\t})\n\tdata.push({\n\t\ttitle: 'Publications',\n\t\tdefault: false,\n\t\titems: publications.filter(\n\t\t\td =>\n\t\t\t\td.title.toLowerCase().includes(userInput.toLowerCase()) ||\n\t\t\t\td.appHeaderTitle.toLowerCase().includes(userInput.toLowerCase())\n\t\t),\n\t\tcolor: '#E6E6FA',\n\t\tcallback: d => {\n\t\t\twindow.open(d.doi, d.title)\n\t\t}\n\t})\n\treturn data\n}\n\nasync function findAppDrawerElements(app, input, data, tip) {\n\tconst re = await dofetch3(app.cardsPath + '/index.json')\n\tif (re.error) throwMsgWithFilePathAndFnName(`Problem retrieving ../cards/index.json`)\n\tconst userInput = input.toLowerCase().trim()\n\tconst elements = [...re.elements]\n\tlet filteredElements\n\tif (userInput.length > 2) {\n\t\t/** Adding the examples to the search terms is expensive\n\t\t * Limit when all card files are loaded based on user input\n\t\t * Maybe timeout instead? or combination of the two?\n\t\t */\n\t\tawait getExampleNames(elements, app)\n\t\tfilteredElements = getFilteredElements(elements, userInput)\n\t} else {\n\t\tfilteredElements = getFilteredElements(elements, userInput)\n\t}\n\n\tconst opts = {\n\t\tapp: app.drawer.opts,\n\t\tsandboxDiv: app.drawer.opts.sandboxDiv,\n\t\tgenomes: app.genomes,\n\t\tfromApp: true\n\t}\n\n\tdata.push(\n\t\t{\n\t\t\ttitle: 'Tracks and Apps',\n\t\t\titems: filteredElements.filter(c => c.type == 'card'),\n\t\t\tcolor: '#e1edf7',\n\t\t\tcallback: element => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\topenSandbox(element, opts)\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\ttitle: 'Datasets',\n\t\t\titems: filteredElements.filter(c => c.type == 'dsButton'),\n\t\t\tcolor: '#e5f5e4',\n\t\t\tcallback: element => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\topenSandbox(element, opts)\n\t\t\t}\n\t\t}\n\t)\n\treturn data\n}\n\nasync function getExampleNames(elements, app) {\n\tconst promises = elements.map(async elem => {\n\t\tif (elem.hidden || elem.type != 'card' || !elem.sandboxJson) return elem\n\t\tconst exs = await dofetch3(app.cardsPath + `/${elem.sandboxJson}.json`)\n\t\tif (exs?.ppcalls.length > 0) {\n\t\t\tfor (const c of exs.ppcalls) {\n\t\t\t\tif (c.isUI) return\n\t\t\t\tif (c?.label) elem.searchterms.push(c.label)\n\t\t\t}\n\t\t}\n\t})\n\n\tawait Promise.all(promises)\n}\n\nfunction getFilteredElements(elements, userInput) {\n\treturn elements\n\t\t.filter(elem => {\n\t\t\tif (elem.hidden) return false\n\t\t\tlet searchTermFound = (elem.searchterms || []).reduce((searchTermFound, searchTerm) => {\n\t\t\t\tif (searchTermFound) return true\n\t\t\t\treturn searchTerm.toLowerCase().includes(userInput)\n\t\t\t}, false)\n\t\t\treturn searchTermFound || elem.name.toLowerCase().includes(userInput)\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name))\n}\n\nexport async function findgenelst(str, genome, jwt) {\n\t//TODO - including something here about if user input includes a special character to return rather than comment out catch\n\tif (str.length == 0) return\n\ttry {\n\t\tconst data = await dofetch3('/genelookup', {\n\t\t\tbody: {\n\t\t\t\tinput: str,\n\t\t\t\tgenome,\n\t\t\t\tjwt\n\t\t\t}\n\t\t})\n\n\t\tif (data.error) throw data.error\n\t\tif (!data.hits) throw '.hits[] missing'\n\t\treturn data.hits\n\t} catch (err) {\n\t\t// err is likely \"invalid character in gene name\". ignore and continue\n\t\t// if (err.stack) console.log(err.stack)\n\t\t// throw err\n\t}\n}\n\nexport async function findgene2paint(str, app, genomename, jwt) {\n\tconst g = app.genomes[genomename]\n\tif (!g) {\n\t\tconsole.error('unknown genome ' + genomename)\n\t\treturn\n\t}\n\tconst sandbox_div = newSandboxDiv(app.drawer.opts.sandboxDiv)\n\tsandbox_div.header.html(\n\t\t'<div style=\"display:inline-block;\">' +\n\t\t\tstr +\n\t\t\t'</div><div class=\"sjpp-output-sandbox-title\">' +\n\t\t\tgenomename +\n\t\t\t'</div>'\n\t)\n\t// may yield tklst from url parameters\n\tconst urlp = urlmap()\n\tconst tklst = await parseurl.get_tklst(urlp, g)\n\n\tconst pos = string2pos(str, g)\n\tif (pos) {\n\t\t// input is coordinate, launch block\n\t\tconst par = {\n\t\t\thostURL: app.hostURL,\n\t\t\tjwt,\n\t\t\tholder: sandbox_div.body,\n\t\t\tgenome: g,\n\t\t\tnobox: true,\n\t\t\tchr: pos.chr,\n\t\t\tstart: pos.start - 1, // entered positions are 1-based. block uses 0-based\n\t\t\tstop: pos.stop - 1,\n\t\t\tdogtag: genomename,\n\t\t\ttklst,\n\t\t\tdebugmode: app.debugmode\n\t\t}\n\t\tfirst_genetrack_tolist(g, par.tklst)\n\n\t\timport('../block.js')\n\t\t\t.then(b => new b.Block(par))\n\t\t\t.catch(err => {\n\t\t\t\tapp.error0(err)\n\t\t\t})\n\t\treturn\n\t}\n\n\t// input string is not coordinate, find gene match\n\tconst par = {\n\t\thostURL: app.hostURL,\n\t\tjwt,\n\t\tquery: str,\n\t\tgenome: g,\n\t\tholder: sandbox_div.body,\n\t\tvariantPageCall_snv: app.variantPageCall_snv,\n\t\tsamplecart: app.samplecart,\n\t\ttklst,\n\t\tdebugmode: app.debugmode\n\t}\n\n\t// add svcnv tk from url param\n\tconst tmp = sessionStorage.getItem('urlp_mds')\n\tif (tmp) {\n\t\tconst l = tmp.split(',')\n\t\tif (l.length == 2) {\n\t\t\tpar.datasetqueries = [{ dataset: l[0], querykey: l[1] }]\n\t\t}\n\t}\n\n\tawait blockinit(par)\n}\n", "import { getCompInit } from '#rx'\nimport { rgb } from 'd3-color'\nimport { openSandbox } from './adSandbox'\nimport { slideDrawer } from './mainBtn'\n\n/*\n.opts{\n\t.app{\n\t\t.holder\n\t\t.element{}\n\t\t.sandboxDiv\n\t}\n}\n\nTODOs: \n\n- responsiveness of image on window resize \n\t- expand image size on resize\n\t- non square, take better use of space\n- Need fn in utils to decide black or white text based on background color contrast\n- Unify card and nestedCard layout. Only call one layout function for both\n\t- optional non image card layout\n\t- Make ribbons appear on nested cards\n- element.section only required if columnsLayout provided\n\n*/\n\nclass AppDrawerCard {\n\t// handles types 'card' and 'nestedCard'\n\tconstructor(opts) {\n\t\tthis.type = 'card'\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.holder = opts.holder\n\t\tthis.dom = opts.dom\n\t\tthis.sandboxDiv = opts.sandboxDiv\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\tif (!opts.element.name) throw `Card .name is missing`\n\t\tif (opts.element.type == 'card') {\n\t\t\tif (!opts.element.sandboxJson && !opts.element.sandboxHtml)\n\t\t\t\tthrow `Either .sandboxJson or .sandboxHtml is missing for card=${opts.element.name}`\n\t\t}\n\t\tif (opts.element.type == 'nestedCard') {\n\t\t\tif (!opts.element.children || opts.element.children.length == 0)\n\t\t\t\tthrow `Missing .children for nested card = ${opts.element.name}`\n\t\t}\n\t\tif (opts.element.ribbon) {\n\t\t\tif (!opts.element.ribbon.text) throw `Missing ribbon .text for ${opts.element.type} = ${opts.element.name}`\n\n\t\t\t//ProteinPaint app drawer specific validation\n\t\t\tif (\n\t\t\t\t(opts.element.ribbon.text.toUpperCase() == 'NEW' || opts.element.ribbon.text.toUpperCase() == 'UPDATED') &&\n\t\t\t\t!opts.element.ribbon.expireDate\n\t\t\t)\n\t\t\t\tthrow `${opts.element.type} = ${\n\t\t\t\t\topts.element.name\n\t\t\t\t} ribbon is ${opts.element.ribbon.text.toUpperCase()} but .expireDate is missing. Please provide`\n\n\t\t\tif (opts.element.ribbon.expireDate) {\n\t\t\t\tif (opts.element.ribbon.expireDate >= 0) {\n\t\t\t\t\tthrow `Flag for ${opts.element.type} = ${opts.element.name} is not a valid date`\n\t\t\t\t} //TODO add validation for format?\n\t\t\t}\n\t\t}\n\t\treturn opts\n\t}\n\n\tmain() {}\n}\n\nexport const cardInit = getCompInit(AppDrawerCard)\n\nfunction setRenderers(self) {\n\tconst card = self.holder.append('li')\n\tif (self.opts.element.type == 'card') {\n\t\tcard.classed('sjpp-track', true).html(\n\t\t\t`<div class=\"sjpp-track-h\"><span style=\"font-size:14.5px;font-weight:500;\">${self.opts.element.name}</span></div>\n\t\t\t\t${\n\t\t\t\t\tself.opts.element.description\n\t\t\t\t\t\t? `<span class=\"sjpp-track-blurb\" style=\"cursor:default\">${self.opts.element.description}</span></div>`\n\t\t\t\t\t\t: ' '\n\t\t\t\t}\n\t\t\t\t<span class=\"sjpp-track-image\"><img src=\"${self.opts.element.image}\" alt=\"${\n\t\t\t\tself.opts.element.description\n\t\t\t}\"></img></span>\n\t\t\t\t</div>`\n\t\t)\n\t} else if (self.opts.element.type == 'nestedCard') {\n\t\tcard.classed('sjpp-app-drawer-card', true).html(\n\t\t\t`<p style=\"margin-left: 12px; font-size:14.5px;font-weight:500; display: block;\">${self.opts.element.name}</p>\n\t\t\t<p style=\"display: block; font-size: 13px; font-weight: 300; margin-left: 20px; justify-content: center; font-style:oblique; color: #403f3f;\">${self.opts.element.description}</p>`\n\t\t)\n\t}\n\n\tself.makeRibbon = function (ribbon) {\n\t\t//only relevant for 'card', not 'nestedCard'\n\t\tconst ribbonDiv = card\n\t\t\t.append('div')\n\t\t\t.classed('sjpp-app-drawer-card-ribbon', true)\n\t\t\t.style('align-items', 'center')\n\t\t\t.style('justify-content', 'center')\n\n\t\t//*********TODO: move from diagonal to straight on right side */\n\t\tconst text = ribbon.text.toUpperCase()\n\t\t//Enforce color palette for proteinpaint homepage ribbons\n\t\tconst color =\n\t\t\ttext == 'BETA'\n\t\t\t\t? '#418cb5'\n\t\t\t\t: text == 'NEW'\n\t\t\t\t? '#1ba176'\n\t\t\t\t: text == 'UPDATED'\n\t\t\t\t? 'orange'\n\t\t\t\t: ribbon.color\n\t\t\t\t? ribbon.color\n\t\t\t\t: 'red'\n\n\t\tribbonDiv\n\t\t\t.append('span')\n\t\t\t.text(text)\n\t\t\t.style('color', 'white')\n\t\t\t.style('background-color', rgb(color).darker())\n\t\t\t.style('height', 'auto')\n\t\t\t.style('width', '100%')\n\t\t\t.style('top', '15%')\n\t\t\t.style('left', '-30%')\n\t\t\t.style('font-size', '11.5px')\n\t\t\t.style('text-transform', 'uppercase')\n\t\t\t.style('text-align', 'center')\n\t}\n\n\tif (self.opts.element.ribbon) {\n\t\tconst today = new Date()\n\t\tconst ribbonExpireDate = new Date(self.opts.element.ribbon.expireDate)\n\t\t//Allows ribbons to expire or appear indefinitely\n\t\tif (ribbonExpireDate > today || ribbonExpireDate == 'Invalid Date') self.makeRibbon(self.opts.element.ribbon)\n\t}\n\n\tcard.on('click', async event => {\n\t\tevent.stopPropagation()\n\t\tawait self.app.dispatch({\n\t\t\ttype: 'is_apps_btn_active',\n\t\t\tvalue: false\n\t\t})\n\t\tslideDrawer(self)\n\t\t/** Focused elements rendering concurrently with the drawer\n\t\t * animation cause the drawer scrolling to jerk. Wait till\n\t\t * the animation is complete, then open the sandbox. */\n\t\tsetTimeout(async () => {\n\t\t\tawait openSandbox(self.opts.element, self.opts)\n\t\t}, self.state.duration + 5)\n\t})\n}\n", "import { getInitFxn } from '#rx'\nimport * as utils from './utils'\nimport { openSandbox } from './adSandbox'\nimport { slideDrawer } from './mainBtn'\n\n/*\n.opts{\n\t.app\n\t.holder\n\t.element{}\n\t.dom{}\n\t.state{}\n\t.sandboxDiv\n}\n*/\n\nclass AppDrawerButton {\n\tconstructor(opts) {\n\t\tthis.type = 'button' // works for 'dsButton'. May expand to other button types\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.holder = opts.holder\n\t\tthis.dom = opts.dom\n\t\tthis.sandboxDiv = opts.sandboxDiv\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\tif (!opts.element.name) throw `Button name is missing`\n\t\tif (!opts.element.sandboxJson && !opts.element.sandboxHtml)\n\t\t\tthrow `Either .sandboxJson or .sandboxHtml is missing for button=${opts.element.name}`\n\t\treturn opts\n\t}\n\n\tmain() {}\n}\n\nexport const buttonInit = getInitFxn(AppDrawerButton)\n\nfunction setRenderers(self) {\n\tconst btn = utils.makeButton({ div: self.holder, text: self.opts.element.name, margin: '20px 20px 0px' })\n\tbtn.attr('class', 'sjpp-appdrawer-dataset-btn').on('click', async event => {\n\t\tevent.stopPropagation()\n\t\tawait self.app.dispatch({\n\t\t\ttype: 'is_apps_btn_active',\n\t\t\tvalue: false\n\t\t})\n\t\tslideDrawer(self)\n\t\tawait openSandbox(self.opts.element, self.opts)\n\t})\n}\n", "import { getCompInit } from '#rx'\nimport { rgb } from 'd3-color'\nimport { defaultcolor } from '#shared/common.js'\nimport { cardInit } from './card'\nimport { buttonInit } from './dsButton'\nimport { select } from 'd3-selection'\nimport { dofetch3, sayerror } from '#src/client'\n\n/*\n.opts{}\n .app{}\n\t.dom{}\n\t.state{}\n\nQuestions: \n\t- Organize in window based on section size to make best use of space?\n - For the column layout: \n 1. Cap number of columns?\n 2. Allow y overflow for >2 columns (like Trello)?\n*/\n\nclass AppDrawerLayoutComp {\n\tconstructor(opts) {\n\t\tthis.type = 'layout'\n\t\tthis.dom = {\n\t\t\tholder: opts.dom.drawerDiv,\n\t\t\twrapper: opts.dom.wrapper,\n\t\t\tsandboxDiv: opts.dom.sandboxDiv\n\t\t}\n\t\tthis.state = opts.state\n\t\tthis.hasStatePreMain = true\n\t}\n\n\tasync validateIndexJson() {\n\t\tconst index = await this.getIndexJson()\n\t\tif (!index.elements) throw `Missing elements array`\n\t\tif (!index.elements.length) throw `No element objects provided`\n\t\tif (index.columnsLayout) {\n\t\t\tif (index.columnsLayout.length == 0) throw `Missing column objects`\n\t\t\tconst allGridAreaValues = index.columnsLayout.map(s => s.gridarea)\n\t\t\tif (allGridAreaValues.length != new Set(allGridAreaValues).size) throw `Duplicate values for .gridarea found`\n\t\t\tconst allSectionIdValues = []\n\t\t\tfor (const col of index.columnsLayout) {\n\t\t\t\tif (!col.gridarea) throw `Missing column .gridarea for column = ${col.name}`\n\t\t\t\tif (!col.sections || col.sections.length == 0) throw `Missing section objects for column = ${col.name}`\n\t\t\t\tfor (const section of col.sections) {\n\t\t\t\t\tif (!section.id)\n\t\t\t\t\t\tthrow `Missing section .id in ${section.name ? `section = ${section.name}` : `column = ${col.name} array`}`\n\t\t\t\t\tallSectionIdValues.push(section.id)\n\t\t\t\t}\n\t\t\t\tif (col.sections.length != new Set(col.sections).size) {\n\t\t\t\t\tthrow `Non-unique levels in line ${lineNum}: ${JSON.stringify(levelNames)}`\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (allSectionIdValues.length != new Set(allSectionIdValues).size) throw `Duplicate values for section.id found`\n\n\t\t\t// Required element attributes when columnsLayout specified\n\t\t\tfor (const element of index.elements) {\n\t\t\t\tif (!element.section) throw `.section is missing for ${element.type} = ${element.name}`\n\t\t\t\tif (!allSectionIdValues.some(d => d == element.section))\n\t\t\t\t\tthrow `section = ${element.section} for ${element.type} = ${element.name} is not a column section`\n\t\t\t}\n\t\t}\n\t\treturn index\n\t}\n\n\tasync getIndexJson() {\n\t\t// Proteinpaint specific index.\n\t\t// TODO: Later modifiy to accept user index.\n\t\tconst re = await dofetch3(this.app.cardsPath + '/index.json')\n\t\tif (re.error) {\n\t\t\tsayerror(this.dom.holder.append('div'), re.error)\n\t\t\treturn\n\t\t}\n\t\treturn re\n\t}\n\n\tvalidateElements() {\n\t\tconst features = JSON.parse(sessionStorage.getItem('optionalFeatures')) || {}\n\t\tthis.elements = this.index.elements.filter(e => !e.hidden && (!e.configFeature || features[e.configFeature]))\n\t}\n\n\tasync init() {\n\t\tthis.index = await this.validateIndexJson()\n\t\tthis.elementsRendered = false\n\t\tsetRenderers(this)\n\t\tthis.validateElements()\n\t\tthis.layout = this.index.columnsLayout ? this.index.columnsLayout : null\n\t\tthis.components = {\n\t\t\telements: []\n\t\t}\n\t}\n\n\tasync main() {\n\t\t// prevent elements from reloading each time\n\t\tif (this.elementsRendered == true) return\n\t\tthis.elementsRendered = true\n\t\tfor (const element of this.elements) {\n\t\t\tconst holder = select(this.layout ? `#${element.section} > .sjpp-element-list` : `.sjpp-element-list`)\n\t\t\tif (element.type == 'card' || element.type == 'nestedCard') {\n\t\t\t\tthis.components.elements.push(\n\t\t\t\t\tawait cardInit({\n\t\t\t\t\t\tapp: this.app,\n\t\t\t\t\t\tholder: holder\n\t\t\t\t\t\t\t.style('display', 'grid')\n\t\t\t\t\t\t\t.style('grid-template-columns', 'repeat(auto-fit, minmax(320px, 1fr))')\n\t\t\t\t\t\t\t.style('gap', '10px')\n\t\t\t\t\t\t\t.style('list-style', 'none')\n\t\t\t\t\t\t\t.style('margin', '15px 0px'),\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tdom: this.opts.dom,\n\t\t\t\t\t\tstate: this.state,\n\t\t\t\t\t\tsandboxDiv: this.dom.sandboxDiv\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t} else if (element.type == 'dsButton') {\n\t\t\t\tthis.components.elements.push(\n\t\t\t\t\tawait buttonInit({\n\t\t\t\t\t\tapp: this.app,\n\t\t\t\t\t\tholder,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tdom: this.opts.dom,\n\t\t\t\t\t\tstate: this.state,\n\t\t\t\t\t\tsandboxDiv: this.dom.sandboxDiv\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const layoutInit = getCompInit(AppDrawerLayoutComp)\n\nfunction setRenderers(self) {\n\tif (!self.index.columnsLayout) noDefinedLayout(self)\n\tif (self.index.columnsLayout) columnsLayout(self)\n}\n\nfunction noDefinedLayout(self) {\n\tconst flexLayout = self.dom.wrapper\n\t\t.append('div')\n\t\t.style('display', 'flex')\n\t\t.style('padding', '10px')\n\t\t.classed('sjpp-element-list', true)\n\treturn flexLayout\n}\n\nfunction columnsLayout(self) {\n\t// Allow user to create multiple columns in parent grid\n\tconst parentGrid = self.dom.wrapper\n\t\t.append('div')\n\t\t.style('display', 'grid')\n\t\t.style('grid-template-columns', 'repeat(auto-fit, minmax(425px, 1fr))')\n\t\t.style('gap', '10px')\n\t\t.style('padding', '10px')\n\t\t.style('text-align', 'left')\n\n\t//Allow user to create multiple parent columns in columnsLayout\n\tconst gridareas = []\n\tfor (const column of self.index.columnsLayout) gridareas.push(column.gridarea)\n\tparentGrid.style('grid-template-areas', `\"${gridareas.toString().replace(',', ' ')}\"`)\n\tfor (const col of self.index.columnsLayout) {\n\t\tconst newCol = parentGrid.append('div').style('grid-area', col.gridarea).classed('.sjpp-track-cols', true)\n\t\tfor (const section of col.sections) addSection(section, newCol)\n\t}\n\n\tfunction addSection(section, newCol) {\n\t\tconst newSection = newCol.append('div').attr('id', section.id)\n\t\tif (section.name)\n\t\t\tnewSection\n\t\t\t\t.append('h5')\n\t\t\t\t.classed('sjpp-appdrawer-cols', true)\n\t\t\t\t.style('color', rgb(defaultcolor).darker())\n\t\t\t\t.text(section.name)\n\t\tnewSection.append('div').classed('sjpp-element-list', true).style('padding', '10px')\n\n\t\treturn newSection\n\t}\n}\n", "import { getCompInit } from '#rx'\nimport { layoutInit } from './layout'\n\n/*\n.opts{}\n .app{}\n\t.dom{}\n\t.state{}\n\nTODOs: \n- Replace drawerFullHeight with a different approach\n\t- Causes the drawer to only partially appear when the window zooms in\n*/\n\nclass MainHeadboxBtn {\n\tconstructor(opts) {\n\t\tthis.type = 'mainBtn'\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.dom = opts.dom\n\t\tthis.state = opts.state\n\t\tthis.hasStatePreMain = true\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\treturn opts.app.opts\n\t}\n\n\tgetState(appState) {\n\t\treturn {\n\t\t\tappBtnActive: appState.appBtnActive\n\t\t}\n\t}\n\n\tasync init() {\n\t\tthis.btnRendered = false\n\t\tthis.drawerFullHeight = ''\n\t\ttry {\n\t\t\t//detect whether to show examples right away, which is when the url is barebone without any route paths or search parameters\n\t\t\tif (window.location.pathname == '/' && !window.location.search.length)\n\t\t\t\tawait this.app.dispatch({ type: 'is_apps_btn_active', value: true })\n\t\t\tthis.components = {\n\t\t\t\tlayout: []\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tasync main(appState) {\n\t\tif (this.app.getState(appState).appBtnActive == true && this.btnRendered == false) {\n\t\t\tthis.dom.drawerDiv.style('background-color', '#f5f5f5') //Quick fix for drawerDiv initially appearing before layout init\n\t\t\t//Init layout only once when 'Apps' button is active for the first time\n\t\t\tthis.components.layout.push(\n\t\t\t\tawait layoutInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tdom: this.dom,\n\t\t\t\t\tstate: this.state\n\t\t\t\t})\n\t\t\t)\n\t\t\t//Give the drawerDiv time to render before calculating height\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.drawerFullHeight = this.dom.drawerDiv.node().getBoundingClientRect().height + 5\n\t\t\t}, this.state.duration + 5)\n\t\t\tslideDrawer(this)\n\t\t\tthis.btnRendered = true\n\t\t}\n\t\tif (this.state.appBtnActive == false && this.btnRendered == true) slideDrawer(this)\n\t}\n}\n\nexport const mainBtnInit = getCompInit(MainHeadboxBtn)\n\nfunction setRenderers(self) {\n\tself.dom.btnWrapper\n\t\t.style('background-color', self.state.appBtnActive ? '#b2b2b2' : '#f2f2f2')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\t\t.on('click', async event => {\n\t\t\tevent.stopPropagation()\n\t\t\tawait self.app.dispatch({ type: 'is_apps_btn_active' })\n\t\t\tslideDrawer(self)\n\t\t\tif (self.state.appBtnActive) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tself.drawerFullHeight = self.dom.drawerDiv.node().getBoundingClientRect().height + 5\n\t\t\t\t}, self.state.duration + 5)\n\t\t\t}\n\t\t})\n\n\tself.dom.btn\n\t\t.attr('class', 'sja_menuoption')\n\t\t.style('display', 'inline-block')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\t\t.style('padding', self.opts.padw_sm)\n\t\t.style('margin', '0px 5px')\n\t\t.style('cursor', 'pointer')\n\t\t.text('Apps')\n\n\t// an empty spacer div, needed since the arrows are absolutely positioned\n\tself.dom.drawerHint\n\t\t.style('position', 'relative')\n\t\t.style('display', 'inline-block')\n\t\t.style('height', self.state.arrowSize.closed + 'px')\n\t\t.style('width', self.state.appBtnActive ? self.state.hintWidth.open : self.state.hintWidth.closed)\n\t\t.style('background-color', 'transparent')\n\t\t.style('text-align', 'center')\n\t\t.style('cursor', 'pointer')\n\n\tself.dom.drawerArrow\n\t\t.style('position', 'absolute')\n\t\t.style('font-size', self.state.arrowSize.closed + 'px')\n\t\t.style('right', self.state.hintPos.closed.rt + 'px')\n\t\t.style('bottom', self.state.hintPos.closed.btm + 'px')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.arrowColor.closed)\n\t\t.style('opacity', self.state.appBtnActive ? 0 : 1)\n\t\t.style('cursor', 'pointer')\n\t\t.html('▼')\n\n\tself.dom.drawerArrowOpen\n\t\t.style('position', 'absolute')\n\t\t.style('font-size', self.state.arrowSize.open + 'px')\n\t\t.style('left', self.state.hintPos.open.left + 'px')\n\t\t.style('bottom', self.state.hintPos.open.btm + 'px')\n\t\t.style('transform', 'rotate(180deg)')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.arrowColor.open)\n\t\t.style('opacity', self.state.appBtnActive ? 1 : 0)\n\t\t.style('cursor', 'pointer')\n\t\t.style('pointer-events', self.state.appBtnActive ? 'auto' : 'none')\n\t\t.html('▼')\n\n\tself.drawerFullHeight = self.dom.drawerRow.node().getBoundingClientRect().height + 5\n}\n\nexport async function slideDrawer(self) {\n\tself.dom.btnWrapper\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('background-color', self.state.appBtnActive ? '#b2b2b2' : '#f2f2f2')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\n\tself.dom.btn\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\n\tself.dom.drawerDiv\n\t\t.style('display', 'inline-block')\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('top', self.state.appBtnActive ? '0px' : '-' + self.drawerFullHeight + 'px')\n\n\tself.dom.drawerRow\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('height', self.state.appBtnActive ? self.drawerFullHeight + 'px' : '0px')\n\n\tself.dom.drawerHint\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('width', self.state.appBtnActive ? self.opts.state.hintWidth.open : self.opts.state.hintWidth.closed)\n\n\tself.dom.drawerArrow\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('opacity', self.state.appBtnActive ? 0 : 1)\n\n\tself.dom.drawerArrowOpen\n\t\t.style('pointer-events', self.state.appBtnActive ? 'auto' : 'none')\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('opacity', self.state.appBtnActive ? 1 : 0)\n}\n", "import { getStoreInit } from '#rx'\n\n/*\n.opts{}\n\n*/\n\nclass AppDrawerStore {\n\tconstructor(opts) {\n\t\tthis.type = 'store'\n\t\tthis.defaultState = {\n\t\t\t// for apps drawer animation\n\t\t\tduration: 500,\n\t\t\thintPos: {\n\t\t\t\topen: { btm: -42, left: 13 },\n\t\t\t\tclosed: { btm: 3, rt: 5 }\n\t\t\t},\n\t\t\thintWidth: { open: '0px', closed: '18px' },\n\t\t\tarrowSize: { open: 42, closed: 20 },\n\t\t\tarrowColor: { open: 'rgb(242,242,242)', closed: 'rgb(85,85,85)' },\n\t\t\tappBtnActive: false\n\t\t}\n\t}\n\n\tasync init() {}\n}\n\nexport const appDrawerStoreInit = getStoreInit(AppDrawerStore)\n\nAppDrawerStore.prototype.actions = {\n\tis_apps_btn_active(action) {\n\t\tthis.state.appBtnActive = 'value' in action ? action.value : !this.state.appBtnActive\n\t}\n}\n", "import { getAppInit } from '#rx'\nimport { mainBtnInit } from './mainBtn'\nimport { appDrawerStoreInit } from './store'\n\n/*\n.opts{}\n .holder\n .genomes{}\n - client-side genome object\n\t.drawerRow\n\t.sandboxDiv\n\t.genome_browser_btn\n\t.debugmode\n\t.headbox\n\t.padw_sm\n\nTODOs: \n\nQuestions: \n*/\n\nclass AppDrawerApp {\n\tconstructor(opts) {\n\t\tthis.type = 'app'\n\n\t\tconst drawerDiv = opts.drawerRow\n\t\t\t.append('div')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('margin', '0 20px')\n\t\t\t.style('padding', `0 ${opts.padw_sm}`)\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('overflow', 'hidden')\n\t\t\t.style('border-radius', '0px 0px 5px 5px')\n\t\t\t.style('width', '93vw')\n\t\t\t.classed('sjpp-drawer-div', true)\n\n\t\tconst btnWrapper = opts.headbox\n\t\t\t.append('div')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('margin-left', '5px')\n\t\t\t.style('margin-right', '5px')\n\t\t\t.style('border-radius', '5px')\n\t\t\t.classed('sjpp-apps-btn-wrapper', true)\n\n\t\tthis.dom = {\n\t\t\tdrawerRow: opts.drawerRow,\n\t\t\tdrawerDiv,\n\t\t\tsandboxDiv: opts.sandboxDiv,\n\t\t\tbtnWrapper,\n\t\t\tbtn: btnWrapper.append('div'),\n\t\t\tdrawerHint: btnWrapper.append('div'),\n\t\t\tdrawerArrow: btnWrapper.append('div'),\n\t\t\tdrawerArrowOpen: btnWrapper.append('div'),\n\t\t\twrapper: drawerDiv.append('div')\n\t\t}\n\t}\n\n\tpreApiFreeze(api) {\n\t\tapi.cardsPath = this.opts.cardsPath\n\t}\n\n\tasync init() {\n\t\ttry {\n\t\t\tthis.store = await appDrawerStoreInit({ app: this.api, state: this.opts.state })\n\t\t\tthis.state = await this.store.copyState()\n\t\t\tthis.components = {\n\t\t\t\tmainBtn: await mainBtnInit({\n\t\t\t\t\tapp: this.api,\n\t\t\t\t\tdom: this.dom,\n\t\t\t\t\tstate: this.state,\n\t\t\t\t\tindexJson: this.indexJson\n\t\t\t\t})\n\t\t\t}\n\t\t\tawait this.api.dispatch()\n\t\t} catch (e) {\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tmain() {}\n}\n\nexport const appDrawerInit = getAppInit(AppDrawerApp)\n", "import { first_genetrack_tolist } from '#common/1stGenetk'\nimport { InputSearch, Menu, newSandboxDiv } from '#dom'\nimport { searchItems } from './omniSearch.js'\nimport { appDrawerInit } from '../../appdrawer/app.js'\nimport { rgb as d3rgb } from 'd3-color'\nimport { defaultcolor } from '#shared/common.js'\nimport { dofetch3 } from '#common/dofetch'\nimport { ClientCopyGenome } from 'types/global.ts'\n\ntype Citation = {\n\tid: number\n\ttitle: string\n\tappHeaderTitle: string\n\tyear: number\n\tjournal: string\n\tpmid: number\n\tpmidURL: string\n\tdoi: string\n}\n\ntype AppHeaderOpts = {\n\t/** menu created in app.js */\n\theadtip: Menu\n\t/** runpp app */\n\tapp: any\n\t/** server returned data */\n\tdata: any\n\t/** token */\n\tjwt: any\n}\n\nexport class AppHeader {\n\theadtip: Menu\n\tapp: any\n\tdata: any\n\tjwt: any\n\t/** List of publications defined in the app drawer\n\t * Appears in button in the header and in search results\n\t */\n\tpublications: Citation[]\n\t/** Used in both the Help button and omni search\n\t * .onlySearch is used to filter out items that should not appear in the Help button\n\t */\n\tstatic help = [\n\t\t{\n\t\t\tlabel: 'Embed in your website',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/Embedding'\n\t\t},\n\t\t{\n\t\t\tlabel: 'URL parameters',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/URL-parameters'\n\t\t},\n\t\t{\n\t\t\tlabel: 'All tutorials',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/'\n\t\t},\n\t\t{\n\t\t\tlabel: 'User community',\n\t\t\tlink: 'https://groups.google.com/g/proteinpaint'\n\t\t},\n\t\t{\n\t\t\tlabel: 'License ProteinPaint',\n\t\t\tlink: 'https://www.stjude.org/research/why-st-jude/shared-resources/technology-licensing/technologies/proteinpaint-web-application-for-visualizing-genomic-data-sj-15-0021.html',\n\t\t\tonlySearch: true\n\t\t},\n\t\t{\n\t\t\tlabel: 'Our Team',\n\t\t\tlink: 'https://proteinpaint.stjude.org/team/',\n\t\t\tonlySearch: true\n\t\t}\n\t]\n\n\tconstructor(opts: AppHeaderOpts) {\n\t\tthis.headtip = opts.headtip\n\t\tthis.app = opts.app\n\t\tthis.data = opts.data\n\t\tthis.jwt = opts.jwt\n\t\tthis.publications = []\n\t}\n\n\tasync createPublicationsList() {\n\t\tconst re = await dofetch3(this.app.cardsPath + '/citations.json')\n\t\tif (re.error) console.error(`Problem retrieving ../cards/citations.json`)\n\t\t//Sort in reverse chronological order for the publications button\n\t\tthis.publications = re?.publications?.length\n\t\t\t? re.publications.filter((d: Citation) => d.appHeaderTitle).sort((a: Citation, b: Citation) => b.year - a.year)\n\t\t\t: []\n\t}\n\n\tasync makeheader() {\n\t\tawait this.createPublicationsList()\n\n\t\tconst color = d3rgb(defaultcolor)\n\t\tconst padw_lg = '13px'\n\t\tconst padw_input = '5px 10px'\n\t\tconst padw_sm = '7px 10px'\n\t\tconst doc_width = document.documentElement.clientWidth\n\t\t// head\n\t\tconst row = this.app.holder\n\t\t\t.append('div')\n\t\t\t.style('white-space', 'nowrap')\n\t\t\t.style(\n\t\t\t\t'border-bottom',\n\t\t\t\tdoc_width > 1600 ? 'solid 1px rgba(' + color.r + ',' + color.g + ',' + color.b + ',.3)' : ''\n\t\t\t)\n\n\t\tconst headbox = row\n\t\t\t.append('div')\n\t\t\t.style('margin', '10px')\n\t\t\t.style('padding', '8px')\n\t\t\t.style('padding-bottom', '12px')\n\t\t\t.style('display', doc_width < 1600 ? 'block' : 'inline-block')\n\t\t\t.style(\n\t\t\t\t'border-bottom',\n\t\t\t\tdoc_width < 1600 ? 'solid 1px rgba(' + color.r + ',' + color.g + ',' + color.b + ',.3)' : ''\n\t\t\t)\n\n\t\t// .style('border-radius', '5px')\n\t\t// .style('background-color', 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',.1)')\n\t\tconst headinfo = row\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', padw_sm)\n\t\t\t.style('padding-left', '25px')\n\t\t\t.style('font-size', '.8em')\n\t\t\t.style('color', d3rgb(defaultcolor).darker())\n\n\t\t{\n\t\t\t// a row for server stats\n\t\t\tconst row = headinfo.append('div').style('padding-left', '15px')\n\t\t\t// link to the published ppfull container version, instead of github release tarball which we do not advertise;\n\t\t\t// github's pkgs/container link has a timestamp before the tag, which cannot be computed here (but may be able to query later?)\n\t\t\tconst link = `https://github.com/stjude/proteinpaint/pkgs/container/ppfull` // url to list of published container versions\n\t\t\tconst version = this.data.pkgver\n\t\t\t\t? `Release version: <a href=\"${link}\" target=\"${this.data.pkgver}\">${this.data.pkgver}</a>`\n\t\t\t\t: `Code date: ${this.data.codedate}` // default to using code date as before if pkgver is not available\n\t\t\trow\n\t\t\t\t.attr('id', 'sjpp-serverstat')\n\t\t\t\t.append('span')\n\t\t\t\t.html(`${version}, server launched: ${this.data.launchdate || '??'}.`)\n\t\t\tif (this.data.hasblat) {\n\t\t\t\trow\n\t\t\t\t\t.append('a')\n\t\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t\t.text('Running BLAT')\n\t\t\t\t\t.on('click', async event => {\n\t\t\t\t\t\tthis.headtip.clear().showunder(event.target)\n\t\t\t\t\t\tconst div = this.headtip.d.append('div').style('margin', '10px')\n\t\t\t\t\t\tconst wait = div.append('div').text('Loading...')\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst data = await dofetch3('blat?serverstat=1')\n\t\t\t\t\t\t\tif (data.error) throw data.error\n\t\t\t\t\t\t\tif (!data.lst) throw 'invalid response'\n\t\t\t\t\t\t\twait.remove()\n\t\t\t\t\t\t\tfor (const i of data.lst) {\n\t\t\t\t\t\t\t\tdiv.append('div').text(i)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e: any) {\n\t\t\t\t\t\t\twait.text(e.message || e)\n\t\t\t\t\t\t\tif (e.stack) console.error(e.stack)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif (this.data.headermessage) {\n\t\t\theadinfo.append('div').html(this.data.headermessage)\n\t\t}\n\n\t\t// 1\n\t\theadbox\n\t\t\t.append('div')\n\t\t\t.text('ProteinPaint')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', padw_lg)\n\t\t\t.style('color', defaultcolor)\n\t\t\t.style('font-size', '1.3em')\n\t\t\t.style('font-weight', 'bold')\n\n\t\t// 2, search box\n\t\tconst omniSearch = new InputSearch({\n\t\t\tholder: headbox,\n\t\t\ttip: this.headtip,\n\t\t\tstyle: {\n\t\t\t\tpadding: padw_sm,\n\t\t\t\tborder: `'solid 1px ${defaultcolor}`\n\t\t\t},\n\t\t\tsize: 32,\n\t\t\tplaceholder: 'Gene, position, SNP, app, or dataset',\n\t\t\ttitle: 'Search by gene, SNP, position, app, or dataset',\n\t\t\tsearchItems: async () => {\n\t\t\t\treturn await searchItems(this.app, this.headtip, AppHeader.help, this.publications, this.jwt)\n\t\t\t}\n\t\t})\n\n\t\tomniSearch.initUI()\n\n\t\tconst genome_select_div = headbox.append('div').attr('class', 'sjpp-genome-select-div').style('padding', padw_sm)\n\n\t\tconst get_placeholder = () => {\n\t\t\tconst currG = this.app.genomes[this.app.selectgenome.property('value')]\n\t\t\t/** Defaults */\n\t\t\tconst opts2Show = ['Gene', 'position', 'app']\n\t\t\t/** Show all the genomic options together */\n\t\t\tif (currG.hasSNP) opts2Show.splice(2, 0, 'SNP')\n\t\t\tif (Object.keys(currG.datasets).length) opts2Show.push('dataset')\n\t\t\tconst str = opts2Show.join(', ').replace(/,(?=[^,]*$)/, ', or')\n\t\t\treturn str\n\t\t}\n\n\t\tthis.app.selectgenome = genome_select_div\n\t\t\t.append('select')\n\t\t\t.attr('aria-label', 'Select a genome')\n\t\t\t.attr('class', 'sjpp-genome-select')\n\t\t\t.style('padding', padw_input)\n\t\t\t.style('border', 'solid 1px ' + defaultcolor)\n\t\t\t.on('change', () => {\n\t\t\t\tthis.update_genome_browser_btn(this.app)\n\t\t\t\tomniSearch.updatePlaceholder(get_placeholder())\n\t\t\t})\n\n\t\tconst filterGenomes = Object.values(this.app.genomes).filter((g: any) => !g.hideOnClient) as ClientCopyGenome[]\n\t\tfor (const n of filterGenomes) {\n\t\t\tthis.app.selectgenome.append('option').attr('n', n.name).text(`${n.species} ${n.name}`).property('value', n.name)\n\t\t}\n\t\tthis.app.genome_browser_btn = this.make_genome_browser_btn(this.app, headbox, this.jwt)\n\n\t\tthis.app.drawer = await appDrawerInit({\n\t\t\tholder: this.app.holder,\n\t\t\tgenomes: this.app.genomes,\n\t\t\tdrawerRow: this.app.holder\n\t\t\t\t.append('div')\n\t\t\t\t.style('position', 'relative')\n\t\t\t\t.style('overflow-x', 'visible')\n\t\t\t\t.style('overflow-y', 'hidden')\n\t\t\t\t.classed('sjpp-drawer-row', true),\n\t\t\tsandboxDiv: this.app.holder.append('div').style('margin-top', '15px').classed('sjpp-drawer-sandbox', true),\n\t\t\tgenome_browser_btn: this.app.genome_browser_btn,\n\t\t\tdebugmode: this.app.debugmode,\n\t\t\theadbox,\n\t\t\tpadw_sm,\n\t\t\tcardsPath: this.app.cardsPath\n\t\t})\n\n\t\t//Help button\n\t\theadbox\n\t\t\t.append('span')\n\t\t\t.classed('sja_menuoption', true)\n\t\t\t.attr('id', 'sjpp-header-help-btn')\n\t\t\t.style('padding', padw_sm)\n\t\t\t.text('Help')\n\t\t\t.on('click', async event => {\n\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\tconst div = this.headtip.clear().show(p.left - 0, p.top + p.height + 5)\n\n\t\t\t\tawait div.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('padding', '5px 20px')\n\t\t\t\t\t.selectAll('p')\n\t\t\t\t\t.data(AppHeader.help.filter(d => !d.onlySearch))\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('p')\n\t\t\t\t\t.html(d => `<a href=${d.link} target=_blank>${d.label}</a>`)\n\t\t\t})\n\n\t\t//Publications button\n\t\t//Citations not available on CI server\n\t\tif (this.publications.length > 0) {\n\t\t\theadbox\n\t\t\t\t.append('span')\n\t\t\t\t.classed('sja_menuoption', true)\n\t\t\t\t.attr('id', 'sjpp-header-publications-btn')\n\t\t\t\t.style('padding', padw_sm)\n\t\t\t\t.style('margin', '0px 5px')\n\t\t\t\t.text('Publications')\n\t\t\t\t.on('click', async event => {\n\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\tconst div = this.headtip.clear().show(p.left - 150, p.top + p.height + 5)\n\n\t\t\t\t\tawait div.d\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('padding', '5px 20px')\n\t\t\t\t\t\t.selectAll('p')\n\t\t\t\t\t\t.data(this.publications)\n\t\t\t\t\t\t.enter()\n\t\t\t\t\t\t.append('p')\n\t\t\t\t\t\t.html((d: any) => `<a href=${d.doi} target=_blank>${d.appHeaderTitle}, ${d.journal}, ${d.year}</a>`)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tmake_genome_browser_btn(app, headbox, jwt) {\n\t\tif (app.selectgenome.node().options.length === 0) {\n\t\t\tconsole.error(`No selected selectgenome options.`)\n\t\t\treturn\n\t\t}\n\n\t\tconst padw = '8px'\n\t\tconst genome_btn_div = headbox.append('span')\n\t\tconst genomename = app.selectgenome.node().options[app.selectgenome.property('selectedIndex')].value\n\n\t\tconst g_browser_btn = genome_btn_div\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.attr('id', 'genome_btn')\n\t\t\t.style('padding', padw)\n\t\t\t.datum(genomename)\n\t\t\t.text(genomename + ' genome browser')\n\t\t\t.on('click', () => {\n\t\t\t\t//Grab the current genome selected\n\t\t\t\tconst genomeSelected = app.selectgenome.node().value\n\t\t\t\tconst g = app.genomes[genomeSelected]\n\t\t\t\tif (!g) {\n\t\t\t\t\talert('Invalid genome name: ' + genomeSelected)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst sandbox_div = newSandboxDiv(app.drawer.opts.sandboxDiv)\n\t\t\t\tsandbox_div.header.text(genomeSelected + ' genome browser')\n\n\t\t\t\tconst par = {\n\t\t\t\t\thostURL: app.hostURL,\n\t\t\t\t\tjwt,\n\t\t\t\t\tholder: sandbox_div.body,\n\t\t\t\t\tgenome: g,\n\t\t\t\t\tchr: g.defaultcoord.chr,\n\t\t\t\t\tstart: g.defaultcoord.start,\n\t\t\t\t\tstop: g.defaultcoord.stop,\n\t\t\t\t\tnobox: true,\n\t\t\t\t\ttklst: [],\n\t\t\t\t\tdebugmode: app.debugmode\n\t\t\t\t}\n\t\t\t\tfirst_genetrack_tolist(g, par.tklst)\n\n\t\t\t\timport('../block.js').then(b => new b.Block(par))\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t})\n\t\treturn g_browser_btn\n\t}\n\n\tupdate_genome_browser_btn(app) {\n\t\tapp.genome_browser_btn.text(app.selectgenome.node().value + ' genome browser')\n\t\tapp.genome_browser_btn.datum(app.selectgenome.node().value)\n\t}\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,eAAsB,YAAY,KAAK,KAAK,MAAM,cAAc,KAAK;AACpE,QAAM,YAAY,eAAS,OAAO,EAAE,SAAS,OAAO,EAAE,KAAK;AAC3D,QAAM,OAAO;AAAA,IACZ;AAAA,MACC,OAAO;AAAA,MACP,SAAS;AAAA,MACT,OAAO,MAAM,YAAY,WAAW,IAAI,aAAa,SAAS,OAAO,GAAG,GAAG;AAAA,MAC3E,OAAO;AAAA,MACP,UAAU,OAAK;AACd,YAAI,OAAO,SAAS,EAAE,MAAM,sBAAsB,OAAO,MAAM,CAAC;AAChE,YAAI,KAAK;AACT,uBAAe,GAAG,KAAK,IAAI,aAAa,SAAS,OAAO,GAAG,GAAG;AAAA,MAC/D;AAAA,IACD;AAAA,EACD;AACA,QAAM,sBAAsB,KAAK,WAAW,MAAM,GAAG;AAErD,OAAK,KAAK;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO,KAAK,OAAO,OAAK,EAAE,MAAM,YAAY,EAAE,SAAS,UAAU,YAAY,CAAC,CAAC;AAAA,IAC/E,OAAO;AAAA,IACP,UAAU,OAAK;AACd,aAAO,KAAK,EAAE,MAAM,EAAE,KAAK;AAAA,IAC5B;AAAA,EACD,CAAC;AACD,OAAK,KAAK;AAAA,IACT,OAAO;AAAA,IACP,SAAS;AAAA,IACT,OAAO,aAAa;AAAA,MACnB,OACC,EAAE,MAAM,YAAY,EAAE,SAAS,UAAU,YAAY,CAAC,KACtD,EAAE,eAAe,YAAY,EAAE,SAAS,UAAU,YAAY,CAAC;AAAA,IACjE;AAAA,IACA,OAAO;AAAA,IACP,UAAU,OAAK;AACd,aAAO,KAAK,EAAE,KAAK,EAAE,KAAK;AAAA,IAC3B;AAAA,EACD,CAAC;AACD,SAAO;AACR;AAEA,eAAe,sBAAsB,KAAK,OAAO,MAAM,KAAK;AAC3D,QAAM,KAAK,MAAM,SAAS,IAAI,YAAY,aAAa;AACvD,MAAI,GAAG,MAAO,+BAA8B,wCAAwC;AACpF,QAAM,YAAY,MAAM,YAAY,EAAE,KAAK;AAC3C,QAAM,WAAW,CAAC,GAAG,GAAG,QAAQ;AAChC,MAAI;AACJ,MAAI,UAAU,SAAS,GAAG;AAKzB,UAAM,gBAAgB,UAAU,GAAG;AACnC,uBAAmB,oBAAoB,UAAU,SAAS;AAAA,EAC3D,OAAO;AACN,uBAAmB,oBAAoB,UAAU,SAAS;AAAA,EAC3D;AAEA,QAAM,OAAO;AAAA,IACZ,KAAK,IAAI,OAAO;AAAA,IAChB,YAAY,IAAI,OAAO,KAAK;AAAA,IAC5B,SAAS,IAAI;AAAA,IACb,SAAS;AAAA,EACV;AAEA,OAAK;AAAA,IACJ;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,OAAO,OAAK,EAAE,QAAQ,MAAM;AAAA,MACpD,OAAO;AAAA,MACP,UAAU,aAAW;AACpB,YAAI,OAAO,SAAS,EAAE,MAAM,sBAAsB,OAAO,MAAM,CAAC;AAChE,YAAI,KAAK;AACT,oBAAY,SAAS,IAAI;AAAA,MAC1B;AAAA,IACD;AAAA,IACA;AAAA,MACC,OAAO;AAAA,MACP,OAAO,iBAAiB,OAAO,OAAK,EAAE,QAAQ,UAAU;AAAA,MACxD,OAAO;AAAA,MACP,UAAU,aAAW;AACpB,YAAI,OAAO,SAAS,EAAE,MAAM,sBAAsB,OAAO,MAAM,CAAC;AAChE,YAAI,KAAK;AACT,oBAAY,SAAS,IAAI;AAAA,MAC1B;AAAA,IACD;AAAA,EACD;AACA,SAAO;AACR;AAEA,eAAe,gBAAgB,UAAU,KAAK;AAC7C,QAAM,WAAW,SAAS,IAAI,OAAM,SAAQ;AAC3C,QAAI,KAAK,UAAU,KAAK,QAAQ,UAAU,CAAC,KAAK,YAAa,QAAO;AACpE,UAAM,MAAM,MAAM,SAAS,IAAI,YAAY,IAAI,KAAK,WAAW,OAAO;AACtE,QAAI,KAAK,QAAQ,SAAS,GAAG;AAC5B,iBAAW,KAAK,IAAI,SAAS;AAC5B,YAAI,EAAE,KAAM;AACZ,YAAI,GAAG,MAAO,MAAK,YAAY,KAAK,EAAE,KAAK;AAAA,MAC5C;AAAA,IACD;AAAA,EACD,CAAC;AAED,QAAM,QAAQ,IAAI,QAAQ;AAC3B;AAEA,SAAS,oBAAoB,UAAU,WAAW;AACjD,SAAO,SACL,OAAO,UAAQ;AACf,QAAI,KAAK,OAAQ,QAAO;AACxB,QAAI,mBAAmB,KAAK,eAAe,CAAC,GAAG,OAAO,CAACA,kBAAiB,eAAe;AACtF,UAAIA,iBAAiB,QAAO;AAC5B,aAAO,WAAW,YAAY,EAAE,SAAS,SAAS;AAAA,IACnD,GAAG,KAAK;AACR,WAAO,mBAAmB,KAAK,KAAK,YAAY,EAAE,SAAS,SAAS;AAAA,EACrE,CAAC,EACA,KAAK,CAAC,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,IAAI,CAAC;AAC9C;AAEA,eAAsB,YAAY,KAAK,QAAQ,KAAK;AAEnD,MAAI,IAAI,UAAU,EAAG;AACrB,MAAI;AACH,UAAM,OAAO,MAAM,SAAS,eAAe;AAAA,MAC1C,MAAM;AAAA,QACL,OAAO;AAAA,QACP;AAAA,QACA;AAAA,MACD;AAAA,IACD,CAAC;AAED,QAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,QAAI,CAAC,KAAK,KAAM,OAAM;AACtB,WAAO,KAAK;AAAA,EACb,SAAS,KAAK;AAAA,EAId;AACD;AAEA,eAAsB,eAAe,KAAK,KAAK,YAAY,KAAK;AAC/D,QAAM,IAAI,IAAI,QAAQ,UAAU;AAChC,MAAI,CAAC,GAAG;AACP,YAAQ,MAAM,oBAAoB,UAAU;AAC5C;AAAA,EACD;AACA,QAAM,cAAc,cAAc,IAAI,OAAO,KAAK,UAAU;AAC5D,cAAY,OAAO;AAAA,IAClB,wCACC,MACA,kDACA,aACA;AAAA,EACF;AAEA,QAAM,OAAO,eAAO;AACpB,QAAM,QAAQ,MAAe,UAAU,MAAM,CAAC;AAE9C,QAAM,MAAM,WAAW,KAAK,CAAC;AAC7B,MAAI,KAAK;AAER,UAAMC,OAAM;AAAA,MACX,SAAS,IAAI;AAAA,MACb;AAAA,MACA,QAAQ,YAAY;AAAA,MACpB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,KAAK,IAAI;AAAA,MACT,OAAO,IAAI,QAAQ;AAAA;AAAA,MACnB,MAAM,IAAI,OAAO;AAAA,MACjB,QAAQ;AAAA,MACR;AAAA,MACA,WAAW,IAAI;AAAA,IAChB;AACA,2BAAuB,GAAGA,KAAI,KAAK;AAEnC,WAAO,qBAAa,EAClB,KAAK,OAAK,IAAI,EAAE,MAAMA,IAAG,CAAC,EAC1B,MAAM,SAAO;AACb,UAAI,OAAO,GAAG;AAAA,IACf,CAAC;AACF;AAAA,EACD;AAGA,QAAM,MAAM;AAAA,IACX,SAAS,IAAI;AAAA,IACb;AAAA,IACA,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,QAAQ,YAAY;AAAA,IACpB,qBAAqB,IAAI;AAAA,IACzB,YAAY,IAAI;AAAA,IAChB;AAAA,IACA,WAAW,IAAI;AAAA,EAChB;AAGA,QAAM,MAAM,eAAe,QAAQ,UAAU;AAC7C,MAAI,KAAK;AACR,UAAM,IAAI,IAAI,MAAM,GAAG;AACvB,QAAI,EAAE,UAAU,GAAG;AAClB,UAAI,iBAAiB,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,CAAC;AAAA,IACxD;AAAA,EACD;AAEA,QAAM,mBAAU,GAAG;AACpB;;;AC3MA,IAAM,gBAAN,MAAoB;AAAA;AAAA,EAEnB,YAAY,MAAM;AACjB,SAAK,OAAO;AACZ,SAAK,OAAO,KAAK,aAAa,IAAI;AAClC,SAAK,SAAS,KAAK;AACnB,SAAK,MAAM,KAAK;AAChB,SAAK,aAAa,KAAK;AACvB,iBAAa,IAAI;AAAA,EAClB;AAAA,EAEA,aAAa,MAAM;AAClB,QAAI,CAAC,KAAK,QAAQ,KAAM,OAAM;AAC9B,QAAI,KAAK,QAAQ,QAAQ,QAAQ;AAChC,UAAI,CAAC,KAAK,QAAQ,eAAe,CAAC,KAAK,QAAQ;AAC9C,cAAM,2DAA2D,KAAK,QAAQ,IAAI;AAAA,IACpF;AACA,QAAI,KAAK,QAAQ,QAAQ,cAAc;AACtC,UAAI,CAAC,KAAK,QAAQ,YAAY,KAAK,QAAQ,SAAS,UAAU;AAC7D,cAAM,uCAAuC,KAAK,QAAQ,IAAI;AAAA,IAChE;AACA,QAAI,KAAK,QAAQ,QAAQ;AACxB,UAAI,CAAC,KAAK,QAAQ,OAAO,KAAM,OAAM,4BAA4B,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI;AAGzG,WACE,KAAK,QAAQ,OAAO,KAAK,YAAY,KAAK,SAAS,KAAK,QAAQ,OAAO,KAAK,YAAY,KAAK,cAC9F,CAAC,KAAK,QAAQ,OAAO;AAErB,cAAM,GAAG,KAAK,QAAQ,IAAI,MACzB,KAAK,QAAQ,IACd,cAAc,KAAK,QAAQ,OAAO,KAAK,YAAY,CAAC;AAErD,UAAI,KAAK,QAAQ,OAAO,YAAY;AACnC,YAAI,KAAK,QAAQ,OAAO,cAAc,GAAG;AACxC,gBAAM,YAAY,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI;AAAA,QAC3D;AAAA,MACD;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA,EAAC;AACT;AAEO,IAAM,WAAW,YAAY,aAAa;AAEjD,SAAS,aAAa,MAAM;AAC3B,QAAM,OAAO,KAAK,OAAO,OAAO,IAAI;AACpC,MAAI,KAAK,KAAK,QAAQ,QAAQ,QAAQ;AACrC,SAAK,QAAQ,cAAc,IAAI,EAAE;AAAA,MAChC,6EAA6E,KAAK,KAAK,QAAQ,IAAI;AAAA,MAEjG,KAAK,KAAK,QAAQ,cACf,yDAAyD,KAAK,KAAK,QAAQ,WAAW,kBACtF,GACJ;AAAA,+CAC2C,KAAK,KAAK,QAAQ,KAAK,UAClE,KAAK,KAAK,QAAQ,WACnB;AAAA;AAAA,IAED;AAAA,EACD,WAAW,KAAK,KAAK,QAAQ,QAAQ,cAAc;AAClD,SAAK,QAAQ,wBAAwB,IAAI,EAAE;AAAA,MAC1C,mFAAmF,KAAK,KAAK,QAAQ,IAAI;AAAA,mJACuC,KAAK,KAAK,QAAQ,WAAW;AAAA,IAC9K;AAAA,EACD;AAEA,OAAK,aAAa,SAAU,QAAQ;AAEnC,UAAM,YAAY,KAChB,OAAO,KAAK,EACZ,QAAQ,+BAA+B,IAAI,EAC3C,MAAM,eAAe,QAAQ,EAC7B,MAAM,mBAAmB,QAAQ;AAGnC,UAAM,OAAO,OAAO,KAAK,YAAY;AAErC,UAAM,QACL,QAAQ,SACL,YACA,QAAQ,QACR,YACA,QAAQ,YACR,WACA,OAAO,QACP,OAAO,QACP;AAEJ,cACE,OAAO,MAAM,EACb,KAAK,IAAI,EACT,MAAM,SAAS,OAAO,EACtB,MAAM,oBAAoB,IAAI,KAAK,EAAE,OAAO,CAAC,EAC7C,MAAM,UAAU,MAAM,EACtB,MAAM,SAAS,MAAM,EACrB,MAAM,OAAO,KAAK,EAClB,MAAM,QAAQ,MAAM,EACpB,MAAM,aAAa,QAAQ,EAC3B,MAAM,kBAAkB,WAAW,EACnC,MAAM,cAAc,QAAQ;AAAA,EAC/B;AAEA,MAAI,KAAK,KAAK,QAAQ,QAAQ;AAC7B,UAAM,QAAQ,oBAAI,KAAK;AACvB,UAAM,mBAAmB,IAAI,KAAK,KAAK,KAAK,QAAQ,OAAO,UAAU;AAErE,QAAI,mBAAmB,SAAS,oBAAoB,eAAgB,MAAK,WAAW,KAAK,KAAK,QAAQ,MAAM;AAAA,EAC7G;AAEA,OAAK,GAAG,SAAS,OAAM,UAAS;AAC/B,UAAM,gBAAgB;AACtB,UAAM,KAAK,IAAI,SAAS;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,IACR,CAAC;AACD,gBAAY,IAAI;AAIhB,eAAW,YAAY;AACtB,YAAM,YAAY,KAAK,KAAK,SAAS,KAAK,IAAI;AAAA,IAC/C,GAAG,KAAK,MAAM,WAAW,CAAC;AAAA,EAC3B,CAAC;AACF;;;ACzIA,IAAM,kBAAN,MAAsB;AAAA,EACrB,YAAY,MAAM;AACjB,SAAK,OAAO;AACZ,SAAK,OAAO,KAAK,aAAa,IAAI;AAClC,SAAK,SAAS,KAAK;AACnB,SAAK,MAAM,KAAK;AAChB,SAAK,aAAa,KAAK;AACvB,IAAAC,cAAa,IAAI;AAAA,EAClB;AAAA,EAEA,aAAa,MAAM;AAClB,QAAI,CAAC,KAAK,QAAQ,KAAM,OAAM;AAC9B,QAAI,CAAC,KAAK,QAAQ,eAAe,CAAC,KAAK,QAAQ;AAC9C,YAAM,6DAA6D,KAAK,QAAQ,IAAI;AACrF,WAAO;AAAA,EACR;AAAA,EAEA,OAAO;AAAA,EAAC;AACT;AAEO,IAAM,aAAa,WAAW,eAAe;AAEpD,SAASA,cAAa,MAAM;AAC3B,QAAM,MAAY,WAAW,EAAE,KAAK,KAAK,QAAQ,MAAM,KAAK,KAAK,QAAQ,MAAM,QAAQ,gBAAgB,CAAC;AACxG,MAAI,KAAK,SAAS,4BAA4B,EAAE,GAAG,SAAS,OAAM,UAAS;AAC1E,UAAM,gBAAgB;AACtB,UAAM,KAAK,IAAI,SAAS;AAAA,MACvB,MAAM;AAAA,MACN,OAAO;AAAA,IACR,CAAC;AACD,gBAAY,IAAI;AAChB,UAAM,YAAY,KAAK,KAAK,SAAS,KAAK,IAAI;AAAA,EAC/C,CAAC;AACF;;;AC5BA,IAAM,sBAAN,MAA0B;AAAA,EACzB,YAAY,MAAM;AACjB,SAAK,OAAO;AACZ,SAAK,MAAM;AAAA,MACV,QAAQ,KAAK,IAAI;AAAA,MACjB,SAAS,KAAK,IAAI;AAAA,MAClB,YAAY,KAAK,IAAI;AAAA,IACtB;AACA,SAAK,QAAQ,KAAK;AAClB,SAAK,kBAAkB;AAAA,EACxB;AAAA,EAEA,MAAM,oBAAoB;AACzB,UAAM,QAAQ,MAAM,KAAK,aAAa;AACtC,QAAI,CAAC,MAAM,SAAU,OAAM;AAC3B,QAAI,CAAC,MAAM,SAAS,OAAQ,OAAM;AAClC,QAAI,MAAM,eAAe;AACxB,UAAI,MAAM,cAAc,UAAU,EAAG,OAAM;AAC3C,YAAM,oBAAoB,MAAM,cAAc,IAAI,OAAK,EAAE,QAAQ;AACjE,UAAI,kBAAkB,UAAU,IAAI,IAAI,iBAAiB,EAAE,KAAM,OAAM;AACvE,YAAM,qBAAqB,CAAC;AAC5B,iBAAW,OAAO,MAAM,eAAe;AACtC,YAAI,CAAC,IAAI,SAAU,OAAM,yCAAyC,IAAI,IAAI;AAC1E,YAAI,CAAC,IAAI,YAAY,IAAI,SAAS,UAAU,EAAG,OAAM,wCAAwC,IAAI,IAAI;AACrG,mBAAW,WAAW,IAAI,UAAU;AACnC,cAAI,CAAC,QAAQ;AACZ,kBAAM,0BAA0B,QAAQ,OAAO,aAAa,QAAQ,IAAI,KAAK,YAAY,IAAI,IAAI,QAAQ;AAC1G,6BAAmB,KAAK,QAAQ,EAAE;AAAA,QACnC;AACA,YAAI,IAAI,SAAS,UAAU,IAAI,IAAI,IAAI,QAAQ,EAAE,MAAM;AACtD,gBAAM,6BAA6B,OAAO,KAAK,KAAK,UAAU,UAAU,CAAC;AAAA,QAC1E;AAAA,MACD;AACA,UAAI,mBAAmB,UAAU,IAAI,IAAI,kBAAkB,EAAE,KAAM,OAAM;AAGzE,iBAAW,WAAW,MAAM,UAAU;AACrC,YAAI,CAAC,QAAQ,QAAS,OAAM,2BAA2B,QAAQ,IAAI,MAAM,QAAQ,IAAI;AACrF,YAAI,CAAC,mBAAmB,KAAK,OAAK,KAAK,QAAQ,OAAO;AACrD,gBAAM,aAAa,QAAQ,OAAO,QAAQ,QAAQ,IAAI,MAAM,QAAQ,IAAI;AAAA,MAC1E;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,eAAe;AAGpB,UAAM,KAAK,MAAM,SAAS,KAAK,IAAI,YAAY,aAAa;AAC5D,QAAI,GAAG,OAAO;AACb,eAAS,KAAK,IAAI,OAAO,OAAO,KAAK,GAAG,GAAG,KAAK;AAChD;AAAA,IACD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,mBAAmB;AAClB,UAAM,WAAW,KAAK,MAAM,eAAe,QAAQ,kBAAkB,CAAC,KAAK,CAAC;AAC5E,SAAK,WAAW,KAAK,MAAM,SAAS,OAAO,OAAK,CAAC,EAAE,WAAW,CAAC,EAAE,iBAAiB,SAAS,EAAE,aAAa,EAAE;AAAA,EAC7G;AAAA,EAEA,MAAM,OAAO;AACZ,SAAK,QAAQ,MAAM,KAAK,kBAAkB;AAC1C,SAAK,mBAAmB;AACxB,IAAAC,cAAa,IAAI;AACjB,SAAK,iBAAiB;AACtB,SAAK,SAAS,KAAK,MAAM,gBAAgB,KAAK,MAAM,gBAAgB;AACpE,SAAK,aAAa;AAAA,MACjB,UAAU,CAAC;AAAA,IACZ;AAAA,EACD;AAAA,EAEA,MAAM,OAAO;AAEZ,QAAI,KAAK,oBAAoB,KAAM;AACnC,SAAK,mBAAmB;AACxB,eAAW,WAAW,KAAK,UAAU;AACpC,YAAM,SAAS,eAAO,KAAK,SAAS,IAAI,QAAQ,OAAO,0BAA0B,oBAAoB;AACrG,UAAI,QAAQ,QAAQ,UAAU,QAAQ,QAAQ,cAAc;AAC3D,aAAK,WAAW,SAAS;AAAA,UACxB,MAAM,SAAS;AAAA,YACd,KAAK,KAAK;AAAA,YACV,QAAQ,OACN,MAAM,WAAW,MAAM,EACvB,MAAM,yBAAyB,sCAAsC,EACrE,MAAM,OAAO,MAAM,EACnB,MAAM,cAAc,MAAM,EAC1B,MAAM,UAAU,UAAU;AAAA,YAC5B;AAAA,YACA,KAAK,KAAK,KAAK;AAAA,YACf,OAAO,KAAK;AAAA,YACZ,YAAY,KAAK,IAAI;AAAA,UACtB,CAAC;AAAA,QACF;AAAA,MACD,WAAW,QAAQ,QAAQ,YAAY;AACtC,aAAK,WAAW,SAAS;AAAA,UACxB,MAAM,WAAW;AAAA,YAChB,KAAK,KAAK;AAAA,YACV;AAAA,YACA;AAAA,YACA,KAAK,KAAK,KAAK;AAAA,YACf,OAAO,KAAK;AAAA,YACZ,YAAY,KAAK,IAAI;AAAA,UACtB,CAAC;AAAA,QACF;AAAA,MACD;AAAA,IACD;AAAA,EACD;AACD;AAEO,IAAM,aAAa,YAAY,mBAAmB;AAEzD,SAASA,cAAa,MAAM;AAC3B,MAAI,CAAC,KAAK,MAAM,cAAe,iBAAgB,IAAI;AACnD,MAAI,KAAK,MAAM,cAAe,eAAc,IAAI;AACjD;AAEA,SAAS,gBAAgB,MAAM;AAC9B,QAAM,aAAa,KAAK,IAAI,QAC1B,OAAO,KAAK,EACZ,MAAM,WAAW,MAAM,EACvB,MAAM,WAAW,MAAM,EACvB,QAAQ,qBAAqB,IAAI;AACnC,SAAO;AACR;AAEA,SAAS,cAAc,MAAM;AAE5B,QAAM,aAAa,KAAK,IAAI,QAC1B,OAAO,KAAK,EACZ,MAAM,WAAW,MAAM,EACvB,MAAM,yBAAyB,sCAAsC,EACrE,MAAM,OAAO,MAAM,EACnB,MAAM,WAAW,MAAM,EACvB,MAAM,cAAc,MAAM;AAG5B,QAAM,YAAY,CAAC;AACnB,aAAW,UAAU,KAAK,MAAM,cAAe,WAAU,KAAK,OAAO,QAAQ;AAC7E,aAAW,MAAM,uBAAuB,IAAI,UAAU,SAAS,EAAE,QAAQ,KAAK,GAAG,CAAC,GAAG;AACrF,aAAW,OAAO,KAAK,MAAM,eAAe;AAC3C,UAAM,SAAS,WAAW,OAAO,KAAK,EAAE,MAAM,aAAa,IAAI,QAAQ,EAAE,QAAQ,oBAAoB,IAAI;AACzG,eAAW,WAAW,IAAI,SAAU,YAAW,SAAS,MAAM;AAAA,EAC/D;AAEA,WAAS,WAAW,SAAS,QAAQ;AACpC,UAAM,aAAa,OAAO,OAAO,KAAK,EAAE,KAAK,MAAM,QAAQ,EAAE;AAC7D,QAAI,QAAQ;AACX,iBACE,OAAO,IAAI,EACX,QAAQ,uBAAuB,IAAI,EACnC,MAAM,SAAS,IAAI,YAAY,EAAE,OAAO,CAAC,EACzC,KAAK,QAAQ,IAAI;AACpB,eAAW,OAAO,KAAK,EAAE,QAAQ,qBAAqB,IAAI,EAAE,MAAM,WAAW,MAAM;AAEnF,WAAO;AAAA,EACR;AACD;;;ACpKA,IAAM,iBAAN,MAAqB;AAAA,EACpB,YAAY,MAAM;AACjB,SAAK,OAAO;AACZ,SAAK,OAAO,KAAK,aAAa,IAAI;AAClC,SAAK,MAAM,KAAK;AAChB,SAAK,QAAQ,KAAK;AAClB,SAAK,kBAAkB;AACvB,IAAAC,cAAa,IAAI;AAAA,EAClB;AAAA,EAEA,aAAa,MAAM;AAClB,WAAO,KAAK,IAAI;AAAA,EACjB;AAAA,EAEA,SAAS,UAAU;AAClB,WAAO;AAAA,MACN,cAAc,SAAS;AAAA,IACxB;AAAA,EACD;AAAA,EAEA,MAAM,OAAO;AACZ,SAAK,cAAc;AACnB,SAAK,mBAAmB;AACxB,QAAI;AAEH,UAAI,OAAO,SAAS,YAAY,OAAO,CAAC,OAAO,SAAS,OAAO;AAC9D,cAAM,KAAK,IAAI,SAAS,EAAE,MAAM,sBAAsB,OAAO,KAAK,CAAC;AACpE,WAAK,aAAa;AAAA,QACjB,QAAQ,CAAC;AAAA,MACV;AAAA,IACD,SAAS,GAAG;AACX,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAEA,MAAM,KAAK,UAAU;AACpB,QAAI,KAAK,IAAI,SAAS,QAAQ,EAAE,gBAAgB,QAAQ,KAAK,eAAe,OAAO;AAClF,WAAK,IAAI,UAAU,MAAM,oBAAoB,SAAS;AAEtD,WAAK,WAAW,OAAO;AAAA,QACtB,MAAM,WAAW;AAAA,UAChB,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,OAAO,KAAK;AAAA,QACb,CAAC;AAAA,MACF;AAEA,iBAAW,MAAM;AAChB,aAAK,mBAAmB,KAAK,IAAI,UAAU,KAAK,EAAE,sBAAsB,EAAE,SAAS;AAAA,MACpF,GAAG,KAAK,MAAM,WAAW,CAAC;AAC1B,kBAAY,IAAI;AAChB,WAAK,cAAc;AAAA,IACpB;AACA,QAAI,KAAK,MAAM,gBAAgB,SAAS,KAAK,eAAe,KAAM,aAAY,IAAI;AAAA,EACnF;AACD;AAEO,IAAM,cAAc,YAAY,cAAc;AAErD,SAASA,cAAa,MAAM;AAC3B,OAAK,IAAI,WACP,MAAM,oBAAoB,KAAK,MAAM,eAAe,YAAY,SAAS,EACzE,MAAM,SAAS,KAAK,MAAM,eAAe,SAAS,MAAM,EACxD,GAAG,SAAS,OAAM,UAAS;AAC3B,UAAM,gBAAgB;AACtB,UAAM,KAAK,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACtD,gBAAY,IAAI;AAChB,QAAI,KAAK,MAAM,cAAc;AAC5B,iBAAW,MAAM;AAChB,aAAK,mBAAmB,KAAK,IAAI,UAAU,KAAK,EAAE,sBAAsB,EAAE,SAAS;AAAA,MACpF,GAAG,KAAK,MAAM,WAAW,CAAC;AAAA,IAC3B;AAAA,EACD,CAAC;AAEF,OAAK,IAAI,IACP,KAAK,SAAS,gBAAgB,EAC9B,MAAM,WAAW,cAAc,EAC/B,MAAM,oBAAoB,aAAa,EACvC,MAAM,SAAS,KAAK,MAAM,eAAe,SAAS,MAAM,EACxD,MAAM,WAAW,KAAK,KAAK,OAAO,EAClC,MAAM,UAAU,SAAS,EACzB,MAAM,UAAU,SAAS,EACzB,KAAK,MAAM;AAGb,OAAK,IAAI,WACP,MAAM,YAAY,UAAU,EAC5B,MAAM,WAAW,cAAc,EAC/B,MAAM,UAAU,KAAK,MAAM,UAAU,SAAS,IAAI,EAClD,MAAM,SAAS,KAAK,MAAM,eAAe,KAAK,MAAM,UAAU,OAAO,KAAK,MAAM,UAAU,MAAM,EAChG,MAAM,oBAAoB,aAAa,EACvC,MAAM,cAAc,QAAQ,EAC5B,MAAM,UAAU,SAAS;AAE3B,OAAK,IAAI,YACP,MAAM,YAAY,UAAU,EAC5B,MAAM,aAAa,KAAK,MAAM,UAAU,SAAS,IAAI,EACrD,MAAM,SAAS,KAAK,MAAM,QAAQ,OAAO,KAAK,IAAI,EAClD,MAAM,UAAU,KAAK,MAAM,QAAQ,OAAO,MAAM,IAAI,EACpD,MAAM,oBAAoB,aAAa,EACvC,MAAM,SAAS,KAAK,MAAM,WAAW,MAAM,EAC3C,MAAM,WAAW,KAAK,MAAM,eAAe,IAAI,CAAC,EAChD,MAAM,UAAU,SAAS,EACzB,KAAK,SAAS;AAEhB,OAAK,IAAI,gBACP,MAAM,YAAY,UAAU,EAC5B,MAAM,aAAa,KAAK,MAAM,UAAU,OAAO,IAAI,EACnD,MAAM,QAAQ,KAAK,MAAM,QAAQ,KAAK,OAAO,IAAI,EACjD,MAAM,UAAU,KAAK,MAAM,QAAQ,KAAK,MAAM,IAAI,EAClD,MAAM,aAAa,gBAAgB,EACnC,MAAM,oBAAoB,aAAa,EACvC,MAAM,SAAS,KAAK,MAAM,WAAW,IAAI,EACzC,MAAM,WAAW,KAAK,MAAM,eAAe,IAAI,CAAC,EAChD,MAAM,UAAU,SAAS,EACzB,MAAM,kBAAkB,KAAK,MAAM,eAAe,SAAS,MAAM,EACjE,KAAK,SAAS;AAEhB,OAAK,mBAAmB,KAAK,IAAI,UAAU,KAAK,EAAE,sBAAsB,EAAE,SAAS;AACpF;AAEA,eAAsB,YAAY,MAAM;AACvC,OAAK,IAAI,WACP,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,oBAAoB,KAAK,MAAM,eAAe,YAAY,SAAS,EACzE,MAAM,SAAS,KAAK,MAAM,eAAe,SAAS,MAAM;AAE1D,OAAK,IAAI,IACP,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,SAAS,KAAK,MAAM,eAAe,SAAS,MAAM;AAE1D,OAAK,IAAI,UACP,MAAM,WAAW,cAAc,EAC/B,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,OAAO,KAAK,MAAM,eAAe,QAAQ,MAAM,KAAK,mBAAmB,IAAI;AAEnF,OAAK,IAAI,UACP,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,UAAU,KAAK,MAAM,eAAe,KAAK,mBAAmB,OAAO,KAAK;AAEhF,OAAK,IAAI,WACP,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,SAAS,KAAK,MAAM,eAAe,KAAK,KAAK,MAAM,UAAU,OAAO,KAAK,KAAK,MAAM,UAAU,MAAM;AAE5G,OAAK,IAAI,YACP,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,WAAW,KAAK,MAAM,eAAe,IAAI,CAAC;AAElD,OAAK,IAAI,gBACP,MAAM,kBAAkB,KAAK,MAAM,eAAe,SAAS,MAAM,EACjE,WAAW,EACX,SAAS,KAAK,KAAK,MAAM,QAAQ,EACjC,MAAM,WAAW,KAAK,MAAM,eAAe,IAAI,CAAC;AACnD;;;ACtKA,IAAM,iBAAN,MAAqB;AAAA,EACpB,YAAY,MAAM;AACjB,SAAK,OAAO;AACZ,SAAK,eAAe;AAAA;AAAA,MAEnB,UAAU;AAAA,MACV,SAAS;AAAA,QACR,MAAM,EAAE,KAAK,KAAK,MAAM,GAAG;AAAA,QAC3B,QAAQ,EAAE,KAAK,GAAG,IAAI,EAAE;AAAA,MACzB;AAAA,MACA,WAAW,EAAE,MAAM,OAAO,QAAQ,OAAO;AAAA,MACzC,WAAW,EAAE,MAAM,IAAI,QAAQ,GAAG;AAAA,MAClC,YAAY,EAAE,MAAM,oBAAoB,QAAQ,gBAAgB;AAAA,MAChE,cAAc;AAAA,IACf;AAAA,EACD;AAAA,EAEA,MAAM,OAAO;AAAA,EAAC;AACf;AAEO,IAAM,qBAAqB,aAAa,cAAc;AAE7D,eAAe,UAAU,UAAU;AAAA,EAClC,mBAAmB,QAAQ;AAC1B,SAAK,MAAM,eAAe,WAAW,SAAS,OAAO,QAAQ,CAAC,KAAK,MAAM;AAAA,EAC1E;AACD;;;ACZA,IAAM,eAAN,MAAmB;AAAA,EAClB,YAAY,MAAM;AACjB,SAAK,OAAO;AAEZ,UAAM,YAAY,KAAK,UACrB,OAAO,KAAK,EACZ,MAAM,YAAY,UAAU,EAC5B,MAAM,UAAU,QAAQ,EACxB,MAAM,WAAW,KAAK,KAAK,OAAO,EAAE,EACpC,MAAM,WAAW,cAAc,EAC/B,MAAM,YAAY,QAAQ,EAC1B,MAAM,iBAAiB,iBAAiB,EACxC,MAAM,SAAS,MAAM,EACrB,QAAQ,mBAAmB,IAAI;AAEjC,UAAM,aAAa,KAAK,QACtB,OAAO,KAAK,EACZ,MAAM,YAAY,UAAU,EAC5B,MAAM,WAAW,cAAc,EAC/B,MAAM,eAAe,KAAK,EAC1B,MAAM,gBAAgB,KAAK,EAC3B,MAAM,iBAAiB,KAAK,EAC5B,QAAQ,yBAAyB,IAAI;AAEvC,SAAK,MAAM;AAAA,MACV,WAAW,KAAK;AAAA,MAChB;AAAA,MACA,YAAY,KAAK;AAAA,MACjB;AAAA,MACA,KAAK,WAAW,OAAO,KAAK;AAAA,MAC5B,YAAY,WAAW,OAAO,KAAK;AAAA,MACnC,aAAa,WAAW,OAAO,KAAK;AAAA,MACpC,iBAAiB,WAAW,OAAO,KAAK;AAAA,MACxC,SAAS,UAAU,OAAO,KAAK;AAAA,IAChC;AAAA,EACD;AAAA,EAEA,aAAa,KAAK;AACjB,QAAI,YAAY,KAAK,KAAK;AAAA,EAC3B;AAAA,EAEA,MAAM,OAAO;AACZ,QAAI;AACH,WAAK,QAAQ,MAAM,mBAAmB,EAAE,KAAK,KAAK,KAAK,OAAO,KAAK,KAAK,MAAM,CAAC;AAC/E,WAAK,QAAQ,MAAM,KAAK,MAAM,UAAU;AACxC,WAAK,aAAa;AAAA,QACjB,SAAS,MAAM,YAAY;AAAA,UAC1B,KAAK,KAAK;AAAA,UACV,KAAK,KAAK;AAAA,UACV,OAAO,KAAK;AAAA,UACZ,WAAW,KAAK;AAAA,QACjB,CAAC;AAAA,MACF;AACA,YAAM,KAAK,IAAI,SAAS;AAAA,IACzB,SAAS,GAAG;AACX,YAAM;AAAA,IACP;AAAA,EACD;AAAA,EAEA,OAAO;AAAA,EAAC;AACT;AAEO,IAAM,gBAAgB,WAAW,YAAY;;;ACpD7C,IAAM,YAAN,MAAM,WAAU;AAAA,EAYtB;AAAA;AAAA;AAAA;AAAA,SAAO,OAAO;AAAA,MACb;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,MACP;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,YAAY;AAAA,MACb;AAAA,MACA;AAAA,QACC,OAAO;AAAA,QACP,MAAM;AAAA,QACN,YAAY;AAAA,MACb;AAAA,IACD;AAAA;AAAA,EAEA,YAAY,MAAqB;AAChC,SAAK,UAAU,KAAK;AACpB,SAAK,MAAM,KAAK;AAChB,SAAK,OAAO,KAAK;AACjB,SAAK,MAAM,KAAK;AAChB,SAAK,eAAe,CAAC;AAAA,EACtB;AAAA,EAEA,MAAM,yBAAyB;AAC9B,UAAM,KAAK,MAAM,SAAS,KAAK,IAAI,YAAY,iBAAiB;AAChE,QAAI,GAAG,MAAO,SAAQ,MAAM,4CAA4C;AAExE,SAAK,eAAe,IAAI,cAAc,SACnC,GAAG,aAAa,OAAO,CAAC,MAAgB,EAAE,cAAc,EAAE,KAAK,CAAC,GAAa,MAAgB,EAAE,OAAO,EAAE,IAAI,IAC5G,CAAC;AAAA,EACL;AAAA,EAEA,MAAM,aAAa;AAClB,UAAM,KAAK,uBAAuB;AAElC,UAAM,QAAQ,IAAM,YAAY;AAChC,UAAM,UAAU;AAChB,UAAM,aAAa;AACnB,UAAM,UAAU;AAChB,UAAM,YAAY,SAAS,gBAAgB;AAE3C,UAAM,MAAM,KAAK,IAAI,OACnB,OAAO,KAAK,EACZ,MAAM,eAAe,QAAQ,EAC7B;AAAA,MACA;AAAA,MACA,YAAY,OAAO,oBAAoB,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,SAAS;AAAA,IAC3F;AAED,UAAM,UAAU,IACd,OAAO,KAAK,EACZ,MAAM,UAAU,MAAM,EACtB,MAAM,WAAW,KAAK,EACtB,MAAM,kBAAkB,MAAM,EAC9B,MAAM,WAAW,YAAY,OAAO,UAAU,cAAc,EAC5D;AAAA,MACA;AAAA,MACA,YAAY,OAAO,oBAAoB,MAAM,IAAI,MAAM,MAAM,IAAI,MAAM,MAAM,IAAI,SAAS;AAAA,IAC3F;AAID,UAAM,WAAW,IACf,OAAO,KAAK,EACZ,MAAM,WAAW,cAAc,EAC/B,MAAM,WAAW,OAAO,EACxB,MAAM,gBAAgB,MAAM,EAC5B,MAAM,aAAa,MAAM,EACzB,MAAM,SAAS,IAAM,YAAY,EAAE,OAAO,CAAC;AAE7C;AAEC,YAAMC,OAAM,SAAS,OAAO,KAAK,EAAE,MAAM,gBAAgB,MAAM;AAG/D,YAAM,OAAO;AACb,YAAM,UAAU,KAAK,KAAK,SACvB,6BAA6B,IAAI,aAAa,KAAK,KAAK,MAAM,KAAK,KAAK,KAAK,MAAM,SACnF,cAAc,KAAK,KAAK,QAAQ;AACnC,MAAAA,KACE,KAAK,MAAM,iBAAiB,EAC5B,OAAO,MAAM,EACb,KAAK,GAAG,OAAO,sBAAsB,KAAK,KAAK,cAAc,IAAI,GAAG;AACtE,UAAI,KAAK,KAAK,SAAS;AACtB,QAAAA,KACE,OAAO,GAAG,EACV,MAAM,eAAe,MAAM,EAC3B,KAAK,cAAc,EACnB,GAAG,SAAS,OAAM,UAAS;AAC3B,eAAK,QAAQ,MAAM,EAAE,UAAU,MAAM,MAAM;AAC3C,gBAAM,MAAM,KAAK,QAAQ,EAAE,OAAO,KAAK,EAAE,MAAM,UAAU,MAAM;AAC/D,gBAAM,OAAO,IAAI,OAAO,KAAK,EAAE,KAAK,YAAY;AAChD,cAAI;AACH,kBAAM,OAAO,MAAM,SAAS,mBAAmB;AAC/C,gBAAI,KAAK,MAAO,OAAM,KAAK;AAC3B,gBAAI,CAAC,KAAK,IAAK,OAAM;AACrB,iBAAK,OAAO;AACZ,uBAAW,KAAK,KAAK,KAAK;AACzB,kBAAI,OAAO,KAAK,EAAE,KAAK,CAAC;AAAA,YACzB;AAAA,UACD,SAAS,GAAQ;AAChB,iBAAK,KAAK,EAAE,WAAW,CAAC;AACxB,gBAAI,EAAE,MAAO,SAAQ,MAAM,EAAE,KAAK;AAAA,UACnC;AAAA,QACD,CAAC;AAAA,MACH;AAAA,IACD;AACA,QAAI,KAAK,KAAK,eAAe;AAC5B,eAAS,OAAO,KAAK,EAAE,KAAK,KAAK,KAAK,aAAa;AAAA,IACpD;AAGA,YACE,OAAO,KAAK,EACZ,KAAK,cAAc,EACnB,MAAM,WAAW,cAAc,EAC/B,MAAM,WAAW,OAAO,EACxB,MAAM,SAAS,YAAY,EAC3B,MAAM,aAAa,OAAO,EAC1B,MAAM,eAAe,MAAM;AAG7B,UAAM,aAAa,IAAI,YAAY;AAAA,MAClC,QAAQ;AAAA,MACR,KAAK,KAAK;AAAA,MACV,OAAO;AAAA,QACN,SAAS;AAAA,QACT,QAAQ,cAAc,YAAY;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,MACN,aAAa;AAAA,MACb,OAAO;AAAA,MACP,aAAa,YAAY;AACxB,eAAO,MAAM,YAAY,KAAK,KAAK,KAAK,SAAS,WAAU,MAAM,KAAK,cAAc,KAAK,GAAG;AAAA,MAC7F;AAAA,IACD,CAAC;AAED,eAAW,OAAO;AAElB,UAAM,oBAAoB,QAAQ,OAAO,KAAK,EAAE,KAAK,SAAS,wBAAwB,EAAE,MAAM,WAAW,OAAO;AAEhH,UAAM,kBAAkB,MAAM;AAC7B,YAAM,QAAQ,KAAK,IAAI,QAAQ,KAAK,IAAI,aAAa,SAAS,OAAO,CAAC;AAEtE,YAAM,YAAY,CAAC,QAAQ,YAAY,KAAK;AAE5C,UAAI,MAAM,OAAQ,WAAU,OAAO,GAAG,GAAG,KAAK;AAC9C,UAAI,OAAO,KAAK,MAAM,QAAQ,EAAE,OAAQ,WAAU,KAAK,SAAS;AAChE,YAAM,MAAM,UAAU,KAAK,IAAI,EAAE,QAAQ,eAAe,MAAM;AAC9D,aAAO;AAAA,IACR;AAEA,SAAK,IAAI,eAAe,kBACtB,OAAO,QAAQ,EACf,KAAK,cAAc,iBAAiB,EACpC,KAAK,SAAS,oBAAoB,EAClC,MAAM,WAAW,UAAU,EAC3B,MAAM,UAAU,eAAe,YAAY,EAC3C,GAAG,UAAU,MAAM;AACnB,WAAK,0BAA0B,KAAK,GAAG;AACvC,iBAAW,kBAAkB,gBAAgB,CAAC;AAAA,IAC/C,CAAC;AAEF,UAAM,gBAAgB,OAAO,OAAO,KAAK,IAAI,OAAO,EAAE,OAAO,CAAC,MAAW,CAAC,EAAE,YAAY;AACxF,eAAW,KAAK,eAAe;AAC9B,WAAK,IAAI,aAAa,OAAO,QAAQ,EAAE,KAAK,KAAK,EAAE,IAAI,EAAE,KAAK,GAAG,EAAE,OAAO,IAAI,EAAE,IAAI,EAAE,EAAE,SAAS,SAAS,EAAE,IAAI;AAAA,IACjH;AACA,SAAK,IAAI,qBAAqB,KAAK,wBAAwB,KAAK,KAAK,SAAS,KAAK,GAAG;AAEtF,SAAK,IAAI,SAAS,MAAM,cAAc;AAAA,MACrC,QAAQ,KAAK,IAAI;AAAA,MACjB,SAAS,KAAK,IAAI;AAAA,MAClB,WAAW,KAAK,IAAI,OAClB,OAAO,KAAK,EACZ,MAAM,YAAY,UAAU,EAC5B,MAAM,cAAc,SAAS,EAC7B,MAAM,cAAc,QAAQ,EAC5B,QAAQ,mBAAmB,IAAI;AAAA,MACjC,YAAY,KAAK,IAAI,OAAO,OAAO,KAAK,EAAE,MAAM,cAAc,MAAM,EAAE,QAAQ,uBAAuB,IAAI;AAAA,MACzG,oBAAoB,KAAK,IAAI;AAAA,MAC7B,WAAW,KAAK,IAAI;AAAA,MACpB;AAAA,MACA;AAAA,MACA,WAAW,KAAK,IAAI;AAAA,IACrB,CAAC;AAGD,YACE,OAAO,MAAM,EACb,QAAQ,kBAAkB,IAAI,EAC9B,KAAK,MAAM,sBAAsB,EACjC,MAAM,WAAW,OAAO,EACxB,KAAK,MAAM,EACX,GAAG,SAAS,OAAM,UAAS;AAC3B,YAAM,IAAI,MAAM,OAAO,sBAAsB;AAC7C,YAAM,MAAM,KAAK,QAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC;AAEtE,YAAM,IAAI,EACR,OAAO,KAAK,EACZ,MAAM,WAAW,UAAU,EAC3B,UAAU,GAAG,EACb,KAAK,WAAU,KAAK,OAAO,OAAK,CAAC,EAAE,UAAU,CAAC,EAC9C,MAAM,EACN,OAAO,GAAG,EACV,KAAK,OAAK,WAAW,EAAE,IAAI,kBAAkB,EAAE,KAAK,MAAM;AAAA,IAC7D,CAAC;AAIF,QAAI,KAAK,aAAa,SAAS,GAAG;AACjC,cACE,OAAO,MAAM,EACb,QAAQ,kBAAkB,IAAI,EAC9B,KAAK,MAAM,8BAA8B,EACzC,MAAM,WAAW,OAAO,EACxB,MAAM,UAAU,SAAS,EACzB,KAAK,cAAc,EACnB,GAAG,SAAS,OAAM,UAAS;AAC3B,cAAM,IAAI,MAAM,OAAO,sBAAsB;AAC7C,cAAM,MAAM,KAAK,QAAQ,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC;AAExE,cAAM,IAAI,EACR,OAAO,KAAK,EACZ,MAAM,WAAW,UAAU,EAC3B,UAAU,GAAG,EACb,KAAK,KAAK,YAAY,EACtB,MAAM,EACN,OAAO,GAAG,EACV,KAAK,CAAC,MAAW,WAAW,EAAE,GAAG,kBAAkB,EAAE,cAAc,KAAK,EAAE,OAAO,KAAK,EAAE,IAAI,MAAM;AAAA,MACrG,CAAC;AAAA,IACH;AAAA,EACD;AAAA,EAEA,wBAAwB,KAAK,SAAS,KAAK;AAC1C,QAAI,IAAI,aAAa,KAAK,EAAE,QAAQ,WAAW,GAAG;AACjD,cAAQ,MAAM,mCAAmC;AACjD;AAAA,IACD;AAEA,UAAM,OAAO;AACb,UAAM,iBAAiB,QAAQ,OAAO,MAAM;AAC5C,UAAM,aAAa,IAAI,aAAa,KAAK,EAAE,QAAQ,IAAI,aAAa,SAAS,eAAe,CAAC,EAAE;AAE/F,UAAM,gBAAgB,eACpB,KAAK,SAAS,gBAAgB,EAC9B,KAAK,MAAM,YAAY,EACvB,MAAM,WAAW,IAAI,EACrB,MAAM,UAAU,EAChB,KAAK,aAAa,iBAAiB,EACnC,GAAG,SAAS,MAAM;AAElB,YAAM,iBAAiB,IAAI,aAAa,KAAK,EAAE;AAC/C,YAAM,IAAI,IAAI,QAAQ,cAAc;AACpC,UAAI,CAAC,GAAG;AACP,cAAM,0BAA0B,cAAc;AAC9C;AAAA,MACD;AACA,YAAM,cAAc,cAAc,IAAI,OAAO,KAAK,UAAU;AAC5D,kBAAY,OAAO,KAAK,iBAAiB,iBAAiB;AAE1D,YAAM,MAAM;AAAA,QACX,SAAS,IAAI;AAAA,QACb;AAAA,QACA,QAAQ,YAAY;AAAA,QACpB,QAAQ;AAAA,QACR,KAAK,EAAE,aAAa;AAAA,QACpB,OAAO,EAAE,aAAa;AAAA,QACtB,MAAM,EAAE,aAAa;AAAA,QACrB,OAAO;AAAA,QACP,OAAO,CAAC;AAAA,QACR,WAAW,IAAI;AAAA,MAChB;AACA,6BAAuB,GAAG,IAAI,KAAK;AAEnC,aAAO,qBAAa,EAAE,KAAK,OAAK,IAAI,EAAE,MAAM,GAAG,CAAC;AAChD,UAAI,OAAO,SAAS,EAAE,MAAM,sBAAsB,OAAO,MAAM,CAAC;AAAA,IACjE,CAAC;AACF,WAAO;AAAA,EACR;AAAA,EAEA,0BAA0B,KAAK;AAC9B,QAAI,mBAAmB,KAAK,IAAI,aAAa,KAAK,EAAE,QAAQ,iBAAiB;AAC7E,QAAI,mBAAmB,MAAM,IAAI,aAAa,KAAK,EAAE,KAAK;AAAA,EAC3D;AACD;",
|
|
4
|
+
"sourcesContent": ["import { dofetch3 } from '#common/dofetch'\nimport { openSandbox } from '../../appdrawer/adSandbox'\nimport { newSandboxDiv, throwMsgWithFilePathAndFnName } from '#dom'\nimport { string2pos } from '../coord'\nimport * as parseurl from '../app.parseurl'\nimport urlmap from '#common/urlmap'\nimport { first_genetrack_tolist } from '#common/1stGenetk'\nimport blockinit from '../block.init'\nimport { select as d3select } from 'd3-selection'\n\n/*\n----EXPORTED----\nsearchItems()\nfindgenelst()\nfindgene2paint()\n\n----Internal----\nfindAppDrawerElements()\ngetExampleNames()\ngetFilteredElements()\n*/\n\nexport async function searchItems(app, tip, help, publications, jwt) {\n\tconst userInput = d3select('input').property('value').trim()\n\tconst data = [\n\t\t{\n\t\t\ttitle: 'Genes',\n\t\t\tdefault: true,\n\t\t\titems: await findgenelst(userInput, app.selectgenome.property('value'), jwt),\n\t\t\tcolor: '#F2F2F2',\n\t\t\tcallback: d => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\tfindgene2paint(d, app, app.selectgenome.property('value'), jwt)\n\t\t\t}\n\t\t}\n\t]\n\tawait findAppDrawerElements(app, userInput, data, tip)\n\t//Keep 'Help' section second last\n\tdata.push({\n\t\ttitle: 'Help',\n\t\tdefault: false,\n\t\titems: help.filter(d => d.label.toLowerCase().includes(userInput.toLowerCase())),\n\t\tcolor: '#faebd9',\n\t\tcallback: d => {\n\t\t\twindow.open(d.link, d.label)\n\t\t}\n\t})\n\tdata.push({\n\t\ttitle: 'Publications',\n\t\tdefault: false,\n\t\titems: publications.filter(\n\t\t\td =>\n\t\t\t\td.title.toLowerCase().includes(userInput.toLowerCase()) ||\n\t\t\t\td.appHeaderTitle.toLowerCase().includes(userInput.toLowerCase())\n\t\t),\n\t\tcolor: '#E6E6FA',\n\t\tcallback: d => {\n\t\t\twindow.open(d.doi, d.title)\n\t\t}\n\t})\n\treturn data\n}\n\nasync function findAppDrawerElements(app, input, data, tip) {\n\tconst re = await dofetch3(app.cardsPath + '/index.json')\n\tif (re.error) throwMsgWithFilePathAndFnName(`Problem retrieving ../cards/index.json`)\n\tconst userInput = input.toLowerCase().trim()\n\tconst elements = [...re.elements]\n\tlet filteredElements\n\tif (userInput.length > 2) {\n\t\t/** Adding the examples to the search terms is expensive\n\t\t * Limit when all card files are loaded based on user input\n\t\t * Maybe timeout instead? or combination of the two?\n\t\t */\n\t\tawait getExampleNames(elements, app)\n\t\tfilteredElements = getFilteredElements(elements, userInput)\n\t} else {\n\t\tfilteredElements = getFilteredElements(elements, userInput)\n\t}\n\n\tconst opts = {\n\t\tapp: app.drawer.opts,\n\t\tsandboxDiv: app.drawer.opts.sandboxDiv,\n\t\tgenomes: app.genomes,\n\t\tfromApp: true\n\t}\n\n\tdata.push(\n\t\t{\n\t\t\ttitle: 'Tracks and Apps',\n\t\t\titems: filteredElements.filter(c => c.type == 'card'),\n\t\t\tcolor: '#e1edf7',\n\t\t\tcallback: element => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\topenSandbox(element, opts)\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\ttitle: 'Datasets',\n\t\t\titems: filteredElements.filter(c => c.type == 'dsButton'),\n\t\t\tcolor: '#e5f5e4',\n\t\t\tcallback: element => {\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t\ttip.hide()\n\t\t\t\topenSandbox(element, opts)\n\t\t\t}\n\t\t}\n\t)\n\treturn data\n}\n\nasync function getExampleNames(elements, app) {\n\tconst promises = elements.map(async elem => {\n\t\tif (elem.hidden || elem.type != 'card' || !elem.sandboxJson) return elem\n\t\tconst exs = await dofetch3(app.cardsPath + `/${elem.sandboxJson}.json`)\n\t\tif (exs?.ppcalls.length > 0) {\n\t\t\tfor (const c of exs.ppcalls) {\n\t\t\t\tif (c.isUI) return\n\t\t\t\tif (c?.label) elem.searchterms.push(c.label)\n\t\t\t}\n\t\t}\n\t})\n\n\tawait Promise.all(promises)\n}\n\nfunction getFilteredElements(elements, userInput) {\n\treturn elements\n\t\t.filter(elem => {\n\t\t\tif (elem.hidden) return false\n\t\t\tlet searchTermFound = (elem.searchterms || []).reduce((searchTermFound, searchTerm) => {\n\t\t\t\tif (searchTermFound) return true\n\t\t\t\treturn searchTerm.toLowerCase().includes(userInput)\n\t\t\t}, false)\n\t\t\treturn searchTermFound || elem.name.toLowerCase().includes(userInput)\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name))\n}\n\nexport async function findgenelst(str, genome, jwt) {\n\t//TODO - including something here about if user input includes a special character to return rather than comment out catch\n\tif (str.length == 0) return\n\ttry {\n\t\tconst data = await dofetch3('/genelookup', {\n\t\t\tbody: {\n\t\t\t\tinput: str,\n\t\t\t\tgenome,\n\t\t\t\tjwt\n\t\t\t}\n\t\t})\n\n\t\tif (data.error) throw data.error\n\t\tif (!data.hits) throw '.hits[] missing'\n\t\treturn data.hits\n\t} catch (err) {\n\t\t// err is likely \"invalid character in gene name\". ignore and continue\n\t\t// if (err.stack) console.log(err.stack)\n\t\t// throw err\n\t}\n}\n\nexport async function findgene2paint(str, app, genomename, jwt) {\n\tconst g = app.genomes[genomename]\n\tif (!g) {\n\t\tconsole.error('unknown genome ' + genomename)\n\t\treturn\n\t}\n\tconst sandbox_div = newSandboxDiv(app.drawer.opts.sandboxDiv)\n\tsandbox_div.header.html(\n\t\t'<div style=\"display:inline-block;\">' +\n\t\t\tstr +\n\t\t\t'</div><div class=\"sjpp-output-sandbox-title\">' +\n\t\t\tgenomename +\n\t\t\t'</div>'\n\t)\n\t// may yield tklst from url parameters\n\tconst urlp = urlmap()\n\tconst tklst = await parseurl.get_tklst(urlp, g)\n\n\tconst pos = string2pos(str, g)\n\tif (pos) {\n\t\t// input is coordinate, launch block\n\t\tconst par = {\n\t\t\thostURL: app.hostURL,\n\t\t\tjwt,\n\t\t\tholder: sandbox_div.body,\n\t\t\tgenome: g,\n\t\t\tnobox: true,\n\t\t\tchr: pos.chr,\n\t\t\tstart: pos.start - 1, // entered positions are 1-based. block uses 0-based\n\t\t\tstop: pos.stop - 1,\n\t\t\tdogtag: genomename,\n\t\t\ttklst,\n\t\t\tdebugmode: app.debugmode\n\t\t}\n\t\tfirst_genetrack_tolist(g, par.tklst)\n\n\t\timport('../block.js')\n\t\t\t.then(b => new b.Block(par))\n\t\t\t.catch(err => {\n\t\t\t\tapp.error0(err)\n\t\t\t})\n\t\treturn\n\t}\n\n\t// input string is not coordinate, find gene match\n\tconst par = {\n\t\thostURL: app.hostURL,\n\t\tjwt,\n\t\tquery: str,\n\t\tgenome: g,\n\t\tholder: sandbox_div.body,\n\t\tvariantPageCall_snv: app.variantPageCall_snv,\n\t\tsamplecart: app.samplecart,\n\t\ttklst,\n\t\tdebugmode: app.debugmode\n\t}\n\n\t// add svcnv tk from url param\n\tconst tmp = sessionStorage.getItem('urlp_mds')\n\tif (tmp) {\n\t\tconst l = tmp.split(',')\n\t\tif (l.length == 2) {\n\t\t\tpar.datasetqueries = [{ dataset: l[0], querykey: l[1] }]\n\t\t}\n\t}\n\n\tawait blockinit(par)\n}\n", "import { getCompInit } from '#rx'\nimport { rgb } from 'd3-color'\nimport { openSandbox } from './adSandbox'\nimport { slideDrawer } from './mainBtn'\n\n/*\n.opts{\n\t.app{\n\t\t.holder\n\t\t.element{}\n\t\t.sandboxDiv\n\t}\n}\n\nTODOs: \n\n- responsiveness of image on window resize \n\t- expand image size on resize\n\t- non square, take better use of space\n- Need fn in utils to decide black or white text based on background color contrast\n- Unify card and nestedCard layout. Only call one layout function for both\n\t- optional non image card layout\n\t- Make ribbons appear on nested cards\n- element.section only required if columnsLayout provided\n\n*/\n\nclass AppDrawerCard {\n\t// handles types 'card' and 'nestedCard'\n\tconstructor(opts) {\n\t\tthis.type = 'card'\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.holder = opts.holder\n\t\tthis.dom = opts.dom\n\t\tthis.sandboxDiv = opts.sandboxDiv\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\tif (!opts.element.name) throw `Card .name is missing`\n\t\tif (opts.element.type == 'card') {\n\t\t\tif (!opts.element.sandboxJson && !opts.element.sandboxHtml)\n\t\t\t\tthrow `Either .sandboxJson or .sandboxHtml is missing for card=${opts.element.name}`\n\t\t}\n\t\tif (opts.element.type == 'nestedCard') {\n\t\t\tif (!opts.element.children || opts.element.children.length == 0)\n\t\t\t\tthrow `Missing .children for nested card = ${opts.element.name}`\n\t\t}\n\t\tif (opts.element.ribbon) {\n\t\t\tif (!opts.element.ribbon.text) throw `Missing ribbon .text for ${opts.element.type} = ${opts.element.name}`\n\n\t\t\t//ProteinPaint app drawer specific validation\n\t\t\tif (\n\t\t\t\t(opts.element.ribbon.text.toUpperCase() == 'NEW' || opts.element.ribbon.text.toUpperCase() == 'UPDATED') &&\n\t\t\t\t!opts.element.ribbon.expireDate\n\t\t\t)\n\t\t\t\tthrow `${opts.element.type} = ${\n\t\t\t\t\topts.element.name\n\t\t\t\t} ribbon is ${opts.element.ribbon.text.toUpperCase()} but .expireDate is missing. Please provide`\n\n\t\t\tif (opts.element.ribbon.expireDate) {\n\t\t\t\tif (opts.element.ribbon.expireDate >= 0) {\n\t\t\t\t\tthrow `Flag for ${opts.element.type} = ${opts.element.name} is not a valid date`\n\t\t\t\t} //TODO add validation for format?\n\t\t\t}\n\t\t}\n\t\treturn opts\n\t}\n\n\tmain() {}\n}\n\nexport const cardInit = getCompInit(AppDrawerCard)\n\nfunction setRenderers(self) {\n\tconst card = self.holder.append('li')\n\tif (self.opts.element.type == 'card') {\n\t\tcard.classed('sjpp-track', true).html(\n\t\t\t`<div class=\"sjpp-track-h\"><span style=\"font-size:14.5px;font-weight:500;\">${self.opts.element.name}</span></div>\n\t\t\t\t${\n\t\t\t\t\tself.opts.element.description\n\t\t\t\t\t\t? `<span class=\"sjpp-track-blurb\" style=\"cursor:default\">${self.opts.element.description}</span></div>`\n\t\t\t\t\t\t: ' '\n\t\t\t\t}\n\t\t\t\t<span class=\"sjpp-track-image\"><img src=\"${self.opts.element.image}\" alt=\"${\n\t\t\t\tself.opts.element.description\n\t\t\t}\"></img></span>\n\t\t\t\t</div>`\n\t\t)\n\t} else if (self.opts.element.type == 'nestedCard') {\n\t\tcard.classed('sjpp-app-drawer-card', true).html(\n\t\t\t`<p style=\"margin-left: 12px; font-size:14.5px;font-weight:500; display: block;\">${self.opts.element.name}</p>\n\t\t\t<p style=\"display: block; font-size: 13px; font-weight: 300; margin-left: 20px; justify-content: center; font-style:oblique; color: #403f3f;\">${self.opts.element.description}</p>`\n\t\t)\n\t}\n\n\tself.makeRibbon = function (ribbon) {\n\t\t//only relevant for 'card', not 'nestedCard'\n\t\tconst ribbonDiv = card\n\t\t\t.append('div')\n\t\t\t.classed('sjpp-app-drawer-card-ribbon', true)\n\t\t\t.style('align-items', 'center')\n\t\t\t.style('justify-content', 'center')\n\n\t\t//*********TODO: move from diagonal to straight on right side */\n\t\tconst text = ribbon.text.toUpperCase()\n\t\t//Enforce color palette for proteinpaint homepage ribbons\n\t\tconst color =\n\t\t\ttext == 'BETA'\n\t\t\t\t? '#418cb5'\n\t\t\t\t: text == 'NEW'\n\t\t\t\t? '#1ba176'\n\t\t\t\t: text == 'UPDATED'\n\t\t\t\t? 'orange'\n\t\t\t\t: ribbon.color\n\t\t\t\t? ribbon.color\n\t\t\t\t: 'red'\n\n\t\tribbonDiv\n\t\t\t.append('span')\n\t\t\t.text(text)\n\t\t\t.style('color', 'white')\n\t\t\t.style('background-color', rgb(color).darker())\n\t\t\t.style('height', 'auto')\n\t\t\t.style('width', '100%')\n\t\t\t.style('top', '15%')\n\t\t\t.style('left', '-30%')\n\t\t\t.style('font-size', '11.5px')\n\t\t\t.style('text-transform', 'uppercase')\n\t\t\t.style('text-align', 'center')\n\t}\n\n\tif (self.opts.element.ribbon) {\n\t\tconst today = new Date()\n\t\tconst ribbonExpireDate = new Date(self.opts.element.ribbon.expireDate)\n\t\t//Allows ribbons to expire or appear indefinitely\n\t\tif (ribbonExpireDate > today || ribbonExpireDate == 'Invalid Date') self.makeRibbon(self.opts.element.ribbon)\n\t}\n\n\tcard.on('click', async event => {\n\t\tevent.stopPropagation()\n\t\tawait self.app.dispatch({\n\t\t\ttype: 'is_apps_btn_active',\n\t\t\tvalue: false\n\t\t})\n\t\tslideDrawer(self)\n\t\t/** Focused elements rendering concurrently with the drawer\n\t\t * animation cause the drawer scrolling to jerk. Wait till\n\t\t * the animation is complete, then open the sandbox. */\n\t\tsetTimeout(async () => {\n\t\t\tawait openSandbox(self.opts.element, self.opts)\n\t\t}, self.state.duration + 5)\n\t})\n}\n", "import { getInitFxn } from '#rx'\nimport * as utils from './utils'\nimport { openSandbox } from './adSandbox'\nimport { slideDrawer } from './mainBtn'\n\n/*\n.opts{\n\t.app\n\t.holder\n\t.element{}\n\t.dom{}\n\t.state{}\n\t.sandboxDiv\n}\n*/\n\nclass AppDrawerButton {\n\tconstructor(opts) {\n\t\tthis.type = 'button' // works for 'dsButton'. May expand to other button types\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.holder = opts.holder\n\t\tthis.dom = opts.dom\n\t\tthis.sandboxDiv = opts.sandboxDiv\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\tif (!opts.element.name) throw `Button name is missing`\n\t\tif (!opts.element.sandboxJson && !opts.element.sandboxHtml)\n\t\t\tthrow `Either .sandboxJson or .sandboxHtml is missing for button=${opts.element.name}`\n\t\treturn opts\n\t}\n\n\tmain() {}\n}\n\nexport const buttonInit = getInitFxn(AppDrawerButton)\n\nfunction setRenderers(self) {\n\tconst btn = utils.makeButton({ div: self.holder, text: self.opts.element.name, margin: '20px 20px 0px' })\n\tbtn.attr('class', 'sjpp-appdrawer-dataset-btn').on('click', async event => {\n\t\tevent.stopPropagation()\n\t\tawait self.app.dispatch({\n\t\t\ttype: 'is_apps_btn_active',\n\t\t\tvalue: false\n\t\t})\n\t\tslideDrawer(self)\n\t\tawait openSandbox(self.opts.element, self.opts)\n\t})\n}\n", "import { getCompInit } from '#rx'\nimport { rgb } from 'd3-color'\nimport { defaultcolor } from '#shared/common.js'\nimport { cardInit } from './card'\nimport { buttonInit } from './dsButton'\nimport { select } from 'd3-selection'\nimport { dofetch3, sayerror } from '#src/client'\n\n/*\n.opts{}\n .app{}\n\t.dom{}\n\t.state{}\n\nQuestions: \n\t- Organize in window based on section size to make best use of space?\n - For the column layout: \n 1. Cap number of columns?\n 2. Allow y overflow for >2 columns (like Trello)?\n*/\n\nclass AppDrawerLayoutComp {\n\tconstructor(opts) {\n\t\tthis.type = 'layout'\n\t\tthis.dom = {\n\t\t\tholder: opts.dom.drawerDiv,\n\t\t\twrapper: opts.dom.wrapper,\n\t\t\tsandboxDiv: opts.dom.sandboxDiv\n\t\t}\n\t\tthis.state = opts.state\n\t\tthis.hasStatePreMain = true\n\t}\n\n\tasync validateIndexJson() {\n\t\tconst index = await this.getIndexJson()\n\t\tif (!index.elements) throw `Missing elements array`\n\t\tif (!index.elements.length) throw `No element objects provided`\n\t\tif (index.columnsLayout) {\n\t\t\tif (index.columnsLayout.length == 0) throw `Missing column objects`\n\t\t\tconst allGridAreaValues = index.columnsLayout.map(s => s.gridarea)\n\t\t\tif (allGridAreaValues.length != new Set(allGridAreaValues).size) throw `Duplicate values for .gridarea found`\n\t\t\tconst allSectionIdValues = []\n\t\t\tfor (const col of index.columnsLayout) {\n\t\t\t\tif (!col.gridarea) throw `Missing column .gridarea for column = ${col.name}`\n\t\t\t\tif (!col.sections || col.sections.length == 0) throw `Missing section objects for column = ${col.name}`\n\t\t\t\tfor (const section of col.sections) {\n\t\t\t\t\tif (!section.id)\n\t\t\t\t\t\tthrow `Missing section .id in ${section.name ? `section = ${section.name}` : `column = ${col.name} array`}`\n\t\t\t\t\tallSectionIdValues.push(section.id)\n\t\t\t\t}\n\t\t\t\tif (col.sections.length != new Set(col.sections).size) {\n\t\t\t\t\tthrow `Non-unique levels in line ${lineNum}: ${JSON.stringify(levelNames)}`\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (allSectionIdValues.length != new Set(allSectionIdValues).size) throw `Duplicate values for section.id found`\n\n\t\t\t// Required element attributes when columnsLayout specified\n\t\t\tfor (const element of index.elements) {\n\t\t\t\tif (!element.section) throw `.section is missing for ${element.type} = ${element.name}`\n\t\t\t\tif (!allSectionIdValues.some(d => d == element.section))\n\t\t\t\t\tthrow `section = ${element.section} for ${element.type} = ${element.name} is not a column section`\n\t\t\t}\n\t\t}\n\t\treturn index\n\t}\n\n\tasync getIndexJson() {\n\t\t// Proteinpaint specific index.\n\t\t// TODO: Later modifiy to accept user index.\n\t\tconst re = await dofetch3(this.app.cardsPath + '/index.json')\n\t\tif (re.error) {\n\t\t\tsayerror(this.dom.holder.append('div'), re.error)\n\t\t\treturn\n\t\t}\n\t\treturn re\n\t}\n\n\tvalidateElements() {\n\t\tconst features = JSON.parse(sessionStorage.getItem('optionalFeatures')) || {}\n\t\tthis.elements = this.index.elements.filter(e => !e.hidden && (!e.configFeature || features[e.configFeature]))\n\t}\n\n\tasync init() {\n\t\tthis.index = await this.validateIndexJson()\n\t\tthis.elementsRendered = false\n\t\tsetRenderers(this)\n\t\tthis.validateElements()\n\t\tthis.layout = this.index.columnsLayout ? this.index.columnsLayout : null\n\t\tthis.components = {\n\t\t\telements: []\n\t\t}\n\t}\n\n\tasync main() {\n\t\t// prevent elements from reloading each time\n\t\tif (this.elementsRendered == true) return\n\t\tthis.elementsRendered = true\n\t\tfor (const element of this.elements) {\n\t\t\tconst holder = select(this.layout ? `#${element.section} > .sjpp-element-list` : `.sjpp-element-list`)\n\t\t\tif (element.type == 'card' || element.type == 'nestedCard') {\n\t\t\t\tthis.components.elements.push(\n\t\t\t\t\tawait cardInit({\n\t\t\t\t\t\tapp: this.app,\n\t\t\t\t\t\tholder: holder\n\t\t\t\t\t\t\t.style('display', 'grid')\n\t\t\t\t\t\t\t.style('grid-template-columns', 'repeat(auto-fit, minmax(320px, 1fr))')\n\t\t\t\t\t\t\t.style('gap', '10px')\n\t\t\t\t\t\t\t.style('list-style', 'none')\n\t\t\t\t\t\t\t.style('margin', '15px 0px'),\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tdom: this.opts.dom,\n\t\t\t\t\t\tstate: this.state,\n\t\t\t\t\t\tsandboxDiv: this.dom.sandboxDiv\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t} else if (element.type == 'dsButton') {\n\t\t\t\tthis.components.elements.push(\n\t\t\t\t\tawait buttonInit({\n\t\t\t\t\t\tapp: this.app,\n\t\t\t\t\t\tholder,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tdom: this.opts.dom,\n\t\t\t\t\t\tstate: this.state,\n\t\t\t\t\t\tsandboxDiv: this.dom.sandboxDiv\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport const layoutInit = getCompInit(AppDrawerLayoutComp)\n\nfunction setRenderers(self) {\n\tif (!self.index.columnsLayout) noDefinedLayout(self)\n\tif (self.index.columnsLayout) columnsLayout(self)\n}\n\nfunction noDefinedLayout(self) {\n\tconst flexLayout = self.dom.wrapper\n\t\t.append('div')\n\t\t.style('display', 'flex')\n\t\t.style('padding', '10px')\n\t\t.classed('sjpp-element-list', true)\n\treturn flexLayout\n}\n\nfunction columnsLayout(self) {\n\t// Allow user to create multiple columns in parent grid\n\tconst parentGrid = self.dom.wrapper\n\t\t.append('div')\n\t\t.style('display', 'grid')\n\t\t.style('grid-template-columns', 'repeat(auto-fit, minmax(425px, 1fr))')\n\t\t.style('gap', '10px')\n\t\t.style('padding', '10px')\n\t\t.style('text-align', 'left')\n\n\t//Allow user to create multiple parent columns in columnsLayout\n\tconst gridareas = []\n\tfor (const column of self.index.columnsLayout) gridareas.push(column.gridarea)\n\tparentGrid.style('grid-template-areas', `\"${gridareas.toString().replace(',', ' ')}\"`)\n\tfor (const col of self.index.columnsLayout) {\n\t\tconst newCol = parentGrid.append('div').style('grid-area', col.gridarea).classed('.sjpp-track-cols', true)\n\t\tfor (const section of col.sections) addSection(section, newCol)\n\t}\n\n\tfunction addSection(section, newCol) {\n\t\tconst newSection = newCol.append('div').attr('id', section.id)\n\t\tif (section.name)\n\t\t\tnewSection\n\t\t\t\t.append('h5')\n\t\t\t\t.classed('sjpp-appdrawer-cols', true)\n\t\t\t\t.style('color', rgb(defaultcolor).darker())\n\t\t\t\t.text(section.name)\n\t\tnewSection.append('div').classed('sjpp-element-list', true).style('padding', '10px')\n\n\t\treturn newSection\n\t}\n}\n", "import { getCompInit } from '#rx'\nimport { layoutInit } from './layout'\n\n/*\n.opts{}\n .app{}\n\t.dom{}\n\t.state{}\n\nTODOs: \n- Replace drawerFullHeight with a different approach\n\t- Causes the drawer to only partially appear when the window zooms in\n*/\n\nclass MainHeadboxBtn {\n\tconstructor(opts) {\n\t\tthis.type = 'mainBtn'\n\t\tthis.opts = this.validateOpts(opts)\n\t\tthis.dom = opts.dom\n\t\tthis.state = opts.state\n\t\tthis.hasStatePreMain = true\n\t\tsetRenderers(this)\n\t}\n\n\tvalidateOpts(opts) {\n\t\treturn opts.app.opts\n\t}\n\n\tgetState(appState) {\n\t\treturn {\n\t\t\tappBtnActive: appState.appBtnActive\n\t\t}\n\t}\n\n\tasync init() {\n\t\tthis.btnRendered = false\n\t\tthis.drawerFullHeight = ''\n\t\ttry {\n\t\t\t//detect whether to show examples right away, which is when the url is barebone without any route paths or search parameters\n\t\t\tif (window.location.pathname == '/' && !window.location.search.length)\n\t\t\t\tawait this.app.dispatch({ type: 'is_apps_btn_active', value: true })\n\t\t\tthis.components = {\n\t\t\t\tlayout: []\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tasync main(appState) {\n\t\tif (this.app.getState(appState).appBtnActive == true && this.btnRendered == false) {\n\t\t\tthis.dom.drawerDiv.style('background-color', '#f5f5f5') //Quick fix for drawerDiv initially appearing before layout init\n\t\t\t//Init layout only once when 'Apps' button is active for the first time\n\t\t\tthis.components.layout.push(\n\t\t\t\tawait layoutInit({\n\t\t\t\t\tapp: this.app,\n\t\t\t\t\tdom: this.dom,\n\t\t\t\t\tstate: this.state\n\t\t\t\t})\n\t\t\t)\n\t\t\t//Give the drawerDiv time to render before calculating height\n\t\t\tsetTimeout(() => {\n\t\t\t\tthis.drawerFullHeight = this.dom.drawerDiv.node().getBoundingClientRect().height + 5\n\t\t\t}, this.state.duration + 5)\n\t\t\tslideDrawer(this)\n\t\t\tthis.btnRendered = true\n\t\t}\n\t\tif (this.state.appBtnActive == false && this.btnRendered == true) slideDrawer(this)\n\t}\n}\n\nexport const mainBtnInit = getCompInit(MainHeadboxBtn)\n\nfunction setRenderers(self) {\n\tself.dom.btnWrapper\n\t\t.style('background-color', self.state.appBtnActive ? '#b2b2b2' : '#f2f2f2')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\t\t.on('click', async event => {\n\t\t\tevent.stopPropagation()\n\t\t\tawait self.app.dispatch({ type: 'is_apps_btn_active' })\n\t\t\tslideDrawer(self)\n\t\t\tif (self.state.appBtnActive) {\n\t\t\t\tsetTimeout(() => {\n\t\t\t\t\tself.drawerFullHeight = self.dom.drawerDiv.node().getBoundingClientRect().height + 5\n\t\t\t\t}, self.state.duration + 5)\n\t\t\t}\n\t\t})\n\n\tself.dom.btn\n\t\t.attr('class', 'sja_menuoption')\n\t\t.style('display', 'inline-block')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\t\t.style('padding', self.opts.padw_sm)\n\t\t.style('margin', '0px 5px')\n\t\t.style('cursor', 'pointer')\n\t\t.text('Apps')\n\n\t// an empty spacer div, needed since the arrows are absolutely positioned\n\tself.dom.drawerHint\n\t\t.style('position', 'relative')\n\t\t.style('display', 'inline-block')\n\t\t.style('height', self.state.arrowSize.closed + 'px')\n\t\t.style('width', self.state.appBtnActive ? self.state.hintWidth.open : self.state.hintWidth.closed)\n\t\t.style('background-color', 'transparent')\n\t\t.style('text-align', 'center')\n\t\t.style('cursor', 'pointer')\n\n\tself.dom.drawerArrow\n\t\t.style('position', 'absolute')\n\t\t.style('font-size', self.state.arrowSize.closed + 'px')\n\t\t.style('right', self.state.hintPos.closed.rt + 'px')\n\t\t.style('bottom', self.state.hintPos.closed.btm + 'px')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.arrowColor.closed)\n\t\t.style('opacity', self.state.appBtnActive ? 0 : 1)\n\t\t.style('cursor', 'pointer')\n\t\t.html('▼')\n\n\tself.dom.drawerArrowOpen\n\t\t.style('position', 'absolute')\n\t\t.style('font-size', self.state.arrowSize.open + 'px')\n\t\t.style('left', self.state.hintPos.open.left + 'px')\n\t\t.style('bottom', self.state.hintPos.open.btm + 'px')\n\t\t.style('transform', 'rotate(180deg)')\n\t\t.style('background-color', 'transparent')\n\t\t.style('color', self.state.arrowColor.open)\n\t\t.style('opacity', self.state.appBtnActive ? 1 : 0)\n\t\t.style('cursor', 'pointer')\n\t\t.style('pointer-events', self.state.appBtnActive ? 'auto' : 'none')\n\t\t.html('▼')\n\n\tself.drawerFullHeight = self.dom.drawerRow.node().getBoundingClientRect().height + 5\n}\n\nexport async function slideDrawer(self) {\n\tself.dom.btnWrapper\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('background-color', self.state.appBtnActive ? '#b2b2b2' : '#f2f2f2')\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\n\tself.dom.btn\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('color', self.state.appBtnActive ? '#fff' : '#000')\n\n\tself.dom.drawerDiv\n\t\t.style('display', 'inline-block')\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('top', self.state.appBtnActive ? '0px' : '-' + self.drawerFullHeight + 'px')\n\n\tself.dom.drawerRow\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('height', self.state.appBtnActive ? self.drawerFullHeight + 'px' : '0px')\n\n\tself.dom.drawerHint\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('width', self.state.appBtnActive ? self.opts.state.hintWidth.open : self.opts.state.hintWidth.closed)\n\n\tself.dom.drawerArrow\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('opacity', self.state.appBtnActive ? 0 : 1)\n\n\tself.dom.drawerArrowOpen\n\t\t.style('pointer-events', self.state.appBtnActive ? 'auto' : 'none')\n\t\t.transition()\n\t\t.duration(self.opts.state.duration)\n\t\t.style('opacity', self.state.appBtnActive ? 1 : 0)\n}\n", "import { getStoreInit } from '#rx'\n\n/*\n.opts{}\n\n*/\n\nclass AppDrawerStore {\n\tconstructor(opts) {\n\t\tthis.type = 'store'\n\t\tthis.defaultState = {\n\t\t\t// for apps drawer animation\n\t\t\tduration: 500,\n\t\t\thintPos: {\n\t\t\t\topen: { btm: -42, left: 13 },\n\t\t\t\tclosed: { btm: 3, rt: 5 }\n\t\t\t},\n\t\t\thintWidth: { open: '0px', closed: '18px' },\n\t\t\tarrowSize: { open: 42, closed: 20 },\n\t\t\tarrowColor: { open: 'rgb(242,242,242)', closed: 'rgb(85,85,85)' },\n\t\t\tappBtnActive: false\n\t\t}\n\t}\n\n\tasync init() {}\n}\n\nexport const appDrawerStoreInit = getStoreInit(AppDrawerStore)\n\nAppDrawerStore.prototype.actions = {\n\tis_apps_btn_active(action) {\n\t\tthis.state.appBtnActive = 'value' in action ? action.value : !this.state.appBtnActive\n\t}\n}\n", "import { getAppInit } from '#rx'\nimport { mainBtnInit } from './mainBtn'\nimport { appDrawerStoreInit } from './store'\n\n/*\n.opts{}\n .holder\n .genomes{}\n - client-side genome object\n\t.drawerRow\n\t.sandboxDiv\n\t.genome_browser_btn\n\t.debugmode\n\t.headbox\n\t.padw_sm\n\nTODOs: \n\nQuestions: \n*/\n\nclass AppDrawerApp {\n\tconstructor(opts) {\n\t\tthis.type = 'app'\n\n\t\tconst drawerDiv = opts.drawerRow\n\t\t\t.append('div')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('margin', '0 20px')\n\t\t\t.style('padding', `0 ${opts.padw_sm}`)\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('overflow', 'hidden')\n\t\t\t.style('border-radius', '0px 0px 5px 5px')\n\t\t\t.style('width', '93vw')\n\t\t\t.classed('sjpp-drawer-div', true)\n\n\t\tconst btnWrapper = opts.headbox\n\t\t\t.append('div')\n\t\t\t.style('position', 'relative')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('margin-left', '5px')\n\t\t\t.style('margin-right', '5px')\n\t\t\t.style('border-radius', '5px')\n\t\t\t.classed('sjpp-apps-btn-wrapper', true)\n\n\t\tthis.dom = {\n\t\t\tdrawerRow: opts.drawerRow,\n\t\t\tdrawerDiv,\n\t\t\tsandboxDiv: opts.sandboxDiv,\n\t\t\tbtnWrapper,\n\t\t\tbtn: btnWrapper.append('div'),\n\t\t\tdrawerHint: btnWrapper.append('div'),\n\t\t\tdrawerArrow: btnWrapper.append('div'),\n\t\t\tdrawerArrowOpen: btnWrapper.append('div'),\n\t\t\twrapper: drawerDiv.append('div')\n\t\t}\n\t}\n\n\tpreApiFreeze(api) {\n\t\tapi.cardsPath = this.opts.cardsPath\n\t}\n\n\tasync init() {\n\t\ttry {\n\t\t\tthis.store = await appDrawerStoreInit({ app: this.api, state: this.opts.state })\n\t\t\tthis.state = await this.store.copyState()\n\t\t\tthis.components = {\n\t\t\t\tmainBtn: await mainBtnInit({\n\t\t\t\t\tapp: this.api,\n\t\t\t\t\tdom: this.dom,\n\t\t\t\t\tstate: this.state,\n\t\t\t\t\tindexJson: this.indexJson\n\t\t\t\t})\n\t\t\t}\n\t\t\tawait this.api.dispatch()\n\t\t} catch (e) {\n\t\t\tthrow e\n\t\t}\n\t}\n\n\tmain() {}\n}\n\nexport const appDrawerInit = getAppInit(AppDrawerApp)\n", "import { first_genetrack_tolist } from '#common/1stGenetk'\nimport type { Menu } from '#dom'\nimport { InputSearch, newSandboxDiv } from '#dom'\nimport { searchItems } from './omniSearch.js'\nimport { appDrawerInit } from '../../appdrawer/app.js'\nimport { rgb as d3rgb } from 'd3-color'\nimport { defaultcolor } from '#shared/common.js'\nimport { dofetch3 } from '#common/dofetch'\nimport type { ClientCopyGenome } from 'types/global.ts'\n\ntype Citation = {\n\tid: number\n\ttitle: string\n\tappHeaderTitle: string\n\tyear: number\n\tjournal: string\n\tpmid: number\n\tpmidURL: string\n\tdoi: string\n}\n\ntype AppHeaderOpts = {\n\t/** menu created in app.js */\n\theadtip: Menu\n\t/** runpp app */\n\tapp: any\n\t/** server returned data */\n\tdata: any\n\t/** token */\n\tjwt: any\n}\n\nexport class AppHeader {\n\theadtip: Menu\n\tapp: any\n\tdata: any\n\tjwt: any\n\t/** List of publications defined in the app drawer\n\t * Appears in button in the header and in search results\n\t */\n\tpublications: Citation[]\n\t/** Used in both the Help button and omni search\n\t * .onlySearch is used to filter out items that should not appear in the Help button\n\t */\n\tstatic help = [\n\t\t{\n\t\t\tlabel: 'Embed in your website',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/Embedding'\n\t\t},\n\t\t{\n\t\t\tlabel: 'URL parameters',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/URL-parameters'\n\t\t},\n\t\t{\n\t\t\tlabel: 'All tutorials',\n\t\t\tlink: 'https://github.com/stjude/proteinpaint/wiki/'\n\t\t},\n\t\t{\n\t\t\tlabel: 'User community',\n\t\t\tlink: 'https://groups.google.com/g/proteinpaint'\n\t\t},\n\t\t{\n\t\t\tlabel: 'License ProteinPaint',\n\t\t\tlink: 'https://www.stjude.org/research/why-st-jude/shared-resources/technology-licensing/technologies/proteinpaint-web-application-for-visualizing-genomic-data-sj-15-0021.html',\n\t\t\tonlySearch: true\n\t\t},\n\t\t{\n\t\t\tlabel: 'Our Team',\n\t\t\tlink: 'https://proteinpaint.stjude.org/team/',\n\t\t\tonlySearch: true\n\t\t}\n\t]\n\n\tconstructor(opts: AppHeaderOpts) {\n\t\tthis.headtip = opts.headtip\n\t\tthis.app = opts.app\n\t\tthis.data = opts.data\n\t\tthis.jwt = opts.jwt\n\t\tthis.publications = []\n\t}\n\n\tasync createPublicationsList() {\n\t\tconst re = await dofetch3(this.app.cardsPath + '/citations.json')\n\t\tif (re.error) console.error(`Problem retrieving ../cards/citations.json`)\n\t\t//Sort in reverse chronological order for the publications button\n\t\tthis.publications = re?.publications?.length\n\t\t\t? re.publications.filter((d: Citation) => d.appHeaderTitle).sort((a: Citation, b: Citation) => b.year - a.year)\n\t\t\t: []\n\t}\n\n\tasync makeheader() {\n\t\tawait this.createPublicationsList()\n\n\t\tconst color = d3rgb(defaultcolor)\n\t\tconst padw_lg = '13px'\n\t\tconst padw_input = '5px 10px'\n\t\tconst padw_sm = '7px 10px'\n\t\tconst doc_width = document.documentElement.clientWidth\n\t\t// head\n\t\tconst row = this.app.holder\n\t\t\t.append('div')\n\t\t\t.style('white-space', 'nowrap')\n\t\t\t.style(\n\t\t\t\t'border-bottom',\n\t\t\t\tdoc_width > 1600 ? 'solid 1px rgba(' + color.r + ',' + color.g + ',' + color.b + ',.3)' : ''\n\t\t\t)\n\n\t\tconst headbox = row\n\t\t\t.append('div')\n\t\t\t.style('margin', '10px')\n\t\t\t.style('padding', '8px')\n\t\t\t.style('padding-bottom', '12px')\n\t\t\t.style('display', doc_width < 1600 ? 'block' : 'inline-block')\n\t\t\t.style(\n\t\t\t\t'border-bottom',\n\t\t\t\tdoc_width < 1600 ? 'solid 1px rgba(' + color.r + ',' + color.g + ',' + color.b + ',.3)' : ''\n\t\t\t)\n\n\t\t// .style('border-radius', '5px')\n\t\t// .style('background-color', 'rgba(' + color.r + ',' + color.g + ',' + color.b + ',.1)')\n\t\tconst headinfo = row\n\t\t\t.append('div')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', padw_sm)\n\t\t\t.style('padding-left', '25px')\n\t\t\t.style('font-size', '.8em')\n\t\t\t.style('color', d3rgb(defaultcolor).darker())\n\n\t\t{\n\t\t\t// a row for server stats\n\t\t\tconst row = headinfo.append('div').style('padding-left', '15px')\n\t\t\t// link to the published ppfull container version, instead of github release tarball which we do not advertise;\n\t\t\t// github's pkgs/container link has a timestamp before the tag, which cannot be computed here (but may be able to query later?)\n\t\t\tconst link = `https://github.com/stjude/proteinpaint/pkgs/container/ppfull` // url to list of published container versions\n\t\t\tconst version = this.data.pkgver\n\t\t\t\t? `Release version: <a href=\"${link}\" target=\"${this.data.pkgver}\">${this.data.pkgver}</a>`\n\t\t\t\t: `Code date: ${this.data.codedate}` // default to using code date as before if pkgver is not available\n\t\t\trow\n\t\t\t\t.attr('id', 'sjpp-serverstat')\n\t\t\t\t.append('span')\n\t\t\t\t.html(`${version}, server launched: ${this.data.launchdate || '??'}.`)\n\t\t\tif (this.data.hasblat) {\n\t\t\t\trow\n\t\t\t\t\t.append('a')\n\t\t\t\t\t.style('margin-left', '10px')\n\t\t\t\t\t.text('Running BLAT')\n\t\t\t\t\t.on('click', async event => {\n\t\t\t\t\t\tthis.headtip.clear().showunder(event.target)\n\t\t\t\t\t\tconst div = this.headtip.d.append('div').style('margin', '10px')\n\t\t\t\t\t\tconst wait = div.append('div').text('Loading...')\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst data = await dofetch3('blat?serverstat=1')\n\t\t\t\t\t\t\tif (data.error) throw data.error\n\t\t\t\t\t\t\tif (!data.lst) throw 'invalid response'\n\t\t\t\t\t\t\twait.remove()\n\t\t\t\t\t\t\tfor (const i of data.lst) {\n\t\t\t\t\t\t\t\tdiv.append('div').text(i)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e: any) {\n\t\t\t\t\t\t\twait.text(e.message || e)\n\t\t\t\t\t\t\tif (e.stack) console.error(e.stack)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t}\n\t\t}\n\t\tif (this.data.headermessage) {\n\t\t\theadinfo.append('div').html(this.data.headermessage)\n\t\t}\n\n\t\t// 1\n\t\theadbox\n\t\t\t.append('div')\n\t\t\t.text('ProteinPaint')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('padding', padw_lg)\n\t\t\t.style('color', defaultcolor)\n\t\t\t.style('font-size', '1.3em')\n\t\t\t.style('font-weight', 'bold')\n\n\t\t// 2, search box\n\t\tconst omniSearch = new InputSearch({\n\t\t\tholder: headbox,\n\t\t\ttip: this.headtip,\n\t\t\tstyle: {\n\t\t\t\tpadding: padw_sm,\n\t\t\t\tborder: `'solid 1px ${defaultcolor}`\n\t\t\t},\n\t\t\tsize: 32,\n\t\t\tplaceholder: 'Gene, position, SNP, app, or dataset',\n\t\t\ttitle: 'Search by gene, SNP, position, app, or dataset',\n\t\t\tsearchItems: async () => {\n\t\t\t\treturn await searchItems(this.app, this.headtip, AppHeader.help, this.publications, this.jwt)\n\t\t\t}\n\t\t})\n\n\t\tomniSearch.initUI()\n\n\t\tconst genome_select_div = headbox.append('div').attr('class', 'sjpp-genome-select-div').style('padding', padw_sm)\n\n\t\tconst get_placeholder = () => {\n\t\t\tconst currG = this.app.genomes[this.app.selectgenome.property('value')]\n\t\t\t/** Defaults */\n\t\t\tconst opts2Show = ['Gene', 'position', 'app']\n\t\t\t/** Show all the genomic options together */\n\t\t\tif (currG.hasSNP) opts2Show.splice(2, 0, 'SNP')\n\t\t\tif (Object.keys(currG.datasets).length) opts2Show.push('dataset')\n\t\t\tconst str = opts2Show.join(', ').replace(/,(?=[^,]*$)/, ', or')\n\t\t\treturn str\n\t\t}\n\n\t\tthis.app.selectgenome = genome_select_div\n\t\t\t.append('select')\n\t\t\t.attr('aria-label', 'Select a genome')\n\t\t\t.attr('class', 'sjpp-genome-select')\n\t\t\t.style('padding', padw_input)\n\t\t\t.style('border', 'solid 1px ' + defaultcolor)\n\t\t\t.on('change', () => {\n\t\t\t\tthis.update_genome_browser_btn(this.app)\n\t\t\t\tomniSearch.updatePlaceholder(get_placeholder())\n\t\t\t})\n\n\t\tconst filterGenomes = Object.values(this.app.genomes).filter((g: any) => !g.hideOnClient) as ClientCopyGenome[]\n\t\tfor (const n of filterGenomes) {\n\t\t\tthis.app.selectgenome.append('option').attr('n', n.name).text(`${n.species} ${n.name}`).property('value', n.name)\n\t\t}\n\t\tthis.app.genome_browser_btn = this.make_genome_browser_btn(this.app, headbox, this.jwt)\n\n\t\tthis.app.drawer = await appDrawerInit({\n\t\t\tholder: this.app.holder,\n\t\t\tgenomes: this.app.genomes,\n\t\t\tdrawerRow: this.app.holder\n\t\t\t\t.append('div')\n\t\t\t\t.style('position', 'relative')\n\t\t\t\t.style('overflow-x', 'visible')\n\t\t\t\t.style('overflow-y', 'hidden')\n\t\t\t\t.classed('sjpp-drawer-row', true),\n\t\t\tsandboxDiv: this.app.holder.append('div').style('margin-top', '15px').classed('sjpp-drawer-sandbox', true),\n\t\t\tgenome_browser_btn: this.app.genome_browser_btn,\n\t\t\tdebugmode: this.app.debugmode,\n\t\t\theadbox,\n\t\t\tpadw_sm,\n\t\t\tcardsPath: this.app.cardsPath\n\t\t})\n\n\t\t//Help button\n\t\theadbox\n\t\t\t.append('span')\n\t\t\t.classed('sja_menuoption', true)\n\t\t\t.attr('id', 'sjpp-header-help-btn')\n\t\t\t.style('padding', padw_sm)\n\t\t\t.text('Help')\n\t\t\t.on('click', async event => {\n\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\tconst div = this.headtip.clear().show(p.left - 0, p.top + p.height + 5)\n\n\t\t\t\tawait div.d\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.style('padding', '5px 20px')\n\t\t\t\t\t.selectAll('p')\n\t\t\t\t\t.data(AppHeader.help.filter(d => !d.onlySearch))\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('p')\n\t\t\t\t\t.html(d => `<a href=${d.link} target=_blank>${d.label}</a>`)\n\t\t\t})\n\n\t\t//Publications button\n\t\t//Citations not available on CI server\n\t\tif (this.publications.length > 0) {\n\t\t\theadbox\n\t\t\t\t.append('span')\n\t\t\t\t.classed('sja_menuoption', true)\n\t\t\t\t.attr('id', 'sjpp-header-publications-btn')\n\t\t\t\t.style('padding', padw_sm)\n\t\t\t\t.style('margin', '0px 5px')\n\t\t\t\t.text('Publications')\n\t\t\t\t.on('click', async event => {\n\t\t\t\t\tconst p = event.target.getBoundingClientRect()\n\t\t\t\t\tconst div = this.headtip.clear().show(p.left - 150, p.top + p.height + 5)\n\n\t\t\t\t\tawait div.d\n\t\t\t\t\t\t.append('div')\n\t\t\t\t\t\t.style('padding', '5px 20px')\n\t\t\t\t\t\t.selectAll('p')\n\t\t\t\t\t\t.data(this.publications)\n\t\t\t\t\t\t.enter()\n\t\t\t\t\t\t.append('p')\n\t\t\t\t\t\t.html((d: any) => `<a href=${d.doi} target=_blank>${d.appHeaderTitle}, ${d.journal}, ${d.year}</a>`)\n\t\t\t\t})\n\t\t}\n\t}\n\n\tmake_genome_browser_btn(app, headbox, jwt) {\n\t\tif (app.selectgenome.node().options.length === 0) {\n\t\t\tconsole.error(`No selected selectgenome options.`)\n\t\t\treturn\n\t\t}\n\n\t\tconst padw = '8px'\n\t\tconst genome_btn_div = headbox.append('span')\n\t\tconst genomename = app.selectgenome.node().options[app.selectgenome.property('selectedIndex')].value\n\n\t\tconst g_browser_btn = genome_btn_div\n\t\t\t.attr('class', 'sja_menuoption')\n\t\t\t.attr('id', 'genome_btn')\n\t\t\t.style('padding', padw)\n\t\t\t.datum(genomename)\n\t\t\t.text(genomename + ' genome browser')\n\t\t\t.on('click', () => {\n\t\t\t\t//Grab the current genome selected\n\t\t\t\tconst genomeSelected = app.selectgenome.node().value\n\t\t\t\tconst g = app.genomes[genomeSelected]\n\t\t\t\tif (!g) {\n\t\t\t\t\talert('Invalid genome name: ' + genomeSelected)\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst sandbox_div = newSandboxDiv(app.drawer.opts.sandboxDiv)\n\t\t\t\tsandbox_div.header.text(genomeSelected + ' genome browser')\n\n\t\t\t\tconst par = {\n\t\t\t\t\thostURL: app.hostURL,\n\t\t\t\t\tjwt,\n\t\t\t\t\tholder: sandbox_div.body,\n\t\t\t\t\tgenome: g,\n\t\t\t\t\tchr: g.defaultcoord.chr,\n\t\t\t\t\tstart: g.defaultcoord.start,\n\t\t\t\t\tstop: g.defaultcoord.stop,\n\t\t\t\t\tnobox: true,\n\t\t\t\t\ttklst: [],\n\t\t\t\t\tdebugmode: app.debugmode\n\t\t\t\t}\n\t\t\t\tfirst_genetrack_tolist(g, par.tklst)\n\n\t\t\t\timport('../block.js').then(b => new b.Block(par))\n\t\t\t\tapp.drawer.dispatch({ type: 'is_apps_btn_active', value: false })\n\t\t\t})\n\t\treturn g_browser_btn\n\t}\n\n\tupdate_genome_browser_btn(app) {\n\t\tapp.genome_browser_btn.text(app.selectgenome.node().value + ' genome browser')\n\t\tapp.genome_browser_btn.datum(app.selectgenome.node().value)\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["searchTermFound", "par", "setRenderers", "setRenderers", "setRenderers", "row"]
|
|
7
7
|
}
|
|
@@ -3,15 +3,15 @@ import {
|
|
|
3
3
|
} from "./chunk-FBEHKWNY.js";
|
|
4
4
|
import {
|
|
5
5
|
configUiInit
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7DAHUF5G.js";
|
|
7
7
|
import {
|
|
8
8
|
svgLegend
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-5Y4WONNK.js";
|
|
10
10
|
import "./chunk-5QFQN4X5.js";
|
|
11
11
|
import "./chunk-KXPFII7Q.js";
|
|
12
|
-
import "./chunk-
|
|
12
|
+
import "./chunk-HR6PJH65.js";
|
|
13
13
|
import "./chunk-6VOTOFR2.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-XIJYBPX7.js";
|
|
15
15
|
import "./chunk-WLU3JZQN.js";
|
|
16
16
|
import "./chunk-P64DWRTC.js";
|
|
17
17
|
import "./chunk-OOXGYSYW.js";
|
|
@@ -230,7 +230,7 @@ var DiscoInteractions = class {
|
|
|
230
230
|
}
|
|
231
231
|
]
|
|
232
232
|
};
|
|
233
|
-
const _ = await import("./block.init-
|
|
233
|
+
const _ = await import("./block.init-HJHKMQMX.js");
|
|
234
234
|
await _.default(arg);
|
|
235
235
|
};
|
|
236
236
|
this.colorScaleNumericInputsCallback = async (obj) => {
|
|
@@ -2507,4 +2507,4 @@ export {
|
|
|
2507
2507
|
discoInit,
|
|
2508
2508
|
getPlotConfig
|
|
2509
2509
|
};
|
|
2510
|
-
//# sourceMappingURL=Disco-
|
|
2510
|
+
//# sourceMappingURL=Disco-C4PP4OK7.js.map
|