@sjcrh/proteinpaint-client 2.77.0 → 2.78.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{2dmaf-acb8cfdd.js → 2dmaf-7dddba15.js} +1 -1
- package/dist/{AppHeader-315dbd3a.js → AppHeader-67cea623.js} +1 -1
- package/dist/{ColorScale-4b4ea8a2.js → ColorScale-7a36cc17.js} +1 -1
- package/dist/{DEanalysis-28ddd620.js → DEanalysis-417e1f88.js} +1 -1
- package/dist/{Disco-3c427131.js → Disco-30abd4cb.js} +1 -1
- package/dist/{Disco.UI-b071cf7a.js → Disco.UI-ea58ee03.js} +1 -1
- package/dist/{DragControls-7961799c.js → DragControls-a5072cfd.js} +1 -1
- package/dist/{DziViewer-aa5b5706.js → DziViewer-af3c5a76.js} +1 -1
- package/dist/FilterRxComp-cb149666.js +1 -0
- package/dist/FilterStateless-bdd1416d.js +1 -0
- package/dist/{HicApp-674a148d.js → HicApp-fe8682af.js} +1 -1
- package/dist/{OrbitControls-58ca2292.js → OrbitControls-0d20d46b.js} +1 -1
- package/dist/{WSIViewer-afe97e2e.js → WSIViewer-64e55fb8.js} +1 -1
- package/dist/{adSandbox-791d704e.js → adSandbox-5753745b.js} +1 -1
- package/dist/app-488d9fd6.js +1 -0
- package/dist/{app-bd9f016b.js → app-5aa892cb.js} +1 -1
- package/dist/app-d9433820.js +1 -0
- package/dist/app.js +1 -1
- package/dist/bam-4e0df8b6.js +1 -0
- package/dist/{barchart-e3dcfc5f.js → barchart-687ae584.js} +1 -1
- package/dist/{barchart.events-cecb7bf5.js → barchart.events-9e2c1acf.js} +1 -1
- package/dist/{bars.renderer-58e38632.js → bars.renderer-95f7250f.js} +1 -1
- package/dist/{block-944afb9f.js → block-2f22e7fd.js} +1 -1
- package/dist/block.lazyload-143ae987.js +1 -0
- package/dist/{block.legend-3dbc41a8.js → block.legend-aa831169.js} +1 -1
- package/dist/{block.mds-b3967ce5.js → block.mds-64d95cf9.js} +1 -1
- package/dist/{block.mds.cnv-6de3115e.js → block.mds.cnv-2520897d.js} +1 -1
- package/dist/{block.mds.expressionrank-553613e8.js → block.mds.expressionrank-582ed7bc.js} +1 -1
- package/dist/{block.mds.expressionstat-2c396bb9.js → block.mds.expressionstat-483c9bc9.js} +1 -1
- package/dist/{block.mds.geneboxplot-552fe571.js → block.mds.geneboxplot-c1276cba.js} +1 -1
- package/dist/{block.mds.junction-1e25c13d.js → block.mds.junction-4a132819.js} +1 -1
- package/dist/{block.mds.svcnv-462d762d.js → block.mds.svcnv-a532eca7.js} +1 -1
- package/dist/{block.mds.svcnv.share-766e4b22.js → block.mds.svcnv.share-6575b7cf.js} +1 -1
- package/dist/{block.mds2-6e04432d.js → block.mds2-9ce41a23.js} +1 -1
- package/dist/{block.svg-40b47da8.js → block.svg-adb13c76.js} +1 -1
- package/dist/{block.tk.aicheck-cc42cbaf.js → block.tk.aicheck-ef6b634b.js} +1 -1
- package/dist/{block.tk.ase-da848c5f.js → block.tk.ase-1b119031.js} +1 -1
- package/dist/{block.tk.bam-8053c97e.js → block.tk.bam-2aa824aa.js} +1 -1
- package/dist/{block.tk.bedgraphdot-79cb0faf.js → block.tk.bedgraphdot-983fe4b3.js} +1 -1
- package/dist/{block.tk.bigwig.ui-a8decec7.js → block.tk.bigwig.ui-fb6401ee.js} +1 -1
- package/dist/{block.tk.hicstraw-3d1e9d41.js → block.tk.hicstraw-c6732591.js} +1 -1
- package/dist/{block.tk.junction-81eae755.js → block.tk.junction-429b654c.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-4c45b69a.js → block.tk.junction.textmatrixui-15bd752c.js} +1 -1
- package/dist/{block.tk.ld-997fca31.js → block.tk.ld-fba14536.js} +1 -1
- package/dist/{block.tk.menu-d3e7ccbb.js → block.tk.menu-1299ae5e.js} +1 -1
- package/dist/{block.tk.pgv-ae1d1f59.js → block.tk.pgv-c946527f.js} +1 -1
- package/dist/{boxplot-fed0a86b.js → boxplot-dbf30a19.js} +1 -1
- package/dist/{brainImaging-b455fd0c.js → brainImaging-b2865ba3.js} +1 -1
- package/dist/{brush-06989a5e.js → brush-1a123226.js} +1 -1
- package/dist/{categorical-82722704.js → categorical-f67752ed.js} +1 -1
- package/dist/{condition-f68cc8d1.js → condition-dcc70001.js} +1 -1
- package/dist/{controls-1d99916a.js → controls-f4648f7f.js} +1 -1
- package/dist/controls.btns-26bb6ef1.js +1 -0
- package/dist/{controls.config-00ce9f0b.js → controls.config-9870bdea.js} +1 -1
- package/dist/{cuminc-879690b0.js → cuminc-2273cdd3.js} +1 -1
- package/dist/{customdata.inputui-c563c695.js → customdata.inputui-fb1b24dc.js} +1 -1
- package/dist/{dataDownload-087ac205.js → dataDownload-b94871d0.js} +1 -1
- package/dist/{databrowser.ui-9f98f6b3.js → databrowser.ui-8ace51c3.js} +1 -1
- package/dist/{density-e0aff1d0.js → density-e023c28f.js} +1 -1
- package/dist/{dictionary-fe0ea1d6.js → dictionary-321e19f9.js} +1 -1
- package/dist/{drag-e11d6644.js → drag-1b98e43e.js} +1 -1
- package/dist/{e2pca-b3250d5c.js → e2pca-00e78fdc.js} +1 -1
- package/dist/{ep-9ca01df0.js → ep-b0d6177c.js} +1 -1
- package/dist/{facet-397afad5.js → facet-26292a3d.js} +1 -1
- package/dist/{filter-b3d3964e.js → filter-67d51c09.js} +1 -1
- package/dist/{fusion.parse-e5312047.js → fusion.parse-7e3a6071.js} +1 -1
- package/dist/{geneExpClustering-4383ff2c.js → geneExpClustering-a2cf1bb9.js} +1 -1
- package/dist/{geneExpression-52678025.js → geneExpression-d1d5a7ca.js} +1 -1
- package/dist/{geneExpression-cfb86b5d.js → geneExpression-dc10af2c.js} +1 -1
- package/dist/{geneExpression-2422f66b.js → geneExpression-e4a5a2cd.js} +1 -1
- package/dist/{geneORA-81220ec0.js → geneORA-248baba7.js} +1 -1
- package/dist/{geneVariant-18f9591a.js → geneVariant-447d6af9.js} +1 -1
- package/dist/{geneVariant-4d22b146.js → geneVariant-7366f3d1.js} +1 -1
- package/dist/{genefusion.ui-e38778dd.js → genefusion.ui-e219424a.js} +1 -1
- package/dist/{genesearch-0587c713.js → genesearch-d8780180.js} +1 -1
- package/dist/{geneset-604d0529.js → geneset-1f67d4c9.js} +1 -1
- package/dist/genomeBrowser-52c639b4.js +1 -0
- package/dist/{genomeBrowser.controls-204f007e.js → genomeBrowser.controls-3a7a1c94.js} +1 -1
- package/dist/{groupsetting-53dfd5e5.js → groupsetting-697a1503.js} +1 -1
- package/dist/{gsea-a1b04406.js → gsea-d3286c53.js} +1 -1
- package/dist/hierCluster-00268175.js +1 -0
- package/dist/{html.legend-6807e9ad.js → html.legend-0abd27ff.js} +1 -1
- package/dist/{imagePlot-f96cdc61.js → imagePlot-f6398b6e.js} +1 -1
- package/dist/{lasso-845446b8.js → lasso-48317f42.js} +1 -1
- package/dist/launch.adhoc-98dc0421.js +1 -0
- package/dist/{leftlabel.sample-3a6037c2.js → leftlabel.sample-591bc38d.js} +1 -1
- package/dist/legacyDataset-354f1a29.js +1 -0
- package/dist/{log-0ea548ec.js → log-1001ca83.js} +1 -1
- package/dist/{lollipop-75e11e9a.js → lollipop-40c4c5cb.js} +1 -1
- package/dist/{maf-e4af10d7.js → maf-10526648.js} +1 -1
- package/dist/{maftimeline-cc2e866c.js → maftimeline-a77349ad.js} +1 -1
- package/dist/matrix-1190d4b3.js +1 -0
- package/dist/matrix-bc0ccf83.js +1 -0
- package/dist/{mavb-b2dd74f6.js → mavb-0d28dd97.js} +1 -1
- package/dist/{mds.fimo-f19840cd.js → mds.fimo-929b9e65.js} +1 -1
- package/dist/{mds.samplescatterplot-254f1de6.js → mds.samplescatterplot-5a4ee6b6.js} +1 -1
- package/dist/{mds.survivalplot-f440db10.js → mds.survivalplot-b04947ee.js} +1 -1
- package/dist/metaboliteIntensity-f407ad0c.js +1 -0
- package/dist/niceNumLabels-621ef5c3.js +1 -0
- package/dist/{nodrag-f6c0801c.js → nodrag-b2866dd8.js} +1 -1
- package/dist/{notify-da3afe99.js → notify-91f0bc5d.js} +1 -1
- package/dist/{numeric-1d0318e8.js → numeric-eb1d29b3.js} +1 -1
- package/dist/{numeric.binary-88bf9e0d.js → numeric.binary-da92d665.js} +1 -1
- package/dist/numeric.continuous-92d1dea8.js +1 -0
- package/dist/numeric.discrete-cd8f09b1.js +1 -0
- package/dist/{numeric.spline-b3968b77.js → numeric.spline-9a9987b6.js} +1 -1
- package/dist/{numeric.toggle-ab8b79be.js → numeric.toggle-8f68f077.js} +1 -1
- package/dist/{oncomatrix-5f4326a8.js → oncomatrix-c29e6de9.js} +1 -1
- package/dist/{parseData-62083461.js → parseData-3bf0ef9f.js} +1 -1
- package/dist/{plot.2dvaf-eccd8ef3.js → plot.2dvaf-9e59c7d1.js} +1 -1
- package/dist/plot.app-fc3608a9.js +1 -0
- package/dist/plot.barplot-122296f7.js +1 -0
- package/dist/{plot.boxplot-0c538ebe.js → plot.boxplot-99c5aac5.js} +1 -1
- package/dist/{plot.brainImaging-ee3a0272.js → plot.brainImaging-a7bb79d6.js} +1 -1
- package/dist/{plot.disco-c9249cbd.js → plot.disco-ccdf741c.js} +1 -1
- package/dist/{plot.dzi-dfd72ddf.js → plot.dzi-aafdf56b.js} +1 -1
- package/dist/plot.ssgq-146075f5.js +1 -0
- package/dist/{plot.vaf2cov-4081decd.js → plot.vaf2cov-41e13dd9.js} +1 -1
- package/dist/{plot.wsi-f6325d95.js → plot.wsi-2327ad63.js} +1 -1
- package/dist/{profileBarchart-f4da0483.js → profileBarchart-46616916.js} +1 -1
- package/dist/profileHome-121aaddb.js +1 -0
- package/dist/profilePlot-a2591a28.js +1 -0
- package/dist/{profilePolar-996784ad.js → profilePolar-006a56b1.js} +1 -1
- package/dist/{profileRadar-79299186.js → profileRadar-3320d932.js} +1 -1
- package/dist/{profileRadarFacility-00e31213.js → profileRadarFacility-7a9cea80.js} +1 -1
- package/dist/{profileSummary-df75e6ff.js → profileSummary-7a747b4e.js} +1 -1
- package/dist/recover-edcdde38.js +1 -0
- package/dist/{regression.inputs-e647b716.js → regression.inputs-d5d44e49.js} +1 -1
- package/dist/{regression.inputs.values.table-b283619d.js → regression.inputs.values.table-daf7bcda.js} +1 -1
- package/dist/regression.results-31a8884d.js +1 -0
- package/dist/{renderPvalueTable-0ed37e90.js → renderPvalueTable-05c29ccf.js} +1 -1
- package/dist/sampleScatter-f6c04130.js +1 -0
- package/dist/{sampleScatter.rendererThree-aa51e3c8.js → sampleScatter.rendererThree-448689c6.js} +2 -2
- package/dist/{sampleView-e4819da2.js → sampleView-0931e571.js} +1 -1
- package/dist/{samplelst-9d9ff205.js → samplelst-27115b0e.js} +1 -1
- package/dist/{samplematrix-3556e5c0.js → samplematrix-2bb2480b.js} +1 -1
- package/dist/{scatter-ff17f653.js → scatter-a8d7c2a0.js} +1 -1
- package/dist/select2Terms-480025f5.js +1 -0
- package/dist/{selectGenomeWithTklst-84f4ff79.js → selectGenomeWithTklst-71344af2.js} +1 -1
- package/dist/{singleCellCellType-a2ce9bfa.js → singleCellCellType-b4061c59.js} +1 -1
- package/dist/{singleCellGeneExpression-a2b45c7a.js → singleCellGeneExpression-547149f2.js} +1 -1
- package/dist/singleCellPlot-2f5ad46a.js +1 -0
- package/dist/{singlecell-a5b8a39b.js → singlecell-1c3bee25.js} +1 -1
- package/dist/{singlecell-63cb06d8.js → singlecell-281a74a6.js} +1 -1
- package/dist/snp-32b8cbd8.js +1 -0
- package/dist/{snp-6e312b4c.js → snp-6bbefa83.js} +1 -1
- package/dist/snplocus-84450f3d.js +1 -0
- package/dist/{spliceevent.a53ss.diagram-aa2df5d7.js → spliceevent.a53ss.diagram-c04f46f1.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-0b792984.js → spliceevent.exonskip.diagram-a514c12e.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-a9a45dfc.js +1 -0
- package/dist/{spliceevent.noeventdiagram-e6e29a6e.js → spliceevent.noeventdiagram-b1be922c.js} +1 -1
- package/dist/{spliceevent.phrase-5f65a5f4.js → spliceevent.phrase-57659f7c.js} +1 -1
- package/dist/{stattable-775a5af5.js → stattable-7fa50fd2.js} +1 -1
- package/dist/{style.gdc-519a42d8.js → style.gdc-6b6a2e0c.js} +1 -1
- package/dist/{summary-5866c75f.js → summary-54587ccf.js} +1 -1
- package/dist/{sunburst-f928bfd2.js → sunburst-c24faf27.js} +1 -1
- package/dist/{survival-405514f6.js → survival-21e6637b.js} +1 -1
- package/dist/survival-538cddc2.js +1 -0
- package/dist/{svg.download-cd895635.js → svg.download-0dd56dfd.js} +1 -1
- package/dist/{svg.legend-812ea603.js → svg.legend-21629769.js} +1 -1
- package/dist/{svgraph-037fd7b6.js → svgraph-76e34d5e.js} +1 -1
- package/dist/{svmr-3bd143c3.js → svmr-89b80ea2.js} +1 -1
- package/dist/table-10183501.js +1 -0
- package/dist/{table-e013d8fc.js → table-bb97b5c9.js} +1 -1
- package/dist/{termInfo-e16f90f2.js → termInfo-4d954045.js} +1 -1
- package/dist/termdb.bins-06fd21c1.js +1 -0
- package/dist/termsetting-c12f1c69.js +1 -0
- package/dist/{tk-25ae65c4.js → tk-b96367f7.js} +1 -1
- package/dist/{toggleButtons-2144daab.js → toggleButtons-bb9aca2f.js} +1 -1
- package/dist/{tp.ui-38bc5890.js → tp.ui-f01b186b.js} +1 -1
- package/dist/tvs.density-064e5767.js +1 -0
- package/dist/{tvs.geneVariant-f99fe353.js → tvs.geneVariant-3fac6bed.js} +1 -1
- package/dist/{tvs.numeric-d9108473.js → tvs.numeric-86aacc82.js} +1 -1
- package/dist/{tvs.samplelst-3b8ee998.js → tvs.samplelst-1b00d7b6.js} +1 -1
- package/dist/{uiUtils-57f4b1ba.js → uiUtils-5aad7e13.js} +1 -1
- package/dist/{variantBrowser-56ebc7e1.js → variantBrowser-2c465d02.js} +1 -1
- package/dist/{vcf-e43b533a.js → vcf-55bf2c83.js} +1 -1
- package/dist/{violin-1352dab2.js → violin-edbe9a63.js} +1 -1
- package/dist/violin.interactivity-57637244.js +1 -0
- package/dist/{violin.renderer-4273257d.js → violin.renderer-4cab7448.js} +1 -1
- package/dist/{violinRenderer-7f46e468.js → violinRenderer-24abe5fd.js} +1 -1
- package/dist/{viridis-87a8b605.js → viridis-8a8f3e12.js} +1 -1
- package/dist/{y-cac91178.js → y-6fe1bb7b.js} +1 -1
- package/dist/{zoom-001c2f01.js → zoom-6a36fb2b.js} +1 -1
- package/package.json +6 -5
- package/dist/FilterRxComp-e8de560c.js +0 -1
- package/dist/FilterStateless-75514d37.js +0 -1
- package/dist/app-3d14cbe4.js +0 -1
- package/dist/app-8b5b982a.js +0 -1
- package/dist/bam-fa90bae8.js +0 -1
- package/dist/block.lazyload-4c4e81ff.js +0 -1
- package/dist/controls.btns-237b3154.js +0 -1
- package/dist/genomeBrowser-9f0e8a60.js +0 -1
- package/dist/hierCluster-edaaacc5.js +0 -1
- package/dist/hierCluster.config-a84f69a3.js +0 -1
- package/dist/hierCluster.interactivity-dd917fd3.js +0 -1
- package/dist/hierCluster.renderers-4d33e96a.js +0 -1
- package/dist/launch.adhoc-cb00917b.js +0 -1
- package/dist/legacyDataset-c9bab1e6.js +0 -1
- package/dist/matrix-8b3341c4.js +0 -1
- package/dist/matrix.cells-4dd055e7.js +0 -1
- package/dist/matrix.cluster-7ab94fb5.js +0 -1
- package/dist/matrix.config-b3b56456.js +0 -1
- package/dist/matrix.controls-6e0e9692.js +0 -1
- package/dist/matrix.data-baabaf57.js +0 -1
- package/dist/matrix.dom-cb1f4872.js +0 -1
- package/dist/matrix.groups-9990aade.js +0 -1
- package/dist/matrix.interactivity-3f3cf44d.js +0 -1
- package/dist/matrix.layout-50bc2ea5.js +0 -1
- package/dist/matrix.legend-024e2d50.js +0 -1
- package/dist/matrix.renderers-1aed44e5.js +0 -1
- package/dist/matrix.serieses-dc18fcc2.js +0 -1
- package/dist/matrix.sort-89b98e83.js +0 -1
- package/dist/matrix.sorterUi-0ad98ef0.js +0 -1
- package/dist/metaboliteIntensity-4d905d93.js +0 -1
- package/dist/niceNumLabels-ef07b7ad.js +0 -1
- package/dist/numeric.continuous-d27197cf.js +0 -1
- package/dist/numeric.discrete-b826f33b.js +0 -1
- package/dist/plot.app-4dc30ebc.js +0 -1
- package/dist/plot.barplot-331715f6.js +0 -1
- package/dist/plot.ssgq-b5f68395.js +0 -1
- package/dist/profileHome-11b7d146.js +0 -1
- package/dist/profilePlot-5dd1fe71.js +0 -1
- package/dist/recover-4888c2a9.js +0 -1
- package/dist/regression.results-f61b4a25.js +0 -1
- package/dist/sampleScatter-b96546e9.js +0 -1
- package/dist/select2Terms-eb437c2a.js +0 -1
- package/dist/singleCellPlot-e7e57b0f.js +0 -1
- package/dist/snp-41aa88d1.js +0 -1
- package/dist/snplocus-0653ba82.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-af1943e3.js +0 -1
- package/dist/survival-10dd3d28.js +0 -1
- package/dist/table-be2a9975.js +0 -1
- package/dist/termdb.bins-a60aaa77.js +0 -1
- package/dist/termsetting-7467350f.js +0 -1
- package/dist/tvs.density-060d3006.js +0 -1
- package/dist/violin.interactivity-2502dcd8.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as e,n as t,b as n,j as s,p as i,q as o,M as a,v as r}from"./app-3d14cbe4.js";import{a as c}from"./genesearch-0587c713.js";import{T as l}from"./toggleButtons-2144daab.js";function d(e){const t=e.div.append("button").attr("type","submit").style("background-color",e.backgroundColor?e.backgroundColor:"#cfe2f3").style("margin",e.margin?e.margin:"20px 20px 0px 20px").style("padding","8px").style("border","none").style("border-radius","3px").style("display","inline-block").text(e.text);return t}class u{constructor(e){this.opts=e;this.dom={holder:e.holder,trailDiv:e.trailDiv||e.holder.append("div")};p(this)}async main(e={}){try{return await this.render()}catch(e){if(e.stack)console.log(e.stack);else throw e}}}function p(t){t.render=async()=>{t.crumbs=t.opts.crumbs;for(const e of t.crumbs){e.label=e.label||e.name;if(!e.inTrail)e.inTrail=false}const n=t.crumbs.find((e=>e.inTrail));if(!n)t.crumbs[0].inTrail=true;await t.dom.trailDiv.style("margin-left","5px").style("font-size",".75em").style("display","inline-block").classed("sjpp-breadcrumb-trail",true).selectAll("span").data(t.crumbs).enter().append("span").classed("sjpp-breadcrumb",true).html((e=>e.link?` > <a href="${e.link}">${e.label}</a>`:` > ${e.label}`)).style("display",(e=>e.inTrail?"inline-block":"none")).each((async function(t){t.div=e(this)}));const s=t.crumbs.findIndex((e=>e.inTrail));t.update(s)};t.update=(e=0)=>{t.crumbs.forEach(((t,n)=>{t.inTrail=e===n}));t.dom.trailDiv.selectAll("span").data(t.crumbs).each((async e=>{e.div.style("display",e.inTrail?"inline-block":"none")}))}}var g={exports:{}};function f(e){if(e instanceof Map){e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}}else if(e instanceof Set){e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}}Object.freeze(e);Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];if(typeof n=="object"&&!Object.isFrozen(n)){f(n)}}));return e}g.exports=f;g.exports.default=f;var h=g.exports;class b{constructor(e){if(e.data===undefined)e.data={};this.data=e.data;this.isMatchIgnored=false}ignoreMatch(){this.isMatchIgnored=true}}function m(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function y(e,...t){const n=Object.create(null);for(const t in e){n[t]=e[t]}t.forEach((function(e){for(const t in e){n[t]=e[t]}}));return n}const x="</span>";const w=e=>!!e.kind;const v=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`};class E{constructor(e,t){this.buffer="";this.classPrefix=t.classPrefix;e.walk(this)}addText(e){this.buffer+=m(e)}openNode(e){if(!w(e))return;let t=e.kind;if(e.sublanguage){t=`language-${t}`}else{t=v(t,{prefix:this.classPrefix})}this.span(t)}closeNode(e){if(!w(e))return;this.buffer+=x}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}class k{constructor(){this.rootNode={children:[]};this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t);this.stack.push(t)}closeNode(){if(this.stack.length>1){return this.stack.pop()}return undefined}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){if(typeof t==="string"){e.addText(t)}else if(t.children){e.openNode(t);t.children.forEach((t=>this._walk(e,t)));e.closeNode(t)}return e}static _collapse(e){if(typeof e==="string")return;if(!e.children)return;if(e.children.every((e=>typeof e==="string"))){e.children=[e.children.join("")]}else{e.children.forEach((e=>{k._collapse(e)}))}}}class _ extends k{constructor(e){super();this.options=e}addKeyword(e,t){if(e===""){return}this.openNode(t);this.addText(e);this.closeNode()}addText(e){if(e===""){return}this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t;n.sublanguage=true;this.add(n)}toHTML(){const e=new E(this,this.options);return e.value()}finalize(){return true}}function N(e){if(!e)return null;if(typeof e==="string")return e;return e.source}function S(e){return O("(?=",e,")")}function O(...e){const t=e.map((e=>N(e))).join("");return t}function $(e){const t=e[e.length-1];if(typeof t==="object"&&t.constructor===Object){e.splice(e.length-1,1);return t}else{return{}}}function R(...e){const t=$(e);const n="("+(t.capture?"":"?:")+e.map((e=>N(e))).join("|")+")";return n}function A(e){return new RegExp(e.toString()+"|").exec("").length-1}function j(e,t){const n=e&&e.exec(t);return n&&n.index===0}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function M(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let s=N(e);let i="";while(s.length>0){const e=I.exec(s);if(!e){i+=s;break}i+=s.substring(0,e.index);s=s.substring(e.index+e[0].length);if(e[0][0]==="\\"&&e[1]){i+="\\"+String(Number(e[1])+t)}else{i+=e[0];if(e[0]==="("){n++}}}return i})).map((e=>`(${e})`)).join(t)}const T=/\b\B/;const B="[a-zA-Z]\\w*";const L="[a-zA-Z_]\\w*";const D="\\b\\d+(\\.\\d+)?";const C="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";const U="\\b(0b[01]+)";const P="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";const H=(e={})=>{const t=/^#![ ]*\//;if(e.binary){e.begin=O(t,/.*\b/,e.binary,/\b.*/)}return y({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{if(e.index!==0)t.ignoreMatch()}},e)};const z={begin:"\\\\[\\s\\S]",relevance:0};const G={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[z]};const J={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[z]};const K={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/};const Z=function(e,t,n={}){const s=y({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:true,relevance:0});const i=R("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);s.contains.push({begin:O(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")});return s};const F=Z("//","$");const W=Z("/\\*","\\*/");const X=Z("#","$");const q={scope:"number",begin:D,relevance:0};const V={scope:"number",begin:C,relevance:0};const Q={scope:"number",begin:U,relevance:0};const Y={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[z,{begin:/\[/,end:/\]/,relevance:0,contains:[z]}]}]};const ee={scope:"title",begin:B,relevance:0};const te={scope:"title",begin:L,relevance:0};const ne={begin:"\\.\\s*"+L,relevance:0};const se=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{if(t.data._beginMatch!==e[1])t.ignoreMatch()}})};var ie=Object.freeze({__proto__:null,MATCH_NOTHING_RE:T,IDENT_RE:B,UNDERSCORE_IDENT_RE:L,NUMBER_RE:D,C_NUMBER_RE:C,BINARY_NUMBER_RE:U,RE_STARTERS_RE:P,SHEBANG:H,BACKSLASH_ESCAPE:z,APOS_STRING_MODE:G,QUOTE_STRING_MODE:J,PHRASAL_WORDS_MODE:K,COMMENT:Z,C_LINE_COMMENT_MODE:F,C_BLOCK_COMMENT_MODE:W,HASH_COMMENT_MODE:X,NUMBER_MODE:q,C_NUMBER_MODE:V,BINARY_NUMBER_MODE:Q,REGEXP_MODE:Y,TITLE_MODE:ee,UNDERSCORE_TITLE_MODE:te,METHOD_GUARD:ne,END_SAME_AS_BEGIN:se});function oe(e,t){const n=e.input[e.index-1];if(n==="."){t.ignoreMatch()}}function ae(e,t){if(e.className!==undefined){e.scope=e.className;delete e.className}}function re(e,t){if(!t)return;if(!e.beginKeywords)return;e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)";e.__beforeBegin=oe;e.keywords=e.keywords||e.beginKeywords;delete e.beginKeywords;if(e.relevance===undefined)e.relevance=0}function ce(e,t){if(!Array.isArray(e.illegal))return;e.illegal=R(...e.illegal)}function le(e,t){if(!e.match)return;if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match;delete e.match}function de(e,t){if(e.relevance===undefined)e.relevance=1}const ue=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]}));e.keywords=n.keywords;e.begin=O(n.beforeMatch,S(n.begin));e.starts={relevance:0,contains:[Object.assign(n,{endsParent:true})]};e.relevance=0;delete n.beforeMatch};const pe=["of","and","for","in","not","or","if","then","parent","list","value"];const ge="keyword";function fe(e,t,n=ge){const s=Object.create(null);if(typeof e==="string"){i(n,e.split(" "))}else if(Array.isArray(e)){i(n,e)}else{Object.keys(e).forEach((function(n){Object.assign(s,fe(e[n],t,n))}))}return s;function i(e,n){if(t){n=n.map((e=>e.toLowerCase()))}n.forEach((function(t){const n=t.split("|");s[n[0]]=[e,he(n[0],n[1])]}))}}function he(e,t){if(t){return Number(t)}return be(e)?0:1}function be(e){return pe.includes(e.toLowerCase())}const me={};const ye=e=>{console.error(e)};const xe=(e,...t)=>{console.log(`WARN: ${e}`,...t)};const we=(e,t)=>{if(me[`${e}/${t}`])return;console.log(`Deprecated as of ${e}. ${t}`);me[`${e}/${t}`]=true};const ve=new Error;function Ee(e,t,{key:n}){let s=0;const i=e[n];const o={};const a={};for(let e=1;e<=t.length;e++){a[e+s]=i[e];o[e+s]=true;s+=A(t[e-1])}e[n]=a;e[n]._emit=o;e[n]._multi=true}function ke(e){if(!Array.isArray(e.begin))return;if(e.skip||e.excludeBegin||e.returnBegin){ye("skip, excludeBegin, returnBegin not compatible with beginScope: {}");throw ve}if(typeof e.beginScope!=="object"||e.beginScope===null){ye("beginScope must be object");throw ve}Ee(e,e.begin,{key:"beginScope"});e.begin=M(e.begin,{joinWith:""})}function _e(e){if(!Array.isArray(e.end))return;if(e.skip||e.excludeEnd||e.returnEnd){ye("skip, excludeEnd, returnEnd not compatible with endScope: {}");throw ve}if(typeof e.endScope!=="object"||e.endScope===null){ye("endScope must be object");throw ve}Ee(e,e.end,{key:"endScope"});e.end=M(e.end,{joinWith:""})}function Ne(e){if(e.scope&&typeof e.scope==="object"&&e.scope!==null){e.beginScope=e.scope;delete e.scope}}function Se(e){Ne(e);if(typeof e.beginScope==="string"){e.beginScope={_wrap:e.beginScope}}if(typeof e.endScope==="string"){e.endScope={_wrap:e.endScope}}ke(e);_e(e)}function Oe(e){function t(t,n){return new RegExp(N(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={};this.regexes=[];this.matchAt=1;this.position=0}addRule(e,t){t.position=this.position++;this.matchIndexes[this.matchAt]=t;this.regexes.push([t,e]);this.matchAt+=A(e)+1}compile(){if(this.regexes.length===0){this.exec=()=>null}const e=this.regexes.map((e=>e[1]));this.matcherRe=t(M(e,{joinWith:"|"}),true);this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t){return null}const n=t.findIndex(((e,t)=>t>0&&e!==undefined));const s=this.matchIndexes[n];t.splice(0,n);return Object.assign(t,s)}}class s{constructor(){this.rules=[];this.multiRegexes=[];this.count=0;this.lastIndex=0;this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n)));t.compile();this.multiRegexes[e]=t;return t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]);if(t.type==="begin")this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()){if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1;n=t.exec(e)}}if(n){this.regexIndex+=n.position+1;if(this.regexIndex===this.count){this.considerAll()}}return n}}function i(e){const t=new s;e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"})));if(e.terminatorEnd){t.addRule(e.terminatorEnd,{type:"end"})}if(e.illegal){t.addRule(e.illegal,{type:"illegal"})}return t}function o(n,s){const a=n;if(n.isCompiled)return a;[ae,le,Se,ue].forEach((e=>e(n,s)));e.compilerExtensions.forEach((e=>e(n,s)));n.__beforeBegin=null;[re,ce,de].forEach((e=>e(n,s)));n.isCompiled=true;let r=null;if(typeof n.keywords==="object"&&n.keywords.$pattern){n.keywords=Object.assign({},n.keywords);r=n.keywords.$pattern;delete n.keywords.$pattern}r=r||/\w+/;if(n.keywords){n.keywords=fe(n.keywords,e.case_insensitive)}a.keywordPatternRe=t(r,true);if(s){if(!n.begin)n.begin=/\B|\b/;a.beginRe=t(n.begin);if(!n.end&&!n.endsWithParent)n.end=/\B|\b/;if(n.end)a.endRe=t(n.end);a.terminatorEnd=N(n.end)||"";if(n.endsWithParent&&s.terminatorEnd){a.terminatorEnd+=(n.end?"|":"")+s.terminatorEnd}}if(n.illegal)a.illegalRe=t(n.illegal);if(!n.contains)n.contains=[];n.contains=[].concat(...n.contains.map((function(e){return Re(e==="self"?n:e)})));n.contains.forEach((function(e){o(e,a)}));if(n.starts){o(n.starts,s)}a.matcher=i(a);return a}if(!e.compilerExtensions)e.compilerExtensions=[];if(e.contains&&e.contains.includes("self")){throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")}e.classNameAliases=y(e.classNameAliases||{});return o(e)}function $e(e){if(!e)return false;return e.endsWithParent||$e(e.starts)}function Re(e){if(e.variants&&!e.cachedVariants){e.cachedVariants=e.variants.map((function(t){return y(e,{variants:null},t)}))}if(e.cachedVariants){return e.cachedVariants}if($e(e)){return y(e,{starts:e.starts?y(e.starts):null})}if(Object.isFrozen(e)){return y(e)}return e}var Ae="11.2.0";const je=m;const Ie=y;const Me=Symbol("nomatch");const Te=7;const Be=function(e){const t=Object.create(null);const n=Object.create(null);const s=[];let i=true;const o="Could not find the language '{}', did you forget to load/include a language module?";const a={disableAutodetect:true,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:false,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:_};function c(e){return r.noHighlightRe.test(e)}function l(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=r.languageDetectRe.exec(t);if(n){const t=$(n[1]);if(!t){xe(o.replace("{}",n[1]));xe("Falling back to no-highlight mode for this block.",e)}return t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>c(e)||$(e)))}function d(e,t,n){let s="";let i="";if(typeof t==="object"){s=e;n=t.ignoreIllegals;i=t.language}else{we("10.7.0","highlight(lang, code, ...args) has been deprecated.");we("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277");i=e;s=t}if(n===undefined){n=true}const o={code:s,language:i};T("before:highlight",o);const a=o.result?o.result:u(o.language,o.code,n);a.code=o.code;T("after:highlight",a);return a}function u(e,n,s,a){const c=Object.create(null);function l(e,t){return e.keywords[t]}function d(){if(!R.keywords){I.addText(M);return}let e=0;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M);let n="";while(t){n+=M.substring(e,t.index);const s=N.case_insensitive?t[0].toLowerCase():t[0];const i=l(R,s);if(i){const[e,o]=i;I.addText(n);n="";c[s]=(c[s]||0)+1;if(c[s]<=Te)T+=o;if(e.startsWith("_")){n+=t[0]}else{const n=N.classNameAliases[e]||e;I.addKeyword(t[0],n)}}else{n+=t[0]}e=R.keywordPatternRe.lastIndex;t=R.keywordPatternRe.exec(M)}n+=M.substr(e);I.addText(n)}function p(){if(M==="")return;let e=null;if(typeof R.subLanguage==="string"){if(!t[R.subLanguage]){I.addText(M);return}e=u(R.subLanguage,M,true,A[R.subLanguage]);A[R.subLanguage]=e._top}else{e=g(M,R.subLanguage.length?R.subLanguage:null)}if(R.relevance>0){T+=e.relevance}I.addSublanguage(e._emitter,e.language)}function f(){if(R.subLanguage!=null){p()}else{d()}M=""}function h(e,t){let n=1;while(t[n]!==undefined){if(!e._emit[n]){n++;continue}const s=N.classNameAliases[e[n]]||e[n];const i=t[n];if(s){I.addKeyword(i,s)}else{M=i;d();M=""}n++}}function m(e,t){if(e.scope&&typeof e.scope==="string"){I.openNode(N.classNameAliases[e.scope]||e.scope)}if(e.beginScope){if(e.beginScope._wrap){I.addKeyword(M,N.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap);M=""}else if(e.beginScope._multi){h(e.beginScope,t);M=""}}R=Object.create(e,{parent:{value:R}});return R}function y(e,t,n){let s=j(e.endRe,n);if(s){if(e["on:end"]){const n=new b(e);e["on:end"](t,n);if(n.isMatchIgnored)s=false}if(s){while(e.endsParent&&e.parent){e=e.parent}return e}}if(e.endsWithParent){return y(e.parent,t,n)}}function x(e){if(R.matcher.regexIndex===0){M+=e[0];return 1}else{D=true;return 0}}function w(e){const t=e[0];const n=e.rule;const s=new b(n);const i=[n.__beforeBegin,n["on:begin"]];for(const n of i){if(!n)continue;n(e,s);if(s.isMatchIgnored)return x(t)}if(n.skip){M+=t}else{if(n.excludeBegin){M+=t}f();if(!n.returnBegin&&!n.excludeBegin){M=t}}m(n,e);return n.returnBegin?0:t.length}function v(e){const t=e[0];const s=n.substr(e.index);const i=y(R,e,s);if(!i){return Me}const o=R;if(R.endScope&&R.endScope._wrap){f();I.addKeyword(t,R.endScope._wrap)}else if(R.endScope&&R.endScope._multi){f();h(R.endScope,e)}else if(o.skip){M+=t}else{if(!(o.returnEnd||o.excludeEnd)){M+=t}f();if(o.excludeEnd){M=t}}do{if(R.scope){I.closeNode()}if(!R.skip&&!R.subLanguage){T+=R.relevance}R=R.parent}while(R!==i.parent);if(i.starts){m(i.starts,e)}return o.returnEnd?0:t.length}function E(){const e=[];for(let t=R;t!==N;t=t.parent){if(t.scope){e.unshift(t.scope)}}e.forEach((e=>I.openNode(e)))}let k={};function _(t,o){const a=o&&o[0];M+=t;if(a==null){f();return 0}if(k.type==="begin"&&o.type==="end"&&k.index===o.index&&a===""){M+=n.slice(o.index,o.index+1);if(!i){const t=new Error(`0 width match regex (${e})`);t.languageName=e;t.badRule=k.rule;throw t}return 1}k=o;if(o.type==="begin"){return w(o)}else if(o.type==="illegal"&&!s){const e=new Error('Illegal lexeme "'+a+'" for mode "'+(R.scope||"<unnamed>")+'"');e.mode=R;throw e}else if(o.type==="end"){const e=v(o);if(e!==Me){return e}}if(o.type==="illegal"&&a===""){return 1}if(L>1e5&&L>o.index*3){const e=new Error("potential infinite loop, way more iterations than matches");throw e}M+=a;return a.length}const N=$(e);if(!N){ye(o.replace("{}",e));throw new Error('Unknown language: "'+e+'"')}const S=Oe(N);let O="";let R=a||S;const A={};const I=new r.__emitter(r);E();let M="";let T=0;let B=0;let L=0;let D=false;try{R.matcher.considerAll();for(;;){L++;if(D){D=false}else{R.matcher.considerAll()}R.matcher.lastIndex=B;const e=R.matcher.exec(n);if(!e)break;const t=n.substring(B,e.index);const s=_(t,e);B=e.index+s}_(n.substr(B));I.closeAllNodes();I.finalize();O=I.toHTML();return{language:e,value:O,relevance:T,illegal:false,_emitter:I,_top:R}}catch(t){if(t.message&&t.message.includes("Illegal")){return{language:e,value:je(n),illegal:true,relevance:0,_illegalBy:{message:t.message,index:B,context:n.slice(B-100,B+100),mode:t.mode,resultSoFar:O},_emitter:I}}else if(i){return{language:e,value:je(n),illegal:false,relevance:0,errorRaised:t,_emitter:I,_top:R}}else{throw t}}}function p(e){const t={value:je(e),illegal:false,relevance:0,_top:a,_emitter:new r.__emitter(r)};t._emitter.addText(e);return t}function g(e,n){n=n||r.languages||Object.keys(t);const s=p(e);const i=n.filter($).filter(A).map((t=>u(t,e,false)));i.unshift(s);const o=i.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if($(e.language).supersetOf===t.language){return 1}else if($(t.language).supersetOf===e.language){return-1}}return 0}));const[a,c]=o;const l=a;l.secondBest=c;return l}function f(e,t,s){const i=t&&n[t]||s;e.classList.add("hljs");e.classList.add(`language-${i}`)}function m(e){let t=null;const n=l(e);if(c(n))return;T("before:highlightElement",{el:e,language:n});if(!r.ignoreUnescapedHTML&&e.children.length>0){console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk.");console.warn("https://github.com/highlightjs/highlight.js/issues/2886");console.warn(e)}t=e;const s=t.textContent;const i=n?d(s,{language:n,ignoreIllegals:true}):g(s);e.innerHTML=i.value;f(e,n,i.language);e.result={language:i.language,re:i.relevance,relevance:i.relevance};if(i.secondBest){e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}}T("after:highlightElement",{el:e,result:i,text:s})}function y(e){r=Ie(r,e)}const x=()=>{E();we("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function w(){E();we("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let v=false;function E(){if(document.readyState==="loading"){v=true;return}const e=document.querySelectorAll(r.cssSelector);e.forEach(m)}function k(){if(v)E()}if(typeof window!=="undefined"&&window.addEventListener){window.addEventListener("DOMContentLoaded",k,false)}function N(n,s){let o=null;try{o=s(e)}catch(e){ye("Language definition for '{}' could not be registered.".replace("{}",n));if(!i){throw e}else{ye(e)}o=a}if(!o.name)o.name=n;t[n]=o;o.rawDefinition=s.bind(null,e);if(o.aliases){R(o.aliases,{languageName:n})}}function S(e){delete t[e];for(const t of Object.keys(n)){if(n[t]===e){delete n[t]}}}function O(){return Object.keys(t)}function $(e){e=(e||"").toLowerCase();return t[e]||t[n[e]]}function R(e,{languageName:t}){if(typeof e==="string"){e=[e]}e.forEach((e=>{n[e.toLowerCase()]=t}))}function A(e){const t=$(e);return t&&!t.disableAutodetect}function I(e){if(e["before:highlightBlock"]&&!e["before:highlightElement"]){e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}}if(e["after:highlightBlock"]&&!e["after:highlightElement"]){e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))}}}function M(e){I(e);s.push(e)}function T(e,t){const n=e;s.forEach((function(e){if(e[n]){e[n](t)}}))}function B(e){we("10.7.0","highlightBlock will be removed entirely in v12.0");we("10.7.0","Please use highlightElement now.");return m(e)}Object.assign(e,{highlight:d,highlightAuto:g,highlightAll:E,highlightElement:m,highlightBlock:B,configure:y,initHighlighting:x,initHighlightingOnLoad:w,registerLanguage:N,unregisterLanguage:S,listLanguages:O,getLanguage:$,registerAliases:R,autoDetection:A,inherit:Ie,addPlugin:M});e.debugMode=function(){i=false};e.safeMode=function(){i=true};e.versionString=Ae;for(const e in ie){if(typeof ie[e]==="object"){h(ie[e])}}Object.assign(e,ie);return e};var Le=Be({});var De=Le;const Ce="[A-Za-z$_][0-9A-Za-z$_]*";const Ue=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"];const Pe=["true","false","null","undefined","NaN","Infinity"];const He=["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"];const ze=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"];const Ge=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"];const Je=["arguments","this","super","console","window","document","localStorage","module","global"];const Ke=[].concat(Ge,He,ze);function Ze(e){if(!e)return null;if(typeof e==="string")return e;return e.source}function Fe(e){return We("(?=",e,")")}function We(...e){const t=e.map((e=>Ze(e))).join("");return t}function Xe(e){const t=(e,{after:t})=>{const n="</"+e[0].slice(1);const s=e.input.indexOf(n,t);return s!==-1};const n=Ce;const s={begin:"<>",end:"</>"};const i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const s=e[0].length+e.index;const i=e.input[s];if(i==="<"){n.ignoreMatch();return}if(i===">"){if(!t(e,{after:s})){n.ignoreMatch()}}}};const o={$pattern:Ce,keyword:Ue,literal:Pe,built_in:Ke,"variable.language":Je};const a="[0-9](_?[0-9])*";const r=`\\.(${a})`;const c=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;const l={className:"number",variants:[{begin:`(\\b(${c})((${r})|\\.)?|(${r}))`+`[eE][+-]?(${a})\\b`},{begin:`\\b(${c})\\b((${r})\\b|\\.)?|(${r})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0};const d={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]};const u={begin:"html`",end:"",starts:{end:"`",returnEnd:false,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"xml"}};const p={begin:"css`",end:"",starts:{end:"`",returnEnd:false,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"css"}};const g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,d]};const f=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:true,excludeBegin:true,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:true,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]});const h={className:"comment",variants:[f,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]};const b=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,p,g,l,e.REGEXP_MODE];d.contains=b.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(b)});const m=[].concat(h,d.contains);const y=m.concat([{begin:/\(/,end:/\)/,keywords:o,contains:["self"].concat(m)}]);const x={className:"params",begin:/\(/,end:/\)/,excludeBegin:true,excludeEnd:true,keywords:o,contains:y};const w={variants:[{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}},{match:[/extends/,/\s+/,We(n,"(",We(/\./,n),")*")],scope:{1:"keyword",3:"title.class.inherited"}}]};const v={relevance:0,match:/\b[A-Z][a-z]+([A-Z][a-z]+)*/,className:"title.class",keywords:{_:[...He,...ze]}};const E={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/};const k={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/};const _={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function N(e){return We("(?!",e.join("|"),")")}const S={match:We(/\b/,N([...Ge,"super"]),n,Fe(/\(/)),className:"title.function",relevance:0};const O={begin:We(/\./,Fe(We(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:true,keywords:"prototype",className:"property",relevance:0};const $={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]};const R="(\\("+"[^()]*(\\("+"[^()]*(\\("+"[^()]*"+"\\)[^()]*)*"+"\\)[^()]*)*"+"\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>";const A={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,Fe(R)],className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:y},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),E,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,p,g,h,l,v,{className:"attr",begin:n+Fe(":"),relevance:0},A,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,e.REGEXP_MODE,{className:"function",begin:R,returnBegin:true,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:true},{begin:/\(/,end:/\)/,excludeBegin:true,excludeEnd:true,keywords:o,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:true,contains:["self"]}]}]},k,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\("+"[^()]*(\\("+"[^()]*(\\("+"[^()]*"+"\\)[^()]*)*"+"\\)[^()]*)*"+"\\)\\s*\\{",returnBegin:true,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},O,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},S,_,w,$,{match:/\$[(.]/}]}}function qe(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01};const n={match:/[{}[\],:]/,className:"punctuation",relevance:0};const s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[t,n,e.QUOTE_STRING_MODE,s,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}De.registerLanguage("javascript",Xe);De.registerLanguage("json",qe);async function Ve(e,i){const o=t(i.sandboxDiv);o.header_row;o.header.append("span").html(e.type!="nestedCard"?`<a href="${sessionStorage.getItem("hostURL")}/?appcard=${e.name}">${e.name}</a>`:e.name);o.body.style("overflow","hidden").style("background-color","white");if(e.type=="nestedCard")return Qe(e,o,i);const a=e.sandboxJson?await n(`${i.app.cardsPath}/${e.sandboxJson}.json`):await n(`${i.app.cardsPath}/${e.sandboxHtml}.txt`);if(a.error){s(o.body.insert("div","div"),a.error);return}if(e.type=="card")return Ye(e,a,o,i);if(e.type=="dsButton")return ht(i,a,o)}async function Qe(e,t,i){t.body.style("justify-content","center").style("background-color","#f2ebdc");const o=t.body.append("ul").style("list-style","none").style("display","grid").style("grid-template-columns","40vw 40vw").style("grid-template-rows","repeat(1, auto)").style("gap","5px");const a=e.children.filter((e=>!e.hidden));t.header.trail=new u({holder:t.header,crumbs:a});a.forEach((e=>{const r=o.append("li");r.attr("class","sjpp-app-drawer-card").style("padding","10px").style("margin","5px").html(`<p style="margin-left: 12px; font-size:14.5px;font-weight:500; display: block;">${e.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;">${e.description}</p>`).on("click",(async r=>{r.stopPropagation();o.selectAll("*").remove();const c=e.sandboxJson?await n(`${i.app.cardsPath}/${e.sandboxJson}.json`):await n(`${i.app.cardsPath}/${e.sandboxHtml}.txt`);if(c.error){s(t.body.insert("div","div"),c.error);return}if(e.type=="card"){t.header.trail.main();Ye(e,c,t,i);const n=a.findIndex((t=>t==e));t.header.trail.update(n)}if(e.type=="dsButton")return ht(i.app.opts,c,t)}));return JSON.stringify(r)}))}async function Ye(e,t,n,s){if(e.sandboxHtml){const e=await t.text();return n.body.append("div").style("padding","0vw 0vw 2vw 0vw").append("div").style("background-color","white").style("margin","0vw 10vw").style("padding","10px").append("div").style("margin","0vw 5vw").html(e)}n.body.style("background-color","white");const i={intro:t.intro,ppcalls:t.ppcalls.filter((e=>!e.hidden)),buttons:t.buttons,arrowButtons:t.arrowButtons,ribbonMessage:t.ribbonMessage,citation:t.citation_id};it(i.intro,n.body);if(e.ribbon)it(i.ribbonMessage,n.body,e.ribbon);const o=n.body.append("div");const a=n.body.append("div");ot(i.buttons,o);rt(i,"main",o,a,s);if(e.disableTopTabs)et(i.ppcalls[0],n.body,e,s);else{const t=n.body.append("div").style("display","flex").style("align-content","end").style("justify-content","center").style("border","none").style("border-bottom","1px solid lightgray").style("width","100%").style("font-size","20px");const o=n.body.append("div");nt(i.ppcalls,e,t,o,n,s)}}function et(e,t,n,s){it(e.message,t);const i=t.append("div").style("margin-bottom","20px");const o=t.append("div");ot(e.buttons,i);lt(e.download,i,n.section);ct(e.urlparam,i,n.section);rt(e,"call",i,o,s);if(!n.disableTopTabs){t.append("hr").style("border","0").style("border-top","1px dashed #e3e3e6").style("width","100%")}const a={holder:t.append("div").style("margin","20px").node(),host:e.runargs.host||sessionStorage.getItem("hostURL")};const r=JSON.parse(JSON.stringify(e.runargs));runproteinpaint(Object.assign(a,r))}function tt(e,t,n,s){const i=[];const o=e.findIndex((e=>e.isUi==true));const a=e.findIndex((e=>e.isUi==undefined));const r=o!=-1?true:false;if(r==true){i.push({label:"Add Your Data",active:false,callback:async(t,n)=>{try{const t={holder:n.contentHolder.append("div").style("margin","20px").node(),sandbox_header:n.contentHolder,host:sessionStorage.getItem("hostURL")};const s=JSON.parse(JSON.stringify(e[o].runargs));runproteinpaint(Object.assign(t,s));delete n.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}if(e.length==1&&r!=true||e.length==2&&r==true){i.push({label:"Example",active:false,callback:async(n,i)=>{try{et(e[a],i.contentHolder,t,s);delete i.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}if(e.length>1&&r==false||e.length>2&&r==true){i.push({label:"Examples",active:s?.example?true:false,callback:async(i,o)=>{try{const i=e.filter((e=>e.isUi!=true));st(t,o.contentHolder,i,n,s);delete o.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}return i}function nt(e,t,n,s,i,o){const a=tt(e,t,i,o);new l({holder:n,contentHolder:s,tabs:a}).main()}async function st(e,t,n,s,o){const a=n.map(((t,n)=>c(t,n,e.section)));s.header.trail=await new u({holder:s.header,crumbs:a});function c(t,n,c){const l=o?.example?o.example.toUpperCase()==t.label.toUpperCase():n===0;return{active:l,inTrail:l,link:`${sessionStorage.getItem("hostURL")}/?appcard=${e.name}&example=${t.label}`,label:t.label,callback:async(e,n)=>{const l=r(n.contentHolder);try{if(!n.rendered){i(n.contentHolder);et(t,n.contentHolder,c,o);l.remove()}n.rendered=true;const e=a.findIndex((e=>e==n));s.header.trail.update(e)}catch(e){l.text("Error: "+(e.message||e))}}}}s.header.trail.main();const d=t.append("div").style("display","grid").style("grid-template-columns","minmax(min-content, 10vw) minmax(60vw, 1fr)").classed("sjpp-vertical-tab-menu",true).style("word-break","break-word");const p=d.append("div").classed("sjpp-tabs-div",true).style("border-right","1px solid lightgray");const g=d.append("div").classed("sjpp-content-div",true);new l({holder:p,contentHolder:g,tabs:a,linePosition:"right",tabsPosition:"vertical",gap:"10px"}).main()}function it(e,t,n){if(n&&n.expireDate){const s=new Date;const i=new Date(n.expireDate);if(i>s&&e!=undefined&&e){function o(){const e=n.text.toLowerCase();return e[0].toUpperCase()+e.slice(1)}t.append("div").style("margin","20px").html(`<p style="display:inline-block;font-weight:bold">${o()}:  </p>${e}`)}}else if(e!=undefined&&e){t.append("div").style("margin","20px").html(e)}}function ot(e,t){if(e){e.forEach((e=>{const n=d({div:t,text:e.name});n.on("click",(t=>{t.stopPropagation();if(e.download)window.open(`${e.download}`,"_self","download");else window.open(`${e.link}`,`${e.name}`)}))}))}}function at(e,t){if(e){e.forEach((e=>{const n=`<div style="margin:10px;" class="sjpp-arrow-content">\n\t\t\t\t${e.message?`<div style="margin: 1vw;">${e.message}</div>`:""}\n\t\t\t\t${e.links?e.links.map((e=>{if(!e)return"";if(e.download){return`<a style="cursor:pointer; margin-left:20px;" onclick="event.stopPropagation();" href="${e.download}", target="_self" download>${e.name}</a>`}if(e.link){return`<a style="cursor:pointer; margin-left:20px;" onclick="event.stopPropagation();" href="${e.link}", target="_blank">${e.name}</a>`}})).join(""):""}</div>`;t.push({name:e.name,callback:async e=>{try{e.append("div").html(n)}catch(e){alert("Error: "+e)}}})}))}}async function rt(e,t,s,o,a){let r=[];if(t=="call")dt(e,r);if(e.datapreview)ft(r,e.datapreview);if(e.citation||e.data_source){const t=await n(`/${a.app.cardsPath}/citations.json`);if(t.error){console.error(`Error: ${t.error}`);return}for(const n of t.publications){if(e.citation==n.id||e.data_source==n.id){const t=e.data_source?"Data Source":"Citation";pt(r,n,t)}}}at(e.arrowButtons,r);const c=r.findIndex((e=>e.active))==-1?false:true;for(let e=0;e<r.length;e++){const t=r[e];t.btn=d({div:s,text:t.name+" ▼"});t.c=o.append("div").style("margin","20px 0px 10px 20px").style("display",c&&e==0||t.active?"block":"none");if(c&&e==0&&t.callback||t.active){t.callback(t.c);delete t.callback}t.btn.on("click",(()=>{if(t.c.style("display")!="none"){t.btn.text(t.name+" ▼").style("color","black").style("background-color","#cfe2f3");t.c.style("display","none")}else{t.btn.text(t.name+" ▲").style("color","whitesmoke").style("background-color","#487ba8");i(t.c);for(let t=0;t<r.length;t++){if(e!=t){r[t].btn.text(r[t].name+" ▼").style("color","black").style("background-color","#cfe2f3");r[t].c.style("display","none")}}}if(t.callback){t.callback(t.c);delete t.callback}}))}}function ct(e,t,n){if(e){const s=d({div:t,text:n=="apps"?"Run app from URL":"Run track from URL"});s.on("click",(t=>{const n=mt();t.stopPropagation();window.open(`${n}${e}`,"_blank")}))}}function lt(e,t,n){if(e){const s=d({div:t,text:n=="apps"?"Download App File(s)":"Download Track File(s)"});s.on("click",(t=>{t.stopPropagation();window.open(`${e}`,"_self","download")}))}}async function dt(e,t){if(e.isUi==true)return;const n=De.highlight(`runproteinpaint({\n host: "${sessionStorage.getItem("hostURL")}",\n holder: document.getElementById('a'),\n `+JSON.stringify(e.runargs,"",4).replaceAll(/"(.+)"\s*:/g,"$1:").replaceAll(/\\t/g,"\t").replaceAll(/\\n/g,"\r\t").slice(1,-1).trim()+`\r})`,{language:"javascript"}).value;const s=`<pre style="border: 1px solid #d7d7d9; align-items: center; justify-content: center; margin: 0px 10px 5px 30px; overflow:auto; max-height:400px; ${e.jsonpath?`min-height:400px;`:`min-height: auto;`}">\n\t<code style="font-size:14px; display:block;">${n}</code></pre>`;t.push({name:"Code",callback:async t=>{try{if(e.jsonpath){const n=await ut(e);const i="<p style='margin:20px 5px 20px 25px;'>ProteinPaint JS code</p>";const o=t.append("div").style("display","grid").style("grid-template-columns","repeat(auto-fit, minmax(100px, 1fr))").style("gap","5px");o.append("div").style("display","block").html(i+s);o.append("div").style("display","block").html(n)}else{t.append("div").html(s)}}catch(e){alert("Error: "+e)}}})}async function ut(e){const t=await o("textfile",{file:e.jsonpath});const n=JSON.parse(t.text);const s=e.jsonpath.split("/");const i=s[s.length-1];let a=JSON.stringify(n,"",4).split("\n");let r;if(a.length>120){a=a.slice(0,100);r=true}const c=De.highlight(a.join("\n"),{language:"json"}).value;const l=`<div>\n\t\t\t<p style="margin: 20px 5px 20px 25px; display: inline-block;">JSON code </p>\n\t\t\t<p style="display: inline-block; color: #696969; font-style:oblique;"> (contents of ${i})</p>\n\t\t</div> \n\t\t<pre style="border: 1px solid #d7d7d9; align-items: center; justify-content: center; margin: 0px 10px 5px 10px; max-height:400px; min-height:400px; overflow:auto;">\n\t\t\t<code class="sjpp-json-code" style="font-size:14px; display:block;">${r==true?`${c} ...<br><p style='margin:20px 25px; justify-content:center;'>Showing first 100 lines. To see the entire JSON, download ${i} from the button above.</p>`:`${c}`}\n\t\t\t</code>\n\t\t</pre>`;return l}function pt(e,t,n){e.push({name:n,callback:async e=>{try{e.append("div").style("margin-left","5w").html(`<span style="display: inline-block;">${t.title}. <em>${t.journal}</em>, ${t.year}.\n\t\t\t\t\t\t${t.pmid?` PMID: <a href="${t.pmidURL}" target="${t.pmid}">${t.pmid}</a>`:` doi: <a href="${t.doi}" target="${t.doi}">${t.doi}</a>`}</span>`)}catch(e){alert("Error: "+e)}}})}function gt(e,t,n,s,i){n.append("div").html(`\n\t\t${i?`<p style="display:block;">${i}<p>`:""}\n\t\t<p style="display: inline-block;">Data preview <span style="color: #696969; font-style:oblique;"> \n\t\t${t>10?`(first ${e.length} rows of ${s})</span></p>`:`(content of ${s})</span></p>`} \n\t`);const o=n.append("div").style("display","grid").style("grid-template-columns","1fr").style("max-width","80%").style("margin-left","10px").style("border","1px solid rgb(227, 227, 230)").style("white-space","pre").style("overflow-x","scroll").style("opacity","0.65").style("padding","1vw");e.forEach((e=>{o.append("code").html(e)}))}async function ft(e,t,s){e.push({name:"View Data",callback:async e=>{try{for(const s of t){const t=await n(`/cardsjson?datafile=${s.file}&tabixCoord=${s.tabixQueryCoord}`);if(t.error){console.error(`Error: ${t.error}`);return}const i=t.file;const o=i.length;const a=i.slice(0,10);const r=s.file.split("/");const c=r[r.length-1];gt(a,o,e,c,s.message)}}catch(e){alert("Error: "+e)}}})}async function ht(e,t,n){const s=e?.fromApp?e.genomes[t.button.availableGenomes[0]]:e.app.opts.genomes[t.button.availableGenomes[0]];let i;if(t.button.runargs.host){i=await yt(t.button.runargs.host)}else i=e?.fromApp?e.genomes:e.app.opts.genomes;const o={availableGenomes:t.button.availableGenomes,genome:s,intro:t.button.intro,name:t.button.name,runargs:t.button.runargs,searchBar:t.button.searchBar,dsURLparam:t.button.dsURLparam,citation:t.citation_id};const r=n.body.append("div").style("padding","1em").style("border-bottom","1px solid #d0e3ff");if(o.citation){const t=r.append("div").style("margin-bottom","20px");const n=r.append("div");await rt(o,"main",t,n,e)}if(o.intro){r.append("div").style("line-height","1.5em").style("padding","0.5em 0.5em 1em 0.5em").html(o.intro)}if(o.searchBar=="none"){const e=sessionStorage.getItem("hostURL");const t={holder:n.body.append("div").style("margin","20px").style("overflow-x","auto").node(),host:o.runargs.host||e};const s=JSON.parse(JSON.stringify(o.runargs));runproteinpaint(Object.assign(t,s));if(e!=sessionStorage.getItem("hostURL"))sessionStorage.setItem("hostURL",e);return}if(o.availableGenomes.length>1)g(r,i);else{r.append("div").style("display","inline-block").style("margin-left","20px").style("color","rgb(117, 115, 115)").text(o.availableGenomes[0])}const d=r.append("div").style("display","inline-block").style("padding","0.5em");const u=n.body.append("div").style("max-width","90vw");const p=c({genome:o.genome,tip:new a({padding:""}),row:d,searchOnly:o.searchBar=="gene"?"gene":"",focusOff:true,callback:async e=>{const t=u.insert("div",":first-child").style("max-width","90vw").style("margin","1vw");t.append("div").style("display","inline-block").style("cursor","default").style("margin","0px").style("font-size","1.5em").html("×").on("click",(()=>{t.selectAll("*").remove()}));bt(t,p,o);const n={holder:t.append("div").style("margin","20px").node(),host:sessionStorage.getItem("hostURL"),genome:o.genome.name};o.runargs.block==true?(n.position=`${p.chr}:${p.start}-${p.stop}`)&&(n.nativetracks="Refgene"):n.gene=p.geneSymbol;const s=JSON.parse(JSON.stringify(o.runargs));runproteinpaint(Object.assign(n,s))}});function g(e,t){e.append("div").style("display","inline-block").style("padding","10px 10px 0px 20px");const n=[];o.availableGenomes.forEach((e=>{n.push({label:e,callback:(n,s)=>{o.genome=t[e]}})}));new l({holder:e,tabs:n,noContent:true}).main()}}function bt(e,t,n){const s=d({div:e,text:"Run Result from URL"});const i=n.runargs.block==true?`position=${t.chr}:${t.start}-${t.stop}`:`gene=${t.geneSymbol}`;s.on("click",(e=>{e.stopPropagation();const t=mt();window.open(`${t}/?genome=${n.genome.name}&${i}&${n.dsURLparam}`,"_blank")}))}function mt(){const e=sessionStorage.getItem("hostURL");if(e.startsWith("http://localhost")||e.startsWith("https://pp")){return e}else return"https://proteinpaint.stjude.org"}async function yt(e){const t=`${e}/genomes?embedder=${sessionStorage.getItem("hostURL").replace(/^https?:\/\//,"")}`;try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP Response error for genomes url ${e.status}`);const n=await e.json();return n}catch(e){console.error(`Error fetching genomes: ${e} from ${t}`);return null}}var xt=Object.freeze({__proto__:null,openSandbox:Ve});export{xt as a,d as m,Ve as o};
|
|
1
|
+
import{d as e,n as t,b as n,j as s,p as i,q as o,M as a,v as r}from"./app-488d9fd6.js";import{a as c}from"./genesearch-d8780180.js";import{T as l}from"./toggleButtons-bb9aca2f.js";function d(e){const t=e.div.append("button").attr("type","submit").style("background-color",e.backgroundColor?e.backgroundColor:"#cfe2f3").style("margin",e.margin?e.margin:"20px 20px 0px 20px").style("padding","8px").style("border","none").style("border-radius","3px").style("display","inline-block").text(e.text);return t}class u{constructor(e){this.opts=e;this.dom={holder:e.holder,trailDiv:e.trailDiv||e.holder.append("div")};p(this)}async main(e={}){try{return await this.render()}catch(e){if(e.stack)console.log(e.stack);else throw e}}}function p(t){t.render=async()=>{t.crumbs=t.opts.crumbs;for(const e of t.crumbs){e.label=e.label||e.name;if(!e.inTrail)e.inTrail=false}const n=t.crumbs.find((e=>e.inTrail));if(!n)t.crumbs[0].inTrail=true;await t.dom.trailDiv.style("margin-left","5px").style("font-size",".75em").style("display","inline-block").classed("sjpp-breadcrumb-trail",true).selectAll("span").data(t.crumbs).enter().append("span").classed("sjpp-breadcrumb",true).html((e=>e.link?` > <a href="${e.link}">${e.label}</a>`:` > ${e.label}`)).style("display",(e=>e.inTrail?"inline-block":"none")).each((async function(t){t.div=e(this)}));const s=t.crumbs.findIndex((e=>e.inTrail));t.update(s)};t.update=(e=0)=>{t.crumbs.forEach(((t,n)=>{t.inTrail=e===n}));t.dom.trailDiv.selectAll("span").data(t.crumbs).each((async e=>{e.div.style("display",e.inTrail?"inline-block":"none")}))}}var g={exports:{}};function f(e){if(e instanceof Map){e.clear=e.delete=e.set=function(){throw new Error("map is read-only")}}else if(e instanceof Set){e.add=e.clear=e.delete=function(){throw new Error("set is read-only")}}Object.freeze(e);Object.getOwnPropertyNames(e).forEach((function(t){var n=e[t];if(typeof n=="object"&&!Object.isFrozen(n)){f(n)}}));return e}g.exports=f;g.exports.default=f;var h=g.exports;class b{constructor(e){if(e.data===undefined)e.data={};this.data=e.data;this.isMatchIgnored=false}ignoreMatch(){this.isMatchIgnored=true}}function m(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function y(e,...t){const n=Object.create(null);for(const t in e){n[t]=e[t]}t.forEach((function(e){for(const t in e){n[t]=e[t]}}));return n}const x="</span>";const w=e=>!!e.kind;const v=(e,{prefix:t})=>{if(e.includes(".")){const n=e.split(".");return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")}return`${t}${e}`};class E{constructor(e,t){this.buffer="";this.classPrefix=t.classPrefix;e.walk(this)}addText(e){this.buffer+=m(e)}openNode(e){if(!w(e))return;let t=e.kind;if(e.sublanguage){t=`language-${t}`}else{t=v(t,{prefix:this.classPrefix})}this.span(t)}closeNode(e){if(!w(e))return;this.buffer+=x}value(){return this.buffer}span(e){this.buffer+=`<span class="${e}">`}}class k{constructor(){this.rootNode={children:[]};this.stack=[this.rootNode]}get top(){return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){this.top.children.push(e)}openNode(e){const t={kind:e,children:[]};this.add(t);this.stack.push(t)}closeNode(){if(this.stack.length>1){return this.stack.pop()}return undefined}closeAllNodes(){while(this.closeNode());}toJSON(){return JSON.stringify(this.rootNode,null,4)}walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){if(typeof t==="string"){e.addText(t)}else if(t.children){e.openNode(t);t.children.forEach((t=>this._walk(e,t)));e.closeNode(t)}return e}static _collapse(e){if(typeof e==="string")return;if(!e.children)return;if(e.children.every((e=>typeof e==="string"))){e.children=[e.children.join("")]}else{e.children.forEach((e=>{k._collapse(e)}))}}}class _ extends k{constructor(e){super();this.options=e}addKeyword(e,t){if(e===""){return}this.openNode(t);this.addText(e);this.closeNode()}addText(e){if(e===""){return}this.add(e)}addSublanguage(e,t){const n=e.root;n.kind=t;n.sublanguage=true;this.add(n)}toHTML(){const e=new E(this,this.options);return e.value()}finalize(){return true}}function N(e){if(!e)return null;if(typeof e==="string")return e;return e.source}function S(e){return O("(?=",e,")")}function O(...e){const t=e.map((e=>N(e))).join("");return t}function $(e){const t=e[e.length-1];if(typeof t==="object"&&t.constructor===Object){e.splice(e.length-1,1);return t}else{return{}}}function R(...e){const t=$(e);const n="("+(t.capture?"":"?:")+e.map((e=>N(e))).join("|")+")";return n}function A(e){return new RegExp(e.toString()+"|").exec("").length-1}function j(e,t){const n=e&&e.exec(t);return n&&n.index===0}const I=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./;function M(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n;let s=N(e);let i="";while(s.length>0){const e=I.exec(s);if(!e){i+=s;break}i+=s.substring(0,e.index);s=s.substring(e.index+e[0].length);if(e[0][0]==="\\"&&e[1]){i+="\\"+String(Number(e[1])+t)}else{i+=e[0];if(e[0]==="("){n++}}}return i})).map((e=>`(${e})`)).join(t)}const T=/\b\B/;const B="[a-zA-Z]\\w*";const L="[a-zA-Z_]\\w*";const D="\\b\\d+(\\.\\d+)?";const C="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";const U="\\b(0b[01]+)";const P="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";const H=(e={})=>{const t=/^#![ ]*\//;if(e.binary){e.begin=O(t,/.*\b/,e.binary,/\b.*/)}return y({scope:"meta",begin:t,end:/$/,relevance:0,"on:begin":(e,t)=>{if(e.index!==0)t.ignoreMatch()}},e)};const z={begin:"\\\\[\\s\\S]",relevance:0};const G={scope:"string",begin:"'",end:"'",illegal:"\\n",contains:[z]};const J={scope:"string",begin:'"',end:'"',illegal:"\\n",contains:[z]};const K={begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/};const Z=function(e,t,n={}){const s=y({scope:"comment",begin:e,end:t,contains:[]},n);s.contains.push({scope:"doctag",begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:true,relevance:0});const i=R("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/);s.contains.push({begin:O(/[ ]+/,"(",i,/[.]?[:]?([.][ ]|[ ])/,"){3}")});return s};const F=Z("//","$");const W=Z("/\\*","\\*/");const X=Z("#","$");const q={scope:"number",begin:D,relevance:0};const V={scope:"number",begin:C,relevance:0};const Q={scope:"number",begin:U,relevance:0};const Y={begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,end:/\/[gimuy]*/,illegal:/\n/,contains:[z,{begin:/\[/,end:/\]/,relevance:0,contains:[z]}]}]};const ee={scope:"title",begin:B,relevance:0};const te={scope:"title",begin:L,relevance:0};const ne={begin:"\\.\\s*"+L,relevance:0};const se=function(e){return Object.assign(e,{"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{if(t.data._beginMatch!==e[1])t.ignoreMatch()}})};var ie=Object.freeze({__proto__:null,MATCH_NOTHING_RE:T,IDENT_RE:B,UNDERSCORE_IDENT_RE:L,NUMBER_RE:D,C_NUMBER_RE:C,BINARY_NUMBER_RE:U,RE_STARTERS_RE:P,SHEBANG:H,BACKSLASH_ESCAPE:z,APOS_STRING_MODE:G,QUOTE_STRING_MODE:J,PHRASAL_WORDS_MODE:K,COMMENT:Z,C_LINE_COMMENT_MODE:F,C_BLOCK_COMMENT_MODE:W,HASH_COMMENT_MODE:X,NUMBER_MODE:q,C_NUMBER_MODE:V,BINARY_NUMBER_MODE:Q,REGEXP_MODE:Y,TITLE_MODE:ee,UNDERSCORE_TITLE_MODE:te,METHOD_GUARD:ne,END_SAME_AS_BEGIN:se});function oe(e,t){const n=e.input[e.index-1];if(n==="."){t.ignoreMatch()}}function ae(e,t){if(e.className!==undefined){e.scope=e.className;delete e.className}}function re(e,t){if(!t)return;if(!e.beginKeywords)return;e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)";e.__beforeBegin=oe;e.keywords=e.keywords||e.beginKeywords;delete e.beginKeywords;if(e.relevance===undefined)e.relevance=0}function ce(e,t){if(!Array.isArray(e.illegal))return;e.illegal=R(...e.illegal)}function le(e,t){if(!e.match)return;if(e.begin||e.end)throw new Error("begin & end are not supported with match");e.begin=e.match;delete e.match}function de(e,t){if(e.relevance===undefined)e.relevance=1}const ue=(e,t)=>{if(!e.beforeMatch)return;if(e.starts)throw new Error("beforeMatch cannot be used with starts");const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]}));e.keywords=n.keywords;e.begin=O(n.beforeMatch,S(n.begin));e.starts={relevance:0,contains:[Object.assign(n,{endsParent:true})]};e.relevance=0;delete n.beforeMatch};const pe=["of","and","for","in","not","or","if","then","parent","list","value"];const ge="keyword";function fe(e,t,n=ge){const s=Object.create(null);if(typeof e==="string"){i(n,e.split(" "))}else if(Array.isArray(e)){i(n,e)}else{Object.keys(e).forEach((function(n){Object.assign(s,fe(e[n],t,n))}))}return s;function i(e,n){if(t){n=n.map((e=>e.toLowerCase()))}n.forEach((function(t){const n=t.split("|");s[n[0]]=[e,he(n[0],n[1])]}))}}function he(e,t){if(t){return Number(t)}return be(e)?0:1}function be(e){return pe.includes(e.toLowerCase())}const me={};const ye=e=>{console.error(e)};const xe=(e,...t)=>{console.log(`WARN: ${e}`,...t)};const we=(e,t)=>{if(me[`${e}/${t}`])return;console.log(`Deprecated as of ${e}. ${t}`);me[`${e}/${t}`]=true};const ve=new Error;function Ee(e,t,{key:n}){let s=0;const i=e[n];const o={};const a={};for(let e=1;e<=t.length;e++){a[e+s]=i[e];o[e+s]=true;s+=A(t[e-1])}e[n]=a;e[n]._emit=o;e[n]._multi=true}function ke(e){if(!Array.isArray(e.begin))return;if(e.skip||e.excludeBegin||e.returnBegin){ye("skip, excludeBegin, returnBegin not compatible with beginScope: {}");throw ve}if(typeof e.beginScope!=="object"||e.beginScope===null){ye("beginScope must be object");throw ve}Ee(e,e.begin,{key:"beginScope"});e.begin=M(e.begin,{joinWith:""})}function _e(e){if(!Array.isArray(e.end))return;if(e.skip||e.excludeEnd||e.returnEnd){ye("skip, excludeEnd, returnEnd not compatible with endScope: {}");throw ve}if(typeof e.endScope!=="object"||e.endScope===null){ye("endScope must be object");throw ve}Ee(e,e.end,{key:"endScope"});e.end=M(e.end,{joinWith:""})}function Ne(e){if(e.scope&&typeof e.scope==="object"&&e.scope!==null){e.beginScope=e.scope;delete e.scope}}function Se(e){Ne(e);if(typeof e.beginScope==="string"){e.beginScope={_wrap:e.beginScope}}if(typeof e.endScope==="string"){e.endScope={_wrap:e.endScope}}ke(e);_e(e)}function Oe(e){function t(t,n){return new RegExp(N(t),"m"+(e.case_insensitive?"i":"")+(n?"g":""))}class n{constructor(){this.matchIndexes={};this.regexes=[];this.matchAt=1;this.position=0}addRule(e,t){t.position=this.position++;this.matchIndexes[this.matchAt]=t;this.regexes.push([t,e]);this.matchAt+=A(e)+1}compile(){if(this.regexes.length===0){this.exec=()=>null}const e=this.regexes.map((e=>e[1]));this.matcherRe=t(M(e,{joinWith:"|"}),true);this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex;const t=this.matcherRe.exec(e);if(!t){return null}const n=t.findIndex(((e,t)=>t>0&&e!==undefined));const s=this.matchIndexes[n];t.splice(0,n);return Object.assign(t,s)}}class s{constructor(){this.rules=[];this.multiRegexes=[];this.count=0;this.lastIndex=0;this.regexIndex=0}getMatcher(e){if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n;this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n)));t.compile();this.multiRegexes[e]=t;return t}resumingScanAtSamePosition(){return this.regexIndex!==0}considerAll(){this.regexIndex=0}addRule(e,t){this.rules.push([e,t]);if(t.type==="begin")this.count++}exec(e){const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex;let n=t.exec(e);if(this.resumingScanAtSamePosition()){if(n&&n.index===this.lastIndex);else{const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1;n=t.exec(e)}}if(n){this.regexIndex+=n.position+1;if(this.regexIndex===this.count){this.considerAll()}}return n}}function i(e){const t=new s;e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"})));if(e.terminatorEnd){t.addRule(e.terminatorEnd,{type:"end"})}if(e.illegal){t.addRule(e.illegal,{type:"illegal"})}return t}function o(n,s){const a=n;if(n.isCompiled)return a;[ae,le,Se,ue].forEach((e=>e(n,s)));e.compilerExtensions.forEach((e=>e(n,s)));n.__beforeBegin=null;[re,ce,de].forEach((e=>e(n,s)));n.isCompiled=true;let r=null;if(typeof n.keywords==="object"&&n.keywords.$pattern){n.keywords=Object.assign({},n.keywords);r=n.keywords.$pattern;delete n.keywords.$pattern}r=r||/\w+/;if(n.keywords){n.keywords=fe(n.keywords,e.case_insensitive)}a.keywordPatternRe=t(r,true);if(s){if(!n.begin)n.begin=/\B|\b/;a.beginRe=t(n.begin);if(!n.end&&!n.endsWithParent)n.end=/\B|\b/;if(n.end)a.endRe=t(n.end);a.terminatorEnd=N(n.end)||"";if(n.endsWithParent&&s.terminatorEnd){a.terminatorEnd+=(n.end?"|":"")+s.terminatorEnd}}if(n.illegal)a.illegalRe=t(n.illegal);if(!n.contains)n.contains=[];n.contains=[].concat(...n.contains.map((function(e){return Re(e==="self"?n:e)})));n.contains.forEach((function(e){o(e,a)}));if(n.starts){o(n.starts,s)}a.matcher=i(a);return a}if(!e.compilerExtensions)e.compilerExtensions=[];if(e.contains&&e.contains.includes("self")){throw new Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")}e.classNameAliases=y(e.classNameAliases||{});return o(e)}function $e(e){if(!e)return false;return e.endsWithParent||$e(e.starts)}function Re(e){if(e.variants&&!e.cachedVariants){e.cachedVariants=e.variants.map((function(t){return y(e,{variants:null},t)}))}if(e.cachedVariants){return e.cachedVariants}if($e(e)){return y(e,{starts:e.starts?y(e.starts):null})}if(Object.isFrozen(e)){return y(e)}return e}var Ae="11.2.0";const je=m;const Ie=y;const Me=Symbol("nomatch");const Te=7;const Be=function(e){const t=Object.create(null);const n=Object.create(null);const s=[];let i=true;const o="Could not find the language '{}', did you forget to load/include a language module?";const a={disableAutodetect:true,name:"Plain text",contains:[]};let r={ignoreUnescapedHTML:false,noHighlightRe:/^(no-?highlight)$/i,languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",cssSelector:"pre code",languages:null,__emitter:_};function c(e){return r.noHighlightRe.test(e)}function l(e){let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"";const n=r.languageDetectRe.exec(t);if(n){const t=$(n[1]);if(!t){xe(o.replace("{}",n[1]));xe("Falling back to no-highlight mode for this block.",e)}return t?n[1]:"no-highlight"}return t.split(/\s+/).find((e=>c(e)||$(e)))}function d(e,t,n){let s="";let i="";if(typeof t==="object"){s=e;n=t.ignoreIllegals;i=t.language}else{we("10.7.0","highlight(lang, code, ...args) has been deprecated.");we("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277");i=e;s=t}if(n===undefined){n=true}const o={code:s,language:i};T("before:highlight",o);const a=o.result?o.result:u(o.language,o.code,n);a.code=o.code;T("after:highlight",a);return a}function u(e,n,s,a){const c=Object.create(null);function l(e,t){return e.keywords[t]}function d(){if(!R.keywords){I.addText(M);return}let e=0;R.keywordPatternRe.lastIndex=0;let t=R.keywordPatternRe.exec(M);let n="";while(t){n+=M.substring(e,t.index);const s=N.case_insensitive?t[0].toLowerCase():t[0];const i=l(R,s);if(i){const[e,o]=i;I.addText(n);n="";c[s]=(c[s]||0)+1;if(c[s]<=Te)T+=o;if(e.startsWith("_")){n+=t[0]}else{const n=N.classNameAliases[e]||e;I.addKeyword(t[0],n)}}else{n+=t[0]}e=R.keywordPatternRe.lastIndex;t=R.keywordPatternRe.exec(M)}n+=M.substr(e);I.addText(n)}function p(){if(M==="")return;let e=null;if(typeof R.subLanguage==="string"){if(!t[R.subLanguage]){I.addText(M);return}e=u(R.subLanguage,M,true,A[R.subLanguage]);A[R.subLanguage]=e._top}else{e=g(M,R.subLanguage.length?R.subLanguage:null)}if(R.relevance>0){T+=e.relevance}I.addSublanguage(e._emitter,e.language)}function f(){if(R.subLanguage!=null){p()}else{d()}M=""}function h(e,t){let n=1;while(t[n]!==undefined){if(!e._emit[n]){n++;continue}const s=N.classNameAliases[e[n]]||e[n];const i=t[n];if(s){I.addKeyword(i,s)}else{M=i;d();M=""}n++}}function m(e,t){if(e.scope&&typeof e.scope==="string"){I.openNode(N.classNameAliases[e.scope]||e.scope)}if(e.beginScope){if(e.beginScope._wrap){I.addKeyword(M,N.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap);M=""}else if(e.beginScope._multi){h(e.beginScope,t);M=""}}R=Object.create(e,{parent:{value:R}});return R}function y(e,t,n){let s=j(e.endRe,n);if(s){if(e["on:end"]){const n=new b(e);e["on:end"](t,n);if(n.isMatchIgnored)s=false}if(s){while(e.endsParent&&e.parent){e=e.parent}return e}}if(e.endsWithParent){return y(e.parent,t,n)}}function x(e){if(R.matcher.regexIndex===0){M+=e[0];return 1}else{D=true;return 0}}function w(e){const t=e[0];const n=e.rule;const s=new b(n);const i=[n.__beforeBegin,n["on:begin"]];for(const n of i){if(!n)continue;n(e,s);if(s.isMatchIgnored)return x(t)}if(n.skip){M+=t}else{if(n.excludeBegin){M+=t}f();if(!n.returnBegin&&!n.excludeBegin){M=t}}m(n,e);return n.returnBegin?0:t.length}function v(e){const t=e[0];const s=n.substr(e.index);const i=y(R,e,s);if(!i){return Me}const o=R;if(R.endScope&&R.endScope._wrap){f();I.addKeyword(t,R.endScope._wrap)}else if(R.endScope&&R.endScope._multi){f();h(R.endScope,e)}else if(o.skip){M+=t}else{if(!(o.returnEnd||o.excludeEnd)){M+=t}f();if(o.excludeEnd){M=t}}do{if(R.scope){I.closeNode()}if(!R.skip&&!R.subLanguage){T+=R.relevance}R=R.parent}while(R!==i.parent);if(i.starts){m(i.starts,e)}return o.returnEnd?0:t.length}function E(){const e=[];for(let t=R;t!==N;t=t.parent){if(t.scope){e.unshift(t.scope)}}e.forEach((e=>I.openNode(e)))}let k={};function _(t,o){const a=o&&o[0];M+=t;if(a==null){f();return 0}if(k.type==="begin"&&o.type==="end"&&k.index===o.index&&a===""){M+=n.slice(o.index,o.index+1);if(!i){const t=new Error(`0 width match regex (${e})`);t.languageName=e;t.badRule=k.rule;throw t}return 1}k=o;if(o.type==="begin"){return w(o)}else if(o.type==="illegal"&&!s){const e=new Error('Illegal lexeme "'+a+'" for mode "'+(R.scope||"<unnamed>")+'"');e.mode=R;throw e}else if(o.type==="end"){const e=v(o);if(e!==Me){return e}}if(o.type==="illegal"&&a===""){return 1}if(L>1e5&&L>o.index*3){const e=new Error("potential infinite loop, way more iterations than matches");throw e}M+=a;return a.length}const N=$(e);if(!N){ye(o.replace("{}",e));throw new Error('Unknown language: "'+e+'"')}const S=Oe(N);let O="";let R=a||S;const A={};const I=new r.__emitter(r);E();let M="";let T=0;let B=0;let L=0;let D=false;try{R.matcher.considerAll();for(;;){L++;if(D){D=false}else{R.matcher.considerAll()}R.matcher.lastIndex=B;const e=R.matcher.exec(n);if(!e)break;const t=n.substring(B,e.index);const s=_(t,e);B=e.index+s}_(n.substr(B));I.closeAllNodes();I.finalize();O=I.toHTML();return{language:e,value:O,relevance:T,illegal:false,_emitter:I,_top:R}}catch(t){if(t.message&&t.message.includes("Illegal")){return{language:e,value:je(n),illegal:true,relevance:0,_illegalBy:{message:t.message,index:B,context:n.slice(B-100,B+100),mode:t.mode,resultSoFar:O},_emitter:I}}else if(i){return{language:e,value:je(n),illegal:false,relevance:0,errorRaised:t,_emitter:I,_top:R}}else{throw t}}}function p(e){const t={value:je(e),illegal:false,relevance:0,_top:a,_emitter:new r.__emitter(r)};t._emitter.addText(e);return t}function g(e,n){n=n||r.languages||Object.keys(t);const s=p(e);const i=n.filter($).filter(A).map((t=>u(t,e,false)));i.unshift(s);const o=i.sort(((e,t)=>{if(e.relevance!==t.relevance)return t.relevance-e.relevance;if(e.language&&t.language){if($(e.language).supersetOf===t.language){return 1}else if($(t.language).supersetOf===e.language){return-1}}return 0}));const[a,c]=o;const l=a;l.secondBest=c;return l}function f(e,t,s){const i=t&&n[t]||s;e.classList.add("hljs");e.classList.add(`language-${i}`)}function m(e){let t=null;const n=l(e);if(c(n))return;T("before:highlightElement",{el:e,language:n});if(!r.ignoreUnescapedHTML&&e.children.length>0){console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk.");console.warn("https://github.com/highlightjs/highlight.js/issues/2886");console.warn(e)}t=e;const s=t.textContent;const i=n?d(s,{language:n,ignoreIllegals:true}):g(s);e.innerHTML=i.value;f(e,n,i.language);e.result={language:i.language,re:i.relevance,relevance:i.relevance};if(i.secondBest){e.secondBest={language:i.secondBest.language,relevance:i.secondBest.relevance}}T("after:highlightElement",{el:e,result:i,text:s})}function y(e){r=Ie(r,e)}const x=()=>{E();we("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")};function w(){E();we("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")}let v=false;function E(){if(document.readyState==="loading"){v=true;return}const e=document.querySelectorAll(r.cssSelector);e.forEach(m)}function k(){if(v)E()}if(typeof window!=="undefined"&&window.addEventListener){window.addEventListener("DOMContentLoaded",k,false)}function N(n,s){let o=null;try{o=s(e)}catch(e){ye("Language definition for '{}' could not be registered.".replace("{}",n));if(!i){throw e}else{ye(e)}o=a}if(!o.name)o.name=n;t[n]=o;o.rawDefinition=s.bind(null,e);if(o.aliases){R(o.aliases,{languageName:n})}}function S(e){delete t[e];for(const t of Object.keys(n)){if(n[t]===e){delete n[t]}}}function O(){return Object.keys(t)}function $(e){e=(e||"").toLowerCase();return t[e]||t[n[e]]}function R(e,{languageName:t}){if(typeof e==="string"){e=[e]}e.forEach((e=>{n[e.toLowerCase()]=t}))}function A(e){const t=$(e);return t&&!t.disableAutodetect}function I(e){if(e["before:highlightBlock"]&&!e["before:highlightElement"]){e["before:highlightElement"]=t=>{e["before:highlightBlock"](Object.assign({block:t.el},t))}}if(e["after:highlightBlock"]&&!e["after:highlightElement"]){e["after:highlightElement"]=t=>{e["after:highlightBlock"](Object.assign({block:t.el},t))}}}function M(e){I(e);s.push(e)}function T(e,t){const n=e;s.forEach((function(e){if(e[n]){e[n](t)}}))}function B(e){we("10.7.0","highlightBlock will be removed entirely in v12.0");we("10.7.0","Please use highlightElement now.");return m(e)}Object.assign(e,{highlight:d,highlightAuto:g,highlightAll:E,highlightElement:m,highlightBlock:B,configure:y,initHighlighting:x,initHighlightingOnLoad:w,registerLanguage:N,unregisterLanguage:S,listLanguages:O,getLanguage:$,registerAliases:R,autoDetection:A,inherit:Ie,addPlugin:M});e.debugMode=function(){i=false};e.safeMode=function(){i=true};e.versionString=Ae;for(const e in ie){if(typeof ie[e]==="object"){h(ie[e])}}Object.assign(e,ie);return e};var Le=Be({});var De=Le;const Ce="[A-Za-z$_][0-9A-Za-z$_]*";const Ue=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends"];const Pe=["true","false","null","undefined","NaN","Infinity"];const He=["Intl","DataView","Number","Math","Date","String","RegExp","Object","Function","Boolean","Error","Symbol","Set","Map","WeakSet","WeakMap","Proxy","Reflect","JSON","Promise","Float64Array","Int16Array","Int32Array","Int8Array","Uint16Array","Uint32Array","Float32Array","Array","Uint8Array","Uint8ClampedArray","ArrayBuffer","BigInt64Array","BigUint64Array","BigInt"];const ze=["EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"];const Ge=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"];const Je=["arguments","this","super","console","window","document","localStorage","module","global"];const Ke=[].concat(Ge,He,ze);function Ze(e){if(!e)return null;if(typeof e==="string")return e;return e.source}function Fe(e){return We("(?=",e,")")}function We(...e){const t=e.map((e=>Ze(e))).join("");return t}function Xe(e){const t=(e,{after:t})=>{const n="</"+e[0].slice(1);const s=e.input.indexOf(n,t);return s!==-1};const n=Ce;const s={begin:"<>",end:"</>"};const i={begin:/<[A-Za-z0-9\\._:-]+/,end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{const s=e[0].length+e.index;const i=e.input[s];if(i==="<"){n.ignoreMatch();return}if(i===">"){if(!t(e,{after:s})){n.ignoreMatch()}}}};const o={$pattern:Ce,keyword:Ue,literal:Pe,built_in:Ke,"variable.language":Je};const a="[0-9](_?[0-9])*";const r=`\\.(${a})`;const c=`0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*`;const l={className:"number",variants:[{begin:`(\\b(${c})((${r})|\\.)?|(${r}))`+`[eE][+-]?(${a})\\b`},{begin:`\\b(${c})\\b((${r})\\b|\\.)?|(${r})\\b`},{begin:`\\b(0|[1-9](_?[0-9])*)n\\b`},{begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{begin:"\\b0[0-7]+n?\\b"}],relevance:0};const d={className:"subst",begin:"\\$\\{",end:"\\}",keywords:o,contains:[]};const u={begin:"html`",end:"",starts:{end:"`",returnEnd:false,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"xml"}};const p={begin:"css`",end:"",starts:{end:"`",returnEnd:false,contains:[e.BACKSLASH_ESCAPE,d],subLanguage:"css"}};const g={className:"string",begin:"`",end:"`",contains:[e.BACKSLASH_ESCAPE,d]};const f=e.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:true,excludeBegin:true,relevance:0},{className:"variable",begin:n+"(?=\\s*(-)|$)",endsParent:true,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]});const h={className:"comment",variants:[f,e.C_BLOCK_COMMENT_MODE,e.C_LINE_COMMENT_MODE]};const b=[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,p,g,l,e.REGEXP_MODE];d.contains=b.concat({begin:/\{/,end:/\}/,keywords:o,contains:["self"].concat(b)});const m=[].concat(h,d.contains);const y=m.concat([{begin:/\(/,end:/\)/,keywords:o,contains:["self"].concat(m)}]);const x={className:"params",begin:/\(/,end:/\)/,excludeBegin:true,excludeEnd:true,keywords:o,contains:y};const w={variants:[{match:[/class/,/\s+/,n],scope:{1:"keyword",3:"title.class"}},{match:[/extends/,/\s+/,We(n,"(",We(/\./,n),")*")],scope:{1:"keyword",3:"title.class.inherited"}}]};const v={relevance:0,match:/\b[A-Z][a-z]+([A-Z][a-z]+)*/,className:"title.class",keywords:{_:[...He,...ze]}};const E={label:"use_strict",className:"meta",relevance:10,begin:/^\s*['"]use (strict|asm)['"]/};const k={variants:[{match:[/function/,/\s+/,n,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],className:{1:"keyword",3:"title.function"},label:"func.def",contains:[x],illegal:/%/};const _={relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,className:"variable.constant"};function N(e){return We("(?!",e.join("|"),")")}const S={match:We(/\b/,N([...Ge,"super"]),n,Fe(/\(/)),className:"title.function",relevance:0};const O={begin:We(/\./,Fe(We(n,/(?![0-9A-Za-z$_(])/))),end:n,excludeBegin:true,keywords:"prototype",className:"property",relevance:0};const $={match:[/get|set/,/\s+/,n,/(?=\()/],className:{1:"keyword",3:"title.function"},contains:[{begin:/\(\)/},x]};const R="(\\("+"[^()]*(\\("+"[^()]*(\\("+"[^()]*"+"\\)[^()]*)*"+"\\)[^()]*)*"+"\\)|"+e.UNDERSCORE_IDENT_RE+")\\s*=>";const A={match:[/const|var|let/,/\s+/,n,/\s*/,/=\s*/,Fe(R)],className:{1:"keyword",3:"title.function"},contains:[x]};return{name:"Javascript",aliases:["js","jsx","mjs","cjs"],keywords:o,exports:{PARAMS_CONTAINS:y},illegal:/#(?![$_A-z])/,contains:[e.SHEBANG({label:"shebang",binary:"node",relevance:5}),E,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,u,p,g,h,l,v,{className:"attr",begin:n+Fe(":"),relevance:0},A,{begin:"("+e.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",keywords:"return throw case",relevance:0,contains:[h,e.REGEXP_MODE,{className:"function",begin:R,returnBegin:true,end:"\\s*=>",contains:[{className:"params",variants:[{begin:e.UNDERSCORE_IDENT_RE,relevance:0},{className:null,begin:/\(\s*\)/,skip:true},{begin:/\(/,end:/\)/,excludeBegin:true,excludeEnd:true,keywords:o,contains:y}]}]},{begin:/,/,relevance:0},{match:/\s+/,relevance:0},{variants:[{begin:s.begin,end:s.end},{begin:i.begin,"on:begin":i.isTrulyOpeningTag,end:i.end}],subLanguage:"xml",contains:[{begin:i.begin,end:i.end,skip:true,contains:["self"]}]}]},k,{beginKeywords:"while if switch catch for"},{begin:"\\b(?!function)"+e.UNDERSCORE_IDENT_RE+"\\("+"[^()]*(\\("+"[^()]*(\\("+"[^()]*"+"\\)[^()]*)*"+"\\)[^()]*)*"+"\\)\\s*\\{",returnBegin:true,label:"func.def",contains:[x,e.inherit(e.TITLE_MODE,{begin:n,className:"title.function"})]},{match:/\.\.\./,relevance:0},O,{match:"\\$"+n,relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},contains:[x]},S,_,w,$,{match:/\$[(.]/}]}}function qe(e){const t={className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/,relevance:1.01};const n={match:/[{}[\],:]/,className:"punctuation",relevance:0};const s={beginKeywords:["true","false","null"].join(" ")};return{name:"JSON",contains:[t,n,e.QUOTE_STRING_MODE,s,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE],illegal:"\\S"}}De.registerLanguage("javascript",Xe);De.registerLanguage("json",qe);async function Ve(e,i){const o=t(i.sandboxDiv);o.header_row;o.header.append("span").html(e.type!="nestedCard"?`<a href="${sessionStorage.getItem("hostURL")}/?appcard=${e.name}">${e.name}</a>`:e.name);o.body.style("overflow","hidden").style("background-color","white");if(e.type=="nestedCard")return Qe(e,o,i);const a=e.sandboxJson?await n(`${i.app.cardsPath}/${e.sandboxJson}.json`):await n(`${i.app.cardsPath}/${e.sandboxHtml}.txt`);if(a.error){s(o.body.insert("div","div"),a.error);return}if(e.type=="card")return Ye(e,a,o,i);if(e.type=="dsButton")return ht(i,a,o)}async function Qe(e,t,i){t.body.style("justify-content","center").style("background-color","#f2ebdc");const o=t.body.append("ul").style("list-style","none").style("display","grid").style("grid-template-columns","40vw 40vw").style("grid-template-rows","repeat(1, auto)").style("gap","5px");const a=e.children.filter((e=>!e.hidden));t.header.trail=new u({holder:t.header,crumbs:a});a.forEach((e=>{const r=o.append("li");r.attr("class","sjpp-app-drawer-card").style("padding","10px").style("margin","5px").html(`<p style="margin-left: 12px; font-size:14.5px;font-weight:500; display: block;">${e.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;">${e.description}</p>`).on("click",(async r=>{r.stopPropagation();o.selectAll("*").remove();const c=e.sandboxJson?await n(`${i.app.cardsPath}/${e.sandboxJson}.json`):await n(`${i.app.cardsPath}/${e.sandboxHtml}.txt`);if(c.error){s(t.body.insert("div","div"),c.error);return}if(e.type=="card"){t.header.trail.main();Ye(e,c,t,i);const n=a.findIndex((t=>t==e));t.header.trail.update(n)}if(e.type=="dsButton")return ht(i.app.opts,c,t)}));return JSON.stringify(r)}))}async function Ye(e,t,n,s){if(e.sandboxHtml){const e=await t.text();return n.body.append("div").style("padding","0vw 0vw 2vw 0vw").append("div").style("background-color","white").style("margin","0vw 10vw").style("padding","10px").append("div").style("margin","0vw 5vw").html(e)}n.body.style("background-color","white");const i={intro:t.intro,ppcalls:t.ppcalls.filter((e=>!e.hidden)),buttons:t.buttons,arrowButtons:t.arrowButtons,ribbonMessage:t.ribbonMessage,citation:t.citation_id};it(i.intro,n.body);if(e.ribbon)it(i.ribbonMessage,n.body,e.ribbon);const o=n.body.append("div");const a=n.body.append("div");ot(i.buttons,o);rt(i,"main",o,a,s);if(e.disableTopTabs)et(i.ppcalls[0],n.body,e,s);else{const t=n.body.append("div").style("display","flex").style("align-content","end").style("justify-content","center").style("border","none").style("border-bottom","1px solid lightgray").style("width","100%").style("font-size","20px");const o=n.body.append("div");nt(i.ppcalls,e,t,o,n,s)}}function et(e,t,n,s){it(e.message,t);const i=t.append("div").style("margin-bottom","20px");const o=t.append("div");ot(e.buttons,i);lt(e.download,i,n.section);ct(e.urlparam,i,n.section);rt(e,"call",i,o,s);if(!n.disableTopTabs){t.append("hr").style("border","0").style("border-top","1px dashed #e3e3e6").style("width","100%")}const a={holder:t.append("div").style("margin","20px").node(),host:e.runargs.host||sessionStorage.getItem("hostURL")};const r=JSON.parse(JSON.stringify(e.runargs));runproteinpaint(Object.assign(a,r))}function tt(e,t,n,s){const i=[];const o=e.findIndex((e=>e.isUi==true));const a=e.findIndex((e=>e.isUi==undefined));const r=o!=-1?true:false;if(r==true){i.push({label:"Add Your Data",active:false,callback:async(t,n)=>{try{const t={holder:n.contentHolder.append("div").style("margin","20px").node(),sandbox_header:n.contentHolder,host:sessionStorage.getItem("hostURL")};const s=JSON.parse(JSON.stringify(e[o].runargs));runproteinpaint(Object.assign(t,s));delete n.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}if(e.length==1&&r!=true||e.length==2&&r==true){i.push({label:"Example",active:false,callback:async(n,i)=>{try{et(e[a],i.contentHolder,t,s);delete i.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}if(e.length>1&&r==false||e.length>2&&r==true){i.push({label:"Examples",active:s?.example?true:false,callback:async(i,o)=>{try{const i=e.filter((e=>e.isUi!=true));st(t,o.contentHolder,i,n,s);delete o.callback}catch(e){if(e.stack)console.error(e.stack);else throw e}}})}return i}function nt(e,t,n,s,i,o){const a=tt(e,t,i,o);new l({holder:n,contentHolder:s,tabs:a}).main()}async function st(e,t,n,s,o){const a=n.map(((t,n)=>c(t,n,e.section)));s.header.trail=await new u({holder:s.header,crumbs:a});function c(t,n,c){const l=o?.example?o.example.toUpperCase()==t.label.toUpperCase():n===0;return{active:l,inTrail:l,link:`${sessionStorage.getItem("hostURL")}/?appcard=${e.name}&example=${t.label}`,label:t.label,callback:async(e,n)=>{const l=r(n.contentHolder);try{if(!n.rendered){i(n.contentHolder);et(t,n.contentHolder,c,o);l.remove()}n.rendered=true;const e=a.findIndex((e=>e==n));s.header.trail.update(e)}catch(e){l.text("Error: "+(e.message||e))}}}}s.header.trail.main();const d=t.append("div").style("display","grid").style("grid-template-columns","minmax(min-content, 10vw) minmax(60vw, 1fr)").classed("sjpp-vertical-tab-menu",true).style("word-break","break-word");const p=d.append("div").classed("sjpp-tabs-div",true).style("border-right","1px solid lightgray");const g=d.append("div").classed("sjpp-content-div",true);new l({holder:p,contentHolder:g,tabs:a,linePosition:"right",tabsPosition:"vertical",gap:"10px"}).main()}function it(e,t,n){if(n&&n.expireDate){const s=new Date;const i=new Date(n.expireDate);if(i>s&&e!=undefined&&e){function o(){const e=n.text.toLowerCase();return e[0].toUpperCase()+e.slice(1)}t.append("div").style("margin","20px").html(`<p style="display:inline-block;font-weight:bold">${o()}:  </p>${e}`)}}else if(e!=undefined&&e){t.append("div").style("margin","20px").html(e)}}function ot(e,t){if(e){e.forEach((e=>{const n=d({div:t,text:e.name});n.on("click",(t=>{t.stopPropagation();if(e.download)window.open(`${e.download}`,"_self","download");else window.open(`${e.link}`,`${e.name}`)}))}))}}function at(e,t){if(e){e.forEach((e=>{const n=`<div style="margin:10px;" class="sjpp-arrow-content">\n\t\t\t\t${e.message?`<div style="margin: 1vw;">${e.message}</div>`:""}\n\t\t\t\t${e.links?e.links.map((e=>{if(!e)return"";if(e.download){return`<a style="cursor:pointer; margin-left:20px;" onclick="event.stopPropagation();" href="${e.download}", target="_self" download>${e.name}</a>`}if(e.link){return`<a style="cursor:pointer; margin-left:20px;" onclick="event.stopPropagation();" href="${e.link}", target="_blank">${e.name}</a>`}})).join(""):""}</div>`;t.push({name:e.name,callback:async e=>{try{e.append("div").html(n)}catch(e){alert("Error: "+e)}}})}))}}async function rt(e,t,s,o,a){let r=[];if(t=="call")dt(e,r);if(e.datapreview)ft(r,e.datapreview);if(e.citation||e.data_source){const t=await n(`/${a.app.cardsPath}/citations.json`);if(t.error){console.error(`Error: ${t.error}`);return}for(const n of t.publications){if(e.citation==n.id||e.data_source==n.id){const t=e.data_source?"Data Source":"Citation";pt(r,n,t)}}}at(e.arrowButtons,r);const c=r.findIndex((e=>e.active))==-1?false:true;for(let e=0;e<r.length;e++){const t=r[e];t.btn=d({div:s,text:t.name+" ▼"});t.c=o.append("div").style("margin","20px 0px 10px 20px").style("display",c&&e==0||t.active?"block":"none");if(c&&e==0&&t.callback||t.active){t.callback(t.c);delete t.callback}t.btn.on("click",(()=>{if(t.c.style("display")!="none"){t.btn.text(t.name+" ▼").style("color","black").style("background-color","#cfe2f3");t.c.style("display","none")}else{t.btn.text(t.name+" ▲").style("color","whitesmoke").style("background-color","#487ba8");i(t.c);for(let t=0;t<r.length;t++){if(e!=t){r[t].btn.text(r[t].name+" ▼").style("color","black").style("background-color","#cfe2f3");r[t].c.style("display","none")}}}if(t.callback){t.callback(t.c);delete t.callback}}))}}function ct(e,t,n){if(e){const s=d({div:t,text:n=="apps"?"Run app from URL":"Run track from URL"});s.on("click",(t=>{const n=mt();t.stopPropagation();window.open(`${n}${e}`,"_blank")}))}}function lt(e,t,n){if(e){const s=d({div:t,text:n=="apps"?"Download App File(s)":"Download Track File(s)"});s.on("click",(t=>{t.stopPropagation();window.open(`${e}`,"_self","download")}))}}async function dt(e,t){if(e.isUi==true)return;const n=De.highlight(`runproteinpaint({\n host: "${sessionStorage.getItem("hostURL")}",\n holder: document.getElementById('a'),\n `+JSON.stringify(e.runargs,"",4).replaceAll(/"(.+)"\s*:/g,"$1:").replaceAll(/\\t/g,"\t").replaceAll(/\\n/g,"\r\t").slice(1,-1).trim()+`\r})`,{language:"javascript"}).value;const s=`<pre style="border: 1px solid #d7d7d9; align-items: center; justify-content: center; margin: 0px 10px 5px 30px; overflow:auto; max-height:400px; ${e.jsonpath?`min-height:400px;`:`min-height: auto;`}">\n\t<code style="font-size:14px; display:block;">${n}</code></pre>`;t.push({name:"Code",callback:async t=>{try{if(e.jsonpath){const n=await ut(e);const i="<p style='margin:20px 5px 20px 25px;'>ProteinPaint JS code</p>";const o=t.append("div").style("display","grid").style("grid-template-columns","repeat(auto-fit, minmax(100px, 1fr))").style("gap","5px");o.append("div").style("display","block").html(i+s);o.append("div").style("display","block").html(n)}else{t.append("div").html(s)}}catch(e){alert("Error: "+e)}}})}async function ut(e){const t=await o("textfile",{file:e.jsonpath});const n=JSON.parse(t.text);const s=e.jsonpath.split("/");const i=s[s.length-1];let a=JSON.stringify(n,"",4).split("\n");let r;if(a.length>120){a=a.slice(0,100);r=true}const c=De.highlight(a.join("\n"),{language:"json"}).value;const l=`<div>\n\t\t\t<p style="margin: 20px 5px 20px 25px; display: inline-block;">JSON code </p>\n\t\t\t<p style="display: inline-block; color: #696969; font-style:oblique;"> (contents of ${i})</p>\n\t\t</div> \n\t\t<pre style="border: 1px solid #d7d7d9; align-items: center; justify-content: center; margin: 0px 10px 5px 10px; max-height:400px; min-height:400px; overflow:auto;">\n\t\t\t<code class="sjpp-json-code" style="font-size:14px; display:block;">${r==true?`${c} ...<br><p style='margin:20px 25px; justify-content:center;'>Showing first 100 lines. To see the entire JSON, download ${i} from the button above.</p>`:`${c}`}\n\t\t\t</code>\n\t\t</pre>`;return l}function pt(e,t,n){e.push({name:n,callback:async e=>{try{e.append("div").style("margin-left","5w").html(`<span style="display: inline-block;">${t.title}. <em>${t.journal}</em>, ${t.year}.\n\t\t\t\t\t\t${t.pmid?` PMID: <a href="${t.pmidURL}" target="${t.pmid}">${t.pmid}</a>`:` doi: <a href="${t.doi}" target="${t.doi}">${t.doi}</a>`}</span>`)}catch(e){alert("Error: "+e)}}})}function gt(e,t,n,s,i){n.append("div").html(`\n\t\t${i?`<p style="display:block;">${i}<p>`:""}\n\t\t<p style="display: inline-block;">Data preview <span style="color: #696969; font-style:oblique;"> \n\t\t${t>10?`(first ${e.length} rows of ${s})</span></p>`:`(content of ${s})</span></p>`} \n\t`);const o=n.append("div").style("display","grid").style("grid-template-columns","1fr").style("max-width","80%").style("margin-left","10px").style("border","1px solid rgb(227, 227, 230)").style("white-space","pre").style("overflow-x","scroll").style("opacity","0.65").style("padding","1vw");e.forEach((e=>{o.append("code").html(e)}))}async function ft(e,t,s){e.push({name:"View Data",callback:async e=>{try{for(const s of t){const t=await n(`/cardsjson?datafile=${s.file}&tabixCoord=${s.tabixQueryCoord}`);if(t.error){console.error(`Error: ${t.error}`);return}const i=t.file;const o=i.length;const a=i.slice(0,10);const r=s.file.split("/");const c=r[r.length-1];gt(a,o,e,c,s.message)}}catch(e){alert("Error: "+e)}}})}async function ht(e,t,n){const s=e?.fromApp?e.genomes[t.button.availableGenomes[0]]:e.app.opts.genomes[t.button.availableGenomes[0]];let i;if(t.button.runargs.host){i=await yt(t.button.runargs.host)}else i=e?.fromApp?e.genomes:e.app.opts.genomes;const o={availableGenomes:t.button.availableGenomes,genome:s,intro:t.button.intro,name:t.button.name,runargs:t.button.runargs,searchBar:t.button.searchBar,dsURLparam:t.button.dsURLparam,citation:t.citation_id};const r=n.body.append("div").style("padding","1em").style("border-bottom","1px solid #d0e3ff");if(o.citation){const t=r.append("div").style("margin-bottom","20px");const n=r.append("div");await rt(o,"main",t,n,e)}if(o.intro){r.append("div").style("line-height","1.5em").style("padding","0.5em 0.5em 1em 0.5em").html(o.intro)}if(o.searchBar=="none"){const e=sessionStorage.getItem("hostURL");const t={holder:n.body.append("div").style("margin","20px").style("overflow-x","auto").node(),host:o.runargs.host||e};const s=JSON.parse(JSON.stringify(o.runargs));runproteinpaint(Object.assign(t,s));if(e!=sessionStorage.getItem("hostURL"))sessionStorage.setItem("hostURL",e);return}if(o.availableGenomes.length>1)g(r,i);else{r.append("div").style("display","inline-block").style("margin-left","20px").style("color","rgb(117, 115, 115)").text(o.availableGenomes[0])}const d=r.append("div").style("display","inline-block").style("padding","0.5em");const u=n.body.append("div").style("max-width","90vw");const p=c({genome:o.genome,tip:new a({padding:""}),row:d,searchOnly:o.searchBar=="gene"?"gene":"",focusOff:true,callback:async e=>{const t=u.insert("div",":first-child").style("max-width","90vw").style("margin","1vw");t.append("div").style("display","inline-block").style("cursor","default").style("margin","0px").style("font-size","1.5em").html("×").on("click",(()=>{t.selectAll("*").remove()}));bt(t,p,o);const n={holder:t.append("div").style("margin","20px").node(),host:sessionStorage.getItem("hostURL"),genome:o.genome.name};o.runargs.block==true?(n.position=`${p.chr}:${p.start}-${p.stop}`)&&(n.nativetracks="Refgene"):n.gene=p.geneSymbol;const s=JSON.parse(JSON.stringify(o.runargs));runproteinpaint(Object.assign(n,s))}});function g(e,t){e.append("div").style("display","inline-block").style("padding","10px 10px 0px 20px");const n=[];o.availableGenomes.forEach((e=>{n.push({label:e,callback:(n,s)=>{o.genome=t[e]}})}));new l({holder:e,tabs:n,noContent:true}).main()}}function bt(e,t,n){const s=d({div:e,text:"Run Result from URL"});const i=n.runargs.block==true?`position=${t.chr}:${t.start}-${t.stop}`:`gene=${t.geneSymbol}`;s.on("click",(e=>{e.stopPropagation();const t=mt();window.open(`${t}/?genome=${n.genome.name}&${i}&${n.dsURLparam}`,"_blank")}))}function mt(){const e=sessionStorage.getItem("hostURL");if(e.startsWith("http://localhost")||e.startsWith("https://pp")){return e}else return"https://proteinpaint.stjude.org"}async function yt(e){const t=`${e}/genomes?embedder=${sessionStorage.getItem("hostURL").replace(/^https?:\/\//,"")}`;try{const e=await fetch(t);if(!e.ok)throw new Error(`HTTP Response error for genomes url ${e.status}`);const n=await e.json();return n}catch(e){console.error(`Error fetching genomes: ${e} from ${t}`);return null}}var xt=Object.freeze({__proto__:null,openSandbox:Ve});export{xt as a,d as m,Ve as o};
|