@sjcrh/proteinpaint-client 2.152.0 → 2.153.1-2
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-STBES2XQ.js → 2dmaf-5MJXC3I2.js} +5 -5
- package/dist/{AIProjectAdmin-FKMIAVZS.js → AIProjectAdmin-44M2IVLK.js} +7 -7
- package/dist/{AppHeader-T7JC4GW7.js → AppHeader-QGBNJFSL.js} +13 -13
- package/dist/{AppHeader-T7JC4GW7.js.map → AppHeader-QGBNJFSL.js.map} +1 -1
- package/dist/{BoxPlot-YWH3N6PA.js → BoxPlot-42JPLOOJ.js} +12 -12
- package/dist/{CorrelationVolcano-J7Z44FOE.js → CorrelationVolcano-NTWQV67E.js} +9 -9
- package/dist/{DifferentialAnalysis-HGPE5E2U.js → DifferentialAnalysis-7FWZMRPC.js} +12 -12
- package/dist/{Disco-DCWYBGXR.js → Disco-H277GKGO.js} +9 -9
- package/dist/{Disco.UI-6L3EY2WE.js → Disco.UI-K3P7ZBML.js} +11 -11
- package/dist/{DziViewer-JHIZWGHE.js → DziViewer-VTXSTF6C.js} +2 -2
- package/dist/{GB-JSFNODXR.js → GB-ZPH3VDC4.js} +472 -443
- package/dist/GB-ZPH3VDC4.js.map +7 -0
- package/dist/{HicApp-OXYN7Z33.js → HicApp-723UR3HD.js} +7 -7
- package/dist/{NumBinaryEditor-65WAAEXS.js → NumBinaryEditor-537VRBYV.js} +5 -5
- package/dist/{NumBinaryEditor.unit.spec-S3XK7ZA3.js → NumBinaryEditor.unit.spec-J7JAAPB6.js} +7 -7
- package/dist/{NumContEditor-24J2QTNT.js → NumContEditor-3EDU3RLZ.js} +5 -5
- package/dist/{NumContEditor.unit.spec-E4IHHUW5.js → NumContEditor.unit.spec-LV4NRKDU.js} +6 -6
- package/dist/{NumCustomBinEditor-PIFNERTM.js → NumCustomBinEditor-K5VFN6JC.js} +6 -6
- package/dist/{NumCustomBinEditor.unit.spec-NRWJLSGS.js → NumCustomBinEditor.unit.spec-ZTMPKB7E.js} +6 -6
- package/dist/{NumDiscreteEditor-FTWKKCS2.js → NumDiscreteEditor-NWNQXKEH.js} +7 -7
- package/dist/{NumDiscreteEditor.unit.spec-ZOIND76U.js → NumDiscreteEditor.unit.spec-5X3LXT3D.js} +6 -6
- package/dist/{NumRegularBinEditor-73BKAV7R.js → NumRegularBinEditor-IJJ3CVT6.js} +6 -6
- package/dist/{NumRegularBinEditor.unit.spec-5CWDUGWY.js → NumRegularBinEditor.unit.spec-XJBAGKNK.js} +6 -6
- package/dist/{NumSplineEditor-X5ZK7SXL.js → NumSplineEditor-E6KVMDFN.js} +5 -5
- package/dist/{NumSplineEditor.unit.spec-2AGZOWGV.js → NumSplineEditor.unit.spec-DTZTWWLT.js} +7 -7
- package/dist/{NumericDensity-TRS5R7QO.js → NumericDensity-MDKINJE5.js} +5 -5
- package/dist/{NumericDensity.unit.spec-GUCHWJM2.js → NumericDensity.unit.spec-5AQ33T6V.js} +16 -11
- package/dist/{NumericDensity.unit.spec-GUCHWJM2.js.map → NumericDensity.unit.spec-5AQ33T6V.js.map} +2 -2
- package/dist/{NumericHandler-KKH2DH7O.js → NumericHandler-7OEDSK63.js} +6 -6
- package/dist/{NumericHandler.unit.spec-ZJTDTT5F.js → NumericHandler.unit.spec-LE44FPEV.js} +7 -7
- package/dist/{SC-H6UHCKI5.js → SC-32E47BYX.js} +7 -7
- package/dist/{Volcano-YIJNGNYI.js → Volcano-NOUO2TXR.js} +10 -10
- package/dist/{WSIViewer-LTMTKSHD.js → WSIViewer-6PSDGGSP.js} +226 -176
- package/dist/WSIViewer-6PSDGGSP.js.map +7 -0
- package/dist/{WsiSamplesPlot-34OLTQ7T.js → WsiSamplesPlot-HXVFG3CF.js} +6 -6
- package/dist/{adSandbox-CM52FN3P.js → adSandbox-5UULTUKX.js} +6 -6
- package/dist/{alphaGenome-BZQUY6Q7.js → alphaGenome-OHBZQ57A.js} +9 -9
- package/dist/{app-4NSMM77W.js → app-EBOOIQVK.js} +5 -5
- package/dist/{app-CFDID2SW.js → app-QC5JQKCQ.js} +24 -24
- package/dist/app.js +11 -11
- package/dist/{bam-TF6K4PK7.js → bam-3WA2Y4IS.js} +7 -7
- package/dist/{barchart-UU2IEGIE.js → barchart-2YMFXQXY.js} +13 -13
- package/dist/{barchart.data-D5YXLPBZ.js → barchart.data-QWJRAIFD.js} +5 -5
- package/dist/{barchart.events-DKP6PH7T.js → barchart.events-YGEAA5TV.js} +13 -13
- package/dist/{barchart.integration.spec-7BFMRVRK.js → barchart.integration.spec-3EVWHBND.js} +22 -22
- package/dist/{bars.renderer-I57VEBYF.js → bars.renderer-NLUBMQEO.js} +2 -2
- package/dist/{block-QEKJMKUP.js → block-MWH3WOMW.js} +26 -26
- package/dist/{block.init-C7USZU3K.js → block.init-WI4SADW6.js} +6 -6
- package/dist/{block.mds.expressionrank-4J57ST5E.js → block.mds.expressionrank-3CXBVCVJ.js} +7 -7
- package/dist/{block.mds.geneboxplot-EZLAG5KT.js → block.mds.geneboxplot-EMMYVU5S.js} +6 -6
- package/dist/{block.mds.junction-X43WQEPT.js → block.mds.junction-DNOA6DFT.js} +12 -12
- package/dist/{block.mds.svcnv-7GWVQ4XA.js → block.mds.svcnv-K7TA5AR7.js} +19 -19
- package/dist/{block.svg-47SW5OXQ.js → block.svg-RQWJBW6L.js} +5 -5
- package/dist/{block.tk.aicheck-C36P3MTS.js → block.tk.aicheck-JHUXWWPG.js} +5 -5
- package/dist/{block.tk.ase-4STWJ2QZ.js → block.tk.ase-WKYLYDM4.js} +7 -7
- package/dist/{block.tk.bam-VKSWMU5I.js → block.tk.bam-Y5T7U46Z.js} +5 -5
- package/dist/{block.tk.bedgraphdot-6YCZDHJR.js → block.tk.bedgraphdot-NA7ABEMB.js} +5 -5
- package/dist/{block.tk.bigwig.ui-FZXTM5FW.js → block.tk.bigwig.ui-CWHVNXIU.js} +5 -5
- package/dist/{block.tk.hicstraw-YOHIM3HM.js → block.tk.hicstraw-SDSLZFY3.js} +6 -6
- package/dist/{block.tk.junction-J4UI7N63.js → block.tk.junction-2CQNJQNO.js} +9 -9
- package/dist/{block.tk.junction.textmatrixui-UZYE5UCM.js → block.tk.junction.textmatrixui-2DTJ3CZQ.js} +6 -6
- package/dist/{block.tk.ld-RTB5CLB7.js → block.tk.ld-R4U726WX.js} +8 -8
- package/dist/{block.tk.menu-KYWJQH7V.js → block.tk.menu-2DNHSD4V.js} +5 -5
- package/dist/{block.tk.pgv-VQQAXD6F.js → block.tk.pgv-URYI7SGL.js} +8 -8
- package/dist/{brainImaging-UDHL53C3.js → brainImaging-456QHW3X.js} +8 -8
- package/dist/{chat-656LOTAA.js → chat-2HNA625V.js} +6 -6
- package/dist/{chunk-FMVK7D7U.js → chunk-24KQ3KET.js} +11 -11
- package/dist/{chunk-6DLOEDW7.js → chunk-2G24Q3ZC.js} +10 -9
- package/dist/chunk-2G24Q3ZC.js.map +7 -0
- package/dist/{chunk-4L2MWXRO.js → chunk-32OHHLSN.js} +3 -3
- package/dist/{chunk-YFR45S3V.js → chunk-3VPSZFDL.js} +2 -2
- package/dist/{chunk-672CKS2W.js → chunk-4QM4DZIX.js} +2 -2
- package/dist/{chunk-ETDD7ET7.js → chunk-4Y4VQWZP.js} +2 -2
- package/dist/{chunk-OQIWHQRM.js → chunk-5AQDMO53.js} +2 -2
- package/dist/{chunk-WMGHVZKL.js → chunk-5EL7IAPJ.js} +2 -2
- package/dist/{chunk-PNFOXMVR.js → chunk-5G3FEWYC.js} +6 -6
- package/dist/{chunk-MVJG76ED.js → chunk-6R65HDDH.js} +7 -7
- package/dist/chunk-6TOPX4SZ.js +160 -0
- package/dist/{chunk-75FF76ME.js → chunk-6ZP272IB.js} +8 -8
- package/dist/{chunk-75FF76ME.js.map → chunk-6ZP272IB.js.map} +2 -2
- package/dist/{chunk-ENJYPZ5M.js → chunk-7MOHJ2LP.js} +4 -4
- package/dist/{chunk-M333SV5Q.js → chunk-7RTU7HGA.js} +11 -11
- package/dist/{chunk-7AOMLJ4W.js → chunk-7ZERGVYR.js} +7 -7
- package/dist/{chunk-TF7SEHUK.js → chunk-A7KTDX2J.js} +2 -2
- package/dist/{chunk-GCLNCKZR.js → chunk-AB27JYV5.js} +2 -2
- package/dist/{chunk-AVC6O2W6.js → chunk-ADVDYTFN.js} +2 -2
- package/dist/{chunk-NKZ6JBPA.js → chunk-AMYXPDBP.js} +3 -3
- package/dist/{chunk-FWROK3IG.js → chunk-AN7C6MAI.js} +2 -2
- package/dist/{chunk-6FAOO3OA.js → chunk-AZCDJBTB.js} +2 -2
- package/dist/{chunk-6F55TZ65.js → chunk-CKO4ZCZ2.js} +2 -2
- package/dist/{chunk-OLV3K6C2.js → chunk-CZWIMQSR.js} +4 -4
- package/dist/{chunk-ZKGOC7WV.js → chunk-EHC45B2D.js} +3 -3
- package/dist/{chunk-XHSCGKKS.js → chunk-EUOP6MU2.js} +5 -5
- package/dist/{chunk-3JATFJWU.js → chunk-EXLGUHWQ.js} +3 -3
- package/dist/{chunk-LIZEJWRS.js → chunk-FMHMBSBC.js} +8 -8
- package/dist/{chunk-JSGUL55B.js → chunk-FPLQBYQY.js} +12 -12
- package/dist/{chunk-44FVXCJD.js → chunk-GHTY6Q5J.js} +2 -2
- package/dist/{chunk-VIG3YIZE.js → chunk-GI44VQSM.js} +2 -2
- package/dist/{chunk-4VDXBLVM.js → chunk-GKCJ6AL2.js} +2 -2
- package/dist/{chunk-UKQXLSVL.js → chunk-GRYNODB7.js} +11 -11
- package/dist/{chunk-PCRHSYQ2.js → chunk-HO2JXUY7.js} +9 -9
- package/dist/chunk-HO2JXUY7.js.map +7 -0
- package/dist/{chunk-DKLOSISA.js → chunk-I3REFBZE.js} +2 -2
- package/dist/{chunk-4FSIPOR3.js → chunk-IEZ56TTW.js} +38 -38
- package/dist/{chunk-MEL2AOWM.js → chunk-IGH2HBKM.js} +3 -3
- package/dist/{chunk-K6R526HX.js → chunk-IPDXHAAM.js} +887 -68
- package/dist/chunk-IPDXHAAM.js.map +7 -0
- package/dist/{chunk-7HY76S56.js → chunk-ISDTJN46.js} +8 -8
- package/dist/{chunk-24Y4TQ5A.js → chunk-IV7ZWQYZ.js} +4 -4
- package/dist/{chunk-OTNNHFSP.js → chunk-JLAGQQCP.js} +3 -3
- package/dist/{chunk-OTNNHFSP.js.map → chunk-JLAGQQCP.js.map} +1 -1
- package/dist/{chunk-VWMHJCUL.js → chunk-K7LZ77GD.js} +1 -1
- package/dist/chunk-K7LZ77GD.js.map +7 -0
- package/dist/{chunk-P6LMJMKE.js → chunk-KNX2KJJR.js} +3 -3
- package/dist/{chunk-XN6AK5OY.js → chunk-KRANJ24K.js} +2 -1
- package/dist/chunk-KRANJ24K.js.map +7 -0
- package/dist/{chunk-P7UX7BMG.js → chunk-LPX2VHGG.js} +3 -3
- package/dist/{chunk-QLZUINQ7.js → chunk-LQFSFWBP.js} +10 -10
- package/dist/{chunk-MFQQANVW.js → chunk-MMQHFIVE.js} +2 -2
- package/dist/{chunk-CDD7KJ5Y.js → chunk-MTNKTIOB.js} +5 -5
- package/dist/{chunk-CDIW7LZC.js → chunk-MVZOTOQ6.js} +32 -32
- package/dist/{chunk-U5HUB2Q4.js → chunk-P5FWQBRY.js} +6 -6
- package/dist/{chunk-GOLMWMSN.js → chunk-Q45ZA7GY.js} +7 -7
- package/dist/{chunk-IYOQNM63.js → chunk-QOES3NTZ.js} +6 -6
- package/dist/{chunk-APFOJVLK.js → chunk-R3SD4CY7.js} +6 -6
- package/dist/{chunk-FGKKLAQ5.js → chunk-RCVZWDHJ.js} +2 -2
- package/dist/{chunk-CKZVEDVK.js → chunk-SJKTBQOK.js} +7 -7
- package/dist/{chunk-FS43AP5R.js → chunk-TK2CGXF7.js} +2 -2
- package/dist/{chunk-KBXFLT2S.js → chunk-U2JVJ6IU.js} +11 -11
- package/dist/{chunk-DG7KZK4Q.js → chunk-U5RW5ZYG.js} +3 -3
- package/dist/{chunk-7JW3T52I.js → chunk-VG43R5M7.js} +3 -3
- package/dist/{chunk-S3Q7EDUE.js → chunk-VHHOKKD4.js} +4 -4
- package/dist/{chunk-EYVH7EZ5.js → chunk-VOWNZSXI.js} +12 -12
- package/dist/{chunk-EYVH7EZ5.js.map → chunk-VOWNZSXI.js.map} +2 -2
- package/dist/{chunk-IZAXEMH3.js → chunk-VUCKPHHC.js} +10 -10
- package/dist/{chunk-ICHTBOG2.js → chunk-VYRJ4NWB.js} +10 -10
- package/dist/{chunk-RBEAGBGJ.js → chunk-X4BU74GO.js} +2 -2
- package/dist/{chunk-H263MS6C.js → chunk-YUYKXIPC.js} +3 -3
- package/dist/{chunk-QN7VSEMU.js → chunk-ZGZZWA5G.js} +2 -2
- package/dist/{chunk-VDCARWYK.js → chunk-ZM2ELJEB.js} +2 -2
- package/dist/{chunk-RHV7GMYN.js → chunk-ZTAQEZ5L.js} +5 -5
- package/dist/{condition-N6X3VHCN.js → condition-UMVOPNFK.js} +5 -5
- package/dist/{controls-WSSMFFQI.js → controls-U5OSWWMS.js} +8 -8
- package/dist/controls.btns-OQ6DKPNZ.js +10 -0
- package/dist/{controls.config-JUGAMRVI.js → controls.config-R32ILSES.js} +6 -6
- package/dist/{correlation-U4VNXKD5.js → correlation-FSJPNUBY.js} +24 -24
- package/dist/{cuminc-XTEOGJHR.js → cuminc-4FSL3752.js} +9 -9
- package/dist/{cuminc-XTEOGJHR.js.map → cuminc-4FSL3752.js.map} +2 -2
- package/dist/{cuminc.integration.spec-PLLOVKUP.js → cuminc.integration.spec-PBS2RQI3.js} +14 -14
- package/dist/{customdata.inputui-NZPW7VGF.js → customdata.inputui-SFPNRJLH.js} +5 -5
- package/dist/{dataDownload-DMZOP2GH.js → dataDownload-JGGECEID.js} +5 -5
- package/dist/{dataDownload.integration.spec-4L5ZBBHO.js → dataDownload.integration.spec-GKB5JJTM.js} +14 -14
- package/dist/{databrowser.ui-YKCIA5KH.js → databrowser.ui-AESPCD5R.js} +24 -24
- package/dist/{dictionary-AZUPPUNV.js → dictionary-V4D5U7DV.js} +5 -5
- package/dist/{e2pca-TQ4Y3Q5G.js → e2pca-53Y2ZHUH.js} +5 -5
- package/dist/{ep-3LPU2GCH.js → ep-YVR7IAPR.js} +5 -5
- package/dist/{expclust.gdc.spec-R7P4CKUJ.js → expclust.gdc.spec-X7KCLSUO.js} +14 -14
- package/dist/{facet-PIFKC63F.js → facet-VLE5XKR4.js} +11 -11
- package/dist/{frequencyChart-TRZEBWEI.js → frequencyChart-4LNNLCEY.js} +16 -16
- package/dist/{frequencyChart.integration.spec-IAW5CIQ3.js → frequencyChart.integration.spec-PPIB7LWO.js} +14 -14
- package/dist/{geneExpClustering-SDXXJT5Y.js → geneExpClustering-3F4VMB67.js} +10 -10
- package/dist/{geneExpression-CQJ76OCV.js → geneExpression-33NZXHP5.js} +3 -3
- package/dist/{geneExpression-YXUBCCMY.js → geneExpression-DBCL7ZI6.js} +5 -5
- package/dist/{geneORA-GHMR4V3R.js → geneORA-D2Y6NPE3.js} +8 -8
- package/dist/{geneVariant-LCMLVITW.js → geneVariant-4FYKJDIA.js} +5 -5
- package/dist/{geneVariant-OM3SYZ4A.js → geneVariant-JACD3AAG.js} +6 -6
- package/dist/{genefusion.ui-V6FEA5YH.js → genefusion.ui-A7WTWWP4.js} +5 -5
- package/dist/{geneset-6U6ZVTBN.js → geneset-54ZUD7T7.js} +5 -5
- package/dist/{genomeBrowser.spec-DIZUCWLL.js → genomeBrowser.spec-3CAWACHU.js} +14 -14
- package/dist/{grin2-NG4GXV37.js → grin2-GOWNRSES.js} +131 -91
- package/dist/grin2-GOWNRSES.js.map +7 -0
- package/dist/{grin2-BBWMVGDJ.js → grin2-YWQZSPTG.js} +6 -6
- package/dist/{gsea-I3NODLLE.js → gsea-QORQQVPE.js} +11 -11
- package/dist/{hierCluster-3KTXGMUO.js → hierCluster-4FQGPLBC.js} +19 -19
- package/dist/{hierCluster-L3FXZJHD.js → hierCluster-NJUVKFQ4.js} +20 -20
- package/dist/{hierCluster.config-YH2TPGSO.js → hierCluster.config-EXPPLTZU.js} +8 -8
- package/dist/{hierCluster.integration.spec-WYZEXWNV.js → hierCluster.integration.spec-T54ICQTT.js} +19 -19
- package/dist/{hierCluster.interactivity-57K4ELLO.js → hierCluster.interactivity-QJ225OSA.js} +6 -6
- package/dist/{imagePlot-6XDMC6EJ.js → imagePlot-7GFQT4GY.js} +9 -9
- package/dist/importPlot-76BKEBQB.js +8 -0
- package/dist/{launch.adhoc-4U4FU3L5.js → launch.adhoc-NT6RL7D5.js} +11 -11
- package/dist/{leftlabel.sample-H6LM4POK.js → leftlabel.sample-NZVFQISW.js} +9 -9
- package/dist/{lollipop-HFYWFFAU.js → lollipop-CYG3CWX7.js} +7 -7
- package/dist/{maf-VPHHGVCC.js → maf-RPXUM3NZ.js} +5 -5
- package/dist/{maftimeline-3EREROKR.js → maftimeline-WENAUMOY.js} +5 -5
- package/dist/{matrix-FSBVON2R.js → matrix-6EYNTM5V.js} +17 -17
- package/dist/{matrix-JD5OPEAO.js → matrix-X5LYB54E.js} +17 -17
- package/dist/{matrix.config-5TF3UCKK.js → matrix.config-LHVKO52C.js} +7 -7
- package/dist/{matrix.controls-EUP5D4GJ.js → matrix.controls-HVIMQSMA.js} +8 -8
- package/dist/{matrix.data-EZTQXLD6.js → matrix.data-ECNBABCD.js} +6 -6
- package/dist/{matrix.integration.spec-IYSPPP6J.js → matrix.integration.spec-PETC3SMK.js} +14 -14
- package/dist/{matrix.interactivity-HSMWSJZN.js → matrix.interactivity-EPITLV4T.js} +8 -8
- package/dist/{matrix.layout-6KQM5W3I.js → matrix.layout-L7AH6ZHX.js} +6 -6
- package/dist/{matrix.renderers-AIQRX6C6.js → matrix.renderers-GYETGJXW.js} +6 -6
- package/dist/{matrix.sort.unit.spec-KZIVPTM4.js → matrix.sort.unit.spec-DKB6R2VP.js} +7 -7
- package/dist/{matrix.sorterUi-2MI6JNAS.js → matrix.sorterUi-7KPINGIU.js} +3 -3
- package/dist/{matrix.sorterUi.unit.spec-R5GQVZGF.js → matrix.sorterUi.unit.spec-3FX4JVZR.js} +9 -9
- package/dist/{mavb-WZPGDPVB.js → mavb-UJO3B6TU.js} +6 -6
- package/dist/{mds.fimo-TNUZIIW6.js → mds.fimo-EYZVZUHE.js} +5 -5
- package/dist/{mds.samplescatterplot-HQ6EGN3Z.js → mds.samplescatterplot-EOV53AR7.js} +7 -7
- package/dist/{mds.survivalplot-V2FJ3K45.js → mds.survivalplot-BS663454.js} +5 -5
- package/dist/{oncomatrix-NN5V4TTH.js → oncomatrix-GTTOMDUY.js} +10 -10
- package/dist/{oncomatrix.spec-EDS24ZHX.js → oncomatrix.spec-JBW3TMKQ.js} +14 -14
- package/dist/{plot.2dvaf-HPE23LL3.js → plot.2dvaf-BVUEJWWR.js} +5 -5
- package/dist/{plot.app-LZAVKONK.js → plot.app-CYV45MF7.js} +10 -10
- package/dist/{plot.barplot-CWNUYYEO.js → plot.barplot-AFR5NEWI.js} +5 -5
- package/dist/{plot.boxplot-XNMH4V6E.js → plot.boxplot-Y26XY2MS.js} +5 -5
- package/dist/{plot.brainImaging-PDB6ZZQA.js → plot.brainImaging-GUZLU444.js} +2 -2
- package/dist/{plot.disco-B57ZSJ4U.js → plot.disco-F3TXRFGE.js} +4 -4
- package/dist/{plot.dzi-WBWCMWHA.js → plot.dzi-DJJAOFHA.js} +2 -2
- package/dist/{plot.ssgq-HS53FU6R.js → plot.ssgq-UZROFN7G.js} +6 -6
- package/dist/{plot.vaf2cov-SGYIXQ3E.js → plot.vaf2cov-M3CHCXKB.js} +5 -5
- package/dist/{plot.wsi-7GOGT7O4.js → plot.wsi-XVWMVD3O.js} +2 -2
- package/dist/{profile.spec-KUDID6VJ.js → profile.spec-AZV34YSW.js} +14 -14
- package/dist/{profileBarchart-T7XPACDH.js → profileBarchart-Q4352URQ.js} +11 -16
- package/dist/profileBarchart-Q4352URQ.js.map +7 -0
- package/dist/{profileForms-44C6MOZW.js → profileForms-YQHJBSMI.js} +11 -11
- package/dist/{profilePlot-2BN5CYOO.js → profilePlot-7A6MX4PE.js} +11 -11
- package/dist/{profilePolar-AWTKI3IT.js → profilePolar-CUOT7QKT.js} +11 -16
- package/dist/profilePolar-CUOT7QKT.js.map +7 -0
- package/dist/{profileRadar-AXX6EIZH.js → profileRadar-OBA4VO4R.js} +11 -16
- package/dist/profileRadar-OBA4VO4R.js.map +7 -0
- package/dist/{profileRadarFacility-R7VQKJYY.js → profileRadarFacility-HBP363OG.js} +11 -14
- package/dist/profileRadarFacility-HBP363OG.js.map +7 -0
- package/dist/{qualitative-IL2KJYPH.js → qualitative-CV2VYZUS.js} +5 -5
- package/dist/{regression-CKDN4CMV.js → regression-JAPN2Z3J.js} +22 -22
- package/dist/{regression.inputs-FZTIJ3KE.js → regression.inputs-C3FMXQ67.js} +22 -22
- package/dist/{regression.inputs.term-NBZVY2DV.js → regression.inputs.term-Q3C3LAD3.js} +22 -22
- package/dist/{regression.inputs.values.table-SJ3USJMZ.js → regression.inputs.values.table-N76LKLUW.js} +20 -20
- package/dist/{regression.integration.spec-BUTHIFDJ.js → regression.integration.spec-LG42ZNAV.js} +14 -14
- package/dist/{regression.results-SS6AF5AO.js → regression.results-WWYGA4XX.js} +6 -6
- package/dist/{regression.spec-RXG5FES6.js → regression.spec-WEEQIJKU.js} +13 -13
- package/dist/{report-KAHWZF32.js → report-RNKWTGF7.js} +15 -16
- package/dist/{report-KAHWZF32.js.map → report-RNKWTGF7.js.map} +2 -2
- package/dist/{runChart-7IRFM7TR.js → runChart-V33YZETE.js} +16 -16
- package/dist/{runchart.integration.spec-SR4R237N.js → runchart.integration.spec-2LM2ICVZ.js} +14 -14
- package/dist/{sampleScatter.spec-UQIWRDTS.js → sampleScatter.spec-B3S3BF6S.js} +13 -13
- package/dist/{sampleView-HZY2UL2L.js → sampleView-PZHYDACJ.js} +9 -9
- package/dist/{samplelst-43PNQG4R.js → samplelst-BIGBMFEB.js} +5 -5
- package/dist/{samplematrix-E5WWOB5B.js → samplematrix-DMPX4LF6.js} +7 -7
- package/dist/{scatter-2LL22AIC.js → scatter-7IAERJDH.js} +15 -15
- package/dist/{scatter.integration.spec-KBQ5QMUP.js → scatter.integration.spec-CV2P2EHQ.js} +16 -16
- package/dist/{selectGenomeWithTklst-U2XNEQ6G.js → selectGenomeWithTklst-QQY5B325.js} +6 -6
- package/dist/{singleCellPlot-PF7ZXYGP.js → singleCellPlot-P7TKLP2Q.js} +12 -12
- package/dist/{singlecell-4ZGHLPVP.js → singlecell-3JCTPMD6.js} +8 -8
- package/dist/{singlecell-Y6SPP3EF.js → singlecell-R2MP7CIA.js} +10 -10
- package/dist/{snp-CIEQDFGA.js → snp-AJKNCWJ5.js} +5 -5
- package/dist/{snplocus-UKTQLGCJ.js → snplocus-LAWWGL3L.js} +5 -5
- package/dist/{spliceevent.a53ss.diagram-P74B6ATG.js → spliceevent.a53ss.diagram-NPCSQHH4.js} +5 -5
- package/dist/{spliceevent.exonskip.diagram-QB4D23LK.js → spliceevent.exonskip.diagram-VMK6MQSP.js} +6 -6
- package/dist/{spliceevent.noeventdiagram-5ACPGXE6.js → spliceevent.noeventdiagram-UQPNLSI4.js} +5 -5
- package/dist/{ssGSEA-NFSPYGCL.js → ssGSEA-EABQ2EOX.js} +5 -5
- package/dist/{stattable-2CQG4YJN.js → stattable-VV73WI4G.js} +2 -2
- package/dist/{summarizeCnvGeneexp-25P76Q4A.js → summarizeCnvGeneexp-RVPKSDZD.js} +7 -7
- package/dist/{summarizeGeneexpSurvival-3P4CWZDG.js → summarizeGeneexpSurvival-AUAVPV7G.js} +7 -7
- package/dist/{summarizeMutationDiagnosis-KK22R2NR.js → summarizeMutationDiagnosis-3TAZJ2OW.js} +7 -7
- package/dist/{summarizeMutationSurvival-2L672AKD.js → summarizeMutationSurvival-PBM5N5IS.js} +7 -7
- package/dist/{summary-QGFVPGKH.js → summary-KZPKMNQ5.js} +22 -22
- package/dist/{summary.integration.spec-ZZUUX6J6.js → summary.integration.spec-VLA6YDZ6.js} +14 -14
- package/dist/{summaryInput-G6HU66ZL.js → summaryInput-BLKUQXUG.js} +9 -9
- package/dist/{sunburst-FN5BJETX.js → sunburst-JFQR4HMW.js} +5 -5
- package/dist/{survival-VCMM6POJ.js → survival-XQOB7ADD.js} +5 -5
- package/dist/{survival-TUEE5ETY.js → survival-YLGIX2X4.js} +10 -9
- package/dist/{survival-TUEE5ETY.js.map → survival-YLGIX2X4.js.map} +2 -2
- package/dist/{survival.integration.spec-35WDU2KW.js → survival.integration.spec-5IWCGTCI.js} +14 -14
- package/dist/{svgraph-HWHSHEQT.js → svgraph-OD5WTZLE.js} +5 -5
- package/dist/{svmr-UQORFRQI.js → svmr-MCVTUHH2.js} +8 -8
- package/dist/{table-ERWBH6VL.js → table-TFAD4UXW.js} +8 -8
- package/dist/termInfo-FID77R3S.js +9 -0
- package/dist/{tk-PWZHQFGY.js → tk-WC3QTCW5.js} +9 -9
- package/dist/{tp.ui-IIFVF2UE.js → tp.ui-TMVM3NTQ.js} +14 -14
- package/dist/{tvs.samplelst-FGEJJOTD.js → tvs.samplelst-FIHJJ3RI.js} +5 -5
- package/dist/{variantBrowser-BJ456XCS.js → variantBrowser-XYROCIA6.js} +2 -2
- package/dist/{violin-DZYJK5CT.js → violin-HISIOFBT.js} +16 -16
- package/dist/{violin.integration.spec-VWQ72QGV.js → violin.integration.spec-6JZR3FAA.js} +14 -14
- package/dist/{violin.interactivity-XBZYQT5U.js → violin.interactivity-FZ4ER55B.js} +14 -14
- package/dist/{violin.renderer-HKOUNZPN.js → violin.renderer-LCDEO4CS.js} +6 -6
- package/dist/{vocabulary-N6DUON6U.js → vocabulary-RFE2MZ5M.js} +5 -5
- package/package.json +4 -3
- package/dist/GB-JSFNODXR.js.map +0 -7
- package/dist/WSIViewer-LTMTKSHD.js.map +0 -7
- package/dist/chunk-6DLOEDW7.js.map +0 -7
- package/dist/chunk-K6R526HX.js.map +0 -7
- package/dist/chunk-PCRHSYQ2.js.map +0 -7
- package/dist/chunk-RG3FCOPJ.js +0 -160
- package/dist/chunk-VWMHJCUL.js.map +0 -7
- package/dist/chunk-XN6AK5OY.js.map +0 -7
- package/dist/controls.btns-HSNM5SDZ.js +0 -10
- package/dist/grin2-NG4GXV37.js.map +0 -7
- package/dist/importPlot-P5QRPSP7.js +0 -8
- package/dist/profileBarchart-T7XPACDH.js.map +0 -7
- package/dist/profilePolar-AWTKI3IT.js.map +0 -7
- package/dist/profileRadar-AXX6EIZH.js.map +0 -7
- package/dist/profileRadarFacility-R7VQKJYY.js.map +0 -7
- package/dist/termInfo-CHQNRC52.js +0 -9
- /package/dist/{2dmaf-STBES2XQ.js.map → 2dmaf-5MJXC3I2.js.map} +0 -0
- /package/dist/{AIProjectAdmin-FKMIAVZS.js.map → AIProjectAdmin-44M2IVLK.js.map} +0 -0
- /package/dist/{BoxPlot-YWH3N6PA.js.map → BoxPlot-42JPLOOJ.js.map} +0 -0
- /package/dist/{CorrelationVolcano-J7Z44FOE.js.map → CorrelationVolcano-NTWQV67E.js.map} +0 -0
- /package/dist/{DifferentialAnalysis-HGPE5E2U.js.map → DifferentialAnalysis-7FWZMRPC.js.map} +0 -0
- /package/dist/{Disco-DCWYBGXR.js.map → Disco-H277GKGO.js.map} +0 -0
- /package/dist/{Disco.UI-6L3EY2WE.js.map → Disco.UI-K3P7ZBML.js.map} +0 -0
- /package/dist/{DziViewer-JHIZWGHE.js.map → DziViewer-VTXSTF6C.js.map} +0 -0
- /package/dist/{HicApp-OXYN7Z33.js.map → HicApp-723UR3HD.js.map} +0 -0
- /package/dist/{NumBinaryEditor-65WAAEXS.js.map → NumBinaryEditor-537VRBYV.js.map} +0 -0
- /package/dist/{NumBinaryEditor.unit.spec-S3XK7ZA3.js.map → NumBinaryEditor.unit.spec-J7JAAPB6.js.map} +0 -0
- /package/dist/{NumContEditor-24J2QTNT.js.map → NumContEditor-3EDU3RLZ.js.map} +0 -0
- /package/dist/{NumContEditor.unit.spec-E4IHHUW5.js.map → NumContEditor.unit.spec-LV4NRKDU.js.map} +0 -0
- /package/dist/{NumCustomBinEditor-PIFNERTM.js.map → NumCustomBinEditor-K5VFN6JC.js.map} +0 -0
- /package/dist/{NumCustomBinEditor.unit.spec-NRWJLSGS.js.map → NumCustomBinEditor.unit.spec-ZTMPKB7E.js.map} +0 -0
- /package/dist/{NumDiscreteEditor-FTWKKCS2.js.map → NumDiscreteEditor-NWNQXKEH.js.map} +0 -0
- /package/dist/{NumDiscreteEditor.unit.spec-ZOIND76U.js.map → NumDiscreteEditor.unit.spec-5X3LXT3D.js.map} +0 -0
- /package/dist/{NumRegularBinEditor-73BKAV7R.js.map → NumRegularBinEditor-IJJ3CVT6.js.map} +0 -0
- /package/dist/{NumRegularBinEditor.unit.spec-5CWDUGWY.js.map → NumRegularBinEditor.unit.spec-XJBAGKNK.js.map} +0 -0
- /package/dist/{NumSplineEditor-X5ZK7SXL.js.map → NumSplineEditor-E6KVMDFN.js.map} +0 -0
- /package/dist/{NumSplineEditor.unit.spec-2AGZOWGV.js.map → NumSplineEditor.unit.spec-DTZTWWLT.js.map} +0 -0
- /package/dist/{NumericDensity-TRS5R7QO.js.map → NumericDensity-MDKINJE5.js.map} +0 -0
- /package/dist/{NumericHandler-KKH2DH7O.js.map → NumericHandler-7OEDSK63.js.map} +0 -0
- /package/dist/{NumericHandler.unit.spec-ZJTDTT5F.js.map → NumericHandler.unit.spec-LE44FPEV.js.map} +0 -0
- /package/dist/{SC-H6UHCKI5.js.map → SC-32E47BYX.js.map} +0 -0
- /package/dist/{Volcano-YIJNGNYI.js.map → Volcano-NOUO2TXR.js.map} +0 -0
- /package/dist/{WsiSamplesPlot-34OLTQ7T.js.map → WsiSamplesPlot-HXVFG3CF.js.map} +0 -0
- /package/dist/{adSandbox-CM52FN3P.js.map → adSandbox-5UULTUKX.js.map} +0 -0
- /package/dist/{alphaGenome-BZQUY6Q7.js.map → alphaGenome-OHBZQ57A.js.map} +0 -0
- /package/dist/{app-4NSMM77W.js.map → app-EBOOIQVK.js.map} +0 -0
- /package/dist/{app-CFDID2SW.js.map → app-QC5JQKCQ.js.map} +0 -0
- /package/dist/{bam-TF6K4PK7.js.map → bam-3WA2Y4IS.js.map} +0 -0
- /package/dist/{barchart-UU2IEGIE.js.map → barchart-2YMFXQXY.js.map} +0 -0
- /package/dist/{barchart.data-D5YXLPBZ.js.map → barchart.data-QWJRAIFD.js.map} +0 -0
- /package/dist/{barchart.events-DKP6PH7T.js.map → barchart.events-YGEAA5TV.js.map} +0 -0
- /package/dist/{barchart.integration.spec-7BFMRVRK.js.map → barchart.integration.spec-3EVWHBND.js.map} +0 -0
- /package/dist/{bars.renderer-I57VEBYF.js.map → bars.renderer-NLUBMQEO.js.map} +0 -0
- /package/dist/{block-QEKJMKUP.js.map → block-MWH3WOMW.js.map} +0 -0
- /package/dist/{block.init-C7USZU3K.js.map → block.init-WI4SADW6.js.map} +0 -0
- /package/dist/{block.mds.expressionrank-4J57ST5E.js.map → block.mds.expressionrank-3CXBVCVJ.js.map} +0 -0
- /package/dist/{block.mds.geneboxplot-EZLAG5KT.js.map → block.mds.geneboxplot-EMMYVU5S.js.map} +0 -0
- /package/dist/{block.mds.junction-X43WQEPT.js.map → block.mds.junction-DNOA6DFT.js.map} +0 -0
- /package/dist/{block.mds.svcnv-7GWVQ4XA.js.map → block.mds.svcnv-K7TA5AR7.js.map} +0 -0
- /package/dist/{block.svg-47SW5OXQ.js.map → block.svg-RQWJBW6L.js.map} +0 -0
- /package/dist/{block.tk.aicheck-C36P3MTS.js.map → block.tk.aicheck-JHUXWWPG.js.map} +0 -0
- /package/dist/{block.tk.ase-4STWJ2QZ.js.map → block.tk.ase-WKYLYDM4.js.map} +0 -0
- /package/dist/{block.tk.bam-VKSWMU5I.js.map → block.tk.bam-Y5T7U46Z.js.map} +0 -0
- /package/dist/{block.tk.bedgraphdot-6YCZDHJR.js.map → block.tk.bedgraphdot-NA7ABEMB.js.map} +0 -0
- /package/dist/{block.tk.bigwig.ui-FZXTM5FW.js.map → block.tk.bigwig.ui-CWHVNXIU.js.map} +0 -0
- /package/dist/{block.tk.hicstraw-YOHIM3HM.js.map → block.tk.hicstraw-SDSLZFY3.js.map} +0 -0
- /package/dist/{block.tk.junction-J4UI7N63.js.map → block.tk.junction-2CQNJQNO.js.map} +0 -0
- /package/dist/{block.tk.junction.textmatrixui-UZYE5UCM.js.map → block.tk.junction.textmatrixui-2DTJ3CZQ.js.map} +0 -0
- /package/dist/{block.tk.ld-RTB5CLB7.js.map → block.tk.ld-R4U726WX.js.map} +0 -0
- /package/dist/{block.tk.menu-KYWJQH7V.js.map → block.tk.menu-2DNHSD4V.js.map} +0 -0
- /package/dist/{block.tk.pgv-VQQAXD6F.js.map → block.tk.pgv-URYI7SGL.js.map} +0 -0
- /package/dist/{brainImaging-UDHL53C3.js.map → brainImaging-456QHW3X.js.map} +0 -0
- /package/dist/{chat-656LOTAA.js.map → chat-2HNA625V.js.map} +0 -0
- /package/dist/{chunk-FMVK7D7U.js.map → chunk-24KQ3KET.js.map} +0 -0
- /package/dist/{chunk-4L2MWXRO.js.map → chunk-32OHHLSN.js.map} +0 -0
- /package/dist/{chunk-YFR45S3V.js.map → chunk-3VPSZFDL.js.map} +0 -0
- /package/dist/{chunk-672CKS2W.js.map → chunk-4QM4DZIX.js.map} +0 -0
- /package/dist/{chunk-ETDD7ET7.js.map → chunk-4Y4VQWZP.js.map} +0 -0
- /package/dist/{chunk-OQIWHQRM.js.map → chunk-5AQDMO53.js.map} +0 -0
- /package/dist/{chunk-WMGHVZKL.js.map → chunk-5EL7IAPJ.js.map} +0 -0
- /package/dist/{chunk-PNFOXMVR.js.map → chunk-5G3FEWYC.js.map} +0 -0
- /package/dist/{chunk-MVJG76ED.js.map → chunk-6R65HDDH.js.map} +0 -0
- /package/dist/{chunk-RG3FCOPJ.js.map → chunk-6TOPX4SZ.js.map} +0 -0
- /package/dist/{chunk-ENJYPZ5M.js.map → chunk-7MOHJ2LP.js.map} +0 -0
- /package/dist/{chunk-M333SV5Q.js.map → chunk-7RTU7HGA.js.map} +0 -0
- /package/dist/{chunk-7AOMLJ4W.js.map → chunk-7ZERGVYR.js.map} +0 -0
- /package/dist/{chunk-TF7SEHUK.js.map → chunk-A7KTDX2J.js.map} +0 -0
- /package/dist/{chunk-GCLNCKZR.js.map → chunk-AB27JYV5.js.map} +0 -0
- /package/dist/{chunk-AVC6O2W6.js.map → chunk-ADVDYTFN.js.map} +0 -0
- /package/dist/{chunk-NKZ6JBPA.js.map → chunk-AMYXPDBP.js.map} +0 -0
- /package/dist/{chunk-FWROK3IG.js.map → chunk-AN7C6MAI.js.map} +0 -0
- /package/dist/{chunk-6FAOO3OA.js.map → chunk-AZCDJBTB.js.map} +0 -0
- /package/dist/{chunk-6F55TZ65.js.map → chunk-CKO4ZCZ2.js.map} +0 -0
- /package/dist/{chunk-OLV3K6C2.js.map → chunk-CZWIMQSR.js.map} +0 -0
- /package/dist/{chunk-ZKGOC7WV.js.map → chunk-EHC45B2D.js.map} +0 -0
- /package/dist/{chunk-XHSCGKKS.js.map → chunk-EUOP6MU2.js.map} +0 -0
- /package/dist/{chunk-3JATFJWU.js.map → chunk-EXLGUHWQ.js.map} +0 -0
- /package/dist/{chunk-LIZEJWRS.js.map → chunk-FMHMBSBC.js.map} +0 -0
- /package/dist/{chunk-JSGUL55B.js.map → chunk-FPLQBYQY.js.map} +0 -0
- /package/dist/{chunk-44FVXCJD.js.map → chunk-GHTY6Q5J.js.map} +0 -0
- /package/dist/{chunk-VIG3YIZE.js.map → chunk-GI44VQSM.js.map} +0 -0
- /package/dist/{chunk-4VDXBLVM.js.map → chunk-GKCJ6AL2.js.map} +0 -0
- /package/dist/{chunk-UKQXLSVL.js.map → chunk-GRYNODB7.js.map} +0 -0
- /package/dist/{chunk-DKLOSISA.js.map → chunk-I3REFBZE.js.map} +0 -0
- /package/dist/{chunk-4FSIPOR3.js.map → chunk-IEZ56TTW.js.map} +0 -0
- /package/dist/{chunk-MEL2AOWM.js.map → chunk-IGH2HBKM.js.map} +0 -0
- /package/dist/{chunk-7HY76S56.js.map → chunk-ISDTJN46.js.map} +0 -0
- /package/dist/{chunk-24Y4TQ5A.js.map → chunk-IV7ZWQYZ.js.map} +0 -0
- /package/dist/{chunk-P6LMJMKE.js.map → chunk-KNX2KJJR.js.map} +0 -0
- /package/dist/{chunk-P7UX7BMG.js.map → chunk-LPX2VHGG.js.map} +0 -0
- /package/dist/{chunk-QLZUINQ7.js.map → chunk-LQFSFWBP.js.map} +0 -0
- /package/dist/{chunk-MFQQANVW.js.map → chunk-MMQHFIVE.js.map} +0 -0
- /package/dist/{chunk-CDD7KJ5Y.js.map → chunk-MTNKTIOB.js.map} +0 -0
- /package/dist/{chunk-CDIW7LZC.js.map → chunk-MVZOTOQ6.js.map} +0 -0
- /package/dist/{chunk-U5HUB2Q4.js.map → chunk-P5FWQBRY.js.map} +0 -0
- /package/dist/{chunk-GOLMWMSN.js.map → chunk-Q45ZA7GY.js.map} +0 -0
- /package/dist/{chunk-IYOQNM63.js.map → chunk-QOES3NTZ.js.map} +0 -0
- /package/dist/{chunk-APFOJVLK.js.map → chunk-R3SD4CY7.js.map} +0 -0
- /package/dist/{chunk-FGKKLAQ5.js.map → chunk-RCVZWDHJ.js.map} +0 -0
- /package/dist/{chunk-CKZVEDVK.js.map → chunk-SJKTBQOK.js.map} +0 -0
- /package/dist/{chunk-FS43AP5R.js.map → chunk-TK2CGXF7.js.map} +0 -0
- /package/dist/{chunk-KBXFLT2S.js.map → chunk-U2JVJ6IU.js.map} +0 -0
- /package/dist/{chunk-DG7KZK4Q.js.map → chunk-U5RW5ZYG.js.map} +0 -0
- /package/dist/{chunk-7JW3T52I.js.map → chunk-VG43R5M7.js.map} +0 -0
- /package/dist/{chunk-S3Q7EDUE.js.map → chunk-VHHOKKD4.js.map} +0 -0
- /package/dist/{chunk-IZAXEMH3.js.map → chunk-VUCKPHHC.js.map} +0 -0
- /package/dist/{chunk-ICHTBOG2.js.map → chunk-VYRJ4NWB.js.map} +0 -0
- /package/dist/{chunk-RBEAGBGJ.js.map → chunk-X4BU74GO.js.map} +0 -0
- /package/dist/{chunk-H263MS6C.js.map → chunk-YUYKXIPC.js.map} +0 -0
- /package/dist/{chunk-QN7VSEMU.js.map → chunk-ZGZZWA5G.js.map} +0 -0
- /package/dist/{chunk-VDCARWYK.js.map → chunk-ZM2ELJEB.js.map} +0 -0
- /package/dist/{chunk-RHV7GMYN.js.map → chunk-ZTAQEZ5L.js.map} +0 -0
- /package/dist/{condition-N6X3VHCN.js.map → condition-UMVOPNFK.js.map} +0 -0
- /package/dist/{controls-WSSMFFQI.js.map → controls-U5OSWWMS.js.map} +0 -0
- /package/dist/{controls.btns-HSNM5SDZ.js.map → controls.btns-OQ6DKPNZ.js.map} +0 -0
- /package/dist/{controls.config-JUGAMRVI.js.map → controls.config-R32ILSES.js.map} +0 -0
- /package/dist/{correlation-U4VNXKD5.js.map → correlation-FSJPNUBY.js.map} +0 -0
- /package/dist/{cuminc.integration.spec-PLLOVKUP.js.map → cuminc.integration.spec-PBS2RQI3.js.map} +0 -0
- /package/dist/{customdata.inputui-NZPW7VGF.js.map → customdata.inputui-SFPNRJLH.js.map} +0 -0
- /package/dist/{dataDownload-DMZOP2GH.js.map → dataDownload-JGGECEID.js.map} +0 -0
- /package/dist/{dataDownload.integration.spec-4L5ZBBHO.js.map → dataDownload.integration.spec-GKB5JJTM.js.map} +0 -0
- /package/dist/{databrowser.ui-YKCIA5KH.js.map → databrowser.ui-AESPCD5R.js.map} +0 -0
- /package/dist/{dictionary-AZUPPUNV.js.map → dictionary-V4D5U7DV.js.map} +0 -0
- /package/dist/{e2pca-TQ4Y3Q5G.js.map → e2pca-53Y2ZHUH.js.map} +0 -0
- /package/dist/{ep-3LPU2GCH.js.map → ep-YVR7IAPR.js.map} +0 -0
- /package/dist/{expclust.gdc.spec-R7P4CKUJ.js.map → expclust.gdc.spec-X7KCLSUO.js.map} +0 -0
- /package/dist/{facet-PIFKC63F.js.map → facet-VLE5XKR4.js.map} +0 -0
- /package/dist/{frequencyChart-TRZEBWEI.js.map → frequencyChart-4LNNLCEY.js.map} +0 -0
- /package/dist/{frequencyChart.integration.spec-IAW5CIQ3.js.map → frequencyChart.integration.spec-PPIB7LWO.js.map} +0 -0
- /package/dist/{geneExpClustering-SDXXJT5Y.js.map → geneExpClustering-3F4VMB67.js.map} +0 -0
- /package/dist/{geneExpression-CQJ76OCV.js.map → geneExpression-33NZXHP5.js.map} +0 -0
- /package/dist/{geneExpression-YXUBCCMY.js.map → geneExpression-DBCL7ZI6.js.map} +0 -0
- /package/dist/{geneORA-GHMR4V3R.js.map → geneORA-D2Y6NPE3.js.map} +0 -0
- /package/dist/{geneVariant-LCMLVITW.js.map → geneVariant-4FYKJDIA.js.map} +0 -0
- /package/dist/{geneVariant-OM3SYZ4A.js.map → geneVariant-JACD3AAG.js.map} +0 -0
- /package/dist/{genefusion.ui-V6FEA5YH.js.map → genefusion.ui-A7WTWWP4.js.map} +0 -0
- /package/dist/{geneset-6U6ZVTBN.js.map → geneset-54ZUD7T7.js.map} +0 -0
- /package/dist/{genomeBrowser.spec-DIZUCWLL.js.map → genomeBrowser.spec-3CAWACHU.js.map} +0 -0
- /package/dist/{grin2-BBWMVGDJ.js.map → grin2-YWQZSPTG.js.map} +0 -0
- /package/dist/{gsea-I3NODLLE.js.map → gsea-QORQQVPE.js.map} +0 -0
- /package/dist/{hierCluster-3KTXGMUO.js.map → hierCluster-4FQGPLBC.js.map} +0 -0
- /package/dist/{hierCluster-L3FXZJHD.js.map → hierCluster-NJUVKFQ4.js.map} +0 -0
- /package/dist/{hierCluster.config-YH2TPGSO.js.map → hierCluster.config-EXPPLTZU.js.map} +0 -0
- /package/dist/{hierCluster.integration.spec-WYZEXWNV.js.map → hierCluster.integration.spec-T54ICQTT.js.map} +0 -0
- /package/dist/{hierCluster.interactivity-57K4ELLO.js.map → hierCluster.interactivity-QJ225OSA.js.map} +0 -0
- /package/dist/{imagePlot-6XDMC6EJ.js.map → imagePlot-7GFQT4GY.js.map} +0 -0
- /package/dist/{importPlot-P5QRPSP7.js.map → importPlot-76BKEBQB.js.map} +0 -0
- /package/dist/{launch.adhoc-4U4FU3L5.js.map → launch.adhoc-NT6RL7D5.js.map} +0 -0
- /package/dist/{leftlabel.sample-H6LM4POK.js.map → leftlabel.sample-NZVFQISW.js.map} +0 -0
- /package/dist/{lollipop-HFYWFFAU.js.map → lollipop-CYG3CWX7.js.map} +0 -0
- /package/dist/{maf-VPHHGVCC.js.map → maf-RPXUM3NZ.js.map} +0 -0
- /package/dist/{maftimeline-3EREROKR.js.map → maftimeline-WENAUMOY.js.map} +0 -0
- /package/dist/{matrix-FSBVON2R.js.map → matrix-6EYNTM5V.js.map} +0 -0
- /package/dist/{matrix-JD5OPEAO.js.map → matrix-X5LYB54E.js.map} +0 -0
- /package/dist/{matrix.config-5TF3UCKK.js.map → matrix.config-LHVKO52C.js.map} +0 -0
- /package/dist/{matrix.controls-EUP5D4GJ.js.map → matrix.controls-HVIMQSMA.js.map} +0 -0
- /package/dist/{matrix.data-EZTQXLD6.js.map → matrix.data-ECNBABCD.js.map} +0 -0
- /package/dist/{matrix.integration.spec-IYSPPP6J.js.map → matrix.integration.spec-PETC3SMK.js.map} +0 -0
- /package/dist/{matrix.interactivity-HSMWSJZN.js.map → matrix.interactivity-EPITLV4T.js.map} +0 -0
- /package/dist/{matrix.layout-6KQM5W3I.js.map → matrix.layout-L7AH6ZHX.js.map} +0 -0
- /package/dist/{matrix.renderers-AIQRX6C6.js.map → matrix.renderers-GYETGJXW.js.map} +0 -0
- /package/dist/{matrix.sort.unit.spec-KZIVPTM4.js.map → matrix.sort.unit.spec-DKB6R2VP.js.map} +0 -0
- /package/dist/{matrix.sorterUi-2MI6JNAS.js.map → matrix.sorterUi-7KPINGIU.js.map} +0 -0
- /package/dist/{matrix.sorterUi.unit.spec-R5GQVZGF.js.map → matrix.sorterUi.unit.spec-3FX4JVZR.js.map} +0 -0
- /package/dist/{mavb-WZPGDPVB.js.map → mavb-UJO3B6TU.js.map} +0 -0
- /package/dist/{mds.fimo-TNUZIIW6.js.map → mds.fimo-EYZVZUHE.js.map} +0 -0
- /package/dist/{mds.samplescatterplot-HQ6EGN3Z.js.map → mds.samplescatterplot-EOV53AR7.js.map} +0 -0
- /package/dist/{mds.survivalplot-V2FJ3K45.js.map → mds.survivalplot-BS663454.js.map} +0 -0
- /package/dist/{oncomatrix-NN5V4TTH.js.map → oncomatrix-GTTOMDUY.js.map} +0 -0
- /package/dist/{oncomatrix.spec-EDS24ZHX.js.map → oncomatrix.spec-JBW3TMKQ.js.map} +0 -0
- /package/dist/{plot.2dvaf-HPE23LL3.js.map → plot.2dvaf-BVUEJWWR.js.map} +0 -0
- /package/dist/{plot.app-LZAVKONK.js.map → plot.app-CYV45MF7.js.map} +0 -0
- /package/dist/{plot.barplot-CWNUYYEO.js.map → plot.barplot-AFR5NEWI.js.map} +0 -0
- /package/dist/{plot.boxplot-XNMH4V6E.js.map → plot.boxplot-Y26XY2MS.js.map} +0 -0
- /package/dist/{plot.brainImaging-PDB6ZZQA.js.map → plot.brainImaging-GUZLU444.js.map} +0 -0
- /package/dist/{plot.disco-B57ZSJ4U.js.map → plot.disco-F3TXRFGE.js.map} +0 -0
- /package/dist/{plot.dzi-WBWCMWHA.js.map → plot.dzi-DJJAOFHA.js.map} +0 -0
- /package/dist/{plot.ssgq-HS53FU6R.js.map → plot.ssgq-UZROFN7G.js.map} +0 -0
- /package/dist/{plot.vaf2cov-SGYIXQ3E.js.map → plot.vaf2cov-M3CHCXKB.js.map} +0 -0
- /package/dist/{plot.wsi-7GOGT7O4.js.map → plot.wsi-XVWMVD3O.js.map} +0 -0
- /package/dist/{profile.spec-KUDID6VJ.js.map → profile.spec-AZV34YSW.js.map} +0 -0
- /package/dist/{profileForms-44C6MOZW.js.map → profileForms-YQHJBSMI.js.map} +0 -0
- /package/dist/{profilePlot-2BN5CYOO.js.map → profilePlot-7A6MX4PE.js.map} +0 -0
- /package/dist/{qualitative-IL2KJYPH.js.map → qualitative-CV2VYZUS.js.map} +0 -0
- /package/dist/{regression-CKDN4CMV.js.map → regression-JAPN2Z3J.js.map} +0 -0
- /package/dist/{regression.inputs-FZTIJ3KE.js.map → regression.inputs-C3FMXQ67.js.map} +0 -0
- /package/dist/{regression.inputs.term-NBZVY2DV.js.map → regression.inputs.term-Q3C3LAD3.js.map} +0 -0
- /package/dist/{regression.inputs.values.table-SJ3USJMZ.js.map → regression.inputs.values.table-N76LKLUW.js.map} +0 -0
- /package/dist/{regression.integration.spec-BUTHIFDJ.js.map → regression.integration.spec-LG42ZNAV.js.map} +0 -0
- /package/dist/{regression.results-SS6AF5AO.js.map → regression.results-WWYGA4XX.js.map} +0 -0
- /package/dist/{regression.spec-RXG5FES6.js.map → regression.spec-WEEQIJKU.js.map} +0 -0
- /package/dist/{runChart-7IRFM7TR.js.map → runChart-V33YZETE.js.map} +0 -0
- /package/dist/{runchart.integration.spec-SR4R237N.js.map → runchart.integration.spec-2LM2ICVZ.js.map} +0 -0
- /package/dist/{sampleScatter.spec-UQIWRDTS.js.map → sampleScatter.spec-B3S3BF6S.js.map} +0 -0
- /package/dist/{sampleView-HZY2UL2L.js.map → sampleView-PZHYDACJ.js.map} +0 -0
- /package/dist/{samplelst-43PNQG4R.js.map → samplelst-BIGBMFEB.js.map} +0 -0
- /package/dist/{samplematrix-E5WWOB5B.js.map → samplematrix-DMPX4LF6.js.map} +0 -0
- /package/dist/{scatter-2LL22AIC.js.map → scatter-7IAERJDH.js.map} +0 -0
- /package/dist/{scatter.integration.spec-KBQ5QMUP.js.map → scatter.integration.spec-CV2P2EHQ.js.map} +0 -0
- /package/dist/{selectGenomeWithTklst-U2XNEQ6G.js.map → selectGenomeWithTklst-QQY5B325.js.map} +0 -0
- /package/dist/{singleCellPlot-PF7ZXYGP.js.map → singleCellPlot-P7TKLP2Q.js.map} +0 -0
- /package/dist/{singlecell-4ZGHLPVP.js.map → singlecell-3JCTPMD6.js.map} +0 -0
- /package/dist/{singlecell-Y6SPP3EF.js.map → singlecell-R2MP7CIA.js.map} +0 -0
- /package/dist/{snp-CIEQDFGA.js.map → snp-AJKNCWJ5.js.map} +0 -0
- /package/dist/{snplocus-UKTQLGCJ.js.map → snplocus-LAWWGL3L.js.map} +0 -0
- /package/dist/{spliceevent.a53ss.diagram-P74B6ATG.js.map → spliceevent.a53ss.diagram-NPCSQHH4.js.map} +0 -0
- /package/dist/{spliceevent.exonskip.diagram-QB4D23LK.js.map → spliceevent.exonskip.diagram-VMK6MQSP.js.map} +0 -0
- /package/dist/{spliceevent.noeventdiagram-5ACPGXE6.js.map → spliceevent.noeventdiagram-UQPNLSI4.js.map} +0 -0
- /package/dist/{ssGSEA-NFSPYGCL.js.map → ssGSEA-EABQ2EOX.js.map} +0 -0
- /package/dist/{stattable-2CQG4YJN.js.map → stattable-VV73WI4G.js.map} +0 -0
- /package/dist/{summarizeCnvGeneexp-25P76Q4A.js.map → summarizeCnvGeneexp-RVPKSDZD.js.map} +0 -0
- /package/dist/{summarizeGeneexpSurvival-3P4CWZDG.js.map → summarizeGeneexpSurvival-AUAVPV7G.js.map} +0 -0
- /package/dist/{summarizeMutationDiagnosis-KK22R2NR.js.map → summarizeMutationDiagnosis-3TAZJ2OW.js.map} +0 -0
- /package/dist/{summarizeMutationSurvival-2L672AKD.js.map → summarizeMutationSurvival-PBM5N5IS.js.map} +0 -0
- /package/dist/{summary-QGFVPGKH.js.map → summary-KZPKMNQ5.js.map} +0 -0
- /package/dist/{summary.integration.spec-ZZUUX6J6.js.map → summary.integration.spec-VLA6YDZ6.js.map} +0 -0
- /package/dist/{summaryInput-G6HU66ZL.js.map → summaryInput-BLKUQXUG.js.map} +0 -0
- /package/dist/{sunburst-FN5BJETX.js.map → sunburst-JFQR4HMW.js.map} +0 -0
- /package/dist/{survival-VCMM6POJ.js.map → survival-XQOB7ADD.js.map} +0 -0
- /package/dist/{survival.integration.spec-35WDU2KW.js.map → survival.integration.spec-5IWCGTCI.js.map} +0 -0
- /package/dist/{svgraph-HWHSHEQT.js.map → svgraph-OD5WTZLE.js.map} +0 -0
- /package/dist/{svmr-UQORFRQI.js.map → svmr-MCVTUHH2.js.map} +0 -0
- /package/dist/{table-ERWBH6VL.js.map → table-TFAD4UXW.js.map} +0 -0
- /package/dist/{termInfo-CHQNRC52.js.map → termInfo-FID77R3S.js.map} +0 -0
- /package/dist/{tk-PWZHQFGY.js.map → tk-WC3QTCW5.js.map} +0 -0
- /package/dist/{tp.ui-IIFVF2UE.js.map → tp.ui-TMVM3NTQ.js.map} +0 -0
- /package/dist/{tvs.samplelst-FGEJJOTD.js.map → tvs.samplelst-FIHJJ3RI.js.map} +0 -0
- /package/dist/{variantBrowser-BJ456XCS.js.map → variantBrowser-XYROCIA6.js.map} +0 -0
- /package/dist/{violin-DZYJK5CT.js.map → violin-HISIOFBT.js.map} +0 -0
- /package/dist/{violin.integration.spec-VWQ72QGV.js.map → violin.integration.spec-6JZR3FAA.js.map} +0 -0
- /package/dist/{violin.interactivity-XBZYQT5U.js.map → violin.interactivity-FZ4ER55B.js.map} +0 -0
- /package/dist/{violin.renderer-HKOUNZPN.js.map → violin.renderer-LCDEO4CS.js.map} +0 -0
- /package/dist/{vocabulary-N6DUON6U.js.map → vocabulary-RFE2MZ5M.js.map} +0 -0
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
renderSandboxFormDiv,
|
|
9
9
|
sayerror,
|
|
10
10
|
to_svg
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-IPDXHAAM.js";
|
|
12
12
|
import "./chunk-HJ6L54YS.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-RCVZWDHJ.js";
|
|
14
14
|
import "./chunk-DUTCGKL3.js";
|
|
15
15
|
import {
|
|
16
16
|
mclass,
|
|
@@ -18,8 +18,8 @@ import {
|
|
|
18
18
|
} from "./chunk-FIZTETYY.js";
|
|
19
19
|
import "./chunk-5MWX5HUZ.js";
|
|
20
20
|
import "./chunk-IQIXGTQV.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-AZCDJBTB.js";
|
|
22
|
+
import "./chunk-KRANJ24K.js";
|
|
23
23
|
import "./chunk-7NTZWOJV.js";
|
|
24
24
|
import {
|
|
25
25
|
Menu
|
|
@@ -1361,4 +1361,4 @@ export {
|
|
|
1361
1361
|
d2mafparseinput,
|
|
1362
1362
|
d2mafui
|
|
1363
1363
|
};
|
|
1364
|
-
//# sourceMappingURL=2dmaf-
|
|
1364
|
+
//# sourceMappingURL=2dmaf-5MJXC3I2.js.map
|
|
@@ -1,28 +1,28 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PlotBase
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4Y4VQWZP.js";
|
|
4
4
|
import {
|
|
5
5
|
filterInit,
|
|
6
6
|
getNormalRoot,
|
|
7
7
|
renderTable,
|
|
8
8
|
sayerror
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-IPDXHAAM.js";
|
|
10
10
|
import "./chunk-HJ6L54YS.js";
|
|
11
11
|
import {
|
|
12
12
|
dofetch2,
|
|
13
13
|
dofetch3
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RCVZWDHJ.js";
|
|
15
15
|
import "./chunk-DUTCGKL3.js";
|
|
16
16
|
import {
|
|
17
17
|
getColors
|
|
18
18
|
} from "./chunk-FIZTETYY.js";
|
|
19
19
|
import "./chunk-5MWX5HUZ.js";
|
|
20
20
|
import "./chunk-IQIXGTQV.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-AZCDJBTB.js";
|
|
22
22
|
import {
|
|
23
23
|
copyMerge,
|
|
24
24
|
getCompInit
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-KRANJ24K.js";
|
|
26
26
|
import {
|
|
27
27
|
require_debounce
|
|
28
28
|
} from "./chunk-7NTZWOJV.js";
|
|
@@ -286,7 +286,7 @@ var AIProjectAdminInteractions = class {
|
|
|
286
286
|
);
|
|
287
287
|
images = response.images;
|
|
288
288
|
}
|
|
289
|
-
const wsiViewer = await import("./plot.wsi-
|
|
289
|
+
const wsiViewer = await import("./plot.wsi-XVWMVD3O.js");
|
|
290
290
|
wsiViewer.default(this.dslabel, holder, { name: this.genome }, null, config.settings.project.id, images, true);
|
|
291
291
|
}
|
|
292
292
|
async appDispatchEdit(settings, config = {}) {
|
|
@@ -621,4 +621,4 @@ export {
|
|
|
621
621
|
componentInit,
|
|
622
622
|
getPlotConfig
|
|
623
623
|
};
|
|
624
|
-
//# sourceMappingURL=AIProjectAdmin-
|
|
624
|
+
//# sourceMappingURL=AIProjectAdmin-44M2IVLK.js.map
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
import {
|
|
2
2
|
makeButton,
|
|
3
3
|
openSandbox
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-JLAGQQCP.js";
|
|
5
5
|
import {
|
|
6
6
|
get_tklst
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-MVZOTOQ6.js";
|
|
8
|
+
import "./chunk-ISDTJN46.js";
|
|
9
|
+
import "./chunk-ZGZZWA5G.js";
|
|
10
10
|
import "./chunk-PRZWSBMA.js";
|
|
11
11
|
import "./chunk-MKAF2BHB.js";
|
|
12
12
|
import {
|
|
13
13
|
urlmap_default
|
|
14
14
|
} from "./chunk-RS3G3HE7.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-ZM2ELJEB.js";
|
|
16
16
|
import {
|
|
17
17
|
block_init_default
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-EUOP6MU2.js";
|
|
19
19
|
import {
|
|
20
20
|
InputSearch,
|
|
21
21
|
first_genetrack_tolist,
|
|
22
22
|
newSandboxDiv,
|
|
23
23
|
sayerror,
|
|
24
24
|
throwMsgWithFilePathAndFnName
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-IPDXHAAM.js";
|
|
26
26
|
import {
|
|
27
27
|
string2pos
|
|
28
28
|
} from "./chunk-HJ6L54YS.js";
|
|
29
29
|
import {
|
|
30
30
|
dofetch3
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-RCVZWDHJ.js";
|
|
32
32
|
import "./chunk-DUTCGKL3.js";
|
|
33
33
|
import {
|
|
34
34
|
defaultcolor
|
|
35
35
|
} from "./chunk-FIZTETYY.js";
|
|
36
36
|
import "./chunk-5MWX5HUZ.js";
|
|
37
37
|
import "./chunk-IQIXGTQV.js";
|
|
38
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-AZCDJBTB.js";
|
|
39
39
|
import {
|
|
40
40
|
getAppInit,
|
|
41
41
|
getCompInit,
|
|
42
42
|
getInitFxn,
|
|
43
43
|
getStoreInit
|
|
44
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-KRANJ24K.js";
|
|
45
45
|
import "./chunk-7NTZWOJV.js";
|
|
46
46
|
import "./chunk-IVJWQYGG.js";
|
|
47
47
|
import "./chunk-OMO754MK.js";
|
|
@@ -211,7 +211,7 @@ async function findgene2paint(str, app, genomename, jwt) {
|
|
|
211
211
|
debugmode: app.debugmode
|
|
212
212
|
};
|
|
213
213
|
first_genetrack_tolist(g, par2.tklst);
|
|
214
|
-
import("./block-
|
|
214
|
+
import("./block-MWH3WOMW.js").then((b) => new b.Block(par2)).catch((err) => {
|
|
215
215
|
app.error0(err);
|
|
216
216
|
});
|
|
217
217
|
return;
|
|
@@ -797,7 +797,7 @@ var AppHeader = class _AppHeader {
|
|
|
797
797
|
debugmode: app.debugmode
|
|
798
798
|
};
|
|
799
799
|
first_genetrack_tolist(g, par.tklst);
|
|
800
|
-
import("./block-
|
|
800
|
+
import("./block-MWH3WOMW.js").then((b) => new b.Block(par));
|
|
801
801
|
app.drawer.dispatch({ type: "is_apps_btn_active", value: false });
|
|
802
802
|
});
|
|
803
803
|
return g_browser_btn;
|
|
@@ -810,4 +810,4 @@ var AppHeader = class _AppHeader {
|
|
|
810
810
|
export {
|
|
811
811
|
AppHeader
|
|
812
812
|
};
|
|
813
|
-
//# sourceMappingURL=AppHeader-
|
|
813
|
+
//# sourceMappingURL=AppHeader-QGBNJFSL.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\tconst url = d.pmidURL || d.doi\n\t\t\tif (!url || !d.title) throw `Missing url or title for search selection`\n\t\t\twindow.open(url, 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 { ClientGenome } from 'types/clientGenome'\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 ClientGenome[]\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(\n\t\t\t\t\t\t\t(d: any) => `<a href=${d.pmidURL || d.doi} target=_blank>${d.appHeaderTitle}, ${d.journal}, ${d.year}</a>`\n\t\t\t\t\t\t)\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"],
|
|
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\tconst url = d.pmidURL || d.doi\n\t\t\tif (!url || !d.title) throw `Missing url or title for search selection`\n\t\t\twindow.open(url, 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.js'\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 { ClientGenome } from 'types/clientGenome'\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 ClientGenome[]\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(\n\t\t\t\t\t\t\t(d: any) => `<a href=${d.pmidURL || d.doi} target=_blank>${d.appHeaderTitle}, ${d.journal}, ${d.year}</a>`\n\t\t\t\t\t\t)\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
5
|
"mappings": "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",
|
|
6
6
|
"names": ["searchTermFound", "par", "setRenderers", "setRenderers", "setRenderers", "row"]
|
|
7
7
|
}
|
|
@@ -3,23 +3,23 @@ import {
|
|
|
3
3
|
componentInit,
|
|
4
4
|
getDefaultBoxplotSettings,
|
|
5
5
|
getPlotConfig
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-R3SD4CY7.js";
|
|
7
|
+
import "./chunk-Q45ZA7GY.js";
|
|
8
|
+
import "./chunk-6TOPX4SZ.js";
|
|
9
9
|
import "./chunk-PK7RKVD3.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-4Y4VQWZP.js";
|
|
11
|
+
import "./chunk-VHHOKKD4.js";
|
|
12
|
+
import "./chunk-EXLGUHWQ.js";
|
|
13
|
+
import "./chunk-A7KTDX2J.js";
|
|
14
|
+
import "./chunk-IPDXHAAM.js";
|
|
15
15
|
import "./chunk-HJ6L54YS.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-RCVZWDHJ.js";
|
|
17
17
|
import "./chunk-DUTCGKL3.js";
|
|
18
18
|
import "./chunk-FIZTETYY.js";
|
|
19
19
|
import "./chunk-5MWX5HUZ.js";
|
|
20
20
|
import "./chunk-IQIXGTQV.js";
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-AZCDJBTB.js";
|
|
22
|
+
import "./chunk-KRANJ24K.js";
|
|
23
23
|
import "./chunk-7NTZWOJV.js";
|
|
24
24
|
import "./chunk-IVJWQYGG.js";
|
|
25
25
|
import "./chunk-OMO754MK.js";
|
|
@@ -39,4 +39,4 @@ export {
|
|
|
39
39
|
getDefaultBoxplotSettings,
|
|
40
40
|
getPlotConfig
|
|
41
41
|
};
|
|
42
|
-
//# sourceMappingURL=BoxPlot-
|
|
42
|
+
//# sourceMappingURL=BoxPlot-42JPLOOJ.js.map
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PlotBase
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4Y4VQWZP.js";
|
|
4
4
|
import {
|
|
5
5
|
controlsInit
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-VHHOKKD4.js";
|
|
7
|
+
import "./chunk-EXLGUHWQ.js";
|
|
8
|
+
import "./chunk-A7KTDX2J.js";
|
|
9
9
|
import {
|
|
10
10
|
LegendCircleReference,
|
|
11
11
|
appInit,
|
|
@@ -14,20 +14,20 @@ import {
|
|
|
14
14
|
fillTwLst,
|
|
15
15
|
table2col,
|
|
16
16
|
to_svg
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-IPDXHAAM.js";
|
|
18
18
|
import "./chunk-HJ6L54YS.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-RCVZWDHJ.js";
|
|
20
20
|
import {
|
|
21
21
|
termType2label
|
|
22
22
|
} from "./chunk-DUTCGKL3.js";
|
|
23
23
|
import "./chunk-FIZTETYY.js";
|
|
24
24
|
import "./chunk-5MWX5HUZ.js";
|
|
25
25
|
import "./chunk-IQIXGTQV.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-AZCDJBTB.js";
|
|
27
27
|
import {
|
|
28
28
|
copyMerge,
|
|
29
29
|
getCompInit
|
|
30
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-KRANJ24K.js";
|
|
31
31
|
import "./chunk-7NTZWOJV.js";
|
|
32
32
|
import {
|
|
33
33
|
Menu
|
|
@@ -613,4 +613,4 @@ export {
|
|
|
613
613
|
getDefaultCorrVolcanoSettings,
|
|
614
614
|
getPlotConfig
|
|
615
615
|
};
|
|
616
|
-
//# sourceMappingURL=CorrelationVolcano-
|
|
616
|
+
//# sourceMappingURL=CorrelationVolcano-NTWQV67E.js.map
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getDefaultGseaSettings
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-7ZERGVYR.js";
|
|
4
|
+
import "./chunk-MMQHFIVE.js";
|
|
5
5
|
import {
|
|
6
6
|
importPlot
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6TOPX4SZ.js";
|
|
8
8
|
import {
|
|
9
9
|
getDefaultVolcanoSettings,
|
|
10
10
|
validateVolcanoSettings
|
|
11
11
|
} from "./chunk-PK7RKVD3.js";
|
|
12
12
|
import {
|
|
13
13
|
PlotBase
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
17
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-4Y4VQWZP.js";
|
|
15
|
+
import "./chunk-VHHOKKD4.js";
|
|
16
|
+
import "./chunk-EXLGUHWQ.js";
|
|
17
|
+
import "./chunk-A7KTDX2J.js";
|
|
18
18
|
import {
|
|
19
19
|
Tabs
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-IPDXHAAM.js";
|
|
21
21
|
import "./chunk-HJ6L54YS.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-RCVZWDHJ.js";
|
|
23
23
|
import {
|
|
24
24
|
termType2label
|
|
25
25
|
} from "./chunk-DUTCGKL3.js";
|
|
26
26
|
import "./chunk-FIZTETYY.js";
|
|
27
27
|
import "./chunk-5MWX5HUZ.js";
|
|
28
28
|
import "./chunk-IQIXGTQV.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-AZCDJBTB.js";
|
|
30
30
|
import {
|
|
31
31
|
copyMerge,
|
|
32
32
|
getCompInit
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-KRANJ24K.js";
|
|
34
34
|
import "./chunk-7NTZWOJV.js";
|
|
35
35
|
import {
|
|
36
36
|
Menu
|
|
@@ -226,4 +226,4 @@ export {
|
|
|
226
226
|
componentInit,
|
|
227
227
|
getPlotConfig
|
|
228
228
|
};
|
|
229
|
-
//# sourceMappingURL=DifferentialAnalysis-
|
|
229
|
+
//# sourceMappingURL=DifferentialAnalysis-7FWZMRPC.js.map
|