@sjcrh/proteinpaint-client 2.63.0 → 2.63.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -7
- package/dist/{2dmaf-70c0b6bb.js → 2dmaf-0cabb4a4.js} +1 -1
- package/dist/{ColorScale-b44d51ef.js → ColorScale-9800a609.js} +1 -1
- package/dist/{DEanalysis-b86d0874.js → DEanalysis-567989ff.js} +1 -1
- package/dist/{Disco-16cd51c0.js → Disco-5d1404ce.js} +1 -1
- package/dist/{Disco.UI-a38a12e6.js → Disco.UI-54228bb6.js} +1 -1
- package/dist/{DragControls-0c173a20.js → DragControls-a05737c2.js} +1 -1
- package/dist/{DziViewer-5c2d68e7.js → DziViewer-3f466d90.js} +2 -2
- package/dist/{FilterRxComp-0e75dd8d.js → FilterRxComp-fc769f34.js} +1 -1
- package/dist/{FilterStateless-ad3df967.js → FilterStateless-8f30f856.js} +1 -1
- package/dist/{HicApp-bcf8330c.js → HicApp-aac413df.js} +1 -1
- package/dist/{OrbitControls-c33cf781.js → OrbitControls-8b7f91ca.js} +1 -1
- package/dist/app-59194db0.js +1 -0
- package/dist/{app-f91922b4.js → app-71453429.js} +1 -1
- package/dist/{app-bfce9bf5.js → app-fb676934.js} +1 -1
- package/dist/app.js +1 -1
- package/dist/{bam-95f36008.js → bam-e7f6baea.js} +1 -1
- package/dist/{barchart-e2af00a8.js → barchart-ef4874c8.js} +1 -1
- package/dist/{barchart.events-272fd122.js → barchart.events-e24facf7.js} +1 -1
- package/dist/{bars.renderer-f0e5af5a.js → bars.renderer-c46d3f44.js} +1 -1
- package/dist/{block-ec76524e.js → block-4f585abe.js} +1 -1
- package/dist/block.lazyload-6f83d057.js +1 -0
- package/dist/{block.legend-f8cad7e4.js → block.legend-cec87c6f.js} +1 -1
- package/dist/{block.mds-20655637.js → block.mds-f5a11c42.js} +1 -1
- package/dist/{block.mds.cnv-5feb86a0.js → block.mds.cnv-25423c1e.js} +1 -1
- package/dist/{block.mds.expressionrank-c7043f35.js → block.mds.expressionrank-fc1996d5.js} +1 -1
- package/dist/{block.mds.expressionstat-4bf457f3.js → block.mds.expressionstat-45b6bf47.js} +1 -1
- package/dist/{block.mds.geneboxplot-132e5fe6.js → block.mds.geneboxplot-037df46d.js} +1 -1
- package/dist/{block.mds.junction-1f9810df.js → block.mds.junction-00161de6.js} +1 -1
- package/dist/{block.mds.svcnv-094c416f.js → block.mds.svcnv-0c257af4.js} +1 -1
- package/dist/{block.mds.svcnv.share-bb976e02.js → block.mds.svcnv.share-c0b9dfad.js} +1 -1
- package/dist/{block.mds2-7045e32c.js → block.mds2-9009f8d8.js} +1 -1
- package/dist/{block.svg-d8d76ba7.js → block.svg-86bbfcb0.js} +1 -1
- package/dist/{block.tk.aicheck-317d04bd.js → block.tk.aicheck-a5697794.js} +1 -1
- package/dist/{block.tk.ase-d1577ec1.js → block.tk.ase-ad1be47c.js} +1 -1
- package/dist/{block.tk.bam-3cdc13a0.js → block.tk.bam-14339d16.js} +1 -1
- package/dist/{block.tk.bedgraphdot-5304e06c.js → block.tk.bedgraphdot-efe19e56.js} +1 -1
- package/dist/{block.tk.bigwig.ui-0c96dce5.js → block.tk.bigwig.ui-a92f286b.js} +1 -1
- package/dist/{block.tk.hicstraw-39d89269.js → block.tk.hicstraw-57fbbe61.js} +1 -1
- package/dist/{block.tk.junction-b45b3a95.js → block.tk.junction-64c39cd5.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-6ec019e1.js → block.tk.junction.textmatrixui-09e5e02f.js} +1 -1
- package/dist/{block.tk.ld-5c54e58b.js → block.tk.ld-f681d099.js} +1 -1
- package/dist/{block.tk.menu-30a2c3a5.js → block.tk.menu-2563364c.js} +1 -1
- package/dist/{block.tk.pgv-7ff2dfaf.js → block.tk.pgv-9dfc00c0.js} +1 -1
- package/dist/{boxplot-7de25274.js → boxplot-a2e1ace0.js} +1 -1
- package/dist/brainImaging-21701238.js +1 -0
- package/dist/{brush-db0ed33a.js → brush-bb4566a3.js} +1 -1
- package/dist/{categorical-bc309399.js → categorical-a00f4ffc.js} +1 -1
- package/dist/{condition-f0eb2343.js → condition-2034db37.js} +1 -1
- package/dist/{controls-8d4972c8.js → controls-0467d2ec.js} +1 -1
- package/dist/{controls.btns-bad9e4cf.js → controls.btns-ad7b28a2.js} +1 -1
- package/dist/{controls.config-e0f394cb.js → controls.config-6cf816fb.js} +1 -1
- package/dist/{controls.divide-d8ac5a9b.js → controls.divide-3c0d52d7.js} +1 -1
- package/dist/{controls.overlay-3ac8773d.js → controls.overlay-3a55c2ec.js} +1 -1
- package/dist/{controls.term1-008f4be4.js → controls.term1-59f4cd60.js} +1 -1
- package/dist/cuminc-8d21132b.js +1 -0
- package/dist/{customdata.inputui-58cd9b32.js → customdata.inputui-40ba6d7f.js} +1 -1
- package/dist/{dataDownload-91da6dd6.js → dataDownload-bfa92dad.js} +1 -1
- package/dist/{databrowser.ui-c50862e4.js → databrowser.ui-4799f04d.js} +1 -1
- package/dist/{density-7c3f91eb.js → density-4c2b53f6.js} +1 -1
- package/dist/{dictionary-48a38837.js → dictionary-89e860ee.js} +1 -1
- package/dist/{drag-c354e2c6.js → drag-88d451b4.js} +1 -1
- package/dist/{e2pca-3bba91fa.js → e2pca-8a3f2566.js} +1 -1
- package/dist/{ep-144d8973.js → ep-5399c5cc.js} +1 -1
- package/dist/{fusion.parse-ae1253f4.js → fusion.parse-fc25e5bd.js} +1 -1
- package/dist/{geneExpClustering-96d09008.js → geneExpClustering-a916ebda.js} +1 -1
- package/dist/{geneExpression-d6494fd3.js → geneExpression-501e95c0.js} +1 -1
- package/dist/{geneExpression-9ca2da4f.js → geneExpression-9047481a.js} +1 -1
- package/dist/{geneExpression-be9b5da2.js → geneExpression-da4b50f0.js} +1 -1
- package/dist/{geneORA-85850143.js → geneORA-ffb2497e.js} +1 -1
- package/dist/{geneVariant-3df05e0c.js → geneVariant-7ab521d6.js} +1 -1
- package/dist/{geneVariant-3d674865.js → geneVariant-d79431a2.js} +1 -1
- package/dist/{genefusion.ui-3e2a3a73.js → genefusion.ui-3ce190c7.js} +1 -1
- package/dist/{geneset-3b761b2c.js → geneset-3522bcda.js} +1 -1
- package/dist/{genomeBrowser-2105a98f.js → genomeBrowser-9b72eb22.js} +1 -1
- package/dist/{genomeBrowser.controls-f9b9bf42.js → genomeBrowser.controls-bef8bf99.js} +1 -1
- package/dist/{groupsetting-4901d033.js → groupsetting-574ad150.js} +1 -1
- package/dist/{hierCluster-a7ff7f5a.js → hierCluster-3b14b2b3.js} +1 -1
- package/dist/{hierCluster.config-3d124abf.js → hierCluster.config-f8686a30.js} +1 -1
- package/dist/{hierCluster.interactivity-3463cc0b.js → hierCluster.interactivity-3b5f1e81.js} +1 -1
- package/dist/{hierCluster.renderers-668d0075.js → hierCluster.renderers-9f9a7cad.js} +1 -1
- package/dist/{html.legend-3e428f9e.js → html.legend-ef8066dd.js} +1 -1
- package/dist/{imagePlot-6d89200c.js → imagePlot-095b9a92.js} +1 -1
- package/dist/{lasso-393c1570.js → lasso-ef63631b.js} +1 -1
- package/dist/{launch.adhoc-9c59874e.js → launch.adhoc-1b356f97.js} +1 -1
- package/dist/{legacyDataset-26ead9cc.js → legacyDataset-056e9d4c.js} +1 -1
- package/dist/{log-4d74231e.js → log-ca1e2a74.js} +1 -1
- package/dist/{lollipop-59f65024.js → lollipop-6ad9ec3c.js} +1 -1
- package/dist/{maf-72e5b7da.js → maf-dfada1c8.js} +1 -1
- package/dist/{maftimeline-ed8aaae8.js → maftimeline-1b715a01.js} +1 -1
- package/dist/{matrix-3d09a31f.js → matrix-3fae58f8.js} +1 -1
- package/dist/matrix.cells-3620eb3a.js +1 -0
- package/dist/{matrix.cluster-acdfc6a7.js → matrix.cluster-15b8a865.js} +1 -1
- package/dist/{matrix.config-cd01ebbd.js → matrix.config-8247bea5.js} +1 -1
- package/dist/{matrix.controls-86eb8d5c.js → matrix.controls-dea65894.js} +1 -1
- package/dist/{matrix.data-e2d7ac16.js → matrix.data-121a1a8c.js} +1 -1
- package/dist/{matrix.dom-e5f91cc0.js → matrix.dom-83c5fa39.js} +1 -1
- package/dist/{matrix.groups-f1969b5c.js → matrix.groups-2e1202ef.js} +1 -1
- package/dist/{matrix.interactivity-92bc8332.js → matrix.interactivity-2b076155.js} +1 -1
- package/dist/{matrix.layout-29a8f334.js → matrix.layout-8dc54c05.js} +1 -1
- package/dist/{matrix.legend-8c28039e.js → matrix.legend-e0078739.js} +1 -1
- package/dist/matrix.renderers-0c8eddc9.js +1 -0
- package/dist/{matrix.serieses-e079f04a.js → matrix.serieses-2898da6b.js} +1 -1
- package/dist/{matrix.sort-e1f83454.js → matrix.sort-249d4a35.js} +1 -1
- package/dist/{matrix.sorterUi-2025f39d.js → matrix.sorterUi-d26208c8.js} +1 -1
- package/dist/{mavb-37fffd68.js → mavb-9a6fa2e9.js} +1 -1
- package/dist/{mds.fimo-68f0eaf5.js → mds.fimo-ce97371c.js} +1 -1
- package/dist/{mds.samplescatterplot-362f3591.js → mds.samplescatterplot-a54b9e93.js} +1 -1
- package/dist/{mds.survivalplot-f5bda05a.js → mds.survivalplot-c5093f73.js} +1 -1
- package/dist/{mdsjsonform-7f0b6cc7.js → mdsjsonform-09b4e1cb.js} +1 -1
- package/dist/metaboliteIntensity-eeb5ad12.js +1 -0
- package/dist/niceNumLabels-ddb76164.js +1 -0
- package/dist/{nodrag-777a34a5.js → nodrag-bed2488c.js} +1 -1
- package/dist/{numeric-2eb8c25b.js → numeric-d5536b1c.js} +1 -1
- package/dist/numeric.binary-d67da945.js +1 -0
- package/dist/numeric.continuous-9a0c88bc.js +1 -0
- package/dist/numeric.discrete-921f7097.js +1 -0
- package/dist/numeric.spline-649308d5.js +1 -0
- package/dist/{numeric.toggle-5316211b.js → numeric.toggle-52789fd2.js} +1 -1
- package/dist/{oncomatrix-cd9fa01b.js → oncomatrix-6950c48c.js} +1 -1
- package/dist/{parseData-1bfa9946.js → parseData-480d1ff3.js} +1 -1
- package/dist/{plot.2dvaf-1ed153c1.js → plot.2dvaf-1ecc4bbc.js} +1 -1
- package/dist/plot.app-c841507a.js +1 -0
- package/dist/{plot.barplot-61742e94.js → plot.barplot-24140b0f.js} +1 -1
- package/dist/{plot.boxplot-fe966ac3.js → plot.boxplot-87fe8ab2.js} +1 -1
- package/dist/{plot.brainImaging-d2c23bb7.js → plot.brainImaging-325ebded.js} +1 -1
- package/dist/{plot.disco-70d493f4.js → plot.disco-621d1b8e.js} +1 -1
- package/dist/{plot.dzi-14e6fdc4.js → plot.dzi-3a7e478e.js} +1 -1
- package/dist/{plot.ssgq-9d364d41.js → plot.ssgq-1949c207.js} +1 -1
- package/dist/{plot.vaf2cov-4d28015b.js → plot.vaf2cov-d03c6409.js} +1 -1
- package/dist/{profileBarchart-c104f8e2.js → profileBarchart-11755d7c.js} +1 -1
- package/dist/{profileHome-a555583d.js → profileHome-9c5e266b.js} +1 -1
- package/dist/{profilePlot-5ce5b6a0.js → profilePlot-8ee3034a.js} +1 -1
- package/dist/{profilePolar-610213d4.js → profilePolar-9fe70c32.js} +1 -1
- package/dist/{profileRadar-fddb18f7.js → profileRadar-0e744181.js} +1 -1
- package/dist/{profileRadarFacility-2c2db1dd.js → profileRadarFacility-102544c5.js} +1 -1
- package/dist/{recover-a08c8d01.js → recover-b1ec4fed.js} +1 -1
- package/dist/{regression.inputs-5718cf72.js → regression.inputs-ad548745.js} +1 -1
- package/dist/{regression.inputs.values.table-d587c1cf.js → regression.inputs.values.table-1618447a.js} +1 -1
- package/dist/{regression.results-748024be.js → regression.results-25008028.js} +1 -1
- package/dist/{renderPvalueTable-c435aefd.js → renderPvalueTable-46056189.js} +1 -1
- package/dist/sampleScatter-47dd82cb.js +1 -0
- package/dist/{sampleScatter.interactivity-e9c30652.js → sampleScatter.interactivity-cfa3451d.js} +1 -1
- package/dist/{sampleScatter.rendererThree-3e6c032e.js → sampleScatter.rendererThree-c5321d24.js} +2 -2
- package/dist/{sampleView-d6a91293.js → sampleView-30b97c7d.js} +1 -1
- package/dist/{samplelst-821ec148.js → samplelst-2bdc1b9d.js} +1 -1
- package/dist/{samplematrix-7aa0a780.js → samplematrix-4f0ec523.js} +1 -1
- package/dist/{scatter-2e2c76f4.js → scatter-8a337eeb.js} +1 -1
- package/dist/{selectGenomeWithTklst-51cd21a4.js → selectGenomeWithTklst-895106fb.js} +1 -1
- package/dist/{singleCellPlot-c7347a27.js → singleCellPlot-360eaec6.js} +1 -1
- package/dist/{singlecell-a668bb17.js → singlecell-29c1cbb1.js} +1 -1
- package/dist/{singlecell-7c851ef8.js → singlecell-75f8af89.js} +1 -1
- package/dist/{snplocus-fe6f4ba1.js → snplocus-0cafa73c.js} +1 -1
- package/dist/{snplst-751cea95.js → snplst-2284d5ce.js} +1 -1
- package/dist/{spliceevent.a53ss.diagram-b157f95d.js → spliceevent.a53ss.diagram-44ccabf9.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-071a3467.js → spliceevent.exonskip.diagram-c8d1bdf0.js} +1 -1
- package/dist/spliceevent.exonskip.getdefault-9fe16119.js +1 -0
- package/dist/{spliceevent.noeventdiagram-1c731f35.js → spliceevent.noeventdiagram-5e244090.js} +1 -1
- package/dist/{spliceevent.phrase-7a3bfb00.js → spliceevent.phrase-186eb050.js} +1 -1
- package/dist/{stattable-a7713026.js → stattable-886f7dad.js} +1 -1
- package/dist/{style.gdc-40ec2784.js → style.gdc-4ac9b96b.js} +1 -1
- package/dist/{summary-592d8f81.js → summary-ee2045a5.js} +1 -1
- package/dist/{sunburst-452df940.js → sunburst-bbff8818.js} +1 -1
- package/dist/survival-04e279f8.js +1 -0
- package/dist/{survival-450b6df4.js → survival-d7bd3c6b.js} +1 -1
- package/dist/{svg.download-56529955.js → svg.download-54c99186.js} +1 -1
- package/dist/{svg.legend-c82b153f.js → svg.legend-28652faa.js} +1 -1
- package/dist/{svgraph-3c5cd8d2.js → svgraph-a12d89da.js} +1 -1
- package/dist/{svmr-3dd531ef.js → svmr-248055c8.js} +1 -1
- package/dist/{table-d6c411fd.js → table-1dae543a.js} +1 -1
- package/dist/{table-bf604c50.js → table-b4a61573.js} +1 -1
- package/dist/{termInfo-96285f4a.js → termInfo-4c759483.js} +1 -1
- package/dist/{termsetting-9a7511e6.js → termsetting-636d2271.js} +1 -1
- package/dist/{tk-6a8e5bb0.js → tk-741d4674.js} +1 -1
- package/dist/{tp.ui-221efed6.js → tp.ui-23151bb1.js} +1 -1
- package/dist/{tvs.density-9fdae0cc.js → tvs.density-9fe0c7fd.js} +1 -1
- package/dist/{tvs.geneVariant-149e25b7.js → tvs.geneVariant-1b179327.js} +1 -1
- package/dist/tvs.numeric-b4cfc975.js +1 -0
- package/dist/{tvs.samplelst-a38e9c2b.js → tvs.samplelst-681358bc.js} +1 -1
- package/dist/{uiUtils-a6de7f14.js → uiUtils-74700a01.js} +1 -1
- package/dist/{variantBrowser-05375469.js → variantBrowser-910b4bcd.js} +1 -1
- package/dist/{vcf-58904308.js → vcf-16ba1e06.js} +1 -1
- package/dist/{violin-c1b78717.js → violin-a41b2e2b.js} +1 -1
- package/dist/{violin.interactivity-534d6993.js → violin.interactivity-bcf0ccc2.js} +1 -1
- package/dist/{violin.renderer-16540fb8.js → violin.renderer-149310eb.js} +1 -1
- package/dist/{violinRenderer-688abcb2.js → violinRenderer-71c9f3ab.js} +1 -1
- package/dist/{viridis-d3cf2713.js → viridis-81de7bcd.js} +1 -1
- package/dist/{y-2d48b9e4.js → y-76c7da8c.js} +1 -1
- package/dist/{zoom-2d4ede33.js → zoom-a40839cf.js} +1 -1
- package/package.json +7 -7
- package/dist/app-de19f41c.js +0 -1
- package/dist/block.lazyload-ebd949e4.js +0 -1
- package/dist/brainImaging-007edaa3.js +0 -1
- package/dist/cuminc-72257faf.js +0 -1
- package/dist/matrix.cells-a5157233.js +0 -1
- package/dist/matrix.renderers-3b8dfd04.js +0 -1
- package/dist/metaboliteIntensity-512257f3.js +0 -1
- package/dist/niceNumLabels-8fdc6507.js +0 -1
- package/dist/numeric.binary-0a3b17d2.js +0 -1
- package/dist/numeric.continuous-f77038de.js +0 -1
- package/dist/numeric.discrete-b977e88f.js +0 -1
- package/dist/numeric.spline-d64b1abe.js +0 -1
- package/dist/plot.app-91a1d78d.js +0 -1
- package/dist/sampleScatter-031f47de.js +0 -1
- package/dist/spliceevent.exonskip.getdefault-93feb627.js +0 -1
- package/dist/survival-6a4c4f12.js +0 -1
- package/dist/tvs.numeric-f9ce58bc.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{aG as t,az as i,p as s,a as e,l as o,f as r,aD as a,b8 as h,S as n,q as l,M as c,a0 as p,C as d,m as u,aA as f,b9 as m}from"./app-f91922b4.js";import{a as g,c as y}from"./axis-6cb4f314.js";import{p as x}from"./pointer-c7475677.js";import{b as v}from"./block.lazyload-ebd949e4.js";import{C as w}from"./ColorScale-b44d51ef.js";import{h as b}from"./parseData-1bfa9946.js";import"./axisstyle-fac7f76b.js";class k{constructor(){this.views=["genome","chrpair","detail","horizontal"];this.type="store";this.defaultState={defaultNmeth:"NONE",loading:true,minBinNum_bp:200,minFragSpan:200,initialBinNum:20,settings:{widthHeightPx:800}}}}const D=t(k);k.prototype.actions={view_create(t){if(!t.view)throw Error("view_create: missing view");if(!this.views.some((i=>i==t.view)))throw Error(`view_create: unknown view = ${t.view}`);this.state.currView=t.view;const i=Object.assign(this.state,t.config);this.state=i},view_update(t){if(t.view){if(!this.views.some((i=>i==t.view)))throw Error(`view_update: unknown view = ${t.view}`);const i=Object.assign(this.state[t.view],t.config);this.state[t.view]=i}else{const i=Object.assign(this.state,t.config);this.state=i}},loading_active(t){this.state.loading=t.active}};class M{constructor(t){this.hasStatePreMain=true;this.type="loadingOverlay",this.app=t.app,this.loadingDiv=t.loadingDiv}reactsTo(t){if(t.type.startsWith("loading"))return true;else return false}getState(t){return t}init(){this.loadingDiv.append("div").attr("class","sjpp-spinner").style("display","")}main(t){const i=this.app.getState(t).loading;this.loadingDiv.style("display",i?"":"none")}}const V=i(M);class z{colorizeElement(t,i,s,e,o,r,a,h,n){if(s>=0){const t=s>=h?0:s<=a?255:Math.floor(255*(h-s)/h);const i=`rgb(255, ${t}, ${t})`;if(n==="genome"){e.ctx.fillStyle=i;e.ctx2.fillStyle=i}else{e.fillStyle=i}}else{const t=s<=a?255:Math.floor(255*(h+s)/h);const i=`rgb(${t}, ${t}, 255)`;if(n==="genome"){e.ctx.fillStyle=i;e.ctx2.fillStyle=i}else{e.fillStyle=i}}if(n==="genome"){e.ctx.fillRect(i,t,o,r);e.ctx2.fillRect(t,i,o,r)}else{e.fillRect(t,i,o,r)}}}class R{constructor(t){this.error=t}getResolution(t,i){if(t.currView=="genome")return i["bpresolution"][0];if(t.currView=="chrpair"){const s=this.getChrPairResolution(i,t.x,t.y,t.minBinNum_bp);return s}else if(t.currView=="detail"){const s=Math.max(t.x.stop-t.x.start,t.y.stop-t.y.start);let e=this.findResFromArray(s,t.minBinNum_bp,i.bpresolution);if(e==null&&!i.enzyme){e=i.bpresolution[i.bpresolution.length-1]}return e}else{this.error(`Unknown view: ${t.currView}`);throw`Unknown view: ${t.currView}`}}getChrPairResolution(t,i,s,e){const o=t.genome.chrlookup[i.chr.toUpperCase()].len;const r=t.genome.chrlookup[s.chr.toUpperCase()].len;const a=Math.max(o,r);const h=this.findResFromArray(a,e,t.bpresolution);if(h==null){this.error(`No suitable resolution for ${i.chr}-${s.chr} pair.`);return}return h}findResFromArray(t,i,s,e){let o=null;for(const e of s){if(t/e>i){o=e;break}}if(e&&o==null){o=s[s.length-1]}return o}getDefaultViewSpan(t,i,s,e,o){const r=this.getChrPairResolution(t,i,s,o);if(!r)return;return r*e}}class ${constructor(t,i){this.error=t;this.resolution=new R(this.error);this.minBinNum_bp=i}setPosition(t,i,s,e,o,r,a){const h=this.resolution.getChrPairResolution(r,e,o,this.minBinNum_bp);const n=h*a;let l=Math.max(1,Math.floor(t*h/s)-n/2);let c=Math.max(1,Math.floor(i*h/s)-n/2);{const t=r.genome.chrlookup[e.chr.toUpperCase()].len;if(l+n>=t){l=t-n}const i=r.genome.chrlookup[o.chr.toUpperCase()].len;if(c+n>i){c=i-n}}const p={chr:e.chr,start:l,stop:l+n};const d={chr:o.chr,start:c,stop:c+n};return[p,d]}}class C{formatData(t,i,s,e,o,r){const a=[];for(const[h,n,l]of i){const i=Math.floor(h/e)*s;const c=Math.floor(n/e)*s;if(t=="genome"){a.push([i,c,l])}if(t=="chrpair"){const t=o?i:c;const s=o?c:i;a.push([t,s,l]);if(r){a.push([s,t,l])}}}return a}}class L{constructor(t,i,s){this.chrorder=t;this.chrx=i;this.chry=s}isFirstX(){if(this.chrx==this.chry)return true;return this.chrorder.indexOf(this.chrx)<this.chrorder.indexOf(this.chry)}}class S{constructor(t){this.binpx=1;this.axispad=10;this.axisLabelFontSize=15;this.calcResolution=null;this.data=[];this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.items=t.items;this.parent=t.parent;this.chrxlen=this.hic.genome.chrlookup[this.parent("state").x.chr.toUpperCase()].len;this.chrylen=this.hic.genome.chrlookup[this.parent("state").y.chr.toUpperCase()].len;this.maxchrlen=Math.max(this.chrxlen,this.chrylen);this.colorizeElement=new z;this.positions=new $(t.error,this.parent("state").minBinNum_bp);this.formattedData=new C}setDefaultBinpx(){if(this.calcResolution==null)return;while(this.binpx*this.maxchrlen/this.calcResolution<600){this.binpx++}}renderAxes(){if(this.calcResolution==null)return;const t=this.plotDiv.yAxis.append("svg");const i=Math.ceil(this.chrylen/this.calcResolution)*this.binpx;t.attr("width",100).attr("height",this.axispad*2+i);t.append("g").attr("data-testid","sjpp-chrpair-svg-y").attr("transform","translate(80,"+(this.axispad+i/2)+")").append("text").text(this.parent("state").y.chr).attr("text-anchor","middle").attr("font-size",this.axisLabelFontSize).attr("font-family",s).attr("dominant-baseline","central").attr("transform","rotate(90)");e({axis:t.append("g").attr("transform",`translate(1, ${this.axispad})`).call(g(o().domain([0,this.chrylen]).range([0,i])).tickFormat(r(".2s"))),showline:true});const a=this.plotDiv.xAxis.append("svg").style("margin-top","-4px");const h=Math.ceil(this.chrxlen/this.calcResolution)*this.binpx;a.attr("height",100).attr("width",this.axispad*2+h);a.append("text").attr("data-testid","sjpp-chrpair-svg-x").text(this.parent("state").x.chr).attr("font-size",this.axisLabelFontSize).attr("font-family",s).attr("x",this.axispad+h/2).attr("text-anchor","middle").attr("y",60);e({axis:a.append("g").attr("transform","translate("+this.axispad+",1)").call(y(o().domain([0,this.chrxlen]).range([0,h])).tickFormat(r(".2s"))),showline:true})}renderCanvas(){const t=this.initDetailView.bind(this);this.canvas=this.plotDiv.plot.append("canvas").attr("data-testid","sjpp-chrpair-canvas").style("margin",this.axispad+"px").on("click",(function(i){return a(this,void 0,void 0,(function*(){const[s,e]=x(i,this);t(s,e)}))})).node();this.canvas.width=Math.ceil(this.chrxlen/this.calcResolution)*this.binpx;this.canvas.height=Math.ceil(this.chrylen/this.calcResolution)*this.binpx;this.ctx=this.canvas.getContext("2d")}initDetailView(t,i){const[s,e]=this.positions.setPosition(t,i,this.binpx,this.parent("state").x,this.parent("state").y,this.hic,this.parent("state").initialBinNum);this.app.dispatch({type:"view_create",view:"detail",config:{x:s,y:e}})}render(){this.calcResolution=this.parent("calcResolution");this.setDefaultBinpx();this.renderAxes();this.renderCanvas();this.update(this.items)}update(t){this.items=t;const i=new L(this.hic.chrorder,this.parent("state").x.chr,this.parent("state").y.chr).isFirstX();const s=this.parent("state").x.chr===this.parent("state").y.chr;this.data=this.formattedData.formatData("chrpair",t.items,this.binpx,this.calcResolution,i,s);this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);for(const[t,i,s]of this.data){this.colorizeElement.colorizeElement(t,i,s,this.ctx,this.binpx,this.binpx,this.parent("min"),this.parent("max"),"chrpair")}this.app.dispatch({type:"loading_active",active:false})}}class B{constructor(t){this.maxPercentage=5;this.subPanelPxWidth=600;this.borderColor="rgba(200,0,0,.1)";this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.items=t.items;this.parent=t.parent}setRunPpTracks(){const t=[{type:"hicstraw",file:this.hic.file,url:this.hic.url,name:this.hic.name,enzyme:this.hic.enzyme,maxpercentage:this.maxPercentage,pyramindup:1}];if(this.hic.tklst){for(const i of this.hic.tklst){t.push(i)}}h(this.hic.genome,t);return t}setRunPpArgs(t){const i={holder:this.plotDiv.plot,hostURL:this.hic.hostURL,jwt:this.hic.jwt,genome:this.hic.genome,nobox:1,tklst:t};const s=this.parent("state");if(s.x.chr==s.y.chr&&Math.max(s.x.start,s.y.start)<Math.min(s.x.stop,s.y.stop)){i["chr"]=s.x.chr;i["start"]=Math.min(s.x.start,s.y.start);i["stop"]=Math.max(s.x.stop,s.y.stop)}else{i["chr"]=s.x.chr;i["start"]=s.x.start;i["stop"]=s.x.stop;i["width"]=this.subPanelPxWidth;i["subpanels"]=[{chr:s.y.chr,start:s.y.start,stop:s.y.stop,width:this.subPanelPxWidth,leftpad:10,leftborder:this.borderColor}]}return i}render(){const t=this.setRunPpTracks();const i=this.setRunPpArgs(t);v(i)}}class N{constructor(t,i,s,e,o,r){this.leftheadw=20;this.rightheadw=40;this.lpad=1;this.rpad=1;this.firstRender=true;this.app=t;this.hic=i;this.width=s;this.bbmargin=e;this.holder=o;this.isYblock=r;this.bbw=this.leftheadw+this.lpad+this.width+this.rpad+this.rightheadw+2*this.bbmargin;this.defaultLeft=this.bbmargin+this.leftheadw+this.lpad;this.defaultTop=this.bbmargin+this.rightheadw+this.rpad}setArgs(t){const i={hostURL:this.hic.hostURL,genome:this.hic.genome,holder:this.holder,noresize:true,nobox:true,butrowbottom:true,style:{margin:`${this.bbmargin}px`},width:this.width,leftheadw:this.leftheadw,chr:t.chr,start:t.start,stop:t.stop,rightheadw:this.rightheadw,tklst:[],rotated:this.isYblock,showreverse:this.isYblock};h(this.hic.genome,i.tklst);return i}setMethods(t,i,s){const e={onloadalltk_always:()=>{this.onload(t,i,s)},onpanning:t=>this.onpanning(t,i)};if(this.isYblock){e["onsetheight"]=t=>{this.holder.transition().style("left",`${t+this.bbmargin+30}px`)}}return e}onload(t,i,s){this.bbw=this.block.leftheadw+this.block.lpad+this.block.width+this.block.rpad+this.block.rightheadw+2*this.bbmargin;if(this.isYblock){s.transition().style("height",`${this.bbw}px`);t.style("height",`${this.bbw}px`)}else t.style("width",`${this.bbw}px`);if(this.isYblock){this.defaultTop=this.bbmargin+this.block.rightheadw+this.block.rpad;i.style("top",`${this.defaultTop}px`)}else{this.defaultLeft=this.bbmargin+this.block.leftheadw+this.block.lpad;i.style("left",`${this.defaultLeft}px`)}const e={[this.isYblock?"y":"x"]:{chr:this.block.rglst[0].chr,start:this.block.rglst[0].start,stop:this.block.rglst[0].stop}};if(this.firstRender==false){this.app.dispatch({type:"view_update",config:e})}else{this.firstRender=false}}onpanning(t,i){if(!this.isYblock)i.style("left",`${t+this.defaultLeft}px`);else i.style("top",`${-t+this.defaultTop}px`)}loadBlock(t,i,s,e){return a(this,void 0,void 0,(function*(){const o=this.setArgs(t);const r=this.isYblock?this.setMethods(i,s,e):this.setMethods(i,s);const h=Object.assign(o,r);yield v(h).then((t=>a(this,void 0,void 0,(function*(){this.block=t}))))}))}}class P{constructor(t){this.obj={rglst:[]};this.errList=t}isFragData(t,i){if(i!=null)return;if(!t.enzyme){i=t.bpresolution[t.bpresolution.length-1];return}}formatFragArgs(t,i){const s={getdata:1,getBED:1,file:t,rglst:[i]};return s}getBedData(t){return a(this,void 0,void 0,(function*(){try{return yield n("tkbedj",{method:"POST",body:JSON.stringify(t)})}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}getXFragData(t,i,s){return a(this,void 0,void 0,(function*(){this.isFragData(t,i);if(!t.enzymefile)return;const e=this.formatFragArgs(t.enzymefile,s);return yield this.getBedData(e)}))}getYFragData(t,i){return a(this,void 0,void 0,(function*(){const s=this.formatFragArgs(t.enzymefile,i);return yield this.getBedData(s)}))}fetchData(t,i,s,e,o,r){return a(this,void 0,void 0,(function*(){const a={matrixType:i.matrixType,file:t.file,url:t.url,pos1:this.determinePosition(t,e,r===null||r===void 0?void 0:r.x),pos2:this.determinePosition(t,o,r===null||r===void 0?void 0:r.y),nmeth:i.nmeth,resolution:s};if(r)a["isfrag"]=true;try{const t=n("hicdata?",{method:"POST",body:JSON.stringify(a)});if(t.error){this.errList.push(t.error)}return t}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}determinePosition(t,i,s){if(s){return`${t.nochr?i.chr.replace("chr",""):i.chr}:${s.start}:${s.stop}`}else{return`${t.nochr?i.chr.replace("chr",""):i.chr}:${i.start}:${i.stop}`}}}class E{constructor(t,i){this.id2coord=new Map;this.min=null;this.max=null;this.items=[];this.errLst=t;for(const t of i){if(!t.rest||!t.rest[0]){this.errLst.push("items[].rest data problem")}const i=Number.parseInt(t.rest[0]);if(Number.isNaN(i)){this.errLst.push(`${t.start}.${t.stop} invalid fragment id: ${t.rest[0]}`)}this.id2coord.set(i,[t.start,t.stop]);if(this.min==null){this.min=i;this.max=i}else{this.min=Math.min(this.min,i);this.max=Math.max(this.max,i)}}}}class _{constructor(t,i,s){this.frag={x:{},y:{}};this.hic=t;this.errList=i;this.dataFetcher=new P(i);this.parent=s}getFragData(t,i){return a(this,void 0,void 0,(function*(){try{const s=yield this.dataFetcher.getXFragData(this.hic,this.parent("calcResolution"),t);if(s){if(!s.items){this.errList.push(`No fragment data returned for ${t.chr}:${t.start}-${t.stop}`);return}const e=new E(this.errList,s.items);if(this.errList.length)return;this.frag.x={id2coord:e.id2coord,start:e.min,stop:e.max};const o=yield this.dataFetcher.getYFragData(this.hic,i);if(this.errList.length)return;if(o){if(!o.items){this.errList.push(`No fragment data returned for ${i.chr}:${i.start}-${i.stop}`);return}const s=new E(this.errList,o.items);if(this.errList.length)return;this.frag.y={id2coord:new Map,start:s.min,stop:s.max};this.determineMap(s.id2coord,t,i)}}}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}determineMap(t,i,s){if(i.chr==s.chr){for(const[i,s]of t){this.frag.x["id2coord"].set(i,s)}this.frag.y["id2coord"]=this.frag.x["id2coord"]}else{this.frag.y["id2coord"]=t}}getData(t,i,s){return a(this,void 0,void 0,(function*(){return yield this.dataFetcher.fetchData(this.hic,this.parent("state")["detail"],this.parent("calcResolution"),t,i,s)}))}}class F{constructor(t,i){this.hic=t;this.errlist=i}getCoordinates(t,i,s,e,o,r){const a=new L(this.hic.chrorder,t.chr,i.chr).isFirstX();const h=t.chr==i.chr;const n=o/(t.stop-t.start);const l=o/(i.stop-i.start);const c=this.calculateCoordinates(a,h,n,l,e,t,i,s,r);return c}calculateCoordinates(t,i,s,e,o,r,a,h,n){const l=[];for(const[c,p,d]of h.items){let h,u,f,m;if(n){const i=t?c:p;const s=t?p:c;if(n.x.id2coord.has(i)){const[t,s]=n.x.id2coord.get(i);h=t;f=s-t}else{this.errlist.push(`[x id error] x: ${i} y: ${s}`);continue}{const t=i+o;if(n.x.id2coord.has(t)){const[i,s]=n.x.id2coord.get(t);f=s-h}}if(n.y.id2coord.has(s)){const[t,i]=n.y.id2coord.get(s);u=t;m=i-t}else{this.errlist.push(`[y id error] x: ${i} y: ${s}`);continue}{const t=s+o;if(n.y.id2coord.has(t)){const[i,s]=n.y.id2coord.get(t);m=s-u}}}else{h=t?c:p;u=t?p:c;f=o;m=o}if(i){if(h>r.start-f&&h<r.stop&&u>a.start-m&&u<a.stop){l.push([Math.floor((h-r.start)*s),Math.floor((u-a.start)*e),Math.ceil(f*s),Math.ceil(m*e),d])}if(u>r.start-m&&u<r.stop&&h>a.start&&h<a.stop){l.push([Math.floor((u-r.start)*s),Math.floor((h-a.start)*e),Math.ceil(m*s),Math.ceil(f*e),d])}continue}l.push([Math.floor((h-r.start)*s),Math.floor((u-a.start)*e),Math.ceil(f*s),Math.ceil(m*e),d])}return l}}class j{constructor(t){this.calcResolution=null;this.binpx=2;this.bbmargin=1;this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.sheath=t.plotDiv.yAxis.append("div").style("position","relative").style("width","200px").style("height","800px");this.rotor=this.sheath.append("div").style("position","absolute").style("bottom","0px").style("transform","rotate(-90deg)").style("transform-origin","left bottom");this.data=t.data;this.parent=t.parent;this.errList=this.parent("errList");this.resolution=new R(t.error);this.colorizeElement=new z;this.viewRangeBpW=this.resolution.getDefaultViewSpan(this.hic,this.parent("state").x,this.parent("state").y,this.parent("state").initialBinNum,this.parent("state").minBinNum_bp);this.dataMapper=new _(this.hic,t.error,t.parent);this.coordinates=new F(this.hic,this.errList)}renderCanvas(t){this.canvasHolder=this.plotDiv.plot.append("div").style("position","relative").style("width",`${this.xBlock.bbw}px`).style("height",`${this.yBlock.bbw}px`).style("overflow","hidden");this.canvas=this.canvasHolder.append("canvas").style("display","block").style("position","absolute").attr("data-testid","sjpp-hic-detail-canvas").attr("width",t).attr("height",t).on("mousedown",(t=>{const i=l(document.body);const s=t.clientX;const e=t.clientY;const o=Number.parseInt(this.canvas.style("left"));const r=Number.parseInt(this.canvas.style("top"));i.on("mousemove",(t=>{const i=t.clientX-s;const a=t.clientY-e;this.xBlock.block.panning(i);this.yBlock.block.panning(a);this.canvas.style("left",`${o+i}px`).style("top",`${r+a}px`)}));i.on("mouseup",(t=>{i.on("mousemove",null).on("mouseup",null);const o=t.clientX-s;const r=t.clientY-e;console.log(o);this.xBlock.block.pannedby(o);this.yBlock.block.pannedby(r)}))}))}render(){return a(this,void 0,void 0,(function*(){this.calcResolution=this.parent("calcResolution");const t=this.parent("state");this.xBlock=new N(this.app,this.hic,t.settings.widthHeightPx,this.bbmargin,this.plotDiv.xAxis,false);this.yBlock=new N(this.app,this.hic,t.settings.widthHeightPx,this.bbmargin,this.rotor,true);this.renderCanvas(t.settings.widthHeightPx);yield this.xBlock.loadBlock(t.x,this.canvasHolder,this.canvas);yield this.yBlock.loadBlock(t.y,this.canvasHolder,this.canvas,this.sheath);this.update(this.data)}))}update(t){return a(this,void 0,void 0,(function*(){if(t.items.length==0){this.app.dispatch({type:"loading_active",active:false});return}this.data=t;const i=this.parent("state");const s=Number.parseInt(this.canvas.attr("width"));const e=Number.parseInt(this.canvasHolder.style("width"))-s+i.settings.widthHeightPx;this.canvasHolder.style("width",`${e}px`).style("height",`${e}px`);this.canvas.attr("width",`${i.settings.widthHeightPx}px`).attr("height",`${i.settings.widthHeightPx}px`);if(this.xBlock.block.width!=i.settings.widthHeightPx){this.xBlock.block.width=i.settings.widthHeightPx;this.yBlock.block.width=i.settings.widthHeightPx;this.xBlock.block.zoom2px(0,s);this.yBlock.block.zoom2px(0,s)}this.ctx=this.canvas.node().getContext("2d");const o=this.coordinates.getCoordinates(i.x,i.y,this.parent("data"),this.parent("calcResolution"),i.settings.widthHeightPx,this.parent("fragData"));this.coords=o;this.ctx.clearRect(0,0,i.settings.widthHeightPx,i.settings.widthHeightPx);for(const[t,i,s,e,o]of this.coords){this.colorizeElement.colorizeElement(t,i,o,this.ctx,s,e,this.parent("min"),this.parent("max"),"detail")}this.app.dispatch({type:"loading_active",active:false})}))}}class T{constructor(t,i){this.label=t;this.width=i}}class A{constructor(t,i,s,e){this.chromosomeMatrix=new Map;this.chromosomeList=[];this.xoff=0;this.yoff=0;this.chr2px=[];this.chrlst=t;let o=this.chrlst.length;for(const t of this.chrlst){const r=Math.ceil(s[t.toUpperCase()].len/i)*e;const a=new T(t,r);this.chromosomeList.push(a);this.chr2px[t]=r;o+=r}this.totalpx=o;for(let t=0;t<this.chrlst.length;t++){const o=this.chrlst[t];this.chromosomeMatrix.set(o,new Map);let r=0;for(let a=0;a<=t;a++){const t=this.chrlst[a];const h=s[o.toUpperCase()].len;const n=s[t.toUpperCase()].len;const l=Math.ceil(h/i)*e;const c=Math.ceil(n/i)*e;this.chromosomeMatrix.get(o).set(t,{x:this.xoff,y:r,xbins:l,ybins:c,data:[]});r+=this.chr2px[t]+A.borderWidth}this.yoff=r;this.xoff+=this.chr2px[o]+A.borderWidth}}}A.checkerFill="#DEF3FA";A.spaceColor="#CCC";A.fontSize=15;A.font=s;A.borderWidth=1;A.defaultChrLabWidth=100;class O{constructor(t){this.grid=new A(t.hic.chrlst,t.resolution||t.hic.bpresolution[0],t.hic.genome.chrlookup,1)}}class U{constructor(t,i,s,e){this.svg=t;this.layerMap=i.attr("transform",`translate(${A.defaultChrLabWidth}, ${A.fontSize})`);this.layerSv=s.attr("transform",`translate(${A.defaultChrLabWidth}, ${A.fontSize})`);this.grid=e}render(){this.renderAxisX(this.grid);this.renderAxisY(this.grid);this.svg.attr("width",A.defaultChrLabWidth+this.grid.xoff).attr("height",A.fontSize+this.grid.yoff)}renderAxisX(t){let i=0;this.grid.chromosomeList.forEach(((s,e)=>{const o=s.width;if(e%2===0){this.layerMap.append("rect").attr("x",i).attr("width",o).attr("height",A.fontSize).attr("y",-A.fontSize).attr("fill",A.checkerFill)}this.layerMap.append("text").attr("font-family",A.font).attr("text-anchor","middle").attr("font-size",12).attr("x",i+o/2).text(s.label);i+=o;this.layerSv.append("line").attr("x1",i).attr("x2",i).attr("y2",t.totalpx).attr("stroke",A.spaceColor).attr("shape-rendering","crispEdges");i+=A.borderWidth}))}renderAxisY(t){let i=0;this.grid.chromosomeList.forEach(((s,e)=>{const o=s.width;if(e%2===0){this.layerMap.append("rect").attr("x",-A.defaultChrLabWidth).attr("width",A.defaultChrLabWidth).attr("height",o).attr("y",i).attr("fill",A.checkerFill)}this.layerMap.append("text").attr("font-family",A.font).attr("text-anchor","end").attr("dominant-baseline","central").attr("font-size",12).attr("y",i+o/2).text(s.label);i+=o;this.layerSv.append("line").attr("x2",t.totalpx).attr("y1",i).attr("y2",i).attr("stroke",A.spaceColor).attr("shape-rendering","crispEdges");i+=A.borderWidth}))}}class H{constructor(){this.chrx_tip=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.chry_tip=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0})}render(t,i,s){const e=t.node().getBoundingClientRect();this.chrx_tip.clear().show(e.left,e.top).d.style("top",null).style("bottom",window.innerHeight-e.top-window.pageYOffset+"px").text(i);this.chry_tip.clear().show(e.left,e.top).d.style("left",null).style("right",document.body.clientWidth-e.left-window.pageXOffset+"px").text(s)}}class Y{constructor(t,i){this.app=i;this.layerMap=t;this.tooltips=new H}render(t,i,s,e){t.canvas=e.append("canvas").style("display","none").node();t.ctx=t.canvas.getContext("2d");t.canvas.width=t.xbins;t.canvas.height=t.ybins;t.img=this.layerMap.append("image").attr("width",t.canvas.width).attr("height",t.canvas.height).attr("x",t.x).attr("y",t.y).on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:i},y:{chr:s}}})})))).on("mouseover",(()=>{this.tooltips.render(t.img,i,s)}));if(i!=s){t.canvas2=e.append("canvas").style("display","none").node();t.canvas2.width=t.ybins;t.canvas2.height=t.xbins;t.ctx2=t.canvas2.getContext("2d");t.img2=this.layerMap.append("image").attr("width",t.canvas2.width).attr("height",t.canvas2.height).attr("x",t.y).attr("y",t.x).on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:s},y:{chr:i}}})})))).on("mouseover",(()=>{this.tooltips.render(t.img2,s,i)}))}else{t.ctx2=t.ctx}}}class W{constructor(t,i,s){this.grid=t;this.gridElementRenderer=new Y(i,s)}render(t){for(const[i,s]of this.grid.chromosomeMatrix){for(const[e,o]of s){this.gridElementRenderer.render(o,i,e,t)}}}}class X{constructor(t){this.tip=new c;this.pica_x=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.pica_y=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.chr2px={};this.lead2follow=new Map;this.values=[];this.defaultChrLabWidth=100;this.borderwidth=1;this.default_maxVPerc=5;this.fontsize=15;this.xoff=0;this.yoff=0;this.binpx=1;this.atdev_chrnum=8;this.min=0;this.max=0;this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.data=t.data;this.parent=t.parent;this.resolution=t.resolution||t.hic.bpresolution[0];this.svg=this.plotDiv.plot.append("svg").attr("data-testid","sjpp-hic-genome-svg");this.layer_map=this.svg.append("g").attr("data-testid","sjpp-hic-layerMap-g");this.layer_sv=this.svg.append("g").attr("data-testid","sjpp-hic-layerSv-g");this.colorizeElement=new z;this.viewModel=new O(t);this.viewRender=new U(this.svg,this.layer_map,this.layer_sv,this.viewModel.grid);this.gridElementsRenderer=new W(this.viewModel.grid,this.layer_map,this.app);this.gridFormattedData=new C}makeSv(){const t=new Set;const i=8;for(const s of this.hic.sv.items){const e=this.lead2follow.get(s.chr1);if(!e){t.add(s.chr1);continue}const o=e.get(s.chr2);if(!o){t.add(s.chr2);continue}const r=s.position1/this.resolution;const a=s.position2/this.resolution;this.layer_sv.append("circle").attr("stroke","black").attr("fill","white").attr("fill-opacity",0).attr("cx",o.x+r).attr("cy",o.y+a).attr("r",i).on("mouseover",(t=>{this.tooltipSv(t,s)})).on("mouseout",(()=>{this.tip.hide()})).on("click",(()=>{this.clickSv(s)}));if(o.img2){this.layer_sv.append("circle").attr("stroke","black").attr("fill","whilte").attr("fill-opacity",0).attr("cy",o.x+r).attr("cx",o.y+a).attr("r",i).on("mouseover",(t=>{this.tooltipSv(t,s)})).on("mouseout",(()=>{this.tip.hide()})).on("click",(()=>{this.clickSv(s)}))}}}tooltipSv(t,i){this.tip.clear().show(t.clientX,t.clientY).d.append("div").text(i.chr1==i.chr2?`${i.chr1}:${i.position1}-${i.position2}`:`${i.chr1}:${i.position1}>${i.chr2}:${i.position2}`)}clickSv(t){const i=5e5;const s=600;const e="rgba(200,0,0,.1)";const o=p({x:100,y:100});o.header.text(this.hic.name+" "+(t.chr1==t.chr2?`${t.chr1}:${t.position1}-${t.position2}`:`${t.chr1}:${t.position1}>${t.chr2}:${t.position2}`));const r=[{type:d.hicstraw,file:this.hic.file,enzyme:this.hic.enzyme,maxpercentage:this.default_maxVPerc,pyramidup:1,name:this.hic.name}];if(this.hic.tklst){for(const t of this.hic.tklst){r.push(t)}}h(this.hic.genome,r);const a={holder:o.body,hostURL:this.hic.hostURL,jwt:this.hic.jwt,genome:this.hic.genome,nobox:1,tklst:r};if(t.chr1==t.chr2&&Math.abs(t.position2-t.position1)<i*2){a.chr=t.chr1;const i=Math.abs(t.position2-t.position1);a.start=Math.max(1,Math.min(t.position1,t.position2)-i);a.stop=Math.min(this.hic.genome.chrlookup[t.chr1.toUpperCase()].len,Math.max(t.position1,t.position2)+i)}else{a.chr=t.chr1;a.start=Math.max(1,t.position1-i/2);a.stop=Math.min(this.hic.genome.chrlookup[t.chr1.toUpperCase()].len,t.position1+i/2);a.width=s;a.subpanels=[{chr:t.chr2,start:Math.max(1,t.position2-i/2),stop:Math.min(this.hic.genome.chrlookup[t.chr2.toUpperCase()].len,t.position2+i/2),width:s,leftpad:10,leftborder:e}]}v(a)}render(){this.viewRender.render();this.gridElementsRenderer.render(this.hic.holder);if(this.hic.sv&&this.hic.sv.items){this.makeSv()}this.update(this.data)}update(t){this.data=t;this.min=this.parent("min");this.max=this.parent("max");for(const t of this.data){if(!this.hic.chrlst.includes(t.lead)||!this.hic.chrlst.includes(t.follow))continue;const i=this.viewModel.grid.chromosomeMatrix.get(t.lead).get(t.follow);if(!i)continue;i.ctx.clearRect(0,0,i.canvas.width,i.canvas.height);if(i.canvas2){i.ctx2.clearRect(0,0,i.canvas2.width,i.canvas.height)}i.data=this.gridFormattedData.formatData("genome",t.items,this.binpx,this.resolution);for(const[t,s,e]of i.data){this.colorizeElement.colorizeElement(t,s,e,i,this.binpx,this.binpx,this.min,this.max,"genome")}i.img.attr("xlink:href",i.canvas.toDataURL());if(i.canvas2){i.img2.attr("xlink:href",i.canvas2.toDataURL())}}this.app.dispatch({type:"loading_active",active:false})}}class I{constructor(t,i,s,e){this.holder=t;this.normalization=i;this.defaultNmeth=s;this.callback=e}render(){var t;if(!((t=this.normalization)===null||t===void 0?void 0:t.length)){this.nmethSelect=this.holder.text(this.defaultNmeth)}else{this.nmethSelect=this.holder.style("margin-right","10px").append("select").on("change",(()=>a(this,void 0,void 0,(function*(){const t=this.nmethSelect.node().value;this.callback(t,"nmeth")}))));for(const t of this.normalization){this.nmethSelect.append("option").text(t)}}}update(t){const i=this.nmethSelect.node().options;if(!i)return;const s=Array.from(i).find((i=>i.value===t));if(!s)throw`Invalid normalization method: ${t}`;s.selected=true}}class J{constructor(t,i,s){this.holder=t;this.value=i;this.callback=s}render(t){const i=this.holder.style("margin-right","10px").append("input").attr("type","number").style("width",t&&"width"in t?t.width:"80px").style("margin-left","0px").attr("type","number").property("value",this.value).on("keyup",(t=>a(this,void 0,void 0,(function*(){if(t.code!="Enter")return;const i=t.target.value;this.callback(i)}))));return i}}class G{constructor(t,i){this.values=[{label:"Observed",value:"observed"},{label:"Expected",value:"expected"},{label:"Observed/Expected",value:"oe"},{label:"Log(Observed/Expected)",value:"log(oe)"}];this.holder=t;this.callback=i}render(){this.matrixSelect=this.holder.style("margin-right","10px").append("select").on("change",(()=>a(this,void 0,void 0,(function*(){this.callback(this.matrixSelect.node().value,"matrixType")}))));for(const t of this.values){this.matrixSelect.append("option").text(t.label).attr("value",t.value)}}update(t){const i=this.matrixSelect.node().options;if(!i)return;const s=Array.from(i).find((i=>i.value===t));if(!s)throw`Invalid normalization method: ${t}`;s.selected=true}}class Z{constructor(t){this.zoomBlockCallback=t=>{const i=this.parent("detail");i.xBlock.block.zoomblock(2,t);i.yBlock.block.zoomblock(2,t)};this.minCallback=t=>{if(Number(t)>Number(this.parent("max"))){this.error("Min cutoff cannot be greater than max cutoff")}else{this.parent("min",Number(t));this.reColorHeatmap();this.parent("infoBar").update()}};this.maxCallback=t=>{if(Number(t)<Number(this.parent("min"))){this.error(`Max cutoff cannot be less than min cutoff`)}else if(Number(t)<0){this.error(`Max cutoff cannot be less than 0`)}else{this.parent("max",Number(t));this.reColorHeatmap();this.parent("infoBar").update()}};this.reColorHeatmap=()=>{if(this.parent("activeView")=="genome"){const t=this.parent("genome");const i=t.viewRender.grid.chromosomeMatrix;if(!i)return;for(const[t,s]of i){for(const[t,i]of s){if(!i)continue;for(const[t,s,e]of i.data){this.colorizeElement.colorizeElement(t,s,e,i,1,1,this.parent("min"),this.parent("max"),"genome")}i.img.attr("xlink:href",i.canvas.toDataURL());if(i.canvas2){i.img2.attr("xlink:href",i.canvas2.toDataURL())}}}}else if(this.parent("activeView")=="chrpair"){const t=this.parent("chrpair");for(const[i,s,e]of t.data){this.colorizeElement.colorizeElement(i,s,e,t.ctx,t.binpx,t.binpx,this.parent("min"),this.parent("max"),"chrpair")}}else if(this.parent("activeView")=="detail"){const t=this.parent("detail");for(const[i,s,e,o,r]of t.coords){this.colorizeElement.colorizeElement(i,s,r,t.ctx,e,o,this.parent("min"),this.parent("max"),"detail")}}};this.dropdownCallback=(t,i)=>{const s=this.app.getState();this.app.dispatch({type:"view_update",view:s.currView,config:{[i]:t}})};this.type="controlPanel";this.controls={};this.app=t.app;this.controlsDiv=t.controlsDiv;this.hic=t.hic;this.colorizeElement=new z;this.parent=t.parent;this.error=t.error}getState(t){return t}addLabel(t,i){return t.append("td").style("color","#858585").style("font-size",".8em").style("vertical-align",i.toUpperCase()=="VIEW"?"top":"middle").text(i.toUpperCase())}init(){const t=this.app.getState();const i=this.controlsDiv.style("background","rgb(253, 250, 244)").style("vertical-align","top").style("padding","5px").style("border","solid 0.5px #ccc");let s=true;this.controlsDiv.append("button").style("display","block").style("border","none").style("font-size","1.5em").style("background","none").html("≡").on("click",(()=>{s=!s;e.style("display",s?"block":"none")}));const e=i.append("div").attr("class","sjpp-hic-menu").style("display",s?"block":"none");const o=e.append("table").style("border-spacing","3px");this.controls.normalizationRow=o.append("tr");this.addLabel(this.controls.normalizationRow,"NORMALIZATION");this.controls.nmeth=new I(this.controls.normalizationRow.append("td").attr("class","sjpp-nmeth-select"),this.hic.normalization,t.defaultNmeth,this.dropdownCallback);this.controls.nmeth.render();this.controls.minCutoffRow=o.append("tr");this.controls.minCutoffLabel=this.addLabel(this.controls.minCutoffRow,"");this.controls.inputBpMinV=new J(this.controls.minCutoffRow.append("td"),this.parent("min"),this.minCallback).render({width:"120px"});this.controls.maxCutoffRow=o.append("tr");this.controls.maxCutoffLabel=this.addLabel(this.controls.maxCutoffRow,"");this.controls.inputBpMaxV=new J(this.controls.maxCutoffRow.append("td"),this.parent("max"),this.maxCallback).render({width:"120px"});this.controls.matrixTypeRow=o.append("tr");this.addLabel(this.controls.matrixTypeRow,"matrix type");this.controls.matrixType=new G(this.controls.matrixTypeRow.append("td"),this.dropdownCallback);this.controls.matrixType.render();this.controls.widthRow=o.append("tr");this.addLabel(this.controls.widthRow,"WIDTH / height");this.controls.width=this.controls.widthRow.append("td");this.controls.width.style("margin-right","10px").append("input").attr("type","number").style("width","80px").style("margin-left","0px").attr("type","number").property("value",t.width).on("keyup",(t=>a(this,void 0,void 0,(function*(){if(t.code!="Enter")return;const i=t.target.value;this.app.dispatch({type:"view_update",config:{settings:{widthHeightPx:Number.parseInt(i)}}})}))));const r=o.append("tr");this.addLabel(r,"VIEW");const h=r.append("td");this.controls.view=h.append("span").style("padding-right","5px").style("display","block");this.controls.genomeViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin-top","4px").html("≪ Genome").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"genome",config:{x:{},y:{}}})}))));this.controls.chrpairViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").on("click",(()=>a(this,void 0,void 0,(function*(){const t=this.app.getState();yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:t.x.chr},y:{chr:t.y.chr}}})}))));this.controls.horizontalViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").html("Horizontal View ≫").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"horizontal"})}))));this.controls.detailViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").html("≪ Detailed View").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"detail"})}))));this.controls.zoomDiv=o.append("tr").style("display",t.currView=="detail"?"contents":"none");this.addLabel(this.controls.zoomDiv,"ZOOM");const n=this.controls.zoomDiv.append("td");this.controls.zoomIn=n.append("button").style("margin-right","10px").text("In").on("click",(()=>{this.zoomBlockCallback(false)}));this.controls.zoomOut=n.append("button").style("margin-right","10px").text("Out").on("click",(()=>{this.zoomBlockCallback(true)}))}showBtns(){const t=this.app.getState();this.controls.genomeViewBtn.style("display",t.currView==="genome"?"none":"inline-block");if(t.currView==="detail"){this.controls.chrpairViewBtn.html(`≪ Entire ${t.x.chr}-${t.y.chr}`).style("display","block");this.controls.horizontalViewBtn.style("display","block");this.controls.zoomDiv.style("display","contents");this.controls.detailViewBtn.style("display","none")}else if(t.currView==="horizontal"){this.controls.chrpairViewBtn.html(`≪ Entire ${t.x.chr}-${t.y.chr}`).style("display","block");this.controls.detailViewBtn.style("display","block");this.controls.horizontalViewBtn.style("display","none");this.controls.zoomDiv.style("display","none")}else{this.controls.chrpairViewBtn.style("display","none");this.controls.horizontalViewBtn.style("display","none");this.controls.detailViewBtn.style("display","none");this.controls.zoomDiv.style("display","none");this.controls.widthRow.style("display","none")}}showHideControls(){const t=this.app.getState();this.controls.normalizationRow.style("display",t.currView=="horizontal"?"none":"");this.controls.minCutoffRow.style("display",t.currView=="horizontal"?"none":"");this.controls.maxCutoffRow.style("display",t.currView=="horizontal"?"none":"");this.controls.matrixTypeRow.style("display",t.currView=="horizontal"?"none":"");this.controls.widthRow.style("display",t.currView=="detail"?"contents":"none")}main(t){const i=this.app.getState(t);this.controls.nmeth.update(i[i.currView].nmeth);this.controls.matrixType.update(i[i.currView].matrixType);this.controls.zoomDiv.style("display",i.currView=="detail"?"contents":"none");if(i.currView=="chrpair"){this.controls.view.text(`${i.x.chr}-${i.y.chr} Pair`)}else{this.controls.view.text(i.currView.charAt(0).toUpperCase()+i.currView.slice(1))}const s=this.parent("absMin")<1e-5?Number(this.parent("absMin")).toExponential(1):Number(this.parent("absMin").toFixed(6));const e=this.parent("absMax")<1e-5?Number(this.parent("absMax")).toExponential(1):Number(this.parent("absMax").toFixed(6));this.controls.width.select("input").property("value",i.settings.widthHeightPx);this.controls.inputBpMinV.property("value",this.parent("min"));this.controls.inputBpMaxV.property("value",this.parent("max"));this.controls.minCutoffLabel.html(`MIN CUTOFF <br>(>= ${s})`);this.controls.maxCutoffLabel.html(`MAX CUTOFF <br>(<= ${e})`);this.showBtns();this.showHideControls()}}const q=i(Z);class K{constructor(t){this.startColor="white";this.endColor="red";this.addLabel=t=>this.labelRow.append("td").style("color","#858585").style("font-size",".8em").style("text-align","center").style("vertical-align","middle").text(t.toUpperCase());this.addValue=t=>this.valueRow.append("td").style("font-size","1em").style("text-align","center").style("vertical-align","middle").text(t);this.type="infoBar";this.app=t.app;this.hic=t.hic;const i=t.infoBarDiv;this.labelRow=i.append("tr");this.valueRow=i.append("tr");this.parent=t.parent}render(){return a(this,void 0,void 0,(function*(){this.addLabel("Version");this.addValue(this.hic.version);this.addLabel("Enzyme");this.addValue(this.hic.enzyme||"N/A");this.addLabel("Resolution");this.resolutionDiv=this.addValue("");this.colorScaleLabel=this.addLabel("Scale");this.colorScaleDiv=this.valueRow.append("td");this.colorScale=new w({barheight:14,barwidth:85,data:[this.parent("min"),this.parent("max")],fontSize:12,height:35,width:120,holder:this.colorScaleDiv,startColor:this.startColor,endColor:this.endColor,position:"20,0",ticks:2,tickSize:3,markedValue:1});this.colorScale.render();this.update()}))}update(){const t=this.parent("calcResolution");let i;if(t<this.hic.bpresolution[this.hic.bpresolution.length-1]){i=`${t} fragment${t>1?"s":""}`}else{i=u(t)}this.resolutionDiv.text(i);if(this.parent("state").currView=="horizontal"){this.colorScaleLabel.style("display","none");this.colorScaleDiv.style("display","none")}else{this.colorScaleLabel.style("display","");this.colorScaleDiv.style("display","");const t=this.parent("min");const i=this.parent("max");if(t<0){this.colorScale.startColor="blue";this.colorScale.data=[t,i]}else{this.colorScale.startColor="white";this.colorScale.data=[0,i]}this.colorScale.markedValue=t;this.colorScale.updateScale()}}}class Q{constructor(t,i){this.hic=t;this.percentile=i?i/100:.99}sortData(t){const i=[];if((t===null||t===void 0?void 0:t.items)&&(t===null||t===void 0?void 0:t.items.length)){for(const s of t.items){i.push(s[2])}}else{const s=new Set;for(const e of t){if(e.lead=="chrM"&&!e.items.length||e.lead=="chrY"&&!e.items.length){s.add(e.lead);continue}for(const t of e.items){i.push(t[2])}}if(s.size){for(const t of s){const i=this.hic.chrlst.indexOf(t);this.hic.chrlst.splice(i,1)}}}const s=i.sort(((t,i)=>t-i));const e=s[Math.floor(s.length*this.percentile)];const o=s[0];return[o,e,s[s.length-1]]}}class tt{constructor(t,i,s=[]){this.data=[];this.hic=t;this.debugmode=i;this.errList=s||[]}getData(t){return a(this,void 0,void 0,(function*(){if(this.data.length)this.data=[];if(!(t===null||t===void 0?void 0:t.matrixType))t.matrixType="observed";try{const i=yield n("hicgenome?",{method:"POST",body:JSON.stringify({chrlst:this.hic.chrlst,nmeth:t.nmeth,resolution:t.resolution,matrixType:t.matrixType,file:this.hic.file,url:this.hic.url,nochr:this.hic.nochr})});if(i.error){const t=i.error.split("\n");for(const i of t){this.errList.push(i)}}return i.data}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}}class it{constructor(t,i,s=[]){this.hic=t;this.debugmode=i;this.errList=s||[]}getData(t){return a(this,void 0,void 0,(function*(){if(!(t===null||t===void 0?void 0:t.matrixType))t.matrixType="observed";const i={matrixType:t.matrixType,file:this.hic.file,url:this.hic.url,pos1:this.hic.nochr?t.lead.replace("chr",""):t.lead,pos2:this.hic.nochr?t.follow.replace("chr",""):t.follow,nmeth:t.nmeth,resolution:t.resolution};try{const s=yield n("hicdata?",{method:"POST",body:JSON.stringify(i)});if(s.error){throw Error(`${t.lead} - ${t.follow}: ${s.error.error}`)}if(!s.items||s.items.length==0)return;return s}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}}class st{constructor(t){this.components={controls:[]};this.genomeData=[];this.calcResolution=null;this.firstRender=true;this.min=0;this.absMin=0;this.max=0;this.absMax=0;this.hasStatePreMain=true;this.type="view";this.hic=t.hic;this.state=t.state;this.dom=t.dom;this.errList=t.errList;this.plotDiv=this.dom.plotDiv.append("table").classed("sjpp-hic-plot-main",true);const i=this.plotDiv.append("tr");const s=this.plotDiv.append("tr");this.plotDiv={plot:i.append("td").classed("sjpp-hic-plot",true).attr("data-testid","sjpp-hic-plot"),yAxis:i.append("td").classed("sjpp-hic-plot-yaxis",true).attr("data-testid","sjpp-hic-yaxis"),xAxis:s.append("td").classed("sjpp-hic-plot-xaxis",true).attr("data-testid","sjpp-hic-xaxis"),blank:s.append("td")};this.app=t.app;this.dataMapper=new Q(this.hic,t.state.maxCutoffPercentile);this.activeView=this.state.currView;this.error=t.error;this.resolution=new R(this.error);this.parent=t=>this[t];this.detailDataMapper=new _(this.hic,this.errList,this.parent)}getState(t){return t}reactsTo(t){if(t.type.startsWith("view"))return true;else return false}initView(){const t={plotDiv:this.plotDiv,hic:this.hic,app:this.app,parent:t=>this[t]};if(this.state.currView=="genome"){t["data"]=this.data;this.genome=new X(t);this.genome.render()}else if(this.state.currView==="chrpair"){t["items"]=this.data;this.chrpair=new S(t);this.chrpair.render()}else if(this.state.currView==="detail"){t["data"]=this.data;this.detail=new j(t);this.detail.render()}else if(this.state.currView==="horizontal"){this.horizontal=new B(t);this.horizontal.render()}else{throw Error(`Unknown view: ${this.state.currView}`)}}fetchData(t){var i,s,e,o,r,h;return a(this,void 0,void 0,(function*(){if((i=this.data)===null||i===void 0?void 0:i.length)this.data=[];if(this.state.currView=="genome"){if(this.activeView!="genome"&&((s=this.genomeData)===null||s===void 0?void 0:s.length))this.data=this.genomeData;else{const i=new tt(this.hic,true,this.errList);this.genomeData=yield i.getData(t);this.data=this.genomeData}}else if(this.state.currView=="detail"){this.data=yield this.detailDataMapper.getData(this.state.x,this.state.y,this.fragData)}else{if(!((o=(e=this.state)===null||e===void 0?void 0:e.x)===null||o===void 0?void 0:o.chr)||!((h=(r=this.state)===null||r===void 0?void 0:r.y)===null||h===void 0?void 0:h.chr)){this.errList.push(`No positions provided for ${this.activeView} view.`);return}else{const i=this.state.x;const s=this.state.y;t["lead"]=`${i.start&&i.stop?`${i.chr}:${i.start}-${i.stop}`:i.chr}`;t["follow"]=`${s.start&&s.stop?`${s.chr}:${s.start}-${s.stop}`:s.chr}`}const i=new it(this.hic,true,this.errList);this.data=yield i.getData(t)}}))}setResolution(t){return a(this,void 0,void 0,(function*(){const i=this.app.getState(t);this.calcResolution=this.resolution.getResolution(i,this.hic);if(i.currView=="detail"&&this.calcResolution==null){yield this.detailDataMapper.getFragData(i.x,i.y);this.fragData=this.detailDataMapper.frag;const t=Math.min(this.fragData.x.stop-this.fragData.x.start,this.fragData.y.stop-this.fragData.y.start);this.calcResolution=this.resolution.findResFromArray(t,i.minFragSpan,this.hic.fragresolution,true)}else{this.fragData=null}return this.calcResolution}))}setDataArgs(t){return a(this,void 0,void 0,(function*(){const i=this.app.getState(t);const s=i[i.currView];const e={nmeth:s.nmeth,resolution:yield this.setResolution(t),matrixType:s.matrixType};if(i.currView=="chrpair"){e["lead"]=i.x.chr;e["follow"]=i.y.chr}return e}))}getViewData(t){var i,s,e,o,r;return a(this,void 0,void 0,(function*(){const a=yield this.setDataArgs(t);yield this.fetchData(a);if(((i=this.data)===null||i===void 0?void 0:i.length)>0||((e=(s=this.data)===null||s===void 0?void 0:s.items)===null||e===void 0?void 0:e.length)>0){const[t,i,s]=this.dataMapper.sortData(this.data);this.min=this.absMin=t;this.max=i;this.absMax=s}else{if(this.state.currView!="genome"){const i=this.app.getState(t);const s=((o=i.x)===null||o===void 0?void 0:o.start)?`${i.x.chr}:${i.x.start}-${i.x.stop}`:i.x.chr;const e=((r=i.y)===null||r===void 0?void 0:r.start)?`${i.y.chr}:${i.y.start}-${i.y.stop}`:i.y.chr;this.errList.push(`No data returned for ${s} and ${e}`)}}}))}init(){return a(this,void 0,void 0,(function*(){this.components={controls:yield q({app:this.app,controlsDiv:this.dom.controlsDiv,hic:this.hic,parent:(t,i)=>{if(i)this[t]=i;return this[t]},error:this.error.bind(this)})};this.infoBar=new K({app:this.app,infoBarDiv:this.dom.infoBarDiv.append("table").style("border-spacing","3px"),hic:this.hic,parent:t=>this[t]});this.infoBar.render()}))}main(t){return a(this,void 0,void 0,(function*(){if(this.errList.length){this.app.dispatch({type:"loading_active",active:false});return}const i=this.app.getState(t);if(this.firstRender==true){this.firstRender=false;yield this.getViewData(t);this.initView()}else{if(i.currView!="horizontal"){this.app.dispatch({type:"loading_active",active:true});yield this.getViewData(t)}if(this.activeView!=i.currView){if(this.activeView=="genome"){this.genome.svg.remove()}else{this.plotDiv.xAxis.selectAll("*").remove();this.plotDiv.yAxis.selectAll("*").remove();this.plotDiv.plot.selectAll("*").remove()}this.activeView=i.currView;this.initView()}else{this[i.currView].update(this.data)}}this.infoBar.update();if(this.errList.length){this.error(this.errList);this.app.dispatch({type:"loading_active",active:false})}}))}}const et=i(st);class ot{constructor(t){this.views=["genome","chrpair","detail","horizontal"];this.errList=[];this.type="app";this.hic={enzyme:t.enzyme,file:t.file,url:t.url,genome:t.genome,holder:t.holder,hostUrl:t.hostUrl,jwt:t.jwt,position1:t.position1,position2:t.position2,maxCutoffPercentile:t.maxCutoffPercentile,name:"name"in t?t.name:"Hi-C",tklist:"tklst"in t?t.tklst:[],state:"state"in t?t.state:{}};this.dom={errorDiv:t.holder.append("div").classed("sjpp-hic-error",true),controlsDiv:t.holder.append("div").classed("sjpp-hic-controls",true).style("display","inline-block"),infoBarDiv:t.holder.append("div").classed("sjpp-hic-infobar",true).style("display","inline-block").style("vertical-align","top").style("padding","5px").style("border","solid 0.5px #ccc"),loadingDiv:l("body").append("div").attr("id","sjpp-loading-overlay"),plotDiv:t.holder.append("div").classed("sjpp-hic-main",true).style("display","inline-block"),tip:new c}}error(t){return a(this,void 0,void 0,(function*(){if(t&&typeof t=="string")this.errList.push(t);m(this.errList,this.dom.errorDiv);this.errList=[]}))}determineView(){if(!this.hic.position1&&!this.hic.position2&&!this.hic.state.currView)this.hic.state.currView="genome";if(!this.hic.position1&&this.hic.position2)this.errList.push("Missing first position");if(this.hic.position1&&!this.hic.position2)this.errList.push("Missing second position");if(this.hic.position1&&this.hic.position2){const t=this.hic.position1.split(/[:-]/);const i=this.hic.position2.split(/[:-]/);this.hic.state.x={chr:t[0]};this.hic.state.y={chr:i[0]};if(!Number.isNaN(+t[1])&&!Number.isNaN(+t[2])){this.hic.state.x.start=+t[1];this.hic.state.x.stop=+t[2];this.hic.state.y.start=+i[1];this.hic.state.y.stop=+i[2];this.hic.state.currView="detail"}else{this.hic.state.currView="chrpair"}}else{if(!this.views.some((t=>t===this.hic.state.currView)))this.error(`Unknown view: ${this.hic.state.currView}`);else return this.hic.state.currView}}getViewsConfig(){var t,i,s;if(this.hic.maxCutoffPercentile)this.hic.state.maxCutoffPercentile=this.hic.maxCutoffPercentile;let e;if(((t=this.hic["normalization"])===null||t===void 0?void 0:t.length)>0){if(!this.hic["normalization"].includes("NONE"))this.hic["normalization"].unshift("NONE");e=this.hic["normalization"][0]}else{e="NONE"}if(this.hic.state.currView){if(!this.hic.state[this.hic.state.currView])this.hic.state[this.hic.state.currView]={};if(!((i=this.hic.state[this.hic.state.currView])===null||i===void 0?void 0:i.matrixType)){this.hic.state[this.hic.state.currView].matrixType="observed"}if(!((s=this.hic.state[this.hic.state.currView])===null||s===void 0?void 0:s.nmeth)){this.hic.state[this.hic.state.currView].nmeth=e}}for(const t of this.views){if(!this.hic.state[t]){this.hic.state[t]={matrixType:"observed",nmeth:e}}}}init(){return a(this,void 0,void 0,(function*(){this.determineView();try{yield b(this.hic,true,this.errList);this.getViewsConfig();this.store=yield D({app:this.api,state:this.hic.state});this.state=yield this.store.copyState();this.components={loadingOverlay:yield V({app:this.api,loadingDiv:this.dom.loadingDiv}),view:yield et({app:this.api,state:this.state,dom:this.dom,hic:this.hic,errList:this.errList,error:this.error})};yield this.api.dispatch()}catch(t){console.error(t.stack||t)}}))}main(){if(this.errList.length){this.error(this.errList);this.dom.loadingDiv.style("display","none");return}}}const rt=f(ot);export{rt as hicInit};
|
|
1
|
+
import{aG as t,az as i,p as s,a as e,l as o,f as r,aD as a,b8 as h,S as n,q as l,M as c,a0 as p,C as d,m as u,aA as f,b9 as m}from"./app-71453429.js";import{a as g,c as y}from"./axis-6cb4f314.js";import{p as x}from"./pointer-c7475677.js";import{b as v}from"./block.lazyload-6f83d057.js";import{C as w}from"./ColorScale-9800a609.js";import{h as b}from"./parseData-480d1ff3.js";import"./axisstyle-fac7f76b.js";class k{constructor(){this.views=["genome","chrpair","detail","horizontal"];this.type="store";this.defaultState={defaultNmeth:"NONE",loading:true,minBinNum_bp:200,minFragSpan:200,initialBinNum:20,settings:{widthHeightPx:800}}}}const D=t(k);k.prototype.actions={view_create(t){if(!t.view)throw Error("view_create: missing view");if(!this.views.some((i=>i==t.view)))throw Error(`view_create: unknown view = ${t.view}`);this.state.currView=t.view;const i=Object.assign(this.state,t.config);this.state=i},view_update(t){if(t.view){if(!this.views.some((i=>i==t.view)))throw Error(`view_update: unknown view = ${t.view}`);const i=Object.assign(this.state[t.view],t.config);this.state[t.view]=i}else{const i=Object.assign(this.state,t.config);this.state=i}},loading_active(t){this.state.loading=t.active}};class M{constructor(t){this.hasStatePreMain=true;this.type="loadingOverlay",this.app=t.app,this.loadingDiv=t.loadingDiv}reactsTo(t){if(t.type.startsWith("loading"))return true;else return false}getState(t){return t}init(){this.loadingDiv.append("div").attr("class","sjpp-spinner").style("display","")}main(t){const i=this.app.getState(t).loading;this.loadingDiv.style("display",i?"":"none")}}const V=i(M);class z{colorizeElement(t,i,s,e,o,r,a,h,n){if(s>=0){const t=s>=h?0:s<=a?255:Math.floor(255*(h-s)/h);const i=`rgb(255, ${t}, ${t})`;if(n==="genome"){e.ctx.fillStyle=i;e.ctx2.fillStyle=i}else{e.fillStyle=i}}else{const t=s<=a?255:Math.floor(255*(h+s)/h);const i=`rgb(${t}, ${t}, 255)`;if(n==="genome"){e.ctx.fillStyle=i;e.ctx2.fillStyle=i}else{e.fillStyle=i}}if(n==="genome"){e.ctx.fillRect(i,t,o,r);e.ctx2.fillRect(t,i,o,r)}else{e.fillRect(t,i,o,r)}}}class R{constructor(t){this.error=t}getResolution(t,i){if(t.currView=="genome")return i["bpresolution"][0];if(t.currView=="chrpair"){const s=this.getChrPairResolution(i,t.x,t.y,t.minBinNum_bp);return s}else if(t.currView=="detail"){const s=Math.max(t.x.stop-t.x.start,t.y.stop-t.y.start);let e=this.findResFromArray(s,t.minBinNum_bp,i.bpresolution);if(e==null&&!i.enzyme){e=i.bpresolution[i.bpresolution.length-1]}return e}else{this.error(`Unknown view: ${t.currView}`);throw`Unknown view: ${t.currView}`}}getChrPairResolution(t,i,s,e){const o=t.genome.chrlookup[i.chr.toUpperCase()].len;const r=t.genome.chrlookup[s.chr.toUpperCase()].len;const a=Math.max(o,r);const h=this.findResFromArray(a,e,t.bpresolution);if(h==null){this.error(`No suitable resolution for ${i.chr}-${s.chr} pair.`);return}return h}findResFromArray(t,i,s,e){let o=null;for(const e of s){if(t/e>i){o=e;break}}if(e&&o==null){o=s[s.length-1]}return o}getDefaultViewSpan(t,i,s,e,o){const r=this.getChrPairResolution(t,i,s,o);if(!r)return;return r*e}}class ${constructor(t,i){this.error=t;this.resolution=new R(this.error);this.minBinNum_bp=i}setPosition(t,i,s,e,o,r,a){const h=this.resolution.getChrPairResolution(r,e,o,this.minBinNum_bp);const n=h*a;let l=Math.max(1,Math.floor(t*h/s)-n/2);let c=Math.max(1,Math.floor(i*h/s)-n/2);{const t=r.genome.chrlookup[e.chr.toUpperCase()].len;if(l+n>=t){l=t-n}const i=r.genome.chrlookup[o.chr.toUpperCase()].len;if(c+n>i){c=i-n}}const p={chr:e.chr,start:l,stop:l+n};const d={chr:o.chr,start:c,stop:c+n};return[p,d]}}class C{formatData(t,i,s,e,o,r){const a=[];for(const[h,n,l]of i){const i=Math.floor(h/e)*s;const c=Math.floor(n/e)*s;if(t=="genome"){a.push([i,c,l])}if(t=="chrpair"){const t=o?i:c;const s=o?c:i;a.push([t,s,l]);if(r){a.push([s,t,l])}}}return a}}class L{constructor(t,i,s){this.chrorder=t;this.chrx=i;this.chry=s}isFirstX(){if(this.chrx==this.chry)return true;return this.chrorder.indexOf(this.chrx)<this.chrorder.indexOf(this.chry)}}class S{constructor(t){this.binpx=1;this.axispad=10;this.axisLabelFontSize=15;this.calcResolution=null;this.data=[];this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.items=t.items;this.parent=t.parent;this.chrxlen=this.hic.genome.chrlookup[this.parent("state").x.chr.toUpperCase()].len;this.chrylen=this.hic.genome.chrlookup[this.parent("state").y.chr.toUpperCase()].len;this.maxchrlen=Math.max(this.chrxlen,this.chrylen);this.colorizeElement=new z;this.positions=new $(t.error,this.parent("state").minBinNum_bp);this.formattedData=new C}setDefaultBinpx(){if(this.calcResolution==null)return;while(this.binpx*this.maxchrlen/this.calcResolution<600){this.binpx++}}renderAxes(){if(this.calcResolution==null)return;const t=this.plotDiv.yAxis.append("svg");const i=Math.ceil(this.chrylen/this.calcResolution)*this.binpx;t.attr("width",100).attr("height",this.axispad*2+i);t.append("g").attr("data-testid","sjpp-chrpair-svg-y").attr("transform","translate(80,"+(this.axispad+i/2)+")").append("text").text(this.parent("state").y.chr).attr("text-anchor","middle").attr("font-size",this.axisLabelFontSize).attr("font-family",s).attr("dominant-baseline","central").attr("transform","rotate(90)");e({axis:t.append("g").attr("transform",`translate(1, ${this.axispad})`).call(g(o().domain([0,this.chrylen]).range([0,i])).tickFormat(r(".2s"))),showline:true});const a=this.plotDiv.xAxis.append("svg").style("margin-top","-4px");const h=Math.ceil(this.chrxlen/this.calcResolution)*this.binpx;a.attr("height",100).attr("width",this.axispad*2+h);a.append("text").attr("data-testid","sjpp-chrpair-svg-x").text(this.parent("state").x.chr).attr("font-size",this.axisLabelFontSize).attr("font-family",s).attr("x",this.axispad+h/2).attr("text-anchor","middle").attr("y",60);e({axis:a.append("g").attr("transform","translate("+this.axispad+",1)").call(y(o().domain([0,this.chrxlen]).range([0,h])).tickFormat(r(".2s"))),showline:true})}renderCanvas(){const t=this.initDetailView.bind(this);this.canvas=this.plotDiv.plot.append("canvas").attr("data-testid","sjpp-chrpair-canvas").style("margin",this.axispad+"px").on("click",(function(i){return a(this,void 0,void 0,(function*(){const[s,e]=x(i,this);t(s,e)}))})).node();this.canvas.width=Math.ceil(this.chrxlen/this.calcResolution)*this.binpx;this.canvas.height=Math.ceil(this.chrylen/this.calcResolution)*this.binpx;this.ctx=this.canvas.getContext("2d")}initDetailView(t,i){const[s,e]=this.positions.setPosition(t,i,this.binpx,this.parent("state").x,this.parent("state").y,this.hic,this.parent("state").initialBinNum);this.app.dispatch({type:"view_create",view:"detail",config:{x:s,y:e}})}render(){this.calcResolution=this.parent("calcResolution");this.setDefaultBinpx();this.renderAxes();this.renderCanvas();this.update(this.items)}update(t){this.items=t;const i=new L(this.hic.chrorder,this.parent("state").x.chr,this.parent("state").y.chr).isFirstX();const s=this.parent("state").x.chr===this.parent("state").y.chr;this.data=this.formattedData.formatData("chrpair",t.items,this.binpx,this.calcResolution,i,s);this.ctx.clearRect(0,0,this.canvas.width,this.canvas.height);for(const[t,i,s]of this.data){this.colorizeElement.colorizeElement(t,i,s,this.ctx,this.binpx,this.binpx,this.parent("min"),this.parent("max"),"chrpair")}this.app.dispatch({type:"loading_active",active:false})}}class B{constructor(t){this.maxPercentage=5;this.subPanelPxWidth=600;this.borderColor="rgba(200,0,0,.1)";this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.items=t.items;this.parent=t.parent}setRunPpTracks(){const t=[{type:"hicstraw",file:this.hic.file,url:this.hic.url,name:this.hic.name,enzyme:this.hic.enzyme,maxpercentage:this.maxPercentage,pyramindup:1}];if(this.hic.tklst){for(const i of this.hic.tklst){t.push(i)}}h(this.hic.genome,t);return t}setRunPpArgs(t){const i={holder:this.plotDiv.plot,hostURL:this.hic.hostURL,jwt:this.hic.jwt,genome:this.hic.genome,nobox:1,tklst:t};const s=this.parent("state");if(s.x.chr==s.y.chr&&Math.max(s.x.start,s.y.start)<Math.min(s.x.stop,s.y.stop)){i["chr"]=s.x.chr;i["start"]=Math.min(s.x.start,s.y.start);i["stop"]=Math.max(s.x.stop,s.y.stop)}else{i["chr"]=s.x.chr;i["start"]=s.x.start;i["stop"]=s.x.stop;i["width"]=this.subPanelPxWidth;i["subpanels"]=[{chr:s.y.chr,start:s.y.start,stop:s.y.stop,width:this.subPanelPxWidth,leftpad:10,leftborder:this.borderColor}]}return i}render(){const t=this.setRunPpTracks();const i=this.setRunPpArgs(t);v(i)}}class N{constructor(t,i,s,e,o,r){this.leftheadw=20;this.rightheadw=40;this.lpad=1;this.rpad=1;this.firstRender=true;this.app=t;this.hic=i;this.width=s;this.bbmargin=e;this.holder=o;this.isYblock=r;this.bbw=this.leftheadw+this.lpad+this.width+this.rpad+this.rightheadw+2*this.bbmargin;this.defaultLeft=this.bbmargin+this.leftheadw+this.lpad;this.defaultTop=this.bbmargin+this.rightheadw+this.rpad}setArgs(t){const i={hostURL:this.hic.hostURL,genome:this.hic.genome,holder:this.holder,noresize:true,nobox:true,butrowbottom:true,style:{margin:`${this.bbmargin}px`},width:this.width,leftheadw:this.leftheadw,chr:t.chr,start:t.start,stop:t.stop,rightheadw:this.rightheadw,tklst:[],rotated:this.isYblock,showreverse:this.isYblock};h(this.hic.genome,i.tklst);return i}setMethods(t,i,s){const e={onloadalltk_always:()=>{this.onload(t,i,s)},onpanning:t=>this.onpanning(t,i)};if(this.isYblock){e["onsetheight"]=t=>{this.holder.transition().style("left",`${t+this.bbmargin+30}px`)}}return e}onload(t,i,s){this.bbw=this.block.leftheadw+this.block.lpad+this.block.width+this.block.rpad+this.block.rightheadw+2*this.bbmargin;if(this.isYblock){s.transition().style("height",`${this.bbw}px`);t.style("height",`${this.bbw}px`)}else t.style("width",`${this.bbw}px`);if(this.isYblock){this.defaultTop=this.bbmargin+this.block.rightheadw+this.block.rpad;i.style("top",`${this.defaultTop}px`)}else{this.defaultLeft=this.bbmargin+this.block.leftheadw+this.block.lpad;i.style("left",`${this.defaultLeft}px`)}const e={[this.isYblock?"y":"x"]:{chr:this.block.rglst[0].chr,start:this.block.rglst[0].start,stop:this.block.rglst[0].stop}};if(this.firstRender==false){this.app.dispatch({type:"view_update",config:e})}else{this.firstRender=false}}onpanning(t,i){if(!this.isYblock)i.style("left",`${t+this.defaultLeft}px`);else i.style("top",`${-t+this.defaultTop}px`)}loadBlock(t,i,s,e){return a(this,void 0,void 0,(function*(){const o=this.setArgs(t);const r=this.isYblock?this.setMethods(i,s,e):this.setMethods(i,s);const h=Object.assign(o,r);yield v(h).then((t=>a(this,void 0,void 0,(function*(){this.block=t}))))}))}}class P{constructor(t){this.obj={rglst:[]};this.errList=t}isFragData(t,i){if(i!=null)return;if(!t.enzyme){i=t.bpresolution[t.bpresolution.length-1];return}}formatFragArgs(t,i){const s={getdata:1,getBED:1,file:t,rglst:[i]};return s}getBedData(t){return a(this,void 0,void 0,(function*(){try{return yield n("tkbedj",{method:"POST",body:JSON.stringify(t)})}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}getXFragData(t,i,s){return a(this,void 0,void 0,(function*(){this.isFragData(t,i);if(!t.enzymefile)return;const e=this.formatFragArgs(t.enzymefile,s);return yield this.getBedData(e)}))}getYFragData(t,i){return a(this,void 0,void 0,(function*(){const s=this.formatFragArgs(t.enzymefile,i);return yield this.getBedData(s)}))}fetchData(t,i,s,e,o,r){return a(this,void 0,void 0,(function*(){const a={matrixType:i.matrixType,file:t.file,url:t.url,pos1:this.determinePosition(t,e,r===null||r===void 0?void 0:r.x),pos2:this.determinePosition(t,o,r===null||r===void 0?void 0:r.y),nmeth:i.nmeth,resolution:s};if(r)a["isfrag"]=true;try{const t=n("hicdata?",{method:"POST",body:JSON.stringify(a)});if(t.error){this.errList.push(t.error)}return t}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}determinePosition(t,i,s){if(s){return`${t.nochr?i.chr.replace("chr",""):i.chr}:${s.start}:${s.stop}`}else{return`${t.nochr?i.chr.replace("chr",""):i.chr}:${i.start}:${i.stop}`}}}class E{constructor(t,i){this.id2coord=new Map;this.min=null;this.max=null;this.items=[];this.errLst=t;for(const t of i){if(!t.rest||!t.rest[0]){this.errLst.push("items[].rest data problem")}const i=Number.parseInt(t.rest[0]);if(Number.isNaN(i)){this.errLst.push(`${t.start}.${t.stop} invalid fragment id: ${t.rest[0]}`)}this.id2coord.set(i,[t.start,t.stop]);if(this.min==null){this.min=i;this.max=i}else{this.min=Math.min(this.min,i);this.max=Math.max(this.max,i)}}}}class _{constructor(t,i,s){this.frag={x:{},y:{}};this.hic=t;this.errList=i;this.dataFetcher=new P(i);this.parent=s}getFragData(t,i){return a(this,void 0,void 0,(function*(){try{const s=yield this.dataFetcher.getXFragData(this.hic,this.parent("calcResolution"),t);if(s){if(!s.items){this.errList.push(`No fragment data returned for ${t.chr}:${t.start}-${t.stop}`);return}const e=new E(this.errList,s.items);if(this.errList.length)return;this.frag.x={id2coord:e.id2coord,start:e.min,stop:e.max};const o=yield this.dataFetcher.getYFragData(this.hic,i);if(this.errList.length)return;if(o){if(!o.items){this.errList.push(`No fragment data returned for ${i.chr}:${i.start}-${i.stop}`);return}const s=new E(this.errList,o.items);if(this.errList.length)return;this.frag.y={id2coord:new Map,start:s.min,stop:s.max};this.determineMap(s.id2coord,t,i)}}}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}determineMap(t,i,s){if(i.chr==s.chr){for(const[i,s]of t){this.frag.x["id2coord"].set(i,s)}this.frag.y["id2coord"]=this.frag.x["id2coord"]}else{this.frag.y["id2coord"]=t}}getData(t,i,s){return a(this,void 0,void 0,(function*(){return yield this.dataFetcher.fetchData(this.hic,this.parent("state")["detail"],this.parent("calcResolution"),t,i,s)}))}}class F{constructor(t,i){this.hic=t;this.errlist=i}getCoordinates(t,i,s,e,o,r){const a=new L(this.hic.chrorder,t.chr,i.chr).isFirstX();const h=t.chr==i.chr;const n=o/(t.stop-t.start);const l=o/(i.stop-i.start);const c=this.calculateCoordinates(a,h,n,l,e,t,i,s,r);return c}calculateCoordinates(t,i,s,e,o,r,a,h,n){const l=[];for(const[c,p,d]of h.items){let h,u,f,m;if(n){const i=t?c:p;const s=t?p:c;if(n.x.id2coord.has(i)){const[t,s]=n.x.id2coord.get(i);h=t;f=s-t}else{this.errlist.push(`[x id error] x: ${i} y: ${s}`);continue}{const t=i+o;if(n.x.id2coord.has(t)){const[i,s]=n.x.id2coord.get(t);f=s-h}}if(n.y.id2coord.has(s)){const[t,i]=n.y.id2coord.get(s);u=t;m=i-t}else{this.errlist.push(`[y id error] x: ${i} y: ${s}`);continue}{const t=s+o;if(n.y.id2coord.has(t)){const[i,s]=n.y.id2coord.get(t);m=s-u}}}else{h=t?c:p;u=t?p:c;f=o;m=o}if(i){if(h>r.start-f&&h<r.stop&&u>a.start-m&&u<a.stop){l.push([Math.floor((h-r.start)*s),Math.floor((u-a.start)*e),Math.ceil(f*s),Math.ceil(m*e),d])}if(u>r.start-m&&u<r.stop&&h>a.start&&h<a.stop){l.push([Math.floor((u-r.start)*s),Math.floor((h-a.start)*e),Math.ceil(m*s),Math.ceil(f*e),d])}continue}l.push([Math.floor((h-r.start)*s),Math.floor((u-a.start)*e),Math.ceil(f*s),Math.ceil(m*e),d])}return l}}class j{constructor(t){this.calcResolution=null;this.binpx=2;this.bbmargin=1;this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.sheath=t.plotDiv.yAxis.append("div").style("position","relative").style("width","200px").style("height","800px");this.rotor=this.sheath.append("div").style("position","absolute").style("bottom","0px").style("transform","rotate(-90deg)").style("transform-origin","left bottom");this.data=t.data;this.parent=t.parent;this.errList=this.parent("errList");this.resolution=new R(t.error);this.colorizeElement=new z;this.viewRangeBpW=this.resolution.getDefaultViewSpan(this.hic,this.parent("state").x,this.parent("state").y,this.parent("state").initialBinNum,this.parent("state").minBinNum_bp);this.dataMapper=new _(this.hic,t.error,t.parent);this.coordinates=new F(this.hic,this.errList)}renderCanvas(t){this.canvasHolder=this.plotDiv.plot.append("div").style("position","relative").style("width",`${this.xBlock.bbw}px`).style("height",`${this.yBlock.bbw}px`).style("overflow","hidden");this.canvas=this.canvasHolder.append("canvas").style("display","block").style("position","absolute").attr("data-testid","sjpp-hic-detail-canvas").attr("width",t).attr("height",t).on("mousedown",(t=>{const i=l(document.body);const s=t.clientX;const e=t.clientY;const o=Number.parseInt(this.canvas.style("left"));const r=Number.parseInt(this.canvas.style("top"));i.on("mousemove",(t=>{const i=t.clientX-s;const a=t.clientY-e;this.xBlock.block.panning(i);this.yBlock.block.panning(a);this.canvas.style("left",`${o+i}px`).style("top",`${r+a}px`)}));i.on("mouseup",(t=>{i.on("mousemove",null).on("mouseup",null);const o=t.clientX-s;const r=t.clientY-e;console.log(o);this.xBlock.block.pannedby(o);this.yBlock.block.pannedby(r)}))}))}render(){return a(this,void 0,void 0,(function*(){this.calcResolution=this.parent("calcResolution");const t=this.parent("state");this.xBlock=new N(this.app,this.hic,t.settings.widthHeightPx,this.bbmargin,this.plotDiv.xAxis,false);this.yBlock=new N(this.app,this.hic,t.settings.widthHeightPx,this.bbmargin,this.rotor,true);this.renderCanvas(t.settings.widthHeightPx);yield this.xBlock.loadBlock(t.x,this.canvasHolder,this.canvas);yield this.yBlock.loadBlock(t.y,this.canvasHolder,this.canvas,this.sheath);this.update(this.data)}))}update(t){return a(this,void 0,void 0,(function*(){if(t.items.length==0){this.app.dispatch({type:"loading_active",active:false});return}this.data=t;const i=this.parent("state");const s=Number.parseInt(this.canvas.attr("width"));const e=Number.parseInt(this.canvasHolder.style("width"))-s+i.settings.widthHeightPx;this.canvasHolder.style("width",`${e}px`).style("height",`${e}px`);this.canvas.attr("width",`${i.settings.widthHeightPx}px`).attr("height",`${i.settings.widthHeightPx}px`);if(this.xBlock.block.width!=i.settings.widthHeightPx){this.xBlock.block.width=i.settings.widthHeightPx;this.yBlock.block.width=i.settings.widthHeightPx;this.xBlock.block.zoom2px(0,s);this.yBlock.block.zoom2px(0,s)}this.ctx=this.canvas.node().getContext("2d");const o=this.coordinates.getCoordinates(i.x,i.y,this.parent("data"),this.parent("calcResolution"),i.settings.widthHeightPx,this.parent("fragData"));this.coords=o;this.ctx.clearRect(0,0,i.settings.widthHeightPx,i.settings.widthHeightPx);for(const[t,i,s,e,o]of this.coords){this.colorizeElement.colorizeElement(t,i,o,this.ctx,s,e,this.parent("min"),this.parent("max"),"detail")}this.app.dispatch({type:"loading_active",active:false})}))}}class T{constructor(t,i){this.label=t;this.width=i}}class A{constructor(t,i,s,e){this.chromosomeMatrix=new Map;this.chromosomeList=[];this.xoff=0;this.yoff=0;this.chr2px=[];this.chrlst=t;let o=this.chrlst.length;for(const t of this.chrlst){const r=Math.ceil(s[t.toUpperCase()].len/i)*e;const a=new T(t,r);this.chromosomeList.push(a);this.chr2px[t]=r;o+=r}this.totalpx=o;for(let t=0;t<this.chrlst.length;t++){const o=this.chrlst[t];this.chromosomeMatrix.set(o,new Map);let r=0;for(let a=0;a<=t;a++){const t=this.chrlst[a];const h=s[o.toUpperCase()].len;const n=s[t.toUpperCase()].len;const l=Math.ceil(h/i)*e;const c=Math.ceil(n/i)*e;this.chromosomeMatrix.get(o).set(t,{x:this.xoff,y:r,xbins:l,ybins:c,data:[]});r+=this.chr2px[t]+A.borderWidth}this.yoff=r;this.xoff+=this.chr2px[o]+A.borderWidth}}}A.checkerFill="#DEF3FA";A.spaceColor="#CCC";A.fontSize=15;A.font=s;A.borderWidth=1;A.defaultChrLabWidth=100;class O{constructor(t){this.grid=new A(t.hic.chrlst,t.resolution||t.hic.bpresolution[0],t.hic.genome.chrlookup,1)}}class U{constructor(t,i,s,e){this.svg=t;this.layerMap=i.attr("transform",`translate(${A.defaultChrLabWidth}, ${A.fontSize})`);this.layerSv=s.attr("transform",`translate(${A.defaultChrLabWidth}, ${A.fontSize})`);this.grid=e}render(){this.renderAxisX(this.grid);this.renderAxisY(this.grid);this.svg.attr("width",A.defaultChrLabWidth+this.grid.xoff).attr("height",A.fontSize+this.grid.yoff)}renderAxisX(t){let i=0;this.grid.chromosomeList.forEach(((s,e)=>{const o=s.width;if(e%2===0){this.layerMap.append("rect").attr("x",i).attr("width",o).attr("height",A.fontSize).attr("y",-A.fontSize).attr("fill",A.checkerFill)}this.layerMap.append("text").attr("font-family",A.font).attr("text-anchor","middle").attr("font-size",12).attr("x",i+o/2).text(s.label);i+=o;this.layerSv.append("line").attr("x1",i).attr("x2",i).attr("y2",t.totalpx).attr("stroke",A.spaceColor).attr("shape-rendering","crispEdges");i+=A.borderWidth}))}renderAxisY(t){let i=0;this.grid.chromosomeList.forEach(((s,e)=>{const o=s.width;if(e%2===0){this.layerMap.append("rect").attr("x",-A.defaultChrLabWidth).attr("width",A.defaultChrLabWidth).attr("height",o).attr("y",i).attr("fill",A.checkerFill)}this.layerMap.append("text").attr("font-family",A.font).attr("text-anchor","end").attr("dominant-baseline","central").attr("font-size",12).attr("y",i+o/2).text(s.label);i+=o;this.layerSv.append("line").attr("x2",t.totalpx).attr("y1",i).attr("y2",i).attr("stroke",A.spaceColor).attr("shape-rendering","crispEdges");i+=A.borderWidth}))}}class H{constructor(){this.chrx_tip=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.chry_tip=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0})}render(t,i,s){const e=t.node().getBoundingClientRect();this.chrx_tip.clear().show(e.left,e.top).d.style("top",null).style("bottom",window.innerHeight-e.top-window.pageYOffset+"px").text(i);this.chry_tip.clear().show(e.left,e.top).d.style("left",null).style("right",document.body.clientWidth-e.left-window.pageXOffset+"px").text(s)}}class Y{constructor(t,i){this.app=i;this.layerMap=t;this.tooltips=new H}render(t,i,s,e){t.canvas=e.append("canvas").style("display","none").node();t.ctx=t.canvas.getContext("2d");t.canvas.width=t.xbins;t.canvas.height=t.ybins;t.img=this.layerMap.append("image").attr("width",t.canvas.width).attr("height",t.canvas.height).attr("x",t.x).attr("y",t.y).on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:i},y:{chr:s}}})})))).on("mouseover",(()=>{this.tooltips.render(t.img,i,s)}));if(i!=s){t.canvas2=e.append("canvas").style("display","none").node();t.canvas2.width=t.ybins;t.canvas2.height=t.xbins;t.ctx2=t.canvas2.getContext("2d");t.img2=this.layerMap.append("image").attr("width",t.canvas2.width).attr("height",t.canvas2.height).attr("x",t.y).attr("y",t.x).on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:s},y:{chr:i}}})})))).on("mouseover",(()=>{this.tooltips.render(t.img2,s,i)}))}else{t.ctx2=t.ctx}}}class W{constructor(t,i,s){this.grid=t;this.gridElementRenderer=new Y(i,s)}render(t){for(const[i,s]of this.grid.chromosomeMatrix){for(const[e,o]of s){this.gridElementRenderer.render(o,i,e,t)}}}}class X{constructor(t){this.tip=new c;this.pica_x=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.pica_y=new c({border:"solid 1px #ccc",padding:"0px",offsetX:0,offsetY:0});this.chr2px={};this.lead2follow=new Map;this.values=[];this.defaultChrLabWidth=100;this.borderwidth=1;this.default_maxVPerc=5;this.fontsize=15;this.xoff=0;this.yoff=0;this.binpx=1;this.atdev_chrnum=8;this.min=0;this.max=0;this.app=t.app;this.hic=t.hic;this.plotDiv=t.plotDiv;this.data=t.data;this.parent=t.parent;this.resolution=t.resolution||t.hic.bpresolution[0];this.svg=this.plotDiv.plot.append("svg").attr("data-testid","sjpp-hic-genome-svg");this.layer_map=this.svg.append("g").attr("data-testid","sjpp-hic-layerMap-g");this.layer_sv=this.svg.append("g").attr("data-testid","sjpp-hic-layerSv-g");this.colorizeElement=new z;this.viewModel=new O(t);this.viewRender=new U(this.svg,this.layer_map,this.layer_sv,this.viewModel.grid);this.gridElementsRenderer=new W(this.viewModel.grid,this.layer_map,this.app);this.gridFormattedData=new C}makeSv(){const t=new Set;const i=8;for(const s of this.hic.sv.items){const e=this.lead2follow.get(s.chr1);if(!e){t.add(s.chr1);continue}const o=e.get(s.chr2);if(!o){t.add(s.chr2);continue}const r=s.position1/this.resolution;const a=s.position2/this.resolution;this.layer_sv.append("circle").attr("stroke","black").attr("fill","white").attr("fill-opacity",0).attr("cx",o.x+r).attr("cy",o.y+a).attr("r",i).on("mouseover",(t=>{this.tooltipSv(t,s)})).on("mouseout",(()=>{this.tip.hide()})).on("click",(()=>{this.clickSv(s)}));if(o.img2){this.layer_sv.append("circle").attr("stroke","black").attr("fill","whilte").attr("fill-opacity",0).attr("cy",o.x+r).attr("cx",o.y+a).attr("r",i).on("mouseover",(t=>{this.tooltipSv(t,s)})).on("mouseout",(()=>{this.tip.hide()})).on("click",(()=>{this.clickSv(s)}))}}}tooltipSv(t,i){this.tip.clear().show(t.clientX,t.clientY).d.append("div").text(i.chr1==i.chr2?`${i.chr1}:${i.position1}-${i.position2}`:`${i.chr1}:${i.position1}>${i.chr2}:${i.position2}`)}clickSv(t){const i=5e5;const s=600;const e="rgba(200,0,0,.1)";const o=p({x:100,y:100});o.header.text(this.hic.name+" "+(t.chr1==t.chr2?`${t.chr1}:${t.position1}-${t.position2}`:`${t.chr1}:${t.position1}>${t.chr2}:${t.position2}`));const r=[{type:d.hicstraw,file:this.hic.file,enzyme:this.hic.enzyme,maxpercentage:this.default_maxVPerc,pyramidup:1,name:this.hic.name}];if(this.hic.tklst){for(const t of this.hic.tklst){r.push(t)}}h(this.hic.genome,r);const a={holder:o.body,hostURL:this.hic.hostURL,jwt:this.hic.jwt,genome:this.hic.genome,nobox:1,tklst:r};if(t.chr1==t.chr2&&Math.abs(t.position2-t.position1)<i*2){a.chr=t.chr1;const i=Math.abs(t.position2-t.position1);a.start=Math.max(1,Math.min(t.position1,t.position2)-i);a.stop=Math.min(this.hic.genome.chrlookup[t.chr1.toUpperCase()].len,Math.max(t.position1,t.position2)+i)}else{a.chr=t.chr1;a.start=Math.max(1,t.position1-i/2);a.stop=Math.min(this.hic.genome.chrlookup[t.chr1.toUpperCase()].len,t.position1+i/2);a.width=s;a.subpanels=[{chr:t.chr2,start:Math.max(1,t.position2-i/2),stop:Math.min(this.hic.genome.chrlookup[t.chr2.toUpperCase()].len,t.position2+i/2),width:s,leftpad:10,leftborder:e}]}v(a)}render(){this.viewRender.render();this.gridElementsRenderer.render(this.hic.holder);if(this.hic.sv&&this.hic.sv.items){this.makeSv()}this.update(this.data)}update(t){this.data=t;this.min=this.parent("min");this.max=this.parent("max");for(const t of this.data){if(!this.hic.chrlst.includes(t.lead)||!this.hic.chrlst.includes(t.follow))continue;const i=this.viewModel.grid.chromosomeMatrix.get(t.lead).get(t.follow);if(!i)continue;i.ctx.clearRect(0,0,i.canvas.width,i.canvas.height);if(i.canvas2){i.ctx2.clearRect(0,0,i.canvas2.width,i.canvas.height)}i.data=this.gridFormattedData.formatData("genome",t.items,this.binpx,this.resolution);for(const[t,s,e]of i.data){this.colorizeElement.colorizeElement(t,s,e,i,this.binpx,this.binpx,this.min,this.max,"genome")}i.img.attr("xlink:href",i.canvas.toDataURL());if(i.canvas2){i.img2.attr("xlink:href",i.canvas2.toDataURL())}}this.app.dispatch({type:"loading_active",active:false})}}class I{constructor(t,i,s,e){this.holder=t;this.normalization=i;this.defaultNmeth=s;this.callback=e}render(){var t;if(!((t=this.normalization)===null||t===void 0?void 0:t.length)){this.nmethSelect=this.holder.text(this.defaultNmeth)}else{this.nmethSelect=this.holder.style("margin-right","10px").append("select").on("change",(()=>a(this,void 0,void 0,(function*(){const t=this.nmethSelect.node().value;this.callback(t,"nmeth")}))));for(const t of this.normalization){this.nmethSelect.append("option").text(t)}}}update(t){const i=this.nmethSelect.node().options;if(!i)return;const s=Array.from(i).find((i=>i.value===t));if(!s)throw`Invalid normalization method: ${t}`;s.selected=true}}class J{constructor(t,i,s){this.holder=t;this.value=i;this.callback=s}render(t){const i=this.holder.style("margin-right","10px").append("input").attr("type","number").style("width",t&&"width"in t?t.width:"80px").style("margin-left","0px").attr("type","number").property("value",this.value).on("keyup",(t=>a(this,void 0,void 0,(function*(){if(t.code!="Enter")return;const i=t.target.value;this.callback(i)}))));return i}}class G{constructor(t,i){this.values=[{label:"Observed",value:"observed"},{label:"Expected",value:"expected"},{label:"Observed/Expected",value:"oe"},{label:"Log(Observed/Expected)",value:"log(oe)"}];this.holder=t;this.callback=i}render(){this.matrixSelect=this.holder.style("margin-right","10px").append("select").on("change",(()=>a(this,void 0,void 0,(function*(){this.callback(this.matrixSelect.node().value,"matrixType")}))));for(const t of this.values){this.matrixSelect.append("option").text(t.label).attr("value",t.value)}}update(t){const i=this.matrixSelect.node().options;if(!i)return;const s=Array.from(i).find((i=>i.value===t));if(!s)throw`Invalid normalization method: ${t}`;s.selected=true}}class Z{constructor(t){this.zoomBlockCallback=t=>{const i=this.parent("detail");i.xBlock.block.zoomblock(2,t);i.yBlock.block.zoomblock(2,t)};this.minCallback=t=>{if(Number(t)>Number(this.parent("max"))){this.error("Min cutoff cannot be greater than max cutoff")}else{this.parent("min",Number(t));this.reColorHeatmap();this.parent("infoBar").update()}};this.maxCallback=t=>{if(Number(t)<Number(this.parent("min"))){this.error(`Max cutoff cannot be less than min cutoff`)}else if(Number(t)<0){this.error(`Max cutoff cannot be less than 0`)}else{this.parent("max",Number(t));this.reColorHeatmap();this.parent("infoBar").update()}};this.reColorHeatmap=()=>{if(this.parent("activeView")=="genome"){const t=this.parent("genome");const i=t.viewRender.grid.chromosomeMatrix;if(!i)return;for(const[t,s]of i){for(const[t,i]of s){if(!i)continue;for(const[t,s,e]of i.data){this.colorizeElement.colorizeElement(t,s,e,i,1,1,this.parent("min"),this.parent("max"),"genome")}i.img.attr("xlink:href",i.canvas.toDataURL());if(i.canvas2){i.img2.attr("xlink:href",i.canvas2.toDataURL())}}}}else if(this.parent("activeView")=="chrpair"){const t=this.parent("chrpair");for(const[i,s,e]of t.data){this.colorizeElement.colorizeElement(i,s,e,t.ctx,t.binpx,t.binpx,this.parent("min"),this.parent("max"),"chrpair")}}else if(this.parent("activeView")=="detail"){const t=this.parent("detail");for(const[i,s,e,o,r]of t.coords){this.colorizeElement.colorizeElement(i,s,r,t.ctx,e,o,this.parent("min"),this.parent("max"),"detail")}}};this.dropdownCallback=(t,i)=>{const s=this.app.getState();this.app.dispatch({type:"view_update",view:s.currView,config:{[i]:t}})};this.type="controlPanel";this.controls={};this.app=t.app;this.controlsDiv=t.controlsDiv;this.hic=t.hic;this.colorizeElement=new z;this.parent=t.parent;this.error=t.error}getState(t){return t}addLabel(t,i){return t.append("td").style("color","#858585").style("font-size",".8em").style("vertical-align",i.toUpperCase()=="VIEW"?"top":"middle").text(i.toUpperCase())}init(){const t=this.app.getState();const i=this.controlsDiv.style("background","rgb(253, 250, 244)").style("vertical-align","top").style("padding","5px").style("border","solid 0.5px #ccc");let s=true;this.controlsDiv.append("button").style("display","block").style("border","none").style("font-size","1.5em").style("background","none").html("≡").on("click",(()=>{s=!s;e.style("display",s?"block":"none")}));const e=i.append("div").attr("class","sjpp-hic-menu").style("display",s?"block":"none");const o=e.append("table").style("border-spacing","3px");this.controls.normalizationRow=o.append("tr");this.addLabel(this.controls.normalizationRow,"NORMALIZATION");this.controls.nmeth=new I(this.controls.normalizationRow.append("td").attr("class","sjpp-nmeth-select"),this.hic.normalization,t.defaultNmeth,this.dropdownCallback);this.controls.nmeth.render();this.controls.minCutoffRow=o.append("tr");this.controls.minCutoffLabel=this.addLabel(this.controls.minCutoffRow,"");this.controls.inputBpMinV=new J(this.controls.minCutoffRow.append("td"),this.parent("min"),this.minCallback).render({width:"120px"});this.controls.maxCutoffRow=o.append("tr");this.controls.maxCutoffLabel=this.addLabel(this.controls.maxCutoffRow,"");this.controls.inputBpMaxV=new J(this.controls.maxCutoffRow.append("td"),this.parent("max"),this.maxCallback).render({width:"120px"});this.controls.matrixTypeRow=o.append("tr");this.addLabel(this.controls.matrixTypeRow,"matrix type");this.controls.matrixType=new G(this.controls.matrixTypeRow.append("td"),this.dropdownCallback);this.controls.matrixType.render();this.controls.widthRow=o.append("tr");this.addLabel(this.controls.widthRow,"WIDTH / height");this.controls.width=this.controls.widthRow.append("td");this.controls.width.style("margin-right","10px").append("input").attr("type","number").style("width","80px").style("margin-left","0px").attr("type","number").property("value",t.width).on("keyup",(t=>a(this,void 0,void 0,(function*(){if(t.code!="Enter")return;const i=t.target.value;this.app.dispatch({type:"view_update",config:{settings:{widthHeightPx:Number.parseInt(i)}}})}))));const r=o.append("tr");this.addLabel(r,"VIEW");const h=r.append("td");this.controls.view=h.append("span").style("padding-right","5px").style("display","block");this.controls.genomeViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin-top","4px").html("≪ Genome").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"genome",config:{x:{},y:{}}})}))));this.controls.chrpairViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").on("click",(()=>a(this,void 0,void 0,(function*(){const t=this.app.getState();yield this.app.dispatch({type:"view_create",view:"chrpair",config:{x:{chr:t.x.chr},y:{chr:t.y.chr}}})}))));this.controls.horizontalViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").html("Horizontal View ≫").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"horizontal"})}))));this.controls.detailViewBtn=h.append("button").style("display","none").style("padding","2px").style("margin","4px 0px").html("≪ Detailed View").on("click",(()=>a(this,void 0,void 0,(function*(){yield this.app.dispatch({type:"view_create",view:"detail"})}))));this.controls.zoomDiv=o.append("tr").style("display",t.currView=="detail"?"contents":"none");this.addLabel(this.controls.zoomDiv,"ZOOM");const n=this.controls.zoomDiv.append("td");this.controls.zoomIn=n.append("button").style("margin-right","10px").text("In").on("click",(()=>{this.zoomBlockCallback(false)}));this.controls.zoomOut=n.append("button").style("margin-right","10px").text("Out").on("click",(()=>{this.zoomBlockCallback(true)}))}showBtns(){const t=this.app.getState();this.controls.genomeViewBtn.style("display",t.currView==="genome"?"none":"inline-block");if(t.currView==="detail"){this.controls.chrpairViewBtn.html(`≪ Entire ${t.x.chr}-${t.y.chr}`).style("display","block");this.controls.horizontalViewBtn.style("display","block");this.controls.zoomDiv.style("display","contents");this.controls.detailViewBtn.style("display","none")}else if(t.currView==="horizontal"){this.controls.chrpairViewBtn.html(`≪ Entire ${t.x.chr}-${t.y.chr}`).style("display","block");this.controls.detailViewBtn.style("display","block");this.controls.horizontalViewBtn.style("display","none");this.controls.zoomDiv.style("display","none")}else{this.controls.chrpairViewBtn.style("display","none");this.controls.horizontalViewBtn.style("display","none");this.controls.detailViewBtn.style("display","none");this.controls.zoomDiv.style("display","none");this.controls.widthRow.style("display","none")}}showHideControls(){const t=this.app.getState();this.controls.normalizationRow.style("display",t.currView=="horizontal"?"none":"");this.controls.minCutoffRow.style("display",t.currView=="horizontal"?"none":"");this.controls.maxCutoffRow.style("display",t.currView=="horizontal"?"none":"");this.controls.matrixTypeRow.style("display",t.currView=="horizontal"?"none":"");this.controls.widthRow.style("display",t.currView=="detail"?"contents":"none")}main(t){const i=this.app.getState(t);this.controls.nmeth.update(i[i.currView].nmeth);this.controls.matrixType.update(i[i.currView].matrixType);this.controls.zoomDiv.style("display",i.currView=="detail"?"contents":"none");if(i.currView=="chrpair"){this.controls.view.text(`${i.x.chr}-${i.y.chr} Pair`)}else{this.controls.view.text(i.currView.charAt(0).toUpperCase()+i.currView.slice(1))}const s=this.parent("absMin")<1e-5?Number(this.parent("absMin")).toExponential(1):Number(this.parent("absMin").toFixed(6));const e=this.parent("absMax")<1e-5?Number(this.parent("absMax")).toExponential(1):Number(this.parent("absMax").toFixed(6));this.controls.width.select("input").property("value",i.settings.widthHeightPx);this.controls.inputBpMinV.property("value",this.parent("min"));this.controls.inputBpMaxV.property("value",this.parent("max"));this.controls.minCutoffLabel.html(`MIN CUTOFF <br>(>= ${s})`);this.controls.maxCutoffLabel.html(`MAX CUTOFF <br>(<= ${e})`);this.showBtns();this.showHideControls()}}const q=i(Z);class K{constructor(t){this.startColor="white";this.endColor="red";this.addLabel=t=>this.labelRow.append("td").style("color","#858585").style("font-size",".8em").style("text-align","center").style("vertical-align","middle").text(t.toUpperCase());this.addValue=t=>this.valueRow.append("td").style("font-size","1em").style("text-align","center").style("vertical-align","middle").text(t);this.type="infoBar";this.app=t.app;this.hic=t.hic;const i=t.infoBarDiv;this.labelRow=i.append("tr");this.valueRow=i.append("tr");this.parent=t.parent}render(){return a(this,void 0,void 0,(function*(){this.addLabel("Version");this.addValue(this.hic.version);this.addLabel("Enzyme");this.addValue(this.hic.enzyme||"N/A");this.addLabel("Resolution");this.resolutionDiv=this.addValue("");this.colorScaleLabel=this.addLabel("Scale");this.colorScaleDiv=this.valueRow.append("td");this.colorScale=new w({barheight:14,barwidth:85,data:[this.parent("min"),this.parent("max")],fontSize:12,height:35,width:120,holder:this.colorScaleDiv,startColor:this.startColor,endColor:this.endColor,position:"20,0",ticks:2,tickSize:3,markedValue:1});this.colorScale.render();this.update()}))}update(){const t=this.parent("calcResolution");let i;if(t<this.hic.bpresolution[this.hic.bpresolution.length-1]){i=`${t} fragment${t>1?"s":""}`}else{i=u(t)}this.resolutionDiv.text(i);if(this.parent("state").currView=="horizontal"){this.colorScaleLabel.style("display","none");this.colorScaleDiv.style("display","none")}else{this.colorScaleLabel.style("display","");this.colorScaleDiv.style("display","");const t=this.parent("min");const i=this.parent("max");if(t<0){this.colorScale.startColor="blue";this.colorScale.data=[t,i]}else{this.colorScale.startColor="white";this.colorScale.data=[0,i]}this.colorScale.markedValue=t;this.colorScale.updateScale()}}}class Q{constructor(t,i){this.hic=t;this.percentile=i?i/100:.99}sortData(t){const i=[];if((t===null||t===void 0?void 0:t.items)&&(t===null||t===void 0?void 0:t.items.length)){for(const s of t.items){i.push(s[2])}}else{const s=new Set;for(const e of t){if(e.lead=="chrM"&&!e.items.length||e.lead=="chrY"&&!e.items.length){s.add(e.lead);continue}for(const t of e.items){i.push(t[2])}}if(s.size){for(const t of s){const i=this.hic.chrlst.indexOf(t);this.hic.chrlst.splice(i,1)}}}const s=i.sort(((t,i)=>t-i));const e=s[Math.floor(s.length*this.percentile)];const o=s[0];return[o,e,s[s.length-1]]}}class tt{constructor(t,i,s=[]){this.data=[];this.hic=t;this.debugmode=i;this.errList=s||[]}getData(t){return a(this,void 0,void 0,(function*(){if(this.data.length)this.data=[];if(!(t===null||t===void 0?void 0:t.matrixType))t.matrixType="observed";try{const i=yield n("hicgenome?",{method:"POST",body:JSON.stringify({chrlst:this.hic.chrlst,nmeth:t.nmeth,resolution:t.resolution,matrixType:t.matrixType,file:this.hic.file,url:this.hic.url,nochr:this.hic.nochr})});if(i.error){const t=i.error.split("\n");for(const i of t){this.errList.push(i)}}return i.data}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}}class it{constructor(t,i,s=[]){this.hic=t;this.debugmode=i;this.errList=s||[]}getData(t){return a(this,void 0,void 0,(function*(){if(!(t===null||t===void 0?void 0:t.matrixType))t.matrixType="observed";const i={matrixType:t.matrixType,file:this.hic.file,url:this.hic.url,pos1:this.hic.nochr?t.lead.replace("chr",""):t.lead,pos2:this.hic.nochr?t.follow.replace("chr",""):t.follow,nmeth:t.nmeth,resolution:t.resolution};try{const s=yield n("hicdata?",{method:"POST",body:JSON.stringify(i)});if(s.error){throw Error(`${t.lead} - ${t.follow}: ${s.error.error}`)}if(!s.items||s.items.length==0)return;return s}catch(t){this.errList.push(t.message||t);if(t.stack)console.error(t.stack)}}))}}class st{constructor(t){this.components={controls:[]};this.genomeData=[];this.calcResolution=null;this.firstRender=true;this.min=0;this.absMin=0;this.max=0;this.absMax=0;this.hasStatePreMain=true;this.type="view";this.hic=t.hic;this.state=t.state;this.dom=t.dom;this.errList=t.errList;this.plotDiv=this.dom.plotDiv.append("table").classed("sjpp-hic-plot-main",true);const i=this.plotDiv.append("tr");const s=this.plotDiv.append("tr");this.plotDiv={plot:i.append("td").classed("sjpp-hic-plot",true).attr("data-testid","sjpp-hic-plot"),yAxis:i.append("td").classed("sjpp-hic-plot-yaxis",true).attr("data-testid","sjpp-hic-yaxis"),xAxis:s.append("td").classed("sjpp-hic-plot-xaxis",true).attr("data-testid","sjpp-hic-xaxis"),blank:s.append("td")};this.app=t.app;this.dataMapper=new Q(this.hic,t.state.maxCutoffPercentile);this.activeView=this.state.currView;this.error=t.error;this.resolution=new R(this.error);this.parent=t=>this[t];this.detailDataMapper=new _(this.hic,this.errList,this.parent)}getState(t){return t}reactsTo(t){if(t.type.startsWith("view"))return true;else return false}initView(){const t={plotDiv:this.plotDiv,hic:this.hic,app:this.app,parent:t=>this[t]};if(this.state.currView=="genome"){t["data"]=this.data;this.genome=new X(t);this.genome.render()}else if(this.state.currView==="chrpair"){t["items"]=this.data;this.chrpair=new S(t);this.chrpair.render()}else if(this.state.currView==="detail"){t["data"]=this.data;this.detail=new j(t);this.detail.render()}else if(this.state.currView==="horizontal"){this.horizontal=new B(t);this.horizontal.render()}else{throw Error(`Unknown view: ${this.state.currView}`)}}fetchData(t){var i,s,e,o,r,h;return a(this,void 0,void 0,(function*(){if((i=this.data)===null||i===void 0?void 0:i.length)this.data=[];if(this.state.currView=="genome"){if(this.activeView!="genome"&&((s=this.genomeData)===null||s===void 0?void 0:s.length))this.data=this.genomeData;else{const i=new tt(this.hic,true,this.errList);this.genomeData=yield i.getData(t);this.data=this.genomeData}}else if(this.state.currView=="detail"){this.data=yield this.detailDataMapper.getData(this.state.x,this.state.y,this.fragData)}else{if(!((o=(e=this.state)===null||e===void 0?void 0:e.x)===null||o===void 0?void 0:o.chr)||!((h=(r=this.state)===null||r===void 0?void 0:r.y)===null||h===void 0?void 0:h.chr)){this.errList.push(`No positions provided for ${this.activeView} view.`);return}else{const i=this.state.x;const s=this.state.y;t["lead"]=`${i.start&&i.stop?`${i.chr}:${i.start}-${i.stop}`:i.chr}`;t["follow"]=`${s.start&&s.stop?`${s.chr}:${s.start}-${s.stop}`:s.chr}`}const i=new it(this.hic,true,this.errList);this.data=yield i.getData(t)}}))}setResolution(t){return a(this,void 0,void 0,(function*(){const i=this.app.getState(t);this.calcResolution=this.resolution.getResolution(i,this.hic);if(i.currView=="detail"&&this.calcResolution==null){yield this.detailDataMapper.getFragData(i.x,i.y);this.fragData=this.detailDataMapper.frag;const t=Math.min(this.fragData.x.stop-this.fragData.x.start,this.fragData.y.stop-this.fragData.y.start);this.calcResolution=this.resolution.findResFromArray(t,i.minFragSpan,this.hic.fragresolution,true)}else{this.fragData=null}return this.calcResolution}))}setDataArgs(t){return a(this,void 0,void 0,(function*(){const i=this.app.getState(t);const s=i[i.currView];const e={nmeth:s.nmeth,resolution:yield this.setResolution(t),matrixType:s.matrixType};if(i.currView=="chrpair"){e["lead"]=i.x.chr;e["follow"]=i.y.chr}return e}))}getViewData(t){var i,s,e,o,r;return a(this,void 0,void 0,(function*(){const a=yield this.setDataArgs(t);yield this.fetchData(a);if(((i=this.data)===null||i===void 0?void 0:i.length)>0||((e=(s=this.data)===null||s===void 0?void 0:s.items)===null||e===void 0?void 0:e.length)>0){const[t,i,s]=this.dataMapper.sortData(this.data);this.min=this.absMin=t;this.max=i;this.absMax=s}else{if(this.state.currView!="genome"){const i=this.app.getState(t);const s=((o=i.x)===null||o===void 0?void 0:o.start)?`${i.x.chr}:${i.x.start}-${i.x.stop}`:i.x.chr;const e=((r=i.y)===null||r===void 0?void 0:r.start)?`${i.y.chr}:${i.y.start}-${i.y.stop}`:i.y.chr;this.errList.push(`No data returned for ${s} and ${e}`)}}}))}init(){return a(this,void 0,void 0,(function*(){this.components={controls:yield q({app:this.app,controlsDiv:this.dom.controlsDiv,hic:this.hic,parent:(t,i)=>{if(i)this[t]=i;return this[t]},error:this.error.bind(this)})};this.infoBar=new K({app:this.app,infoBarDiv:this.dom.infoBarDiv.append("table").style("border-spacing","3px"),hic:this.hic,parent:t=>this[t]});this.infoBar.render()}))}main(t){return a(this,void 0,void 0,(function*(){if(this.errList.length){this.app.dispatch({type:"loading_active",active:false});return}const i=this.app.getState(t);if(this.firstRender==true){this.firstRender=false;yield this.getViewData(t);this.initView()}else{if(i.currView!="horizontal"){this.app.dispatch({type:"loading_active",active:true});yield this.getViewData(t)}if(this.activeView!=i.currView){if(this.activeView=="genome"){this.genome.svg.remove()}else{this.plotDiv.xAxis.selectAll("*").remove();this.plotDiv.yAxis.selectAll("*").remove();this.plotDiv.plot.selectAll("*").remove()}this.activeView=i.currView;this.initView()}else{this[i.currView].update(this.data)}}this.infoBar.update();if(this.errList.length){this.error(this.errList);this.app.dispatch({type:"loading_active",active:false})}}))}}const et=i(st);class ot{constructor(t){this.views=["genome","chrpair","detail","horizontal"];this.errList=[];this.type="app";this.hic={enzyme:t.enzyme,file:t.file,url:t.url,genome:t.genome,holder:t.holder,hostUrl:t.hostUrl,jwt:t.jwt,position1:t.position1,position2:t.position2,maxCutoffPercentile:t.maxCutoffPercentile,name:"name"in t?t.name:"Hi-C",tklist:"tklst"in t?t.tklst:[],state:"state"in t?t.state:{}};this.dom={errorDiv:t.holder.append("div").classed("sjpp-hic-error",true),controlsDiv:t.holder.append("div").classed("sjpp-hic-controls",true).style("display","inline-block"),infoBarDiv:t.holder.append("div").classed("sjpp-hic-infobar",true).style("display","inline-block").style("vertical-align","top").style("padding","5px").style("border","solid 0.5px #ccc"),loadingDiv:l("body").append("div").attr("id","sjpp-loading-overlay"),plotDiv:t.holder.append("div").classed("sjpp-hic-main",true).style("display","inline-block"),tip:new c}}error(t){return a(this,void 0,void 0,(function*(){if(t&&typeof t=="string")this.errList.push(t);m(this.errList,this.dom.errorDiv);this.errList=[]}))}determineView(){if(!this.hic.position1&&!this.hic.position2&&!this.hic.state.currView)this.hic.state.currView="genome";if(!this.hic.position1&&this.hic.position2)this.errList.push("Missing first position");if(this.hic.position1&&!this.hic.position2)this.errList.push("Missing second position");if(this.hic.position1&&this.hic.position2){const t=this.hic.position1.split(/[:-]/);const i=this.hic.position2.split(/[:-]/);this.hic.state.x={chr:t[0]};this.hic.state.y={chr:i[0]};if(!Number.isNaN(+t[1])&&!Number.isNaN(+t[2])){this.hic.state.x.start=+t[1];this.hic.state.x.stop=+t[2];this.hic.state.y.start=+i[1];this.hic.state.y.stop=+i[2];this.hic.state.currView="detail"}else{this.hic.state.currView="chrpair"}}else{if(!this.views.some((t=>t===this.hic.state.currView)))this.error(`Unknown view: ${this.hic.state.currView}`);else return this.hic.state.currView}}getViewsConfig(){var t,i,s;if(this.hic.maxCutoffPercentile)this.hic.state.maxCutoffPercentile=this.hic.maxCutoffPercentile;let e;if(((t=this.hic["normalization"])===null||t===void 0?void 0:t.length)>0){if(!this.hic["normalization"].includes("NONE"))this.hic["normalization"].unshift("NONE");e=this.hic["normalization"][0]}else{e="NONE"}if(this.hic.state.currView){if(!this.hic.state[this.hic.state.currView])this.hic.state[this.hic.state.currView]={};if(!((i=this.hic.state[this.hic.state.currView])===null||i===void 0?void 0:i.matrixType)){this.hic.state[this.hic.state.currView].matrixType="observed"}if(!((s=this.hic.state[this.hic.state.currView])===null||s===void 0?void 0:s.nmeth)){this.hic.state[this.hic.state.currView].nmeth=e}}for(const t of this.views){if(!this.hic.state[t]){this.hic.state[t]={matrixType:"observed",nmeth:e}}}}init(){return a(this,void 0,void 0,(function*(){this.determineView();try{yield b(this.hic,true,this.errList);this.getViewsConfig();this.store=yield D({app:this.api,state:this.hic.state});this.state=yield this.store.copyState();this.components={loadingOverlay:yield V({app:this.api,loadingDiv:this.dom.loadingDiv}),view:yield et({app:this.api,state:this.state,dom:this.dom,hic:this.hic,errList:this.errList,error:this.error})};yield this.api.dispatch()}catch(t){console.error(t.stack||t)}}))}main(){if(this.errList.length){this.error(this.errList);this.dom.loadingDiv.style("display","none");return}}}const rt=f(ot);export{rt as hicInit};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{E as e,a as t,b as n,T as o,Q as a,S as i,V as s}from"./sampleScatter.rendererThree-3e6c032e.js";import"./app-f91922b4.js";const c={type:"change"};const r={type:"start"};const l={type:"end"};class m extends e{constructor(e,m){super();this.object=e;this.domElement=m;this.domElement.style.touchAction="none";this.enabled=true;this.target=new t;this.minDistance=0;this.maxDistance=Infinity;this.minZoom=0;this.maxZoom=Infinity;this.minPolarAngle=0;this.maxPolarAngle=Math.PI;this.minAzimuthAngle=-Infinity;this.maxAzimuthAngle=Infinity;this.enableDamping=false;this.dampingFactor=.05;this.enableZoom=true;this.zoomSpeed=1;this.enableRotate=true;this.rotateSpeed=1;this.enablePan=true;this.panSpeed=1;this.screenSpacePanning=true;this.keyPanSpeed=7;this.autoRotate=false;this.autoRotateSpeed=2;this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"};this.mouseButtons={LEFT:n.ROTATE,MIDDLE:n.DOLLY,RIGHT:n.PAN};this.touches={ONE:o.ROTATE,TWO:o.DOLLY_PAN};this.target0=this.target.clone();this.position0=this.object.position.clone();this.zoom0=this.object.zoom;this._domElementKeyEvents=null;this.getPolarAngle=function(){return d.phi};this.getAzimuthalAngle=function(){return d.theta};this.getDistance=function(){return this.object.position.distanceTo(this.target)};this.listenToKeyEvents=function(e){e.addEventListener("keydown",me);this._domElementKeyEvents=e};this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",me);this._domElementKeyEvents=null};this.saveState=function(){u.target0.copy(u.target);u.position0.copy(u.object.position);u.zoom0=u.object.zoom};this.reset=function(){u.target.copy(u.target0);u.object.position.copy(u.position0);u.object.zoom=u.zoom0;u.object.updateProjectionMatrix();u.dispatchEvent(c);u.update();f=p.NONE};this.update=function(){const n=new t;const o=(new a).setFromUnitVectors(e.up,new t(0,1,0));const i=o.clone().invert();const s=new t;const r=new a;const l=2*Math.PI;return function e(){const t=u.object.position;n.copy(t).sub(u.target);n.applyQuaternion(o);d.setFromVector3(n);if(u.autoRotate&&f===p.NONE){x(I())}if(u.enableDamping){d.theta+=b.theta*u.dampingFactor;d.phi+=b.phi*u.dampingFactor}else{d.theta+=b.theta;d.phi+=b.phi}let a=u.minAzimuthAngle;let m=u.maxAzimuthAngle;if(isFinite(a)&&isFinite(m)){if(a<-Math.PI)a+=l;else if(a>Math.PI)a-=l;if(m<-Math.PI)m+=l;else if(m>Math.PI)m-=l;if(a<=m){d.theta=Math.max(a,Math.min(m,d.theta))}else{d.theta=d.theta>(a+m)/2?Math.max(a,d.theta):Math.min(m,d.theta)}}d.phi=Math.max(u.minPolarAngle,Math.min(u.maxPolarAngle,d.phi));d.makeSafe();d.radius*=E;d.radius=Math.max(u.minDistance,Math.min(u.maxDistance,d.radius));if(u.enableDamping===true){u.target.addScaledVector(g,u.dampingFactor)}else{u.target.add(g)}n.setFromSpherical(d);n.applyQuaternion(i);t.copy(u.target).add(n);u.object.lookAt(u.target);if(u.enableDamping===true){b.theta*=1-u.dampingFactor;b.phi*=1-u.dampingFactor;g.multiplyScalar(1-u.dampingFactor)}else{b.set(0,0,0);g.set(0,0,0)}E=1;if(y||s.distanceToSquared(u.object.position)>h||8*(1-r.dot(u.object.quaternion))>h){u.dispatchEvent(c);s.copy(u.object.position);r.copy(u.object.quaternion);y=false;return true}return false}}();this.dispose=function(){u.domElement.removeEventListener("contextmenu",fe);u.domElement.removeEventListener("pointerdown",ae);u.domElement.removeEventListener("pointercancel",se);u.domElement.removeEventListener("wheel",le);u.domElement.removeEventListener("pointermove",ie);u.domElement.removeEventListener("pointerup",se);if(u._domElementKeyEvents!==null){u._domElementKeyEvents.removeEventListener("keydown",me);u._domElementKeyEvents=null}};const u=this;const p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let f=p.NONE;const h=1e-6;const d=new i;const b=new i;let E=1;const g=new t;let y=false;const O=new s;const P=new s;const T=new s;const v=new s;const A=new s;const L=new s;const w=new s;const N=new s;const j=new s;const M=[];const k={};function I(){return 2*Math.PI/60/60*u.autoRotateSpeed}function R(){return Math.pow(.95,u.zoomSpeed)}function x(e){b.theta-=e}function S(e){b.phi-=e}const Y=function(){const e=new t;return function t(n,o){e.setFromMatrixColumn(o,0);e.multiplyScalar(-n);g.add(e)}}();const D=function(){const e=new t;return function t(n,o){if(u.screenSpacePanning===true){e.setFromMatrixColumn(o,1)}else{e.setFromMatrixColumn(o,0);e.crossVectors(u.object.up,e)}e.multiplyScalar(n);g.add(e)}}();const _=function(){const e=new t;return function t(n,o){const a=u.domElement;if(u.object.isPerspectiveCamera){const t=u.object.position;e.copy(t).sub(u.target);let i=e.length();i*=Math.tan(u.object.fov/2*Math.PI/180);Y(2*n*i/a.clientHeight,u.object.matrix);D(2*o*i/a.clientHeight,u.object.matrix)}else if(u.object.isOrthographicCamera){Y(n*(u.object.right-u.object.left)/u.object.zoom/a.clientWidth,u.object.matrix);D(o*(u.object.top-u.object.bottom)/u.object.zoom/a.clientHeight,u.object.matrix)}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.");u.enablePan=false}}}();function H(e){if(u.object.isPerspectiveCamera){E/=e}else if(u.object.isOrthographicCamera){u.object.zoom=Math.max(u.minZoom,Math.min(u.maxZoom,u.object.zoom*e));u.object.updateProjectionMatrix();y=true}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");u.enableZoom=false}}function K(e){if(u.object.isPerspectiveCamera){E*=e}else if(u.object.isOrthographicCamera){u.object.zoom=Math.max(u.minZoom,Math.min(u.maxZoom,u.object.zoom/e));u.object.updateProjectionMatrix();y=true}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");u.enableZoom=false}}function C(e){O.set(e.clientX,e.clientY)}function z(e){w.set(e.clientX,e.clientY)}function X(e){v.set(e.clientX,e.clientY)}function Z(e){P.set(e.clientX,e.clientY);T.subVectors(P,O).multiplyScalar(u.rotateSpeed);const t=u.domElement;x(2*Math.PI*T.x/t.clientHeight);S(2*Math.PI*T.y/t.clientHeight);O.copy(P);u.update()}function F(e){N.set(e.clientX,e.clientY);j.subVectors(N,w);if(j.y>0){H(R())}else if(j.y<0){K(R())}w.copy(N);u.update()}function U(e){A.set(e.clientX,e.clientY);L.subVectors(A,v).multiplyScalar(u.panSpeed);_(L.x,L.y);v.copy(A);u.update()}function V(e){if(e.deltaY<0){K(R())}else if(e.deltaY>0){H(R())}u.update()}function G(e){let t=false;switch(e.code){case u.keys.UP:if(e.ctrlKey||e.metaKey||e.shiftKey){S(2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(0,u.keyPanSpeed)}t=true;break;case u.keys.BOTTOM:if(e.ctrlKey||e.metaKey||e.shiftKey){S(-2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(0,-u.keyPanSpeed)}t=true;break;case u.keys.LEFT:if(e.ctrlKey||e.metaKey||e.shiftKey){x(2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(u.keyPanSpeed,0)}t=true;break;case u.keys.RIGHT:if(e.ctrlKey||e.metaKey||e.shiftKey){x(-2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(-u.keyPanSpeed,0)}t=true;break}if(t){e.preventDefault();u.update()}}function B(){if(M.length===1){O.set(M[0].pageX,M[0].pageY)}else{const e=.5*(M[0].pageX+M[1].pageX);const t=.5*(M[0].pageY+M[1].pageY);O.set(e,t)}}function W(){if(M.length===1){v.set(M[0].pageX,M[0].pageY)}else{const e=.5*(M[0].pageX+M[1].pageX);const t=.5*(M[0].pageY+M[1].pageY);v.set(e,t)}}function q(){const e=M[0].pageX-M[1].pageX;const t=M[0].pageY-M[1].pageY;const n=Math.sqrt(e*e+t*t);w.set(0,n)}function Q(){if(u.enableZoom)q();if(u.enablePan)W()}function J(){if(u.enableZoom)q();if(u.enableRotate)B()}function $(e){if(M.length==1){P.set(e.pageX,e.pageY)}else{const t=Ee(e);const n=.5*(e.pageX+t.x);const o=.5*(e.pageY+t.y);P.set(n,o)}T.subVectors(P,O).multiplyScalar(u.rotateSpeed);const t=u.domElement;x(2*Math.PI*T.x/t.clientHeight);S(2*Math.PI*T.y/t.clientHeight);O.copy(P)}function ee(e){if(M.length===1){A.set(e.pageX,e.pageY)}else{const t=Ee(e);const n=.5*(e.pageX+t.x);const o=.5*(e.pageY+t.y);A.set(n,o)}L.subVectors(A,v).multiplyScalar(u.panSpeed);_(L.x,L.y);v.copy(A)}function te(e){const t=Ee(e);const n=e.pageX-t.x;const o=e.pageY-t.y;const a=Math.sqrt(n*n+o*o);N.set(0,a);j.set(0,Math.pow(N.y/w.y,u.zoomSpeed));H(j.y);w.copy(N)}function ne(e){if(u.enableZoom)te(e);if(u.enablePan)ee(e)}function oe(e){if(u.enableZoom)te(e);if(u.enableRotate)$(e)}function ae(e){if(u.enabled===false)return;if(M.length===0){u.domElement.setPointerCapture(e.pointerId);u.domElement.addEventListener("pointermove",ie);u.domElement.addEventListener("pointerup",se)}he(e);if(e.pointerType==="touch"){ue(e)}else{ce(e)}}function ie(e){if(u.enabled===false)return;if(e.pointerType==="touch"){pe(e)}else{re(e)}}function se(e){de(e);if(M.length===0){u.domElement.releasePointerCapture(e.pointerId);u.domElement.removeEventListener("pointermove",ie);u.domElement.removeEventListener("pointerup",se)}u.dispatchEvent(l);f=p.NONE}function ce(e){let t;switch(e.button){case 0:t=u.mouseButtons.LEFT;break;case 1:t=u.mouseButtons.MIDDLE;break;case 2:t=u.mouseButtons.RIGHT;break;default:t=-1}switch(t){case n.DOLLY:if(u.enableZoom===false)return;z(e);f=p.DOLLY;break;case n.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(u.enablePan===false)return;X(e);f=p.PAN}else{if(u.enableRotate===false)return;C(e);f=p.ROTATE}break;case n.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(u.enableRotate===false)return;C(e);f=p.ROTATE}else{if(u.enablePan===false)return;X(e);f=p.PAN}break;default:f=p.NONE}if(f!==p.NONE){u.dispatchEvent(r)}}function re(e){switch(f){case p.ROTATE:if(u.enableRotate===false)return;Z(e);break;case p.DOLLY:if(u.enableZoom===false)return;F(e);break;case p.PAN:if(u.enablePan===false)return;U(e);break}}function le(e){if(u.enabled===false||u.enableZoom===false||f!==p.NONE)return;e.preventDefault();u.dispatchEvent(r);V(e);u.dispatchEvent(l)}function me(e){if(u.enabled===false||u.enablePan===false)return;G(e)}function ue(e){be(e);switch(M.length){case 1:switch(u.touches.ONE){case o.ROTATE:if(u.enableRotate===false)return;B();f=p.TOUCH_ROTATE;break;case o.PAN:if(u.enablePan===false)return;W();f=p.TOUCH_PAN;break;default:f=p.NONE}break;case 2:switch(u.touches.TWO){case o.DOLLY_PAN:if(u.enableZoom===false&&u.enablePan===false)return;Q();f=p.TOUCH_DOLLY_PAN;break;case o.DOLLY_ROTATE:if(u.enableZoom===false&&u.enableRotate===false)return;J();f=p.TOUCH_DOLLY_ROTATE;break;default:f=p.NONE}break;default:f=p.NONE}if(f!==p.NONE){u.dispatchEvent(r)}}function pe(e){be(e);switch(f){case p.TOUCH_ROTATE:if(u.enableRotate===false)return;$(e);u.update();break;case p.TOUCH_PAN:if(u.enablePan===false)return;ee(e);u.update();break;case p.TOUCH_DOLLY_PAN:if(u.enableZoom===false&&u.enablePan===false)return;ne(e);u.update();break;case p.TOUCH_DOLLY_ROTATE:if(u.enableZoom===false&&u.enableRotate===false)return;oe(e);u.update();break;default:f=p.NONE}}function fe(e){if(u.enabled===false)return;e.preventDefault()}function he(e){M.push(e)}function de(e){delete k[e.pointerId];for(let t=0;t<M.length;t++){if(M[t].pointerId==e.pointerId){M.splice(t,1);return}}}function be(e){let t=k[e.pointerId];if(t===undefined){t=new s;k[e.pointerId]=t}t.set(e.pageX,e.pageY)}function Ee(e){const t=e.pointerId===M[0].pointerId?M[1]:M[0];return k[t.pointerId]}u.domElement.addEventListener("contextmenu",fe);u.domElement.addEventListener("pointerdown",ae);u.domElement.addEventListener("pointercancel",se);u.domElement.addEventListener("wheel",le,{passive:false});this.update()}}export{m as OrbitControls};
|
|
1
|
+
import{E as e,a as t,b as n,T as o,Q as a,S as i,V as s}from"./sampleScatter.rendererThree-c5321d24.js";import"./app-71453429.js";const c={type:"change"};const r={type:"start"};const l={type:"end"};class m extends e{constructor(e,m){super();this.object=e;this.domElement=m;this.domElement.style.touchAction="none";this.enabled=true;this.target=new t;this.minDistance=0;this.maxDistance=Infinity;this.minZoom=0;this.maxZoom=Infinity;this.minPolarAngle=0;this.maxPolarAngle=Math.PI;this.minAzimuthAngle=-Infinity;this.maxAzimuthAngle=Infinity;this.enableDamping=false;this.dampingFactor=.05;this.enableZoom=true;this.zoomSpeed=1;this.enableRotate=true;this.rotateSpeed=1;this.enablePan=true;this.panSpeed=1;this.screenSpacePanning=true;this.keyPanSpeed=7;this.autoRotate=false;this.autoRotateSpeed=2;this.keys={LEFT:"ArrowLeft",UP:"ArrowUp",RIGHT:"ArrowRight",BOTTOM:"ArrowDown"};this.mouseButtons={LEFT:n.ROTATE,MIDDLE:n.DOLLY,RIGHT:n.PAN};this.touches={ONE:o.ROTATE,TWO:o.DOLLY_PAN};this.target0=this.target.clone();this.position0=this.object.position.clone();this.zoom0=this.object.zoom;this._domElementKeyEvents=null;this.getPolarAngle=function(){return d.phi};this.getAzimuthalAngle=function(){return d.theta};this.getDistance=function(){return this.object.position.distanceTo(this.target)};this.listenToKeyEvents=function(e){e.addEventListener("keydown",me);this._domElementKeyEvents=e};this.stopListenToKeyEvents=function(){this._domElementKeyEvents.removeEventListener("keydown",me);this._domElementKeyEvents=null};this.saveState=function(){u.target0.copy(u.target);u.position0.copy(u.object.position);u.zoom0=u.object.zoom};this.reset=function(){u.target.copy(u.target0);u.object.position.copy(u.position0);u.object.zoom=u.zoom0;u.object.updateProjectionMatrix();u.dispatchEvent(c);u.update();f=p.NONE};this.update=function(){const n=new t;const o=(new a).setFromUnitVectors(e.up,new t(0,1,0));const i=o.clone().invert();const s=new t;const r=new a;const l=2*Math.PI;return function e(){const t=u.object.position;n.copy(t).sub(u.target);n.applyQuaternion(o);d.setFromVector3(n);if(u.autoRotate&&f===p.NONE){x(I())}if(u.enableDamping){d.theta+=b.theta*u.dampingFactor;d.phi+=b.phi*u.dampingFactor}else{d.theta+=b.theta;d.phi+=b.phi}let a=u.minAzimuthAngle;let m=u.maxAzimuthAngle;if(isFinite(a)&&isFinite(m)){if(a<-Math.PI)a+=l;else if(a>Math.PI)a-=l;if(m<-Math.PI)m+=l;else if(m>Math.PI)m-=l;if(a<=m){d.theta=Math.max(a,Math.min(m,d.theta))}else{d.theta=d.theta>(a+m)/2?Math.max(a,d.theta):Math.min(m,d.theta)}}d.phi=Math.max(u.minPolarAngle,Math.min(u.maxPolarAngle,d.phi));d.makeSafe();d.radius*=E;d.radius=Math.max(u.minDistance,Math.min(u.maxDistance,d.radius));if(u.enableDamping===true){u.target.addScaledVector(g,u.dampingFactor)}else{u.target.add(g)}n.setFromSpherical(d);n.applyQuaternion(i);t.copy(u.target).add(n);u.object.lookAt(u.target);if(u.enableDamping===true){b.theta*=1-u.dampingFactor;b.phi*=1-u.dampingFactor;g.multiplyScalar(1-u.dampingFactor)}else{b.set(0,0,0);g.set(0,0,0)}E=1;if(y||s.distanceToSquared(u.object.position)>h||8*(1-r.dot(u.object.quaternion))>h){u.dispatchEvent(c);s.copy(u.object.position);r.copy(u.object.quaternion);y=false;return true}return false}}();this.dispose=function(){u.domElement.removeEventListener("contextmenu",fe);u.domElement.removeEventListener("pointerdown",ae);u.domElement.removeEventListener("pointercancel",se);u.domElement.removeEventListener("wheel",le);u.domElement.removeEventListener("pointermove",ie);u.domElement.removeEventListener("pointerup",se);if(u._domElementKeyEvents!==null){u._domElementKeyEvents.removeEventListener("keydown",me);u._domElementKeyEvents=null}};const u=this;const p={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_PAN:4,TOUCH_DOLLY_PAN:5,TOUCH_DOLLY_ROTATE:6};let f=p.NONE;const h=1e-6;const d=new i;const b=new i;let E=1;const g=new t;let y=false;const O=new s;const P=new s;const T=new s;const v=new s;const A=new s;const L=new s;const w=new s;const N=new s;const j=new s;const M=[];const k={};function I(){return 2*Math.PI/60/60*u.autoRotateSpeed}function R(){return Math.pow(.95,u.zoomSpeed)}function x(e){b.theta-=e}function S(e){b.phi-=e}const Y=function(){const e=new t;return function t(n,o){e.setFromMatrixColumn(o,0);e.multiplyScalar(-n);g.add(e)}}();const D=function(){const e=new t;return function t(n,o){if(u.screenSpacePanning===true){e.setFromMatrixColumn(o,1)}else{e.setFromMatrixColumn(o,0);e.crossVectors(u.object.up,e)}e.multiplyScalar(n);g.add(e)}}();const _=function(){const e=new t;return function t(n,o){const a=u.domElement;if(u.object.isPerspectiveCamera){const t=u.object.position;e.copy(t).sub(u.target);let i=e.length();i*=Math.tan(u.object.fov/2*Math.PI/180);Y(2*n*i/a.clientHeight,u.object.matrix);D(2*o*i/a.clientHeight,u.object.matrix)}else if(u.object.isOrthographicCamera){Y(n*(u.object.right-u.object.left)/u.object.zoom/a.clientWidth,u.object.matrix);D(o*(u.object.top-u.object.bottom)/u.object.zoom/a.clientHeight,u.object.matrix)}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled.");u.enablePan=false}}}();function H(e){if(u.object.isPerspectiveCamera){E/=e}else if(u.object.isOrthographicCamera){u.object.zoom=Math.max(u.minZoom,Math.min(u.maxZoom,u.object.zoom*e));u.object.updateProjectionMatrix();y=true}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");u.enableZoom=false}}function K(e){if(u.object.isPerspectiveCamera){E*=e}else if(u.object.isOrthographicCamera){u.object.zoom=Math.max(u.minZoom,Math.min(u.maxZoom,u.object.zoom/e));u.object.updateProjectionMatrix();y=true}else{console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled.");u.enableZoom=false}}function C(e){O.set(e.clientX,e.clientY)}function z(e){w.set(e.clientX,e.clientY)}function X(e){v.set(e.clientX,e.clientY)}function Z(e){P.set(e.clientX,e.clientY);T.subVectors(P,O).multiplyScalar(u.rotateSpeed);const t=u.domElement;x(2*Math.PI*T.x/t.clientHeight);S(2*Math.PI*T.y/t.clientHeight);O.copy(P);u.update()}function F(e){N.set(e.clientX,e.clientY);j.subVectors(N,w);if(j.y>0){H(R())}else if(j.y<0){K(R())}w.copy(N);u.update()}function U(e){A.set(e.clientX,e.clientY);L.subVectors(A,v).multiplyScalar(u.panSpeed);_(L.x,L.y);v.copy(A);u.update()}function V(e){if(e.deltaY<0){K(R())}else if(e.deltaY>0){H(R())}u.update()}function G(e){let t=false;switch(e.code){case u.keys.UP:if(e.ctrlKey||e.metaKey||e.shiftKey){S(2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(0,u.keyPanSpeed)}t=true;break;case u.keys.BOTTOM:if(e.ctrlKey||e.metaKey||e.shiftKey){S(-2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(0,-u.keyPanSpeed)}t=true;break;case u.keys.LEFT:if(e.ctrlKey||e.metaKey||e.shiftKey){x(2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(u.keyPanSpeed,0)}t=true;break;case u.keys.RIGHT:if(e.ctrlKey||e.metaKey||e.shiftKey){x(-2*Math.PI*u.rotateSpeed/u.domElement.clientHeight)}else{_(-u.keyPanSpeed,0)}t=true;break}if(t){e.preventDefault();u.update()}}function B(){if(M.length===1){O.set(M[0].pageX,M[0].pageY)}else{const e=.5*(M[0].pageX+M[1].pageX);const t=.5*(M[0].pageY+M[1].pageY);O.set(e,t)}}function W(){if(M.length===1){v.set(M[0].pageX,M[0].pageY)}else{const e=.5*(M[0].pageX+M[1].pageX);const t=.5*(M[0].pageY+M[1].pageY);v.set(e,t)}}function q(){const e=M[0].pageX-M[1].pageX;const t=M[0].pageY-M[1].pageY;const n=Math.sqrt(e*e+t*t);w.set(0,n)}function Q(){if(u.enableZoom)q();if(u.enablePan)W()}function J(){if(u.enableZoom)q();if(u.enableRotate)B()}function $(e){if(M.length==1){P.set(e.pageX,e.pageY)}else{const t=Ee(e);const n=.5*(e.pageX+t.x);const o=.5*(e.pageY+t.y);P.set(n,o)}T.subVectors(P,O).multiplyScalar(u.rotateSpeed);const t=u.domElement;x(2*Math.PI*T.x/t.clientHeight);S(2*Math.PI*T.y/t.clientHeight);O.copy(P)}function ee(e){if(M.length===1){A.set(e.pageX,e.pageY)}else{const t=Ee(e);const n=.5*(e.pageX+t.x);const o=.5*(e.pageY+t.y);A.set(n,o)}L.subVectors(A,v).multiplyScalar(u.panSpeed);_(L.x,L.y);v.copy(A)}function te(e){const t=Ee(e);const n=e.pageX-t.x;const o=e.pageY-t.y;const a=Math.sqrt(n*n+o*o);N.set(0,a);j.set(0,Math.pow(N.y/w.y,u.zoomSpeed));H(j.y);w.copy(N)}function ne(e){if(u.enableZoom)te(e);if(u.enablePan)ee(e)}function oe(e){if(u.enableZoom)te(e);if(u.enableRotate)$(e)}function ae(e){if(u.enabled===false)return;if(M.length===0){u.domElement.setPointerCapture(e.pointerId);u.domElement.addEventListener("pointermove",ie);u.domElement.addEventListener("pointerup",se)}he(e);if(e.pointerType==="touch"){ue(e)}else{ce(e)}}function ie(e){if(u.enabled===false)return;if(e.pointerType==="touch"){pe(e)}else{re(e)}}function se(e){de(e);if(M.length===0){u.domElement.releasePointerCapture(e.pointerId);u.domElement.removeEventListener("pointermove",ie);u.domElement.removeEventListener("pointerup",se)}u.dispatchEvent(l);f=p.NONE}function ce(e){let t;switch(e.button){case 0:t=u.mouseButtons.LEFT;break;case 1:t=u.mouseButtons.MIDDLE;break;case 2:t=u.mouseButtons.RIGHT;break;default:t=-1}switch(t){case n.DOLLY:if(u.enableZoom===false)return;z(e);f=p.DOLLY;break;case n.ROTATE:if(e.ctrlKey||e.metaKey||e.shiftKey){if(u.enablePan===false)return;X(e);f=p.PAN}else{if(u.enableRotate===false)return;C(e);f=p.ROTATE}break;case n.PAN:if(e.ctrlKey||e.metaKey||e.shiftKey){if(u.enableRotate===false)return;C(e);f=p.ROTATE}else{if(u.enablePan===false)return;X(e);f=p.PAN}break;default:f=p.NONE}if(f!==p.NONE){u.dispatchEvent(r)}}function re(e){switch(f){case p.ROTATE:if(u.enableRotate===false)return;Z(e);break;case p.DOLLY:if(u.enableZoom===false)return;F(e);break;case p.PAN:if(u.enablePan===false)return;U(e);break}}function le(e){if(u.enabled===false||u.enableZoom===false||f!==p.NONE)return;e.preventDefault();u.dispatchEvent(r);V(e);u.dispatchEvent(l)}function me(e){if(u.enabled===false||u.enablePan===false)return;G(e)}function ue(e){be(e);switch(M.length){case 1:switch(u.touches.ONE){case o.ROTATE:if(u.enableRotate===false)return;B();f=p.TOUCH_ROTATE;break;case o.PAN:if(u.enablePan===false)return;W();f=p.TOUCH_PAN;break;default:f=p.NONE}break;case 2:switch(u.touches.TWO){case o.DOLLY_PAN:if(u.enableZoom===false&&u.enablePan===false)return;Q();f=p.TOUCH_DOLLY_PAN;break;case o.DOLLY_ROTATE:if(u.enableZoom===false&&u.enableRotate===false)return;J();f=p.TOUCH_DOLLY_ROTATE;break;default:f=p.NONE}break;default:f=p.NONE}if(f!==p.NONE){u.dispatchEvent(r)}}function pe(e){be(e);switch(f){case p.TOUCH_ROTATE:if(u.enableRotate===false)return;$(e);u.update();break;case p.TOUCH_PAN:if(u.enablePan===false)return;ee(e);u.update();break;case p.TOUCH_DOLLY_PAN:if(u.enableZoom===false&&u.enablePan===false)return;ne(e);u.update();break;case p.TOUCH_DOLLY_ROTATE:if(u.enableZoom===false&&u.enableRotate===false)return;oe(e);u.update();break;default:f=p.NONE}}function fe(e){if(u.enabled===false)return;e.preventDefault()}function he(e){M.push(e)}function de(e){delete k[e.pointerId];for(let t=0;t<M.length;t++){if(M[t].pointerId==e.pointerId){M.splice(t,1);return}}}function be(e){let t=k[e.pointerId];if(t===undefined){t=new s;k[e.pointerId]=t}t.set(e.pageX,e.pageY)}function Ee(e){const t=e.pointerId===M[0].pointerId?M[1]:M[0];return k[t.pointerId]}u.domElement.addEventListener("contextmenu",fe);u.domElement.addEventListener("pointerdown",ae);u.domElement.addEventListener("pointercancel",se);u.domElement.addEventListener("wheel",le,{passive:false});this.update()}}export{m as OrbitControls};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{az as t,q as e,M as s,aA as r,a1 as o,ac as i}from"./app-71453429.js";import{r as a,s as n}from"./recover-b1ec4fed.js";import{v as p}from"./FilterRxComp-fc769f34.js";import{n as c}from"./sampleScatter.interactivity-cfa3451d.js";import{summaryInit as l}from"./summary-ee2045a5.js";import"./FilterStateless-8f30f856.js";import"./app-fb676934.js";import"./termInfo-4c759483.js";import"./table-1dae543a.js";import"./termsetting-636d2271.js";import"path";import"./downloadTextfile-5723af95.js";import"./sampleView-30b97c7d.js";import"./controls-0467d2ec.js";import"./controls.btns-ad7b28a2.js";import"./controls.config-6cf816fb.js";import"./controls.overlay-3a55c2ec.js";import"./controls.term1-59f4cd60.js";import"./controls.divide-3c0d52d7.js";import"./violin-a41b2e2b.js";import"./violin.renderer-149310eb.js";import"./brush-bb4566a3.js";import"./pointer-c7475677.js";import"./nodrag-bed2488c.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-ca1e2a74.js";import"./html.legend-ef8066dd.js";import"./violin.interactivity-bcf0ccc2.js";import"./niceNumLabels-ddb76164.js";import"./barchart-ef4874c8.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-c46d3f44.js";import"./svg.legend-28652faa.js";import"./barchart.events-e24facf7.js";import"./sampleScatter-47dd82cb.js";import"./zoom-a40839cf.js";import"./lasso-ef63631b.js";import"./drag-88d451b4.js";import"./svg.download-54c99186.js";import"./symbol-fc7cbd41.js";import"./math-2fb199c6.js";import"./sampleScatter.rendererThree-c5321d24.js";function m(t){switch(t){case"../plots/DEanalysis.js":return import("./DEanalysis-567989ff.js");case"../plots/Disco.js":return import("./Disco-5d1404ce.js");case"../plots/DziViewer.js":return import("./DziViewer-3f466d90.js");case"../plots/barchart.data.js":return import("./FilterRxComp-fc769f34.js").then((function(t){return t.y}));case"../plots/barchart.events.js":return import("./barchart.events-e24facf7.js");case"../plots/barchart.js":return import("./barchart-ef4874c8.js");case"../plots/bars.renderer.js":return import("./bars.renderer-c46d3f44.js");case"../plots/bars.settings.js":return import("./bars.settings-64bb4642.js");case"../plots/boxplot.js":return import("./boxplot-a2e1ace0.js");case"../plots/brainImaging.js":return import("./brainImaging-21701238.js");case"../plots/controls.btns.js":return import("./controls.btns-ad7b28a2.js");case"../plots/controls.config.js":return import("./controls.config-6cf816fb.js");case"../plots/controls.divide.js":return import("./controls.divide-3c0d52d7.js");case"../plots/controls.js":return import("./controls-0467d2ec.js");case"../plots/controls.overlay.js":return import("./controls.overlay-3a55c2ec.js");case"../plots/controls.term1.js":return import("./controls.term1-59f4cd60.js");case"../plots/cuminc.js":return import("./cuminc-8d21132b.js");case"../plots/dataDownload.js":return import("./dataDownload-bfa92dad.js");case"../plots/dictionary.js":return import("./dictionary-89e860ee.js");case"../plots/geneExpression.js":return import("./geneExpression-9047481a.js");case"../plots/geneORA.js":return import("./geneORA-ffb2497e.js");case"../plots/geneset.js":return import("./geneset-3522bcda.js");case"../plots/genomeBrowser.controls.js":return import("./genomeBrowser.controls-bef8bf99.js");case"../plots/genomeBrowser.js":return import("./genomeBrowser-9b72eb22.js");case"../plots/hierCluster.config.js":return import("./hierCluster.config-f8686a30.js");case"../plots/hierCluster.interactivity.js":return import("./hierCluster.interactivity-3b5f1e81.js").then((function(t){return t.i}));case"../plots/hierCluster.js":return import("./hierCluster-3b14b2b3.js");case"../plots/hierCluster.renderers.js":return import("./hierCluster.renderers-9f9a7cad.js").then((function(t){return t.r}));case"../plots/imagePlot.js":return import("./imagePlot-095b9a92.js");case"../plots/matrix.cells.js":return import("./matrix.cells-3620eb3a.js");case"../plots/matrix.cluster.js":return import("./matrix.cluster-15b8a865.js");case"../plots/matrix.config.js":return import("./matrix.config-8247bea5.js");case"../plots/matrix.controls.js":return import("./matrix.controls-dea65894.js");case"../plots/matrix.data.js":return import("./matrix.data-121a1a8c.js").then((function(t){return t.m}));case"../plots/matrix.dom.js":return import("./matrix.dom-83c5fa39.js");case"../plots/matrix.groups.js":return import("./matrix.groups-2e1202ef.js").then((function(t){return t.m}));case"../plots/matrix.interactivity.js":return import("./matrix.interactivity-2b076155.js");case"../plots/matrix.js":return import("./matrix-3fae58f8.js");case"../plots/matrix.layout.js":return import("./matrix.layout-8dc54c05.js").then((function(t){return t.m}));case"../plots/matrix.legend.js":return import("./matrix.legend-e0078739.js").then((function(t){return t.m}));case"../plots/matrix.renderers.js":return import("./matrix.renderers-0c8eddc9.js");case"../plots/matrix.serieses.js":return import("./matrix.serieses-2898da6b.js").then((function(t){return t.m}));case"../plots/matrix.sort.js":return import("./matrix.sort-249d4a35.js");case"../plots/matrix.sorterUi.js":return import("./matrix.sorterUi-d26208c8.js");case"../plots/plot.app.js":return import("./plot.app-c841507a.js");case"../plots/plot.brainImaging.js":return import("./plot.brainImaging-325ebded.js");case"../plots/plot.disco.js":return import("./plot.disco-621d1b8e.js");case"../plots/plot.ssgq.js":return import("./plot.ssgq-1949c207.js");case"../plots/profileBarchart.js":return import("./profileBarchart-11755d7c.js");case"../plots/profilePlot.js":return import("./profilePlot-8ee3034a.js");case"../plots/profilePolar.js":return import("./profilePolar-9fe70c32.js");case"../plots/profileRadar.js":return import("./profileRadar-0e744181.js");case"../plots/profileRadarFacility.js":return import("./profileRadarFacility-102544c5.js");case"../plots/regression.inputs.js":return import("./regression.inputs-ad548745.js").then((function(t){return t.b}));case"../plots/regression.inputs.term.js":return import("./regression.inputs-ad548745.js").then((function(t){return t.a}));case"../plots/regression.inputs.values.table.js":return import("./regression.inputs.values.table-1618447a.js");case"../plots/regression.js":return import("./regression.inputs-ad548745.js").then((function(t){return t.r}));case"../plots/regression.results.js":return import("./regression.results-25008028.js").then((function(t){return t.r}));case"../plots/sampleScatter.interactivity.js":return import("./sampleScatter.interactivity-cfa3451d.js").then((function(t){return t.a}));case"../plots/sampleScatter.js":return import("./sampleScatter-47dd82cb.js").then((function(t){return t.a}));case"../plots/sampleScatter.renderer.js":return import("./sampleScatter-47dd82cb.js").then((function(t){return t.s}));case"../plots/sampleScatter.rendererThree.js":return import("./sampleScatter.rendererThree-c5321d24.js").then((function(t){return t.c}));case"../plots/sampleView.js":return import("./sampleView-30b97c7d.js");case"../plots/scatter.js":return import("./scatter-8a337eeb.js");case"../plots/singleCellPlot.js":return import("./singleCellPlot-360eaec6.js");case"../plots/stattable.js":return import("./stattable-886f7dad.js");case"../plots/summary.js":return import("./summary-ee2045a5.js");case"../plots/survival.js":return import("./survival-d7bd3c6b.js");case"../plots/table.js":return import("./table-b4a61573.js");case"../plots/variantBrowser.js":return import("./variantBrowser-910b4bcd.js");case"../plots/violin.interactivity.js":return import("./violin.interactivity-bcf0ccc2.js");case"../plots/violin.js":return import("./violin-a41b2e2b.js");case"../plots/violin.renderer.js":return import("./violin.renderer-149310eb.js");default:return new Promise((function(e,s){(typeof queueMicrotask==="function"?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}class d{constructor(t){this.type="plot";u(this);this.initUi(t)}reactsTo(t){if(t.type.includes("cache_termq"))return true;if(t.type.endsWith("_group"))return true;if(t.type.startsWith("plot_"))return t.id===this.id;if(t.type.startsWith("filter"))return true;if(t.type.startsWith("cohort"))return true;if(t.type=="app_refresh")return true;if(t.type.endsWith("customTerm"))return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:e,groups:t.groups,_scope_:t._scope_}}async main(){this.dom.errdiv.style("display","none");if(!this.components)await this.setComponents(this.opts)}async setComponents(t){this.components={recover:await a({app:this.app,holder:this.dom.localRecoverDiv,getState:t=>this.getState(t),reactsTo:t=>t.id==this.id&&(t.type=="plot_edit"||t.type=="plot_nestedEdits")&&t._track_!="none",plot_id:this.id,maxHistoryLen:10})};const s=await m(`../plots/${t.chartType}.js`);this.components.chart=await s.componentInit({app:this.app,holder:this.dom.viz,header:this.dom.paneTitleDiv,id:this.id,plotDiv:e(this.dom.holder.app_div.node().parentNode)})}destroy(){this.dom.holder.app_div.selectAll("*").remove();this.dom.holder.app_div.remove();for(const t in this.dom){delete this.dom[t]}}}const j=t(d);function u(t){t.initUi=function(e){const r=e.holder;r.header.style("padding",0);try{t.dom={tip:new s({padding:"0px"}),holder:r,paneTitleDiv:r.header.append("div").style("display","inline-block").style("color","#555").style("padding-left","7px").style("vertical-align","sub"),localRecoverDiv:r.header.append("div").style("display","inline-block"),body:r.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:r.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:r.body.append("div")}}catch(e){t.dom.errdiv.style("display","none").text(e)}}}class h{constructor(t){if(t.addLoginCallback){t.addLoginCallback((()=>this.api.dispatch({type:"app_refresh"})))}this.type="app";this.dom={holder:t.holder,topbar:t.holder.append("div"),errdiv:t.holder.append("div"),plotDiv:t.holder.append("div")};this.plotIdToSandboxId={}}validateOpts(t={}){if(!t.holder)throw`missing opts.holder in the MassApp constructor argument`;if(!t.callbacks)t.callbacks={};if(!t.state.vocab)t.state.vocab={};if(typeof t.state.vocab!="object")throw"opts.state.vocab{} is not an object";if(t.state.genome){t.state.vocab.genome=t.state.genome;delete t.state.genome}if(t.state.dslabel){t.state.vocab.dslabel=t.state.dslabel;delete t.state.dslabel}return t}async preApiFreeze(t){try{t.tip=new s({padding:"5px"});t.tip.d.on("keyup",(e=>{if(e.key=="Escape")t.tip.hide()}));t.printError=t=>this.printError(t);const e=this.opts.state.vocab;t.vocabApi=await p({app:t,state:{vocab:this.opts.state.vocab},fetchOpts:this.opts.fetchOpts,getDatasetAccessToken:this.opts.getDatasetAccessToken});t.hasWebGL=function(){try{var t=document.createElement("canvas");return!!(window.WebGLRenderingContext&&(t.getContext("webgl")||t.getContext("experimental-webgl")))}catch(t){return false}};this.opts.state.vocab=t.vocabApi.vocab}catch(t){throw t}}async init(){try{const t="debounceInterval"in this.opts?this.opts.debounceInterval:0;if(this.opts.embeddedSessionState){Object.assign(this.opts.state,this.opts.embeddedSessionState)}this.store=await n({app:this.api,state:this.opts.state,debounceInterval:t});this.state=await this.store.copyState();this.components={};if(this.state.nav.header_mode!="hidden"){this.components.nav=await c({app:this.api,holder:this.dom.topbar,header_mode:this.state&&this.state.nav&&this.state.nav.header_mode,vocab:this.state.vocab,massSessionDuration:this.state.termdbConfig.massSessionDuration})}this.components.plots={};await this.api.dispatch()}catch(t){this.printError(t);throw t}}async main(){await this.api.vocabApi.main();const t={};let e;for(const s of this.state.plots){if(this.components.plots&&!(s.id in this.components.plots)){e=o(this.dom.plotDiv,{close:()=>{this.api.dispatch({type:"plot_delete",id:s.id})},plotId:s.id,beforePlotId:s.insertBefore||null,style:{width:"98.5%"}});if(s.chartType=="summary")t[s.id]=l(Object.assign({app:this.api,holder:e},s));else t[s.id]=j(Object.assign({app:this.api,holder:e},s))}}const s=Object.keys(t).length;if(s){await Promise.all(Object.values(t));for(const e in t){this.components.plots[e]=await t[e]}}for(const t in this.components.plots){if(!this.state.plots.find((e=>e.id===t))){this.components.plots[t].destroy();delete this.components.plots[t]}}}printError(t){i(this.dom.errdiv||this.opts.holder,"Error: "+(t.message||t));if(t.stack)console.log(t.stack);this.bus.emit("error")}}const b=r(h);export{b as appInit};
|