@sjcrh/proteinpaint-client 2.76.0 → 2.76.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{2dmaf-74b99126.js → 2dmaf-593951c7.js} +1 -1
- package/dist/{AppHeader-cecb39c2.js → AppHeader-29b88e14.js} +1 -1
- package/dist/{ColorScale-21cab8d2.js → ColorScale-3d3c42dc.js} +1 -1
- package/dist/{DEanalysis-95bad59a.js → DEanalysis-f81e0f19.js} +1 -1
- package/dist/{Disco-a6e921a0.js → Disco-db386f7a.js} +1 -1
- package/dist/{Disco.UI-9ad999ed.js → Disco.UI-8ed9cb39.js} +1 -1
- package/dist/{DragControls-e3b6a937.js → DragControls-d6250d18.js} +1 -1
- package/dist/{DziViewer-354a790d.js → DziViewer-9352e224.js} +1 -1
- package/dist/{FilterRxComp-701a1480.js → FilterRxComp-0f35b322.js} +1 -1
- package/dist/{FilterStateless-54c0b763.js → FilterStateless-b1c6ee04.js} +1 -1
- package/dist/{HicApp-d5a946bf.js → HicApp-14b94b20.js} +1 -1
- package/dist/{OrbitControls-694652cd.js → OrbitControls-45f56ed4.js} +1 -1
- package/dist/{WSIViewer-dc7f8eb0.js → WSIViewer-80f60272.js} +1 -1
- package/dist/{adSandbox-f438e388.js → adSandbox-94424b88.js} +1 -1
- package/dist/app-2cd97738.js +1 -0
- package/dist/{app-3320ab6f.js → app-686b9547.js} +1 -1
- package/dist/app-f031940d.js +1 -0
- package/dist/app.js +1 -1
- package/dist/{bam-431875ef.js → bam-6631640f.js} +1 -1
- package/dist/barchart-3c5d734c.js +1 -0
- package/dist/{barchart.events-da29c90d.js → barchart.events-df44e666.js} +1 -1
- package/dist/{bars.renderer-dcfdd59b.js → bars.renderer-b232d882.js} +1 -1
- package/dist/{block-6aedd569.js → block-4134e823.js} +1 -1
- package/dist/block.lazyload-eda77d9b.js +1 -0
- package/dist/{block.legend-d3f61ef7.js → block.legend-d2b7f1cb.js} +1 -1
- package/dist/{block.mds-3ad17dfa.js → block.mds-ebe7b58d.js} +1 -1
- package/dist/{block.mds.cnv-857ba868.js → block.mds.cnv-99f0a414.js} +1 -1
- package/dist/{block.mds.expressionrank-7e3b208c.js → block.mds.expressionrank-96bf864b.js} +1 -1
- package/dist/{block.mds.expressionstat-f2d31c86.js → block.mds.expressionstat-dcab3fd1.js} +1 -1
- package/dist/{block.mds.geneboxplot-f0fbaf12.js → block.mds.geneboxplot-e5b2a4ce.js} +1 -1
- package/dist/{block.mds.junction-7f87f48f.js → block.mds.junction-534eef9b.js} +1 -1
- package/dist/{block.mds.svcnv-ac035c12.js → block.mds.svcnv-de6a3c7d.js} +1 -1
- package/dist/{block.mds.svcnv.share-886d9479.js → block.mds.svcnv.share-2c2c16db.js} +1 -1
- package/dist/{block.mds2-7852c1ee.js → block.mds2-373fcb4d.js} +1 -1
- package/dist/{block.svg-9b916fa6.js → block.svg-be5d741d.js} +1 -1
- package/dist/{block.tk.aicheck-6770e333.js → block.tk.aicheck-f2da5e81.js} +1 -1
- package/dist/{block.tk.ase-ee807e59.js → block.tk.ase-ef848944.js} +1 -1
- package/dist/{block.tk.bam-00fba6e8.js → block.tk.bam-11fcba17.js} +1 -1
- package/dist/{block.tk.bedgraphdot-7fda78e9.js → block.tk.bedgraphdot-a81b0709.js} +1 -1
- package/dist/{block.tk.bigwig.ui-cc1a42f3.js → block.tk.bigwig.ui-f8e5ba71.js} +1 -1
- package/dist/{block.tk.hicstraw-526470e3.js → block.tk.hicstraw-e7072b25.js} +1 -1
- package/dist/{block.tk.junction-b43a4cda.js → block.tk.junction-1c9a7854.js} +1 -1
- package/dist/{block.tk.junction.textmatrixui-a60ed78a.js → block.tk.junction.textmatrixui-ffecbb16.js} +1 -1
- package/dist/{block.tk.ld-d15bde41.js → block.tk.ld-274c3a82.js} +1 -1
- package/dist/{block.tk.menu-3aeb93c6.js → block.tk.menu-e970cd4a.js} +1 -1
- package/dist/{block.tk.pgv-9af2bd64.js → block.tk.pgv-f4d4dbf7.js} +1 -1
- package/dist/{boxplot-e17a17b7.js → boxplot-44d3b48f.js} +1 -1
- package/dist/{brainImaging-bf2ceee9.js → brainImaging-2eaa419d.js} +1 -1
- package/dist/{brush-aa175142.js → brush-bb4ae2fb.js} +1 -1
- package/dist/{categorical-a52014a1.js → categorical-db9b0175.js} +1 -1
- package/dist/{condition-c646e357.js → condition-4e788f7d.js} +1 -1
- package/dist/{controls-287e6efa.js → controls-3c1691d7.js} +1 -1
- package/dist/{controls.btns-79b805dd.js → controls.btns-5b1240c8.js} +1 -1
- package/dist/controls.config-81cd5749.js +1 -0
- package/dist/cuminc-c4db28f0.js +1 -0
- package/dist/{customdata.inputui-dc49d94b.js → customdata.inputui-f9234d1f.js} +1 -1
- package/dist/{dataDownload-3a3d4f33.js → dataDownload-a4dfa2d0.js} +1 -1
- package/dist/{databrowser.ui-d8d3f8fd.js → databrowser.ui-a64bab0c.js} +1 -1
- package/dist/{density-a82a8b1c.js → density-69a732f6.js} +1 -1
- package/dist/{dictionary-c5a19d90.js → dictionary-e2232e84.js} +1 -1
- package/dist/{drag-7b30ba17.js → drag-d8daa62f.js} +1 -1
- package/dist/{e2pca-82765817.js → e2pca-f9324654.js} +1 -1
- package/dist/{ep-d017ec2f.js → ep-a5c1ee3a.js} +1 -1
- package/dist/{facet-a9b44ef3.js → facet-98971c68.js} +1 -1
- package/dist/{fusion.parse-d40d0b9d.js → fusion.parse-466ded6d.js} +1 -1
- package/dist/{geneExpClustering-34c3f518.js → geneExpClustering-66c05fb1.js} +1 -1
- package/dist/{geneExpression-0d1b7244.js → geneExpression-5685eae2.js} +1 -1
- package/dist/{geneExpression-589f485b.js → geneExpression-b5d0261f.js} +1 -1
- package/dist/{geneExpression-7d14983f.js → geneExpression-ff46a389.js} +1 -1
- package/dist/{geneORA-903a780f.js → geneORA-f1a90d02.js} +1 -1
- package/dist/{geneVariant-92c4e870.js → geneVariant-1cf17b3b.js} +1 -1
- package/dist/{geneVariant-89601b34.js → geneVariant-d0b9e1cb.js} +1 -1
- package/dist/{genefusion.ui-7e22e811.js → genefusion.ui-89a727ea.js} +1 -1
- package/dist/{genesearch-a4e19f0d.js → genesearch-41cb55ce.js} +1 -1
- package/dist/{geneset-108a39d2.js → geneset-b63496eb.js} +1 -1
- package/dist/{genomeBrowser-12f86a36.js → genomeBrowser-ec8fbddc.js} +1 -1
- package/dist/{genomeBrowser.controls-d5067811.js → genomeBrowser.controls-2dcaf4f5.js} +1 -1
- package/dist/{groupsetting-b4416a96.js → groupsetting-3fef59f9.js} +1 -1
- package/dist/{gsea-543dab25.js → gsea-3075c82c.js} +1 -1
- package/dist/{hierCluster-26e14090.js → hierCluster-33a828a1.js} +1 -1
- package/dist/hierCluster.config-fa799d06.js +1 -0
- package/dist/{hierCluster.interactivity-e56f6542.js → hierCluster.interactivity-6d453881.js} +1 -1
- package/dist/{hierCluster.renderers-74a64cf5.js → hierCluster.renderers-6279d7fb.js} +1 -1
- package/dist/{html.legend-a3f4ebfe.js → html.legend-fac5cb07.js} +1 -1
- package/dist/{imagePlot-b9eae4ae.js → imagePlot-38254245.js} +1 -1
- package/dist/{lasso-f767f634.js → lasso-e8b9500e.js} +1 -1
- package/dist/{launch.adhoc-abca6af3.js → launch.adhoc-2799109b.js} +1 -1
- package/dist/{leftlabel.sample-24c2388d.js → leftlabel.sample-afcdcefd.js} +1 -1
- package/dist/{legacyDataset-e0e201ab.js → legacyDataset-3b08c91a.js} +1 -1
- package/dist/{log-99af3443.js → log-4d84c357.js} +1 -1
- package/dist/{lollipop-806f8fa4.js → lollipop-64c5cdfc.js} +1 -1
- package/dist/{maf-b06579e4.js → maf-fd4ffbd0.js} +1 -1
- package/dist/{maftimeline-4840a380.js → maftimeline-3e892da7.js} +1 -1
- package/dist/{matrix-00bb50ff.js → matrix-e371888a.js} +1 -1
- package/dist/{matrix.cells-914dd0c6.js → matrix.cells-eb4110a7.js} +1 -1
- package/dist/{matrix.cluster-783ceab0.js → matrix.cluster-0df274ed.js} +1 -1
- package/dist/{matrix.config-6ce74dfe.js → matrix.config-3ef822b9.js} +1 -1
- package/dist/{matrix.controls-7b2a6f95.js → matrix.controls-42bb2063.js} +1 -1
- package/dist/{matrix.data-dac4f1b7.js → matrix.data-27b8e3a9.js} +1 -1
- package/dist/{matrix.dom-4e10bbe9.js → matrix.dom-1bbe1f39.js} +1 -1
- package/dist/{matrix.groups-b9fca14a.js → matrix.groups-67606700.js} +1 -1
- package/dist/{matrix.interactivity-84169b43.js → matrix.interactivity-cdcc56c9.js} +1 -1
- package/dist/{matrix.layout-dd5a44fd.js → matrix.layout-857cd336.js} +1 -1
- package/dist/{matrix.legend-ac6d45e6.js → matrix.legend-09f6dc57.js} +1 -1
- package/dist/{matrix.renderers-78010275.js → matrix.renderers-d392fb69.js} +1 -1
- package/dist/{matrix.serieses-9b4fd744.js → matrix.serieses-b03b62aa.js} +1 -1
- package/dist/{matrix.sort-014d798d.js → matrix.sort-9440c86a.js} +1 -1
- package/dist/{matrix.sorterUi-9bf7e6f9.js → matrix.sorterUi-2c5eb35f.js} +1 -1
- package/dist/{mavb-c6be46fc.js → mavb-9d86df89.js} +1 -1
- package/dist/{mds.fimo-bff6a1ed.js → mds.fimo-bffccb9f.js} +1 -1
- package/dist/{mds.samplescatterplot-9a02b9fb.js → mds.samplescatterplot-b3908cc7.js} +1 -1
- package/dist/{mds.survivalplot-055549f4.js → mds.survivalplot-9ad7dabc.js} +1 -1
- package/dist/{metaboliteIntensity-fac92f8b.js → metaboliteIntensity-ec3176f4.js} +1 -1
- package/dist/niceNumLabels-5f45218a.js +1 -0
- package/dist/{nodrag-16ad4b03.js → nodrag-ab7d5a9f.js} +1 -1
- package/dist/{notify-224cccbd.js → notify-59f61230.js} +1 -1
- package/dist/{numeric-b0b17185.js → numeric-4853b665.js} +1 -1
- package/dist/{numeric.binary-1f9e93f2.js → numeric.binary-1dd9a2b4.js} +1 -1
- package/dist/{numeric.continuous-ebcd0567.js → numeric.continuous-ed132eea.js} +1 -1
- package/dist/{numeric.discrete-7b97044a.js → numeric.discrete-d780d076.js} +1 -1
- package/dist/{numeric.spline-1be88f3d.js → numeric.spline-abe07708.js} +1 -1
- package/dist/{numeric.toggle-7fa2a770.js → numeric.toggle-647423dd.js} +1 -1
- package/dist/oncomatrix-7ac995a2.js +1 -0
- package/dist/{parseData-21fe9822.js → parseData-567f3d70.js} +1 -1
- package/dist/{plot.2dvaf-18a35e4b.js → plot.2dvaf-4016e75e.js} +1 -1
- package/dist/plot.app-d6fe76e2.js +1 -0
- package/dist/plot.barplot-d2fc5020.js +1 -0
- package/dist/{plot.boxplot-fe3046c6.js → plot.boxplot-76229491.js} +1 -1
- package/dist/{plot.brainImaging-2ceb6023.js → plot.brainImaging-39b80a1c.js} +1 -1
- package/dist/{plot.disco-6011f87f.js → plot.disco-9a544f9a.js} +1 -1
- package/dist/{plot.dzi-6728a7c8.js → plot.dzi-f1658ebf.js} +1 -1
- package/dist/{plot.ssgq-5581dc56.js → plot.ssgq-aeb2dabc.js} +1 -1
- package/dist/{plot.vaf2cov-b2284c64.js → plot.vaf2cov-ba8332ed.js} +1 -1
- package/dist/{plot.wsi-9a9d4034.js → plot.wsi-2d802557.js} +1 -1
- package/dist/{profileBarchart-0476f1f8.js → profileBarchart-72adc533.js} +1 -1
- package/dist/{profileHome-32eb9b50.js → profileHome-37fd52e5.js} +1 -1
- package/dist/{profilePlot-c7e099e8.js → profilePlot-0b897a05.js} +1 -1
- package/dist/profilePolar-a7248d48.js +1 -0
- package/dist/profileRadar-1ba5d8fd.js +1 -0
- package/dist/profileRadarFacility-452e76ef.js +1 -0
- package/dist/{profileSummary-b114204f.js → profileSummary-7f0eacf0.js} +1 -1
- package/dist/{recover-49e09de0.js → recover-74f2e965.js} +1 -1
- package/dist/{regression.inputs-a761f40d.js → regression.inputs-ff00f74e.js} +1 -1
- package/dist/{regression.inputs.values.table-5929d25a.js → regression.inputs.values.table-1753d56b.js} +1 -1
- package/dist/{regression.results-69bc42d0.js → regression.results-6f85a5dc.js} +1 -1
- package/dist/{renderPvalueTable-dc5d15f2.js → renderPvalueTable-17558d6a.js} +1 -1
- package/dist/{sampleScatter-2d0ed680.js → sampleScatter-97917406.js} +1 -1
- package/dist/{sampleScatter.rendererThree-0b12ac61.js → sampleScatter.rendererThree-4649d1ec.js} +2 -2
- package/dist/{sampleView-484ab133.js → sampleView-f86dc5ea.js} +1 -1
- package/dist/{samplelst-689796e6.js → samplelst-4a5512df.js} +1 -1
- package/dist/{samplematrix-2b137a05.js → samplematrix-1192e5e2.js} +1 -1
- package/dist/{scatter-205e013f.js → scatter-cc1b0d07.js} +1 -1
- package/dist/{select2Terms-b21e184a.js → select2Terms-d4f6ed9e.js} +1 -1
- package/dist/{selectGenomeWithTklst-466995b4.js → selectGenomeWithTklst-b5cfd153.js} +1 -1
- package/dist/{singleCellCellType-5db730bb.js → singleCellCellType-d8c58253.js} +1 -1
- package/dist/{singleCellGeneExpression-7147a2d0.js → singleCellGeneExpression-b7209531.js} +1 -1
- package/dist/{singleCellPlot-73b2738f.js → singleCellPlot-e6f83b2a.js} +1 -1
- package/dist/{singlecell-bca774ed.js → singlecell-321dd973.js} +1 -1
- package/dist/{singlecell-24409b72.js → singlecell-879235b3.js} +1 -1
- package/dist/snp-541ec14d.js +1 -0
- package/dist/{snp-a8388ce4.js → snp-b046b7e6.js} +1 -1
- package/dist/snplocus-61ff1c10.js +1 -0
- package/dist/{spliceevent.a53ss.diagram-e2eab72b.js → spliceevent.a53ss.diagram-1a84db58.js} +1 -1
- package/dist/{spliceevent.exonskip.diagram-4d5df3a1.js → spliceevent.exonskip.diagram-da10648b.js} +1 -1
- package/dist/{spliceevent.exonskip.getdefault-a94aad6e.js → spliceevent.exonskip.getdefault-8028e522.js} +1 -1
- package/dist/{spliceevent.noeventdiagram-ea97b0fb.js → spliceevent.noeventdiagram-1d6d790d.js} +1 -1
- package/dist/{spliceevent.phrase-c5832470.js → spliceevent.phrase-2ca0ce59.js} +1 -1
- package/dist/{stattable-7c5ecc2f.js → stattable-c5f12d9c.js} +1 -1
- package/dist/{style.gdc-131f3c77.js → style.gdc-5b7d90c6.js} +1 -1
- package/dist/summary-0624f5e6.js +1 -0
- package/dist/{sunburst-533902a7.js → sunburst-30295714.js} +1 -1
- package/dist/{survival-e16e068f.js → survival-816e055a.js} +1 -1
- package/dist/{survival-92250664.js → survival-fcc7719f.js} +1 -1
- package/dist/{svg.download-35926549.js → svg.download-e89a7369.js} +1 -1
- package/dist/{svg.legend-8d490df2.js → svg.legend-c93f2980.js} +1 -1
- package/dist/{svgraph-6fac8cbc.js → svgraph-6ab3011b.js} +1 -1
- package/dist/{svmr-d07ff695.js → svmr-3ad3d600.js} +1 -1
- package/dist/{table-ad744310.js → table-4d3a771e.js} +1 -1
- package/dist/{table-29d5a973.js → table-f50a9344.js} +1 -1
- package/dist/{termInfo-bf99a37e.js → termInfo-d0a9e65f.js} +1 -1
- package/dist/{termdb.bins-8b656cc3.js → termdb.bins-01e8cce6.js} +1 -1
- package/dist/{termsetting-33ea66f1.js → termsetting-ad8c4f3a.js} +1 -1
- package/dist/{tk-071a7550.js → tk-e74c9beb.js} +1 -1
- package/dist/{toggleButtons-dbdbad01.js → toggleButtons-04c5ad7c.js} +1 -1
- package/dist/{tp.ui-9c2e9fc5.js → tp.ui-7b24f0ef.js} +1 -1
- package/dist/{tvs.density-f6128793.js → tvs.density-b2790080.js} +1 -1
- package/dist/{tvs.geneVariant-ca4bdbb1.js → tvs.geneVariant-418ed4ff.js} +1 -1
- package/dist/{tvs.numeric-0260a825.js → tvs.numeric-de14101f.js} +1 -1
- package/dist/{tvs.samplelst-cb71b3bf.js → tvs.samplelst-15bb62f1.js} +1 -1
- package/dist/{uiUtils-f1bd2bcc.js → uiUtils-ff2d4a6a.js} +1 -1
- package/dist/{variantBrowser-7c540224.js → variantBrowser-261373bf.js} +1 -1
- package/dist/{vcf-5cc55588.js → vcf-145bf5dd.js} +1 -1
- package/dist/violin-e647aac9.js +1 -0
- package/dist/{violin.interactivity-4da6d7a9.js → violin.interactivity-30a239fe.js} +1 -1
- package/dist/{violin.renderer-ce024265.js → violin.renderer-e29d2700.js} +1 -1
- package/dist/{violinRenderer-f7c96a60.js → violinRenderer-08b3b58c.js} +1 -1
- package/dist/{viridis-01ab20c5.js → viridis-d86ad99b.js} +1 -1
- package/dist/{y-67939f83.js → y-06b0d47c.js} +1 -1
- package/dist/{zoom-25dce8b9.js → zoom-d6ef6f3f.js} +1 -1
- package/package.json +1 -1
- package/dist/app-649f8357.js +0 -1
- package/dist/app-b369b169.js +0 -1
- package/dist/barchart-8277ed43.js +0 -1
- package/dist/block.lazyload-87b12654.js +0 -1
- package/dist/controls.config-28d6d6a8.js +0 -1
- package/dist/cuminc-9e275854.js +0 -1
- package/dist/hierCluster.config-98e82dff.js +0 -1
- package/dist/niceNumLabels-238aabce.js +0 -1
- package/dist/oncomatrix-351af2a0.js +0 -1
- package/dist/plot.app-30c4b8e5.js +0 -1
- package/dist/plot.barplot-7c4865a2.js +0 -1
- package/dist/profilePolar-6b981e63.js +0 -1
- package/dist/profileRadar-bca1cc03.js +0 -1
- package/dist/profileRadarFacility-bbb1ecd8.js +0 -1
- package/dist/snp-37d06246.js +0 -1
- package/dist/snplocus-7a1ea8c9.js +0 -1
- package/dist/summary-5ec455d3.js +0 -1
- package/dist/violin-2ba509eb.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as t,B as e,ap as s,aq as a,ar as n,z as i,an as o,as as r,at as l,bL as c,I as d,V as f,u as m,b as u,ak as p,D as h,n as g,r as w,aN as b,d as k,be as x,aG as v,W as y,aQ as _,aR as j,aP as M,bE as A,bD as S}from"./app-b369b169.js";import{l as q}from"./block.legend-d3f61ef7.js";import{s as C,m as z}from"./regression.results-69bc42d0.js";import{a as L}from"./axisstyle-fac7f76b.js";import{c as $,b as N}from"./axis-747c801e.js";import{r as R}from"./table-29d5a973.js";import{d as O}from"./arc-3d6751aa.js";import{m as I}from"./block-6aedd569.js";import{t as D}from"./downloadTextfile-5723af95.js";import{T}from"./toggleButtons-dbdbad01.js";import{m as B}from"./radiobutton-09bff425.js";import{v as F}from"./vcf-5cc55588.js";import{n as U}from"./niceNumLabels-238aabce.js";import{f as G}from"./termsetting-33ea66f1.js";import{r as P}from"./rehydrateFilter-12d118cb.js";const E="white",H="black";const V="Unannotated";function W(e,s){if(!e.legend)e.legend={};e.legend.tip=new t({padding:"0px"});const[a,n,i]=q(s,e.name);e.legend.headTd=i;e.tr_legend=a;const o=n.append("table").style("border-spacing","5px").style("border-collapse","separate");e.legend.table=o;K(e,s);Q(e);X(e);J(e);nt(e);lt(e);dt(e)}function K(t,e){if(!t.legend.mclass)t.legend.mclass={};if(!t.legend.mclass.hiddenvalues)t.legend.mclass.hiddenvalues=new Set;t.legend.mclass.row=t.legend.table.append("tr");t.legend.mclass.row.append("td").style("text-align","right").style("opacity",.7).text(e.mclassOverride?e.mclassOverride.className||"Mutation":"Mutation");t.legend.mclass.holder=t.legend.mclass.row.append("td")}function Q(t){if(!t.variantShapeName)return;const e=t.legend.table.append("tr").append("td").attr("colspan",2);const s=t.legend.variantShapeName={};{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=12 height=12>\n\t\t\t<circle cx=6 cy=6 r=6 fill=gray></circle></svg> n=`);s.dotCount=a.append("span");if(t.variantShapeName.dot)a.append("span").text(", "+t.variantShapeName.dot);s.dotDiv=a}{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=12 height=12>\n\t\t\t<path d="M 6 0 L 0 12 h 12 Z" fill=gray></path></svg> n=`);s.triangleCount=a.append("span");if(t.variantShapeName.triangle)a.append("span").text(", "+t.variantShapeName.triangle);s.triangleDiv=a}{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=13 height=13>\n\t\t\t<circle cx=6.5 cy=6.5 r=6 stroke=gray fill=none></circle></svg> n=`);s.circleCount=a.append("span");if(t.variantShapeName.circle)a.append("span").text(", "+t.variantShapeName.circle);s.circleDiv=a}}function X(t){if(!t.mds.bcf?.info)return;const e=[];for(const s in t.mds.bcf.info){const a=t.mds.bcf.info[s];if(a.categories){e.push(s)}}if(!e.length)return;if(!t.legend.bcfInfo)t.legend.bcfInfo={};for(const s of e){const e=t.legend.table.append("tr");e.append("td").style("text-align","right").style("opacity",.7).text(t.mds.bcf.info[s].name||s);t.legend.bcfInfo[s]={hiddenvalues:new Set,row:e,holder:e.append("td")}}}function J(t){if(!t.mds.bcf?.format)return;const e=[];for(const s in t.mds.bcf.format){if(t.mds.bcf.format[s].isFilter)e.push(s)}if(!e.length)return;if(!t.legend.formatFilter)t.legend.formatFilter={};for(const s of e){const e=t.legend.table.append("tr");e.append("td").style("text-align","right").style("opacity",.7).text(t.mds.bcf.format[s].Description);t.legend.formatFilter[s]={hiddenvalues:new Set,row:e,holder:e.append("td")}}}function Y(t,e){if(!e.legend.formatFilter)return;if(!t.skewer){console.log("data.skewer[] is not present and cannot show INFO legend");return}for(const s in e.legend.formatFilter){e.legend.formatFilter[s].holder.selectAll("*").remove();const a=new Map;let n=0;for(const e of t.skewer){if(!e.formatK2count?.[s])continue;for(const t in e.formatK2count[s].v2c){a.set(t,e.formatK2count[s].v2c[t]+(a.get(t)||0))}n+=e.formatK2count[s].unannotatedCount||0}const i=[...a];i.sort(((t,e)=>e[1]-t[1]));if(n){i.push([V,n])}for(const[t,a]of i){const n=e.legend.formatFilter[s].holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(()=>{e.legend.tip.clear().showunder(n.node()).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{e.legend.formatFilter[s].hiddenvalues.add(t);Z(e)}));e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const t of i){e.legend.formatFilter[s].hiddenvalues.add(t[0])}e.legend.formatFilter[s].hiddenvalues.delete(t);Z(e)}));if(e.legend.formatFilter[s].hiddenvalues.size){e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{e.legend.formatFilter[s].hiddenvalues.clear();Z(e)}))}}));n.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background","#aaa").style("margin-right","5px").html(a>1?a:" ");n.append("div").style("display","inline-block").text(t)}for(const t of e.legend.formatFilter[s].hiddenvalues){let a=false;e.legend.formatFilter[s].holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text(t).on("click",(async()=>{if(a)return;a=true;e.legend.formatFilter[s].hiddenvalues.delete(t);Z(e)}))}}}function Z(t){t.legend.tip.hide();t.load()}function tt(t,e,s){if(!e.legend){return}e.legend.mclass.currentData=t.mclass2variantcount;at(e);et(t,e);st(t,e);Y(t,e);ot(t,e);ct(e);ft(e)}function et(t,e){if(!e.variantShapeName)return;let s=0,a=0,n=0;for(const e of t.skewer){if(e.shapeTriangle)a++;else if(e.shapeCircle)n++;else s++}const i=e.legend.variantShapeName;i.dotDiv.style("display",s?"block":"none");i.triangleDiv.style("display",a?"block":"none");i.circleDiv.style("display",n?"block":"none");i.dotCount.text(s);i.triangleCount.text(a);i.circleCount.text(n)}function st(t,e){if(!e.legend.bcfInfo)return;if(!t.skewer){console.log("data.skewer[] is not present and cannot show INFO legend");return}for(const s in e.legend.bcfInfo){e.legend.bcfInfo[s].holder.selectAll("*").remove();if(e.mds.bcf.info[s].Type=="String"){const a=new Map;for(const e of t.skewer){const t=s in e.info?e.info[s]:V;if(Array.isArray(t)){for(const e of t){a.set(e,1+(a.get(e)||0))}}else{a.set(t,1+(a.get(t)||0))}}const n=[...a].sort(((t,e)=>e[1]-t[1]));for(const[t,a]of n){const i=e.legend.bcfInfo[s].holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(()=>{e.legend.tip.clear().showunder(i.node()).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{e.legend.bcfInfo[s].hiddenvalues.add(t);Z(e)}));e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const t of n){e.legend.bcfInfo[s].hiddenvalues.add(t[0])}e.legend.bcfInfo[s].hiddenvalues.delete(t);Z(e)}));if(e.legend.bcfInfo[s].hiddenvalues.size){e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{e.legend.bcfInfo[s].hiddenvalues.clear();Z(e)}))}const a=e.mds.bcf.info[s].categories?.[t]?.desc;if(a){e.legend.tip.d.append("div").style("padding","10px").style("font-size",".8em").style("width","150px").html(a)}}));i.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background",e.mds.bcf.info[s].categories?.[t]?.color||E).html(a>1?a:" ");i.append("div").style("display","inline-block").style("color",e.mds.bcf.info[s].categories?.[t]?.color||H).style("padding-left","5px").text(e.mds.bcf.info[s].categories?.[t]?.label||t)}for(const t of e.legend.bcfInfo[s].hiddenvalues){let a=false;e.legend.bcfInfo[s].holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").text(t).on("click",(async()=>{if(a)return;a=true;e.legend.bcfInfo[s].hiddenvalues.delete(t);Z(e)}))}}}}function at(t){if(!t.legend.mclass.currentData||t.legend.mclass.currentData.length==0)return;t.legend.mclass.holder.selectAll("*").remove();const c=[],d=[];for(const[e,s]of t.legend.mclass.currentData){const a={k:e,count:s};if(t.legend.mclass.hiddenvalues.has(e)){d.push(a)}else{c.push(a)}}c.sort(((t,e)=>e.count-t.count));d.sort(((t,e)=>e.count-t.count));for(const e of t.legend.mclass.hiddenvalues){if(!d.find((t=>t.k==e))){d.push({k:e})}}for(const f of c){let m,u,p="#858585";if(Number.isInteger(f.k)){m=e[f.k];if(f.k==s){u="Copy number variation."}else if(f.k==a){u="Loss of heterozygosity."}else if(f.k==n){p=i[o].color;u="Internal tandem duplication."}else if(f.k==r){u="Structural variation of DNA."}else if(f.k==l){u="Fusion gene from RNA-seq."}}else{m=i[f.k].label;p=i[f.k].color;u=i[f.k].desc}const h=t.legend.mclass.holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(e=>{t.legend.tip.clear().showunder(e.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{t.legend.mclass.hiddenvalues.add(f.k);Z(t)}));t.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const e of c){t.legend.mclass.hiddenvalues.add(e.k)}t.legend.mclass.hiddenvalues.delete(f.k);Z(t)}));if(d.length){t.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{t.legend.mclass.hiddenvalues.clear();Z(t)}))}t.legend.tip.d.append("div").style("padding","10px").style("font-size",".8em").style("width","150px").html(u)}));h.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background",p).html(f.count>1?f.count:" ");h.append("div").style("display","inline-block").style("color",p).html(" "+m)}for(const s of d){let a=false;t.legend.mclass.holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text((s.count?"("+s.count+") ":"")+(Number.isInteger(s.k)?e[s.k]:i[s.k].label)).on("click",(async e=>{if(a)return;a=true;t.legend.mclass.hiddenvalues.delete(s.k);e.target.innerHTML="Updating...";await t.load()}))}}function nt(t,e){if(!t.mds.queries?.snvindel?.skewerRim)return;const s=t.legend.skewerRim={};if(!t.mds.queries.snvindel.skewerRim.hiddenvaluelst)t.mds.queries.snvindel.skewerRim.hiddenvaluelst=[];s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7);s.holder=s.row.append("td")}function it(t){const e=t.mds.queries.snvindel.skewerRim;if(e.type=="format"){if(!e.formatKey)throw"skewerRim.formatKey missing";return t.mds.bcf?.format?.[e.formatKey]?.Description||e.formatKey}return"unknown skewerRim.type"}function ot(t,e){const s=e.mds.queries?.snvindel?.skewerRim;if(!s)return;let a=0,n=0;for(const e of t.skewer){const t=e.rim1count||0;a+=t;n+=e.occurrence-t}const i=e.legend.skewerRim;i.headerTd.text(it(e));i.holder.selectAll("*").remove();if(a>0){i.holder.append("div").attr("class","sja_clb").style("display","inline-block").html(`${rt(1)}${s.rim1value}, n=${a}`).on("click",(t=>{e.legend.tip.clear().showunder(t.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{s.hiddenvaluelst.push(s.rim1value);Z(e)}))}))}if(n>0){i.holder.append("div").attr("class","sja_clb").style("display","inline-block").html(`${rt()}${s.noRimValue}, n=${n}`).on("click",(t=>{e.legend.tip.clear().showunder(t.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{s.hiddenvaluelst.push(s.noRimValue);Z(e)}))}))}for(const t of s.hiddenvaluelst){let a=false;i.holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text(t).on("click",(async n=>{if(a)return;a=true;s.hiddenvaluelst.splice(s.hiddenvaluelst.indexOf(t),1);n.target.innerHTML="Updating...";await e.load()}))}}function rt(t){return'<svg width="19" height="19" style="margin-right: 5px;">'+'<circle cx="7" cy="12" r="7" fill="#b1b1b1"></circle>'+(t==1?'<path d="M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z" transform="translate(7,12)" fill="#858585" stroke="none"></path>':t==2?"":"")+"</svg>"}function lt(t,e){if(!t.mds.queries?.ld)return;t.mds.queries.ld.colorScale=c(t.mds.queries.ld.overlay.color_0,t.mds.queries.ld.overlay.color_1);const s=t.legend.ld={};s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7);s.holder=s.row.append("td");s.showHolder=s.holder.append("div").style("display","none");C(s.showHolder,t.mds.queries.ld.colorScale);s.showHolder.append("span").text("Cancel overlay").style("font-size",".7em").attr("class","sja_clbtext").on("click",(()=>{delete t.mds.queries.ld.mOverlay;if(t.skewer?.hlssmid)delete t.skewer.hlssmid;t.load()}))}function ct(t){if(!t.mds.queries?.ld?.mOverlay){if(t.legend.ld){t.legend.ld.headerTd.html("");t.legend.ld.showHolder.style("display","none")}return}t.legend.ld.headerTd.html(t.mds.queries.ld.mOverlay.ldtkname+" LD r<sup>2</sup>");t.legend.ld.showHolder.style("display","block")}function dt(t,e){if(!t.cnv)return;const s=t.legend.cnv={};s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7).text("CNV");s.holder=s.row.append("td");s.showHolder=s.holder.append("div").style("display","none")}function ft(t){if(!t.cnv)return;t.legend.cnv.holder.selectAll("*").remove();const e=t.legend.cnv.holder.append("svg");const s=20;const a=15;const n=10;const i=150;L({axis:e.append("g").attr("transform","translate("+n+","+s+")").call($().scale(d().domain([-t.cnv.absoluteMax,t.cnv.absoluteMax]).range([0,i])).ticks(4)),fontsize:12});const o="grad"+Math.random();const r=e.append("defs").append("linearGradient").attr("id",o);r.append("stop").attr("offset","0%").attr("stop-color",t.cnv.lossColor);r.append("stop").attr("offset","50%").attr("stop-color","white");r.append("stop").attr("offset","100%").attr("stop-color",t.cnv.gainColor);e.append("rect").attr("x",n).attr("y",s).attr("width",i).attr("height",a).attr("fill",`url(#${o})`);e.attr("width",n*2+i).attr("height",s+a)}function mt(t){if(t.lst.length==0){return"No filter"}if(t.lst.length==1&&t.lst[0].type=="tvs"){const e=t.lst[0].tvs;if(!e)throw"f.lst[0].tvs{} missing";const s=e?.term?.type;if(s=="categorical"){if(!Array.isArray(e.values))throw"f.lst[0].tvs.values not array";const t=e.values[0]?.key;if(t==undefined)throw"f.lst[0].tvs.values[0].key missing";const s=e.term.values?.[t]?.label||t;if(e.values.length==1){if((e.term.name+s).length<20){return e.term.name+(e.isnot?"!=":": ")+s}return(e.isnot?"!":"")+(s.length<15?s:s.substring(0,13)+"...")}return`${e.isnot?"!":""}${s.length<12?s:s.substring(0,10)+"..."} (${e.values.length})`}if(s=="integer"||s=="float"||s=="geneExpression"||s=="metaboliteIntensity"){return ut(e)}throw"unknown tvs term type"}return"Filter ("+t.lst.length+")"}function ut(t){if(!Array.isArray(t.ranges))throw"tvs.ranges not array";if(!t.ranges[0])throw"tvs.ranges[] blank array";const e=t.ranges[0];let s,a;const n=t.term.valueConversion;if(n){if("start"in e)s=f(e.start,n.fromUnit,n.toUnit,n.scaleFactor,true);if("stop"in e)a=f(e.stop,n.fromUnit,n.toUnit,n.scaleFactor,true)}else{if(t.term.type=="integer"){if("start"in e)s=Math.round(e.start);if("stop"in e)a=Math.round(e.stop)}else{if("start"in e)s=e.start;if("stop"in e)a=e.stop;if("start"in e&&"stop"in e){[s,a]=U([s,a])}}}let i;if(t.isnot){if(e.startunbounded)i=`x ${e.stopinclusive?">":">="} ${a}`;else if(e.stopunbounded)i=`x ${e.startinclusive?"<":"<="} ${s}`;else i=`!(${s} ${a})`}else{if(e.startunbounded)i=`x ${e.stopinclusive?"<=":"<"} ${a}`;else if(e.stopunbounded)i=`x ${e.startinclusive?">=":">"} ${s}`;else i=`${s}${e.startinclusive?"<=":"<"}x${e.stopinclusive?"<=":"<"}${a}`}if(t.ranges.length>1)i+="...";return i}async function pt(e,s){e.subtk2height={};e.leftlabels={g:e.gleft.append("g"),doms:{},laby:0,xoff:0,maxwidth:0};e._finish=ht(e,s);e.cache={};e.itemtip=new t;e.menutip=new t({padding:""});e.load=Ct(e,s);e.mnamegetter=t=>{if(e.mds.queries?.snvindel?.vcfid4skewerName&&t.vcf_id)return t.vcf_id;const s=t.mname;if(!s)return"";if(s.length>25){return s.substr(0,20)+"..."}return s};await vt(e,s);await _t(e,s);await At(e,s);jt(e,s);Mt(e,s);wt(e);bt(e);if(e.filterObj)await Promise.all(P(e.filterObj,e.mds.termdb.vocabApi));e.tklabel.text(e.mds.label||e.name);e.clear=()=>{if(e.skewer)e.skewer.g.selectAll("*").remove()};W(e,s);xt(e);e.color4disc=t=>{if(e.mutationColorBy){if(e.mutationColorBy=="hardcode"){if(t.color)return t.color}}if(e.mds.queries?.ld?.mOverlay?.data){const s=e.mds.queries.ld.mOverlay.m;if(t.chr==s.chr&&t.pos==s.pos&&t.ref==s.ref&&t.alt==s.alt){return e.mds.queries.ld.overlay.color_1}for(const s of e.mds.queries.ld.mOverlay.data){if(s.pos==t.pos&&s.alleles==t.ref+"."+t.alt){return e.mds.queries.ld.colorScale(s.r2)}}return e.mds.queries.ld.overlay.color_0}if(e.vcfinfofilter&&e.vcfinfofilter.setidx4mclass!=undefined){const s=e.vcfinfofilter.lst[e.vcfinfofilter.setidx4mclass];const[a,n]=zt(s,t);if(a||n==undefined)return"black";for(const t of n){if(s.categories[t]){return s.categories[t].color}else{return"black"}}}if(i[t.class]){return i[t.class].color}return"black"};gt(e);if(e.hlssmid){e.skewer.hlssmid=new Set(e.hlssmid.split(","));delete e.hlssmid}try{It(e)}catch(t){console.error(t)}}function ht(t,e){return s=>{t.legend?.headTd.text(t.name+(t.filterObj?" - "+mt(t.filterObj):""));if(t.cnv){t.cnv.g.transition().attr("transform",`translate(0,${t.subtk2height.skewer||0})`)}if(s){if(s.error){t.subtk2height.skewer=40}else{let a=0;if(s.skewer)a=s.skewer.length;if(s.cnv)a+=s.cnv.length;if(a==0){let s="view range";if(e.usegm&&e.gmmode!="genomic")s=e.usegm.name||e.usegm.isoform;t.skewer.g.append("text").text("No mutation in "+s).attr("y",25).attr("x",e.width/2).attr("text-anchor","middle").attr("dominant-baseline","center");t.subtk2height.skewer=40}}}t.height_main=Math.max(t.subtk2height.leftlabels||0,t.subtk2height.skewer+(t.subtk2height.cnv||0))+t.toppad+t.bottompad;if(s){tt(s,t)}t.leftLabelMaxwidth=Math.max(t.leftlabels.maxwidth+t.leftlabels.xoff,t.skewer?t.skewer.maxwidth:0);e.tkcloakoff(t,{error:s?s.error:null});e.block_setheight();e.setllabel();if(typeof t.callbackOnRender=="function"){t.callbackOnRender(t,e)}}}function gt(t){const e=m();if(t.skewer){if(e.has("hlaachange")){t.hlaachange=e.get("hlaachange")}if(e.has("hlssmid")){t.hlssmid=e.get("hlssmid").split(",")}}}function wt(t){if(!t.mds.has_skewer)return;t.skewer={g:t.glider.append("g"),hlBoxColor:t.mds.hlBoxColor||"red",hideDotLabels:false,pointup:true};kt(t)}function bt(t){let e=t.mds.termdbConfig?.queries?.cnv;if(!e){if(t.mds.has_cnv){e={}}}if(!e)return;t.cnv={g:t.glider.append("g"),cnvMaxLength:e.cnvMaxLength,cnvGainCutoff:e.cnvGainCutoff,cnvLossCutoff:e.cnvLossCutoff,absoluteValueRenderMax:e.absoluteValueRenderMax||5,gainColor:e.gainColor||"#D6683C",lossColor:e.lossColor||"#67a9cf"}}function kt(t){t.skewer.viewModes=t.skewerModes;delete t.skewerModes;if(!t.skewer.viewModes)t.skewer.viewModes=[];const e=t.skewer.viewModes;if(!Array.isArray(e))throw"skewerModes[] is not array";if(t.mds.skewerModes){for(const s of t.mds.skewerModes)e.push(s)}if(!e.find((t=>t.type=="skewer")))e.push({type:"skewer"});for(const t of e){if(typeof t!="object")throw"one of skewerModes[] is not object";if(t.type=="skewer"){if(!t.label)t.label="lollipops"}else if(t.type=="numeric"){if(t.byAttribute){if(!t.label)t.label=t.byAttribute}else if(t.byInfo);else{throw"unknown data method for a type=numeric mode"}}else{throw"unknown type from a skewerModes[]"}}if(!e.find((t=>t.inuse)))e[0].inuse=true}function xt(t){if(t.mds.hiddenmclass){for(const e of t.mds.hiddenmclass)t.legend.mclass.hiddenvalues.add(e)}}async function vt(t,e){if(t.dslabel){const s=await u("getDataset",{body:{genome:e.genome.name,dsname:t.dslabel}});if(s.error)throw"Error: "+s.error;if(!s.ds)throw"data.ds{} missing";t.mds=s.ds;t.name=s.ds.label;return}if(!t.name)t.name="Custom data";t.mds={};if(t.bcf){if(!t.bcf.file&&!t.bcf.url)throw"file or url missing for tk.bcf{}";t.mds.has_skewer=true;await Ot(t,e.genome)}else if(t.custom_variants){Lt(t,e);Rt(t)}else{throw"unknown data source for custom track"}yt(t)}function yt(t){if(!t.sampleAnnotation)return;if(!Array.isArray(t.sampleAnnotation.terms))throw"sampleAnnotation.terms is not array";if(!t.mds.termdb)t.mds.termdb={};t.mds.termdb.terms=t.sampleAnnotation.terms;t.mds.termdb.annotations=t.sampleAnnotation.annotations}async function _t(t,e){const s=t.mds.termdb;if(!s)return;{const a={};if(t.mds.label){a.vocab={genome:e.genome.name,dslabel:t.mds.label}}else if(s.terms){a.vocab={terms:s.terms,sampleannotation:s.annotations}}else{throw"do not know how to init vocab"}const n=await import("./FilterRxComp-701a1480.js").then((function(t){return t.k}));s.vocabApi=n.vocabInit(a);if(!s.vocabApi.app){s.vocabApi.app={opts:{genome:e.genome}}}}t.mds.termdbConfig=await s.vocabApi.getTermdbConfig();if(t.mds.termdb.allowCaseDetails){t.mds.termdb.allowCaseDetails.get=async t=>{}}}function jt(t,e){if(!t.mds.queries?.snvindel?.m2csq)return;t.mds.queries.snvindel.m2csq.get=async s=>{const a={genome:e.genome.name,dslabel:t.mds.label,m2csq:1};if(t.mds.queries.snvindel.m2csq.by=="ssm_id"){a.ssm_id=s.ssm_id}else{return{error:"unknown query method"}}const n={"Content-Type":"application/json",Accept:"application/json"};if(t.token)n["X-Auth-Token"]=t.token;return await u("mds3",{body:a,headers:n},{serverData:t.cache})}}function Mt(t,e){if(!t.mds.queries?.singleSampleMutation)return;t.mds.queries.singleSampleMutation.get=async s=>{const a={genome:e.genome.name,dslabel:t.mds.label,sample:s};const n={"Content-Type":"application/json",Accept:"application/json"};if(t.token)n["X-Auth-Token"]=t.token;const i=await u("termdb/singleSampleMutation",{body:a,headers:n});if(i.error)throw i.error;if(!Array.isArray(i.mlst))throw"data.mlst is not array";return i.mlst}}async function At(t,e){if(!t.mds.variant2samples)return;if(t.custom_variants){St(t)}else{qt(t,e)}if(t.mds.variant2samples.twLst){if(!Array.isArray(t.mds.variant2samples.twLst))throw"v2s.twLst[] not array";if(!t.mds.termdb?.vocabApi)throw"mds.termdb.vocabApi should be present for initiating v2s.twLst";for(const e of t.mds.variant2samples.twLst)await G(e,t.mds.termdb.vocabApi)}}function St(t,e){t.mds.variant2samples.get=e=>{if(e.querytype==t.mds.variant2samples.type_samples){const t=[];for(const s of e.mlst){if(!s.samples)continue;for(const e of s.samples){const a=JSON.parse(JSON.stringify(e));a.ssm_id=s.ssm_id;t.push(a)}}return{samples:t}}if(e.querytype==t.mds.variant2samples.type_summary){throw"todo: summary"}if(e.querytype==t.mds.variant2samples.type_sunburst){throw"todo: sunburst"}throw"unknown querytype"};t.mds.getSamples=()=>{const e=new Map;for(const s of t.custom_variants){if(!s.samples)continue;for(const t of s.samples){if(e.has(t.sample_id)){e.get(t.sample_id).ssm_id_lst.push(s.ssm_id)}else{const a=JSON.parse(JSON.stringify(t));a.ssm_id_lst=[s.ssm_id];e.set(t.sample_id,a)}}}return{samples:[...e.values()]}}}function qt(t,e){t.mds.variant2samples.get=async s=>{const a={genome:e.genome.name,variant2samples:1,get:s.querytype};if(t.mds.label){a.dslabel=t.mds.label}else if(t.bcf){if(t.bcf.file)a.bcffile=t.bcf.file;else if(t.bcf.url)a.bcfurl=t.bcf.url;else throw"tk.bcf{}: file/url missing"}else{throw"no dslabel or tk.bcf"}if(s.groupSsmBySample){a.groupSsmBySample=1}if(s.mlst){if(t.mds.variant2samples.variantkey=="ssm_id"){a.ssm_id_lst=s.mlst.map((t=>t.ssm_id)).join(",")}else{throw"unknown variantkey for variant2samples"}}if(s.isoform){a.isoform=s.isoform}if(s.rglst){a.rglst=s.rglst}const n={"Content-Type":"application/json",Accept:"application/json"};if(t.set_id)a.set_id=t.set_id;if(t.token)n["X-Auth-Token"]=t.token;if(t.filter0)a.filter0=t.filter0;if(t.filterObj)a.filterObj=t.filterObj;if(s.tid2value)a.tid2value=s.tid2value;if(s.querytype==t.mds.variant2samples.type_sunburst){if(t.mds.variant2samples.sunburst_twLst){a.twLst=t.mds.variant2samples.sunburst_twLst}}else if(s.querytype==t.mds.variant2samples.type_samples){if(t.mds.variant2samples.twLst)a.twLst=t.mds.variant2samples.twLst}else if(s.querytype==t.mds.variant2samples.type_summary){if(t.mds.variant2samples.twLst)a.twLst=t.mds.variant2samples.twLst}else{throw"unknown querytype"}a.skewerRim=t.mds.queries.snvindel?.skewerRim;if(t.legend.formatFilter){const e={};for(const s in t.legend.formatFilter){if(t.legend.formatFilter[s].hiddenvalues.size){e[s]=[...t.legend.formatFilter[s].hiddenvalues]}}if(Object.keys(e).length){a.formatFilter=e}}if(t.legend.mclass?.hiddenvalues?.size){a.hiddenmclasslst=[...t.legend.mclass.hiddenvalues].join(",")}const i=await u("mds3",{body:a,headers:n},{serverData:t.cache});if(i.error)throw i.error;const o=i.variant2samples;if(!o)throw"result error";if(s.querytype==t.mds.variant2samples.type_sunburst){if(!Array.isArray(o.nodes))throw"nodes[] not array from return"}else if(s.querytype==t.mds.variant2samples.type_samples){if(!Array.isArray(o.samples))throw"samples[] not array from return"}else if(s.querytype==t.mds.variant2samples.type_summary){if(!Array.isArray(o.summary))throw"summary[] not array from return"}else{throw"unknown querytype"}return o};t.mds.getSamples=async(s={})=>{if(s.isSummary){s.querytype=t.mds.variant2samples.type_summary}else{s.querytype=t.mds.variant2samples.type_samples;s.groupSsmBySample=1}Cs(t,e,s);return await t.mds.variant2samples.get(s)}}function Ct(t,e){return async()=>await As(t,e)}function zt(t,e){if(t.altalleleinfo){if(!e.altinfo)return["no .altinfo"];const s=e.altinfo[t.altalleleinfo.key];if(s==undefined){if(t.numericfilter){return[null,[0]]}return[null,undefined]}let a=Array.isArray(s)?s:[s];if(t.altalleleinfo.separator){a=a[0].split(t.altalleleinfo.separator)}return[null,a]}if(t.locusinfo){if(!e.info)return["no .info"];const s=e.info[t.locusinfo.key];if(s==undefined){if(t.numericfilter){return[null,[0]]}return[null,undefined]}let a=Array.isArray(s)?s:[s];if(t.locusinfo.separator){a=a[0].split(t.locusinfo.separator)}return[null,a]}return["no trigger"]}function Lt(t,e){for(const a of t.custom_variants){if(a.dt==p){t.mds.has_skewer=true;$t(a);continue}if(a.dt==l||a.dt==r){t.mds.has_skewer=true;Nt(a,e);continue}if(a.dt==s){t.mds.has_cnv=true;a.ssm_id=a.chr+"."+a.start+"."+a.stop+"."+a.class;continue}throw"unknown dt for a custom variant"}}function $t(t){if(!t.chr)throw".chr missing for custom snvindel";if(!Number.isInteger(t.pos))throw".pos not integer for custom snvindel";if(!t.ssm_id){t.ssm_id=t.chr+"."+t.pos+"."+(t.ref&&t.alt?t.ref+"."+t.alt:t.mname)}}function Nt(t,e){if(t.pairlst);else{if(!t.chr1)throw".chr1 missing for custom sv/fusion";if(!Number.isInteger(t.pos1))throw".pos1 not integer for custom svfusion";if(t.strand1!="+"&&t.strand1!="-")throw".strand1 not +/- for custom svfusion";if(!t.chr2)throw".chr1 missing for custom sv/fusion";if(!Number.isInteger(t.pos2))throw".pos1 not integer for custom svfusion";if(t.strand2!="+"&&t.strand2!="-")throw".strand1 not +/- for custom svfusion";t.pairlst=[{a:{chr:t.chr1,pos:t.pos1,strand:t.strand1,name:t.gene1||""},b:{chr:t.chr2,pos:t.pos2,strand:t.strand2,name:t.gene2||""}}];delete t.chr1;delete t.pos1;delete t.strand1;delete t.gene1;delete t.chr2;delete t.pos2;delete t.strand2;delete t.gene2}const s=[t.dt];const a=e.seekcoord(t.pairlst[0].a.chr,t.pairlst[0].a.pos);if(a.length&&a[0].x>0&&a[0].x<e.width){s.push(...[t.pairlst[0].a.chr,t.pairlst[0].a.pos,t.pairlst[0].a.strand,0,t.pairlst[0].a.name]);t.mname=t.pairlst[0].b.name||"";t.chr=t.pairlst[0].a.chr;t.pos=t.pairlst[0].a.pos;t.pairlstIdx=0}else{const a=e.seekcoord(t.pairlst[0].b.chr,t.pairlst[0].b.pos);if(a.length&&a[0].x>0&&a[0].x<e.width){s.push(...[t.pairlst[0].b.chr,t.pairlst[0].b.pos,t.pairlst[0].b.strand,1,t.pairlst[0].b.name]);t.mname=t.pairlst[0].a.name||"";t.chr=t.pairlst[0].b.chr;t.pos=t.pairlst[0].b.pos;t.pairlstIdx=1}}t.ssm_id=s.join(".")}function Rt(t){if(t.custom_variants.find((t=>t.occurrence!=undefined))){return}for(const e of t.custom_variants){if(e.sample){e.sample_id=e.sample;delete e.sample}}if(!t.custom_variants.find((t=>t.sample_id))){return}const e=[];const s=new Map;for(const a of t.custom_variants){if(a.dt!=p){a.occurrence=1;a.samples=[{sample_id:a.sample_id}];delete a.sample_id;e.push(a);continue}const t=a.mname+"."+a.chr+"."+a.pos+"."+a.ref+"."+a.alt;const n=s.get(t);if(n){n.occurrence++;n.samples.push({sample_id:a.sample_id})}else{a.occurrence=1;a.samples=[{sample_id:a.sample_id}];delete a.sample_id;s.set(t,a)}}t.custom_variants=e;for(const e of s.values())t.custom_variants.push(e);if(!t.mds.variant2samples)t.mds.variant2samples={};const a=t.mds.variant2samples;a.type_samples="samples";a.type_summary="summary";a.type_sunburst="sunburst"}async function Ot(t,e){const s={genome:e.name};if(t.bcf.file){s.file=t.bcf.file}else{s.url=t.bcf.url;if(t.bcf.indexURL)s.indexURL=t.bcf.indexURL}const a=await u("vcfheader",{body:s});if(a.error)throw a.error;const[n,i,o,r]=F(a.metastr.split("\n"));if(r)throw"Error parsing VCF meta lines: "+r.join("; ");t.mds.bcf={info:n,format:i};if(o?.length){t.mds.bcf.samples=o;t.mds.variant2samples={type_samples:"samples",variantkey:"ssm_id"}}if(!t.mds.queries)t.mds.queries={};t.mds.queries.snvindel={forTrack:true}}function It(t){const e=t.allow2selectSamples;if(!e)return;if(!e.buttonText)e.buttonText="Select samples";if(typeof e.buttonText!="string")throw"allow2selectSamples.buttonText value is not string";if(!e.attributes)e.attributes=[{from:"sample_id",to:"sample_id"}];if(!Array.isArray(e.attributes))throw"allow2selectSamples.attributes[] is not array";if(e.attributes.length==0)throw"allow2selectSamples.attributes[] blank array";for(const t of e.attributes){if(typeof t.from!="string"||!t.from)throw"allow2selectSamples.attributes.from is not string";if(typeof t.to!="string"||!t.to)throw"allow2selectSamples.attributes.to is not string"}if(typeof e.callback!="function")throw"allow2selectSamples.callback() is not function";e._cart=[]}async function Dt(t){for(const e of t.mlst){if(e.dt!=p&&e.dt!=l&&e.dt!=r&&e.dt!=s)throw"mlst[] contains unknown dt"}if(t.mlst.length==1){await Bt(t)}else{await Ft(t)}Tt(t)}function Tt(t){if(!t.tipDiv){return}const e=[];for(const s of t.div.selectAll("div").selectAll("table")){if(s)e.push(s)}if(!e.length)return;let s=0;for(const t of e){const e=t.firstChild;if(e.tagName!="THEAD")continue;const a=e.firstChild;if(a.tagName!="TR")continue;s=Math.max(s,a.childNodes?.length)}if(s>5){t.tipDiv.style("left","50px")}}async function Bt(t){const e=h({holder:t.div});const a=t.mlst[0];if(a.dt==p){Ut(t,e)}else if(a.dt==r||a.dt==l){await Wt(t,e)}else if(a.dt==s){Kt(t,e)}else{throw"oneItem: unknown dt"}t.singleSampleDiv=e;if(t.tk.mds.variant2samples){if(a.occurrence){await Zt(t)}}}async function Ft(t){const e=t.div.append("div").style("margin-bottom","10px").style("display","none");e.append("span").html("≪ Back to list").attr("class","sja_clbtext").on("click",(()=>{m.style("display","");e.style("display","none");a.style("display","none")}));const a=t.div.append("div").style("display","none");const n=[{label:"Click a variant to see details"}];const o=t.mlst.some((t=>t.occurrence));if(o){n.push({label:"Occurrence"})}let c=null;if(t.tk.mds.bcf?.info){c=[];for(const e in t.tk.mds.bcf.info){if(t.tk.mds.bcf.info[e].categories){c.push(e);n.push({label:t.tk.mds.bcf.info[e].name||e})}}if(c.length==0)c=null}let d;if(t.tk.skewer){d=t.tk.skewer.viewModes.find((t=>t.inuse&&t.type=="numeric"&&t.byAttribute!="occurrence"));if(d){n.push({label:d.label})}}t.mlst.sort(((t,e)=>t.__x-e.__x));const f=[];for(const e of t.mlst){const s=[{}];if(o){s.push({value:"occurrence"in e?e.occurrence:""})}if(c){for(const a of c){const n=e.info[a];if(n==undefined){s.push({})}else{const e=t.tk.mds.bcf.info[a].categories[n];if(e?.color){s.push({html:`<span style="background:${e.color}"> </span> ${e.label||n}`})}else{s.push({value:n})}}}}if(d){s.push({value:e[d.byAttribute]})}f.push(s)}const m=t.div.append("div");R({div:m,columns:n,rows:f,striped:false,resize:true});for(const[n,o]of t.mlst.entries()){const c=f[n][0].__td.append("div").attr("class","sja_menuoption").on("click",(()=>{m.style("display","none");e.style("display","");a.style("display","").selectAll("*").remove();const s=Object.assign({},t);s.mlst=[o];s.div=a;Dt(s)}));if(o.dt==p){c.append("span").text(t.tk.mnamegetter(o));c.append("span").text(i[o.class].label).style("font-size",".8em").style("margin-left","10px").style("color",i[o.class].color);c.append("span").text(`${o.chr}:${o.pos+1}${o.ref?", "+o.ref+">"+o.alt:""}`).style("font-size",".8em").style("margin-left","10px")}else if(o.dt==r||o.dt==l){c.append("span").text(i[o.class].label).style("font-size",".7em").style("margin-right","8px");Qt(o.pairlst[0],c)}else if(o.dt==s){c.append("span").style("background",t.tk.cnv.colorScale(o.value)).text(o.value).style("font-size",".8em").style("padding","0px 3px");c.append("span").style("margin-left","10px").text(`${o.chr}:${o.start}-${o.stop}`)}else{c.text("error: unknown m.dt")}}if(!t.doNotListSample4multim&&t.tk.mds.variant2samples){const e=t.mlst.reduce(((t,e)=>t+(e.occurrence||0)),0);if(e){t.div.append("div").style("margin-top","10px").append("span").attr("class","sja_clbtext").text("List all samples").on("click",(async e=>{e.target.remove();m.remove();await Zt(t);Tt(t)}))}}}function Ut({mlst:t,tk:e,block:s},a){const n=t[0];{const[t,e]=a.addRow();t.text(s.mclassOverride?s.mclassOverride.className:"Consequence");Ht(e,n)}{const[t,i]=a.addRow();t.text(n.ref&&n.alt?"Mutation":"Position");Vt(i,n,e,s)}if(n.occurrence>1){const[t,e]=a.addRow();t.text("Occurrence");e.text(n.occurrence)}Gt(n,e,a);Pt(n,e,a);Yt(n,e,a);if(n.info){for(const t in n.info){if(t=="CSQ"){continue}const[s,i]=a.addRow();s.text(t);const o=n.info[t];const r=e.mds?.bcf?.info?.[t];if(Array.isArray(o)){for(const t of o){Et(n,r,t,i)}}else{Et(n,r,o,i)}if(r?.Description){i.append("span").style("margin-left","10px").style("font-size",".8em").style("opacity",.6).text(r.Description)}}}}function Gt(t,e,s){const a=e.skewer.viewModes.find((t=>t.inuse));if(a.type!="numeric"||a.byAttribute=="occurrence")return;if(a.tooltipPrintValue){const e=a.tooltipPrintValue(t);if(Array.isArray(e)){for(const t of e){const[e,a]=s.addRow();e.text(t.k);a.text(t.v)}}else{console.log("unknown return value")}return}const[n,i]=s.addRow();n.text(a.label);i.text(t.__value_missing?"NA":t.__value_use)}function Pt(t,e,s){if(!t.htmlSections)return;if(!Array.isArray(t.htmlSections))throw"htmlSections[] is not array";for(const e of t.htmlSections){const[t,a]=s.addRow();if(e.key&&e.html){t.text(e.key);a.html(e.html)}}}function Et(t,e,s,a,n){if(!e){a.append("span").text(s);return}if(e.urlBase){a.append("a").text(s).attr("href",e.urlBase+s).attr("target","_blank");return}const i=a.append("span").text(s);if(e&&e.categories){const t=e.categories[s];if(t){i.style("padding","1px 4px").style("background",t.color);if(t.textcolor){i.style("color",t.textcolor)}}}}function Ht(t,e){t.append("span").text(e.mname);t.append("span").style("margin-left","5px").style("color",i[e.class].color).style("font-size",".8em").text(i[e.class].label.toUpperCase())}function Vt(t,e,s,a){const n=t.append("span").text(`${e.chr}:${e.pos+1} ${e.ref&&e.alt?e.ref+">"+e.alt:""}`);const i=s.mds.termdbConfig?.urlTemplates?.ssm||s.mds.queries?.snvindel?.ssmUrl;if(i){const s=z(i,e,n,a.genome.name);if(s?.length){t.append("span").style("margin-left","10px").html(s.join(" "))}}}async function Wt(t,e){await Xt(t.mlst[0],e.scrollDiv.insert("div",":first-child"),t.block);{const[s,a]=e.addRow();s.text("Data type");a.text(i[t.mlst[0].class].label)}{const[s,a]=e.addRow();s.text("Break points");for(const e of t.mlst[0].pairlst){Qt(e,a.append("div"))}}}function Kt(t,e){const s=t.mlst[0];{const[a,n]=e.addRow();a.text("Copy number change");n.html(`<span style="background:${t.tk.cnv.colorScale(s.value)}"> </span> ${s.value}`)}{const[t,a]=e.addRow();t.text("Position");a.text(s.chr+":"+s.start+"-"+s.stop)}if(s.samples){const[t,a]=e.addRow();t.text("Sample");for(const t of s.samples){a.append("div").text(t.sample_id)}}}function Qt(t,e){if(t.a.name)e.append("span").text(t.a.name).style("font-weight","bold").style("margin-right","5px");e.append("span").text(`${t.a.chr}:${t.a.pos} ${t.a.strand=="+"?"forward":"reverse"} > ${t.b.chr}:${t.b.pos} ${t.b.strand=="+"?"forward":"reverse"}`);if(t.b.name)e.append("span").text(t.b.name).style("font-weight","bold").style("margin-left","5px")}async function Xt(t,e,s){const a=e.append("div").text("Loading...");try{if(!t.pairlst)throw".pairlst[] missing";const n={a:{chr:t.pairlst[0].a.chr,position:t.pairlst[0].a.pos,strand:t.pairlst[0].a.strand},b:{chr:t.pairlst[0].b.chr,position:t.pairlst[0].b.pos,strand:t.pairlst[0].b.strand}};await Jt(n.a,s);await Jt(n.b,s);a.remove();const i=await import("./svgraph-6fac8cbc.js");i.default({pairlst:[n],genome:s.genome,holder:e})}catch(t){a.text(t.message||t)}}async function Jt(t,e){const s=await u("isoformbycoord",{body:{genome:e.genome.name,chr:t.chr,pos:t.position}});if(s.error)throw s.error;const a=s.lst.find((t=>t.isdefault))||s.lst[0];if(a){t.name=a.name;t.gm={isoform:a.isoform}}}function Yt(t,e,s){if(!e.mds.queries?.ld)return;const[a,n]=s.addRow();a.text("LD overlay");const i=e.mds.queries.ld.mOverlay?.m;if(i){const s=n.append("div").style("margin-bottom","5px");if(t.ssm_id==i.ssm_id){s.html(e.mds.queries.ld.mOverlay.ldtkname+" r<sup>2</sup> values against this variant are displayed on all the other variants.")}else{let a=null;for(const s of e.mds.queries.ld.mOverlay.data||[]){if(s.pos==t.pos&&s.alleles==t.ref+"."+t.alt){a=s.r2;break}}if(a==null){s.html("No r<sup>2</sup> value is found.")}else{s.html(e.mds.queries.ld.mOverlay.ldtkname+" r<sup>2</sup> = "+a)}}}n.append("div").html("Click a button to overlay LD r<sup>2</sup> values against this variant:").style("font-size",".8em").style("opacity",.5);for(const s of e.mds.queries.ld.tracks){const a=n.append("button").text(s.name);if(i&&i.ssm_id==t.ssm_id){if(s.name==e.mds.queries.ld.mOverlay.ldtkname){a.property("disabled",true);continue}}a.on("click",(()=>{e.itemtip.hide();e.mds.queries.ld.mOverlay={ldtkname:s.name,m:{chr:t.chr,pos:t.pos,ref:t.ref,alt:t.alt,ssm_id:t.ssm_id}};e.load()}))}}async function Zt(t){const e=t.div.append("div").text("Loading...").style("padding","10px").style("color","#8AB1D4").style("font-size","1.25em").style("font-weight","bold");t.tid2value_orig=new Set;if(t.tid2value)Object.keys(t.tid2value).forEach(t.tid2value_orig.add,t.tid2value_orig);try{t.querytype=t.tk.mds.variant2samples.type_samples;const s=await t.tk.mds.variant2samples.get(t);await te(s.samples,t);e.remove()}catch(t){e.text("Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}async function te(t,e){if(t.length==1){return await se(t[0],e)}const[s,a]=await oe(t,e.tk);const n={rows:a,columns:s,div:e.div,resize:a.length>10,dataTestId:"sjpp_mds3tk_sampletable"};n.columnButtons=[];if(e.tk.mds.queries?.singleSampleMutation){const s={text:"Disco",dataTestId:"sja_sample_table_disco_button",callback:async(s,a)=>{e.tk.itemtip.hide();e.tk.menutip.hide();let n;if(t[a].ssm_id_lst?.[0]){n=(e.tk.skewer.rawmlst||e.tk.custom_variants).find((e=>e.ssm_id==t[a].ssm_id_lst[0]))}await ie(e.tk,e.block,t[a],n)}};n.columnButtons.push(s)}if(e.tk.mds.queries?.singleSampleGenomeQuantification){for(const s in e.tk.mds.queries.singleSampleGenomeQuantification){const a={text:s,dataTestId:`${s}_button`,callback:async(a,n)=>{const i=g(e.tk.newChartHolder||e.block.holder0);i.header.text(t[n].sample_id);await(await import("./plot.ssgq-5581dc56.js")).plotSingleSampleGenomeQuantification(e.tk.mds,e.tk.mds.label,s,t[n],i.body.append("div").style("margin","20px"),e.block.genome,e.block.usegm?.name)}};n.columnButtons.push(a)}}if(e.tk.allow2selectSamples){n.buttons=[{text:e.tk.allow2selectSamples.buttonText,class:e.tk.allow2selectSamples.class,callback:s=>{ee(e.tk,e.block,t,s);e.tk.itemtip.hide();e.tk.menutip.hide()}}]}return R(n)}async function ee(t,e,s,a){const n=[...s];const i=a.map((t=>n[t]));t.allow2selectSamples.callback({samples:await t.mds.termdb.vocabApi.convertSampleId(i,t.allow2selectSamples.attributes),source:"Samples with "+le(e)})}async function se(t,e){const s=e.singleSampleDiv||h({holder:e.div});if(t.sample_id){const[a,n]=s.addRow();a.text(e.tk.mds.termdbConfig?.lollipop?.sample||"Sample");let i;if(t.ssm_id_lst?.[0]){i=e.tk.skewer.rawmlst.find((e=>e.ssm_id==t.ssm_id_lst[0]))}ne(t,e.tk,n,e.block,i)}if("caseIsOpenAccess"in t){const[e,a]=s.addRow();e.text("Access");a.text(t.caseIsOpenAccess?"Open":"Controlled")}if(e.tk.mds.variant2samples.twLst){for(const a of e.tk.mds.variant2samples.twLst){const[e,n]=s.addRow();e.text(a.term.name).style("text-overflow","ellipsis");n.style("text-overflow","ellipsis");if(a.term.id in t){if(Array.isArray(t[a.term.id])){if(a.baseURL){n.html(t[a.term.id].map((t=>`<a href=${a.baseURL+t} target=_blank>${t}</a>`)).join("<br>"))}else{n.html(t[a.term.id].join("<br>"))}}else{const e=ae(t,a);if(a.baseURL){n.html(`<a href=${a.baseURL+e} target=_blank>${e}</a>`)}else{n.text(e)}}}}}if(t.ssmid2format){for(const a of t.ssm_id_lst){if(t.ssm_id_lst.length>1){const[t,n]=s.addRow();n.style("padding-top","20px");const i=e.tk.skewer.rawmlst.find((t=>t.ssm_id==a));if(i){if(i.dt==p){Vt(n,i,e.tk,e.block)}else if(i.dt==r||i.dt==l){Qt(i.pairlst[0],n)}else{n.text(a)}}else{n.text(a)}}for(const n in t.ssmid2format[a]){const i=t.ssmid2format[a][n];const[o,r]=s.addRow();const l=e.tk.mds?.bcf?.format?.[n];o.text(l&&l.Description||n);r.html(re(l,i))}}}}function ae(t,e){if(!(e.term.id in t))return"";const s=t[e.term.id];if(e.term.values?.[s]?.label)return e.term.values[s].label;const a=e.term.valueConversion;if(a)return f(s,a.fromUnit,a.toUnit,a.scaleFactor);return s}function ne(t,e,s,a,n){const i=e.mds.termdbConfig?.urlTemplates?.sample;if(i){const e=s.append("a");e.attr("href",i.base+(t[i.namekey]||t.sample_id));e.attr("target","_blank");e.text(t.sample_id);e.style("word-break","break-word")}else{s.append("span").attr("class","pp_mds3_singleSampleNameSpan").text(t.sample_id)}const o=s.append("div");if(e.allow2selectSamples){const s=e.allow2selectSamples.buttonText;const n=o.append("button").style("margin-right","10px").text(s.endsWith("s")?s.substring(0,s.length-1):s).on("click",(()=>{ee(e,a,[t],[0]);e.itemtip.hide();e.menutip.hide()}));if(e.allow2selectSamples.class)n.attr("class",e.allow2selectSamples.class)}if(e.mds.queries?.singleSampleMutation){o.append("button").style("margin-right","10px").text("Disco plot").attr("data-testid","proteinpaint_disc_table_disco_button").on("click",(async()=>{e.itemtip.hide();await ie(e,a,t,n)}))}if(e.mds.queries?.singleSampleGenomeQuantification){for(const s in e.mds.queries.singleSampleGenomeQuantification){o.append("button").text(s).on("click",(async()=>{const n=g(e.newChartHolder||a.holder0);n.header.text(t.sample_id);await(await import("./plot.ssgq-5581dc56.js")).plotSingleSampleGenomeQuantification(e.mds,e.mds.label,s,t,n.body.append("div").style("margin","20px"),a.genome,a.usegm?.name)}))}}}async function ie(t,e,s,a){const n=g(t.newChartHolder||e.holder0);const i=[s.sample_id];if(a){i.push(", with ");if(e.usegm){i.push(e.usegm.name)}else{i.push(a.isoform)}i.push(" "+a.mname)}n.header.text(i.join(""));try{(await import("./plot.disco-6011f87f.js")).default(t.mds,t.mds.label,s,n.body,e.genome,{downloadImgName:i.join("")+" Disco",Disco:{prioritizeGeneLabelsByGeneSets:true}})}catch(t){n.body.append("div").text("Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}async function oe(t,e){const s=t.some((t=>"caseIsOpenAccess"in t)),a=t.some((t=>t.ssm_id))||t.some((t=>t.ssm_id_lst)),n=t.some((t=>t.ssmid2format))&&e.mds?.bcf?.format;const o=new Set;const c=[{label:e.mds.termdbConfig?.lollipop?.sample||"Sample"}],d=[];if(s){c.push({label:"Access"})}if(e.mds.variant2samples.twLst){for(const t of e.mds.variant2samples.twLst){const e={label:t.term.name};c.push(e)}}if(a){c.push({label:"Mutations",isSsm:true})}if(n){for(const e of t){if(!e.ssmid2format)continue;for(const t in e.ssmid2format){for(const s in e.ssmid2format[t])o.add(s)}}for(const t in e.mds.bcf.format){if(!o.has(t))continue;const s=e.mds.bcf.format[t];c.push({label:s.Description||t})}}for(const c of t){const t=[{value:c.sample_id}];let f=c.ssm_id_lst;if(!f&&c.ssm_id)f=[c.ssm_id];{const s=e.mds.termdbConfig?.urlTemplates?.sample;if(s){t[0].url=s.base+(c[s.namekey]||c.sample_id)}}if(s){t.push({value:c.caseIsOpenAccess?"Open":"Controlled"})}if(e.mds.variant2samples.twLst){for(const s of e.mds.variant2samples.twLst){const e=ae(c,s);if(s.baseURL){t.push({html:`<a href=${s.baseURL+e} target=_blank>${e}</a>`})}else{t.push({value:e})}}}if(a){if(f){const s=[];for(const t of f){const a=[];const n=(e.skewer.rawmlst||e.custom_variants).find((e=>e.ssm_id==t));if(n){if(n.dt==p){if(e.mds.queries&&e.mds.queries.snvindel&&e.mds.queries.snvindel.url){a.push(`<a href=${e.mds.queries.snvindel.url.base+n.ssm_id} target=_blank>${n.mname}</a>`)}else{a.push(n.mname)}}else if(n.dt==r||n.dt==l){const t=n.pairlst[0];a.push(`${t.a.name||""} ${t.a.chr}:${t.a.pos} ${t.a.strand=="+"?"forward":"reverse"} > ${t.b.name||""} ${t.b.chr}:${t.b.pos} ${t.b.strand=="+"?"forward":"reverse"}`)}else{throw"unknown dt"}a.push(`<span style="color:${w(i[n.class].color).darker()};font-size:0.8em;">${i[n.class].label}</span>`);s.push(a.join(" "))}else{s.push(t)}}t.push({html:s.join("<br>")})}else{t.push({value:""})}}if(n){if(!f)throw"ssm_id_lst missing, cannot show format";for(const s in e.mds.bcf.format){if(!o.has(s))continue;if(!c.ssmid2format){t.push({value:""});continue}const a=e.mds.bcf.format[s];const n=[];for(const t of f){const e=c.ssmid2format?.[t]?.[s];n.push(re(a,e))}t.push({html:n.join("<br>")})}}d.push(t)}return[c,d]}function re(t,e){if(t&&e&&t.Number=="R"&&t.Type=="Integer"){const t=e.split(",").map(Number);if(t.length==2){const[e,s]=t;if(e>=0&&s>=0&&e+s>0){return`${b(null,{f:s/(s+e)})} <span style="font-size:.8em">${s}/${s+e}</span>`}}}return e}function le(t){if(t.gmmode=="genomic"){const e=t.rglst[0];return"mutations from "+e.chr+":"+e.start+"-"+e.stop}if(t.usegm)return"mutations in "+t.usegm.name;return"mutations"}const ce=10;async function de(t,e,s,a,n){try{if(e.click_snvindel){e.skewer.hlssmid=new Set(t.mlst.map((t=>t.ssm_id)));qe(e);e.click_snvindel(t.mlst[0]);return}if("occurrence"in t&&t.occurrence>=ce&&e.mds.variant2samples&&e.mds.variant2samples.sunburst_twLst){await fe(t,e,s,a);return}await me({mlst:t.mlst,tk:e,block:s,tippos:a})}catch(t){s.error(t.message||t);if(t.stack)console.log(t.stack)}}async function fe(t,e,s,a){e.glider.style("cursor","wait");const n=await e.mds.variant2samples.get({mlst:t.mlst,querytype:e.mds.variant2samples.type_sunburst});e.glider.style("cursor","auto");const i={nodes:n.nodes,occurrence:t.occurrence,boxyoff:e.yoff,boxheight:Math.min(800,e.height),boxwidth:s.width,svgheight:Number.parseFloat(s.svg.attr("height")),g:e.skewer.g.append("g"),pica:e.pica,click_listbutton:(n,i)=>{me({mlst:t.mlst,tk:e,block:s,tippos:a})},click_ring:async(a,n)=>{e.itemtip.clear();const i={mlst:t.mlst,tk:e,block:s,div:e.itemtip.d,tid2value:{}};i.tid2value[n.data.id0]=n.data.v0;if(n.data.id1)i.tid2value[n.data.id1]=n.data.v1;if(n.data.id2)i.tid2value[n.data.id2]=n.data.v2;i.mlst=t.mlst.map((t=>{if(e.mds.variant2samples.variantkey=="ssm_id"){return{ssm_id:t.ssm_id,occurrence:0}}throw"unknown variant2samples.variantkey"}));i.mlst[0].occurrence=n.value;const o=a.clientX;const r=a.clientY;await Zt(i);e.itemtip.show2(o,r)}};if(t.aa){i.cx=t.aa.x;i.cy=xe(t,e)+t.yoffset*(e.skewer.pointup?-1:1)}else{i.cx=t.x;i.cy=t.y+(e.skewer.pointup?1:-1)*e.skewer.stem1/2}if(t.mlst.length==1){i.chartlabel=t.mlst[0].mname}else{const e=new Set(t.mlst.map((t=>t.mname)));if(e.size==1){i.chartlabel=[...e][0]}else{i.chartlabel=t.mlst.reduce(((t,e)=>e.occurrence>t.occurrence?e:t)).mname+" etc"}}const o=await import("./sunburst-533902a7.js");o.default(i)}async function me(t){t.tk.itemtip.clear().show(t.tippos.left-10,t.tippos.top-10);t.div=t.tk.itemtip.d;t.tipDiv=t.tk.itemtip.d;await Dt(t)}const ue=0;const pe=1;const he=.3;const ge=1;const we=.6;const be="Arial";function ke(t,e){const s=t.skewer;for(const t of s.data){t.x0=t.x;if(t.xoffset!=undefined){t.x=t.x0+t.xoffset}for(const e of t.groups){e.aa=t}}const a=Math.max(14,e.width/110);let n=0;for(const t of s.data){for(const e of t.groups){n=Math.max(n,e.occurrence)}}let i=0;const o=Math.pow(a/2,2)*Math.PI;if(n<=10)i=o*n*.9;else if(n<=100)i=o*10;else if(n<=1e3)i=o*14;else i=o*20;const c=d().domain([1,n*.5,n*.6,n*.7,n*.8,n]).range([o,o+(i-o)*.8,o+(i-o)*.85,o+(i-o)*.9,o+(i-o)*.95,i]);let f=a/2;s.maxheight=0;for(const t of s.data){if(t.showmode==undefined)t.showmode=ue;if(t.slabelrotate==undefined)t.slabelrotate=false;t.maxradius=0;t.maxrimwidth=0;t.width=0;t.slabelwidth=0;for(const e of t.groups){if(e.occurrence<=1){e.radius=a/2}else{const t=e.occurrence.toString().length;e.radius=Math.max(Math.sqrt(c(e.occurrence)/Math.PI),t*5)}t.maxradius=Math.max(t.maxradius,e.radius);f=Math.max(f,e.radius);e.rimwidth=e.rim1count+e.rim2count==0?0:Math.max(2,e.radius/6);t.maxrimwidth=Math.max(t.maxrimwidth,e.rimwidth)}let e=0;for(const s of t.groups){s.yoffset=e+s.radius+s.rimwidth;e+=(s.radius+s.rimwidth)*2}s.maxheight=Math.max(s.maxheight,e)}s.selection=s.g.selectAll().data(s.data).enter().append("g").attr("class","sja_skg").each((function(t){t.skewer=this}));const m=s.selection.selectAll().data((t=>t.groups)).enter().append("g").attr("transform",(e=>"translate(0,"+(e.aa.showmode==ue?0:e.yoffset*(t.skewer.pointup?-1:1))+")")).attr("class","sja_aa_discg").each((function(t){t.g=this}));const u=m.append("circle");u.filter((t=>t.dt==p||t.dt==r||t.dt==l)).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("stroke","white").attr("r",(t=>t.radius-.5));m.filter((t=>t.dt==l||t.dt==r)).append("path").attr("fill","white").attr("stroke","none").attr("d",(t=>O()({innerRadius:0,outerRadius:t.radius-2,startAngle:t.useNterm?0:Math.PI,endAngle:t.useNterm?Math.PI:Math.PI*2})));const h=m.filter((t=>t.occurrence>1)).append("text").text((t=>t.occurrence)).attr("font-family",be).attr("class","sja_aa_discnum").attr("fill-opacity",(t=>t.aa.showmode==ue?0:1)).attr("stroke-opacity",(t=>t.aa.showmode==ue?0:1)).attr("text-anchor","middle").each((t=>{const e=t.radius*1.5;t.discnumfontsize=Math.min(e/(t.occurrence.toString().length*we),e)})).attr("font-size",(t=>t.discnumfontsize)).attr("y",(t=>t.discnumfontsize*he));h.filter((t=>t.dt==p)).attr("fill","white");h.filter((t=>t.dt==r||t.dt==l)).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("stroke-width",.8).attr("font-weight","bold").attr("fill","white");m.append("text").text((e=>e.mnameCompact||t.mnamegetter(e.mlst[0]))).attr("font-size",(t=>{t._labfontsize=Math.max(12,t.radius*1.2);return t._labfontsize})).each((function(t){const e=this.getBBox().width;t._label_width=e;if(t.aa.groups.length==1){t.aa.slabelrotate=true;t.aa.slabelwidth=e;s.maxheight=Math.max(s.maxheight,(t.radius+t.rimwidth)*2+2+e)}})).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("x",(t=>t.radius+t.rimwidth+1)).attr("y",(t=>t._labfontsize*he)).attr("font-family",be).classed("sja_aa_disclabel",true).attr("fill-opacity",(t=>t.aa.showmode==ue?0:1)).attr("transform","scale(1) rotate(0)").on("mousedown",(t=>{t.stopPropagation()})).on("click",((s,a)=>{Se([a.aa],t);je(t,e)}));s.hlBoxG=m.append("g");for(const t of s.data){let e=0,s=0;for(const a of t.groups){e=Math.max(e,a.radius+a.rimwidth);s=Math.max(s,a.radius+a.rimwidth+ge+a._label_width)}t.width=e+s}m.append("circle").attr("r",(t=>t.radius-.5)).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("class","sja_aa_disckick").attr("fill","white").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.stopPropagation()})).on("mouseover",((e,s)=>{if(t.disc_mouseover){t.disc_mouseover(s,e.target)}})).on("mouseout",((e,s)=>{if(t.disc_mouseout){t.disc_mouseout(s)}})).on("click",(async(s,a)=>{de(a,t,e,s.target.getBoundingClientRect(),s.target)}));const g=O().innerRadius((t=>t.radius)).outerRadius((t=>t.radius+t.rimwidth)).startAngle(0).endAngle((t=>{t.rim1_startangle=Math.PI*2*t.rim1count/t.occurrence;return t.rim1_startangle}));m.filter((t=>t.rim1count>0)).append("path").attr("d",g).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("class","sja_aa_discrim").attr("fill-opacity",0);const w=O().innerRadius((t=>t.radius+.5)).outerRadius((t=>t.radius+.5+t.rimwidth)).startAngle((t=>t.rim1_startangle)).endAngle((t=>t.rim1_startangle+Math.PI*2*t.rim2count/t.occurrence));m.filter((t=>t.rim2count>0)).append("path").attr("d",w).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("fill","none").attr("class","sja_aa_discrim").attr("stroke-opacity",0);{let t=0;let e=0;for(const a of s.data){if(a.x-a.maxradius-a.maxrimwidth<e){t++}e=Math.max(e,a.x+a.width-a.maxradius-a.maxrimwidth)}s.stem1=t==0?0:a;s.stem2=d().domain([0,1,s.data.length]).range([0,a,a*3])(t)}const b=a*.7;let x=0;for(const t of s.data){for(const e of t.groups){x=Math.max(x,e.occurrence)}}s.stem3=Math.max(2,b+a*Math.min(5,x));s.selection.append("circle").attr("class","sja_aa_skkick").attr("fill","white").attr("fill-opacity",0).attr("stroke","none").attr("r",(t=>t.maxradius+1)).attr("cy",(e=>(t.skewer.pointup?-1:1)*e.maxradius)).attr("transform",(t=>`scale(${t.showmode==ue?"1,1":"0.01,0.01"})`)).on("mouseover",((e,s)=>{let a=0;let n=0;const i=5;const o=t.skewer.pointup?7:14;for(const e of s.groups){e.pica_fontsize=Math.max(11,e.radius);a+=e.pica_fontsize+1;t.pica.g.append("text").text((e.mnameCompact||e.mlst[0].mname)+(e.occurrence>1?" x"+e.occurrence:"")).attr("font-size",e.pica_fontsize).each((function(){n=Math.max(n,this.getBBox().width)})).remove()}n+=i*2;const r=a+5;t.pica.g.append("rect").attr("y",t.skewer.pointup?-r:0).attr("width",n).attr("height",r).attr("fill","white").attr("fill-opacity",.8).attr("stroke","#ccc").attr("shape-rendering","crispEdges");a=0;const l=t.pica.g.selectAll().data(s.groups).enter().append("g").attr("transform",((e,s)=>{a+=e.pica_fontsize+1;return"translate("+i+","+a*(t.skewer.pointup?-1:1)+")"}));l.append("text").text((t=>t.mnameCompact||t.mlst[0].mname)).attr("font-size",(t=>t.pica_fontsize)).each((function(t){t.pica_mlabelwidth=this.getBBox().width})).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("dominant-baseline",t.skewer.pointup?"hanging":"auto");const c=s.groups[0].pica_mlabelwidth;t.pica.x=s.x-i-c/2;t.pica.y=s.y+(t.skewer.pointup?-1:1)*(s.maxradius*2+o+2);t.pica.g.attr("transform","translate("+t.pica.x+","+t.pica.y+")");l.filter((t=>t.occurrence>1)).append("text").text((t=>"x"+t.occurrence)).attr("x",(t=>t.pica_mlabelwidth+5)).attr("font-size",(t=>t.pica_fontsize)).attr("dominant-baseline",t.skewer.pointup?"hanging":"auto").attr("fill","#9e9e9e");const d=t.pica.g.append("g").attr("transform","translate("+(i+c/2)+","+(t.skewer.pointup?1:-1)+")");d.append("line").attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","#858585").attr("shape-rendering","crispEdges");d.append("line").attr("x1",-1).attr("x2",-1).attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","white").attr("shape-rendering","crispEdges");d.append("line").attr("x1",1).attr("x2",1).attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","white").attr("shape-rendering","crispEdges")})).on("mouseout",((e,s)=>{t.pica.g.selectAll("*").remove()})).on("click",((s,a)=>{t.pica.g.selectAll("*").remove();_e([a],t,e)}));let v=0;for(const t of s.data){v=Math.max(v,t.occurrence)}const y=d().domain([1,v]).range([b,s.stem3-f]);s.selection.attr("transform",(e=>{e.foldyoffset=y(e.occurrence);e.y=xe(e,t);return"translate("+e.x+","+e.y+")"}));s.selection.append("path").attr("class","sja_aa_stem").attr("d",(e=>ve(e,t))).attr("stroke",(e=>t.color4disc(e.groups[0].mlst[0]))).attr("fill","none");const _=s.selection.filter((t=>t.groups.length>1));_.append("rect").attr("class","sja_aa_ssk_bg").attr("shape-rendering","crispEdges").attr("fill-opacity",0).attr("height",s.stem1).attr("fill",(e=>t.color4disc(e.groups[0].mlst[0]))).attr("width",(t=>{t.ssk_width=Math.max(t.occurrence.toString().length*8+6,2*(t.maxradius+t.maxrimwidth));return t.ssk_width})).attr("x",(t=>-t.ssk_width/2));_.append("text").attr("class","sja_aa_ssk_text").attr("fill","white").attr("fill-opacity",0).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","central").text((t=>t.occurrence)).each((t=>{t.ssk_fontsize=Math.min(s.stem1,t.ssk_width/(t.occurrence.toString().length*we))})).attr("font-size",(t=>t.ssk_fontsize));_.append("rect").attr("class","sja_aa_ssk_kick").attr("fill","white").attr("fill-opacity",0).attr("stroke","none").attr("height",s.stem1).attr("x",(t=>-t.ssk_width/2)).attr("width",(t=>t.ssk_width)).on("mouseover",((t,e)=>{const s=k(t.target.parentNode);s.selectAll(".sja_aa_disckick").transition().attr("stroke-opacity",1);s.select(".sja_aa_ssk_bg").transition().attr("fill-opacity",1).attr("stroke-opacity",1);s.select(".sja_aa_ssk_text").transition().attr("fill-opacity",1)})).on("mouseout",(function(t,e){const s=k(t.target.parentNode);s.selectAll(".sja_aa_disckick").transition().attr("stroke-opacity",0);s.select(".sja_aa_ssk_bg").transition().attr("fill-opacity",0).attr("stroke-opacity",0);s.select(".sja_aa_ssk_text").transition().attr("fill-opacity",0)})).on("click",(async(s,a)=>{de(a,t,e,s.target.getBoundingClientRect(),null,s.target)}))}function xe(t,e){if(e.skewer.pointup){if(t.showmode==ue){return e.skewer.maxheight+e.skewer.stem1+e.skewer.stem2+e.skewer.stem3-t.foldyoffset}return e.skewer.maxheight}if(t.showmode==ue)return t.foldyoffset;return e.skewer.stem1+e.skewer.stem2+e.skewer.stem3}function ve(t,e){if(e.skewer.pointup){if(t.showmode==ue){return"M0,0v0l0,0v"+t.foldyoffset}return"M0,0v"+e.skewer.stem1+"l"+(t.x0-t.x)+","+e.skewer.stem2+"v"+e.skewer.stem3}if(t.showmode==ue){return"M0,0v0l0,0v-"+t.foldyoffset}return"M0,0v-"+e.skewer.stem1+"l"+(t.x0-t.x)+",-"+e.skewer.stem2+"v-"+e.skewer.stem3}function ye(t,e){if(t.skewer.data.length==0)return;const s=0;const a=e.width;let n=0;const i=[];const o=[];for(const e of t.skewer.data){if(e.x0<s||e.x0>a){delete e.xoffset;o.push(e)}else{n+=e.slabelrotate?(e.groups[0].radius+e.groups[0].rimwidth)*2:e.width;i.push(e)}}Se(o,t);let r=[];const l=[];if(n<a-s){r=i}else{i.sort(((t,e)=>{if(e.occurrence==t.occurrence){if(e.groups.length==t.groups.length){return Math.abs(t.x0*2-s-a)-Math.abs(e.x0*2-s-a)}else{return e.groups.length-t.groups.length}}return e.occurrence-t.occurrence}));let t=0;let e=(a-s)*.8;let n=false;for(const s of i){if(n){delete s.xoffset;l.push(s);s.showmode=ue}else{if(t+s.width<e){r.push(s);t+=s.width}else{n=true;delete s.xoffset;l.push(s);s.showmode=ue}}}}Se(l,t);_e(r,t,e)}function _e(t,e,s){const a=1e3;const n=new Set;const i=new Set;let o=false;for(const s of t){if(s.showmode==pe){n.add(s.x0)}else{s.showmode=pe;i.add(s.x0);o=true;s.y=xe(s,e)}}if(o){const t=e.skewer.selection.filter((t=>i.has(t.x0)));t.transition().duration(a).attr("transform",(t=>"translate("+t.x+","+t.y+")"));t.selectAll(".sja_aa_discg").transition().duration(a).attr("transform",(t=>{t.y=t.yoffset*(e.skewer.pointup?-1:1);return"translate(0,"+t.y+")"}));setTimeout((function(){t.selectAll(".sja_aa_disckick").attr("transform","scale(1)").attr("data-testid","scale(1)")}),a);t.selectAll(".sja_aa_discnum").transition().duration(a).attr("fill-opacity",1).attr("stroke-opacity",1);t.filter((t=>t.groups.length>1)).selectAll(".sja_aa_disclabel").transition().duration(a).attr("fill-opacity",1).attr("transform","scale(1)");t.selectAll(".sja_aa_discrim").transition().duration(a).attr("fill-opacity",1).attr("stroke-opacity",1);t.selectAll(".sja_aa_ssk_kick").attr("transform","scale(1)").attr("y",e.skewer.pointup?0:-e.skewer.stem1);t.selectAll(".sja_aa_ssk_bg").attr("transform","scale(1)").attr("y",e.skewer.pointup?0:-e.skewer.stem1);t.selectAll(".sja_aa_ssk_text").attr("transform","scale(1)").attr("y",(e.skewer.pointup?1:-1)*e.skewer.stem1/2);t.selectAll(".sja_aa_skkick").attr("transform","scale(0.01,0.01)");let n=0;t.selectAll(".sja_aa_stem").transition().duration(a).attr("d",(t=>ve(t,e))).each((()=>++n)).on("end",(()=>{if(! --n){je(e,s)}}))}else{je(e,s)}}function je(t,e){const s=1e3;const a=[];const n=new Set;const i=0;const o=e.width;for(const e of t.skewer.data){if(e.x0<i||e.x0>o)continue;if(e.showmode==pe){e.x=e.x0;a.push(e);n.add(e.x0)}}if(a.length==0){return}Me(a,t,e);for(const t of a){t.xoffset=t.x-t.x0}for(let e=0;e<a.length;e++){const s=a[e];if(s.groups.length>1)continue;const n=s.groups[0];if(t.slabel_forcerotate){s.slabelrotate=true}else{const t=a[e+1];const i=t?t.x-t.maxradius-t.maxrimwidth:o;s.slabelrotate=i-s.x-n.radius-n.rimwidth-1<s.slabelwidth}s.width=(n.radius+n.rimwidth)*2+(s.slabelrotate?0:2+s.slabelwidth)}const r=t.skewer.selection.filter((t=>n.has(t.x0)));r.transition().duration(s).attr("transform",(t=>"translate("+t.x+","+t.y+")"));r.selectAll(".sja_aa_stem").transition().duration(s).attr("d",(e=>ve(e,t)));r.filter((t=>t.groups.length==1)).selectAll(".sja_aa_disclabel").transition().duration(s).attr("fill-opacity",1).attr("transform",(e=>"scale(1) rotate("+(e.aa.slabelrotate?(t.skewer.pointup?"-":"")+"90":"0")+")"));t.slabel_forcerotate=false}function Me(t,e,s){const a=0;const n=s.width;let i=a;let o=false;for(const e of t){if(e.x0<a||e.x0>n)continue;if(e.groups.length==1){e.slabelrotate=true;const t=e.groups[0];e.width=(t.radius+t.rimwidth)*2}const t=e.x-e.maxradius-e.maxrimwidth;if(t<i){o=true}if(t+e.width>n){o=true}i=Math.max(i,t+e.width)}if(!o){return false}i=a;for(const e of t){if(e.x0<a||e.x0>n)continue;e.x=i+e.maxradius+e.maxrimwidth;i+=e.width}Ae(t,s.width)}function Ae(t,e){for(let s=0;s<t.length;s++){if(t[s].x0<0)continue;if(t[s].x0>e)break;while(1){let a=0,n=0;for(let i=s;i<t.length;i++){const s=t[i];if(s.x0>e){return}a+=Math.abs(s.x-s.x0);s.x++;n+=Math.abs(s.x-s.x0)}if(t[s].x>=t[s].x0){for(let e=s;e<t.length;e++){t[e].x--}break}const i=t[t.length-1];if(i.x+i.width/2>=e){return}if(n<=a);else{for(let a=s;a<t.length;a++){if(t[a].x0>e){break}t[a].x--}break}}}}function Se(t,e){if(t.length==0)return;const s=1e3;const a=new Set;for(const s of t){s.x=s.x0;a.add(s.x0);s.showmode=ue;s.y=xe(s,e)}const n=e.skewer.selection.filter((t=>a.has(t.x0)));n.transition().duration(s).attr("transform",(t=>"translate("+t.x+","+t.y+")"));n.selectAll(".sja_aa_stem").transition().duration(s).attr("d",(t=>ve(t,e)));n.selectAll(".sja_aa_discg").transition().duration(s).attr("transform",(t=>"translate(0,"+(e.skewer.pointup?"-":"")+t.aa.maxradius+")"));n.selectAll(".sja_aa_disckick").attr("transform","scale(0)");n.selectAll(".sja_aa_discnum").transition().duration(s).attr("fill-opacity",0).attr("stroke-opacity",0);n.selectAll(".sja_aa_disclabel").transition().duration(s).attr("fill-opacity",0).attr("transform","scale(0)");n.selectAll(".sja_aa_discrim").transition().duration(s).attr("fill-opacity",0).attr("stroke-opacity",0);n.selectAll(".sja_aa_ssk_kick").attr("transform","scale(0)");n.selectAll(".sja_aa_ssk_bg").attr("transform","scale(0)");n.selectAll(".sja_aa_ssk_text").attr("transform","scale(0)");n.selectAll(".sja_aa_skkick").transition().duration(s).attr("transform","scale(1)")}function qe(t){t.skewer.hlBoxG.selectAll("*").remove();if(!t.skewer.hlssmid)return;t.skewer.hlBoxG.filter((e=>{if(e.mlst){return e.mlst.find((e=>t.skewer.hlssmid.has(e.ssm_id)))}return t.skewer.hlssmid.has(e.ssm_id)})).append("rect").attr("x",(t=>-t.radius)).attr("y",(t=>-t.radius)).attr("width",(t=>t.radius*2)).attr("height",(t=>t.radius*2)).attr("stroke",t.skewer.hlBoxColor).attr("stroke-width",(t=>t.radius>10?1.5:1)).attr("fill","none").attr("class","sja_mds3_skewer_ssmhlbox")}const Ce=4;function ze(t,e,s){Le(e,t,s);const a=new Map;for(const t of e){if(t.__x==undefined)continue;if(!a.has(t.__x)){a.set(t.__x,[])}a.get(t.__x).push(t)}const n=[];if(s.exonsf>=Ce){for(const[t,e]of a){n.push({chr:e[0].chr,pos:e[0].pos,mlst:e,x:t})}}else{if(s.usegm&&s.usegm.coding&&s.gmmode!=x.genomic){const t=new Map;for(const[e,n]of a){if(n[0].chr!=s.usegm.chr){continue}let i=undefined;for(const t of n){if(Number.isFinite(t.aapos))i=t.aapos}if(i==undefined){i=v(n[0].pos,s.usegm).aapos}if(i==undefined){console.error("data item cannot map to aaposition");console.log(n[0]);continue}a.delete(e);if(!t.has(i)){t.set(i,[])}let o=true;for(const e of t.get(i)){if(Math.abs(e[0].__x-n[0].__x)<=s.exonsf*3){for(const t of n){e.push(t)}o=false;break}}if(o){t.get(i).push(n)}}for(const e of t.values()){for(const t of e){let e=null;for(const s of t){if(Number.isFinite(s.rnapos))e=s}if(e==null){console.log("trying to map mlst to codon, but no rnapos found");for(const e of t){console.log(e)}continue}n.push({chr:t[0].chr,pos:e.pos,mlst:t,x:t[0].__x})}}}const t=[];const e=2;for(const[s,n]of a){const a=Math.floor(s/e);if(!t[a]){t[a]=[]}t[a]=[...t[a],...n]}for(const e of t){if(!e)continue;const t=e.reduce(((t,e)=>t+e.__x),0);n.push({isbin:true,chr:e[0].chr,pos:e[0].pos,mlst:e,x:t/e.length})}}n.sort(((t,e)=>t.x-e.x));return n}function Le(t,e,s){let a=0,n=0;const i=[];const o=[];for(const e of t){delete e.__x;if(s.gmmode==x.protein&&s.usegm.codingstart&&s.usegm.codingstop){if(e.pos<s.usegm.codingstart||e.pos>s.usegm.codingstop){continue}}if(!e.chr){n++;continue}if(!Number.isInteger(e.pos)){a++;continue}const t=s.seekcoord(e.chr,e.pos);if(t.length==0){i.push(e);continue}if(t.length==1){e.__x=t[0].x}else{e.__x=t[0].x}if(e.__x<-1||e.__x>s.width+1){continue}o.push(e)}if(a+n>0){s.tkerror(e,a+n+" items have no chromosome or genomic position")}if(i.length){console.error(i.length+" items not mapped to any region");for(const t of i)console.log(t)}$e(o,e,s)}function $e(t,e,s){for(const e of t){if(s.usegm){const t=v(e.pos,s.usegm);e.rnapos=t.rnapos;e.aapos=t.aapos}if(e.dt==p){continue}if(e.dt==r||e.dt==l){if(e.pairlstIdx==0){e.useNterm=true}else{e.useNterm=false}continue}throw"unknown dt: "+e.dt}}function Ne(t,e,s,a){if(!e.skewer&&!e.cnv)return;if(!e.leftlabels.doms.variants){e.leftlabels.doms.variants=Ee(e,s,a);e.leftlabels.doms.variants.attr("data-testid","sja_variants_label")}let n,i;if(e.custom_variants){n=e.custom_variants.length}else{n=e.skewer.rawmlst.length+(t.cnv?.length||0)}if(n==0){e.leftlabels.doms.variants.text("No variants").attr("class","").style("opacity",.5).on("click",null);return}i=0;if(e.skewer){const t=e.skewer.viewModes.find((t=>t.inuse));if(t.type=="skewer"){i=e.skewer.data.filter((t=>t.x>=0&&t.x<=s.width)).reduce(((t,e)=>t+e.mlst.length),0)}else if(t.type=="numeric"){i=t.data.filter((t=>t.x>=0&&t.x<=s.width)).reduce(((t,e)=>t+e.mlst.length),0)}else{throw"unknown mode type"}}if(t.cnv)i+=t.cnv.length;if(i==0){e.leftlabels.doms.variants.text("0 out of "+n+" variant"+(n>1?"s":"")).attr("class","").style("opacity",.5).on("click",null);return}e.leftlabels.doms.variants.style("opacity",1).attr("class","sja_clbtext2").text(i<n?i+" of "+n+" variants":i+" variant"+(i>1?"s":"")).on("click",(t=>{e.menutip.clear().showunder(t.target);Re(e,s)}));return}function Re(t,e){t.menutip.d.append("div").text("List").attr("class","sja_menuoption").attr("data-testid","sja_list_menuoption").style("border-radius","0px").on("click",(()=>{Oe(t,e)}));if(t.skewer){if(t.skewer.hlssmid){t.menutip.d.append("div").text("Cancel highlight").style("border-radius","0px").attr("class","sja_menuoption").on("click",(()=>{delete t.skewer.hlssmid;t.skewer.hlBoxG.selectAll("*").remove();const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="skewer"){ye(t,e)}else if(s.type=="numeric");else{throw"unknown mode type"}t.menutip.hide()}))}const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="skewer"){const s=t.skewer.data.reduce(((t,e)=>t+e.showmode),0);if(s>0){t.menutip.d.append("div").text("Collapse").attr("class","sja_menuoption").attr("data-testid","sja_collapse_menuoption").style("border-radius","0px").on("click",(()=>{Se(t.skewer.data,t);t.menutip.hide()}))}else if(s==0){t.menutip.d.append("div").text("Expand").attr("class","sja_menuoption").attr("data-testid","sja_expand_menuoption").style("border-radius","0px").on("click",(()=>{ye(t,e);t.menutip.hide()}))}t.menutip.d.append("div").text(t.skewer.pointup?"Point down":"Point up").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.skewer.pointup=!t.skewer.pointup;t.load();t.menutip.hide()}))}else if(s.type=="numeric"){t.menutip.d.append("div").text(t.skewer.hideDotLabels?"Show all variant labels":"Hide all variant labels").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.skewer.hideDotLabels=!t.skewer.hideDotLabels;t.load();t.menutip.hide()}))}}if(!t.custom_variants){t.menutip.d.append("div").text("Download").attr("class","sja_menuoption").attr("data-testid","sjpp_mds3tk_variantdownload_menuoption").style("border-radius","0px").on("click",(()=>{Te(t,e);t.menutip.hide()}))}Ie(t,e)}async function Oe(t,a){t.menutip.clear();const n=new Map;if(t.skewer){const e=t.skewer.viewModes.find((t=>t.inuse));let s;if(e.type=="skewer"){s=t.skewer.data.filter((t=>t.x>=0&&t.x<=a.width))}else if(e.type=="numeric"){s=e.data}else{throw"unknown mode type"}for(const t of s){for(const e of t.mlst){if(!n.has(e.dt))n.set(e.dt,[]);n.get(e.dt).push(e)}}}if(t.cnv?.cnvLst){n.set(s,t.cnv.cnvLst)}if(n.size==1){const e=t.menutip.d.append("div").style("margin","10px");await Dt({div:e,mlst:n.get([...n.keys()][0]),tk:t,block:a,doNotListSample4multim:true});return}const i=[];for(const[t,s]of n){i.push({label:s.length+" "+e[t]})}new T({holder:t.menutip.d.append("div").attr("class","sja_pp_vlb_dttabdiv").style("margin","10px"),tabs:i}).main();let o=0;for(const[e,s]of n){Dt({div:i[o++].contentHolder.append("div").style("margin-left","10px"),mlst:s,tk:t,block:a,doNotListSample4multim:true})}}function Ie(t,e){if(!t.skewer)return;if(t.skewer.viewModes.length<=1){return}const s=[];for(const[e,a]of t.skewer.viewModes.entries()){const t={label:De(a),value:e};if(a.inuse)t.checked=true;s.push(t)}B({holder:t.menutip.d.append("div").attr("class","sja_pp_vlb_viewmoderadiodiv").style("margin","10px"),options:s,callback:async s=>{for(const e of t.skewer.viewModes)e.inuse=false;t.skewer.viewModes[s].inuse=true;us({skewer:t.skewer.rawmlst},t,e);Pe(t,e);t._finish()}})}function De(t){if(!t)return"MISSING!!";if(t.type=="skewer")return"As lollipops";if(t.type=="numeric")return t.label+" as Y axis";return"unknown mode"}async function Te(t,e){if(!t.mds.variant2samples){console.log("TODO: variant-only");return}const s={querytype:"samples"};Cs(t,e,s);const a=(await t.mds.variant2samples.get(s)).samples;const[n,o]=await oe(a,t);const c=[];for(const t of n){if(t.isSsm){c.push("AAchange");c.push("Consequence");c.push("Mutation");continue}if(t.isMaf){c.push("Alternative allele depth in tumor");c.push("Total depth in tumor");continue}c.push(t.label)}const d=[];for(const[e,s]of a.entries()){let a;if(Array.isArray(s.ssm_id_lst)){a=s.ssm_id_lst}else if(s.ssm_id){a=[s.ssm_id]}else{console.log("sample obj lacks ssm_id and ssm_id_lst");continue}for(const s of a){const a=t.skewer.rawmlst.find((t=>t.ssm_id==s));if(!a){console.log("ssm not found by id: "+s);continue}const c=[];for(const[t,d]of n.entries()){if(d.isSsm){if(a.dt==p){c.push(a.mname);c.push(i[a.class].label);c.push(a.chr+":"+(a.pos+1)+" "+a.ref+">"+a.alt)}else if(a.dt==r||a.dt==l){c.push("");c.push(i[a.class].label);c.push(a.pairlst[0].a.chr+":"+a.pairlst[0].a.pos+">"+a.pairlst[0].b.chr+":"+a.pairlst[0].b.pos)}continue}const n=o[e][t];if(n.bySsmid){if(s in n.bySsmid){const t=n.bySsmid[s];if(d.isMaf){c.push(t.altTumor);c.push(t.totalTumor)}else{c.push(t)}}else{c.push("")}continue}if(d.isMaf){c.push(n.altTumor);c.push(n.totalTumor);continue}c.push(n.value)}d.push(c.join("\t"))}}D(le(e)+" "+(new Date).toLocaleDateString()+".txt",c.join("\t")+"\n"+d.join("\n"))}const Be=5;const Fe="Arial";async function Ue(t,e,s){let a=0;Ne(t,e,s,a);if(e.leftlabels.doms.variants){a+=Be+s.labelfontsize}if("sampleTotalNumber"in t||e.leftlabels.doms.samples){const n=await import("./leftlabel.sample-24c2388d.js");n.makeSampleLabel(t,e,s,a);a+=Be+s.labelfontsize;if(e.filterObj){n.makeSampleFilterLabel(t,e,s,a)}if(e.leftlabels.doms.filterObj){a+=Be+s.labelfontsize}}if(e.showCloseLeftlabel){if(!e.leftlabels.doms.close){e.leftlabels.doms.close=Ee(e,s,a).text("Close").on("click",(()=>{for(const[t,a]of s.tklst.entries()){if(a.tkid==e.tkid){s.tk_remove(t)}}}))}a+=Be+s.labelfontsize}e.leftlabels.laby=a;Pe(e,s);Ge(e);e.subtk2height.leftlabels=a+20}function Ge(t){t.leftlabels.maxwidth=t.tklabel.node().getBBox().width;for(const e in t.leftlabels.doms){t.leftlabels.maxwidth=Math.max(t.leftlabels.maxwidth,t.leftlabels.doms[e].node().getBBox().width)}}function Pe(t,e){if(t.leftlabels.laby==0){return}t.leftlabels.xoff=0;if(t.skewer){const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="numeric"){const a=t.leftlabels.laby+Be+e.labelfontsize;if(a>s.toplabelheight+5){t.leftlabels.xoff=s.axisWidth}}}t.leftlabels.g.transition().attr("transform",`translate(-${t.leftlabels.xoff},${Be+e.labelfontsize})`)}function Ee(t,e,s){return t.leftlabels.g.append("text").attr("font-size",e.labelfontsize).attr("font-family",Fe).attr("y",e.labelfontsize/2+s).attr("text-anchor","end").attr("dominant-baseline","central").attr("class","sja_clbtext2").attr("fill","black").attr("x",e.tkleftlabel_xshift)}const He="Arial";const Ve=1;const We=.3;const Ke=5;const Qe=7;const Xe=100;const Je="#ededed";const Ye="Numeric value";function Ze(t,e,s,a){const n=ze(s,e.skewer||s.skewer.rawmlst,a).filter((t=>t.x>=0&&t.x<=a.width));t.data=n;if(!t.axisg)t.axisg=s.gleft.append("g");if(!t.axisheight)t.axisheight=150;ts(s);es(t,s,a);fs(s);return t.toplabelheight+t.maxradius+t.axisheight+t.maxradius+t.stem1+t.stem2+t.stem3+t.bottomlabelheight}function ts(t){t.skewer.g.selectAll("*").remove();if(t.skewer.nmg)t.skewer.nmg.selectAll("*").remove()}function es(t,e,s){if(!t.axisSetting){t.axisSetting={auto:1}}const a=t.data;for(const t of a){t.x0=t.x;if(t.xoffset!=undefined){t.x=t.x0+t.xoffset}}const n=Math.max(14,s.width/110);t.dotwidth=n;t.maxradius=0;for(const e of a){for(const s of e.mlst){s.radius=n/2;t.maxradius=Math.max(s.radius,t.maxradius);s.rimwidth=0;s.aa=e}}const i=ss(a,t,e,s);ls(a,t);const o=d().domain([t.minvalue,t.maxvalue]).range([0,t.axisheight]);for(const e of a){for(const s of e.mlst){if(s.__value_missing){s._y=0}else{if(s.__value_use<t.minvalue){s._y=0}else if(s.__value_use>t.maxvalue){s._y=t.axisheight}else{s._y=o(s.__value_use)}}}}if(i){t.stem1=5;t.stem2=20;t.stem3=10}else{t.stem1=0;t.stem2=0;t.stem3=0}for(const t of a){for(const s of t.mlst){e.glider.append("text").text(e.mnamegetter(s)).attr("font-family",He).attr("font-size",s.radius*2-2).each((function(){s.labwidth=this.getBBox().width})).remove()}}for(const t of a){for(const e of t.mlst){delete e.labattop;delete e.labatbottom}}if(!e.skewer.hideDotLabels){if(i){for(const t of a){if(t.mlst.length==1){const e=t.mlst[0];e.labattop=true}else{if((t.width-t.fixedgew)/(t.mlst.length-1)<Qe);else{for(const e of t.mlst){e.labattop=true}}}}}else{ns(a)}}t.toplabelheight=0;t.bottomlabelheight=0;if(t.showsamplebar||t.showgenotypebyvalue){for(const e of a){for(const s of e.mlst){t.toplabelheight=Math.max(t.toplabelheight,s.labwidth)}}}else{for(const e of a){for(const s of e.mlst){if(s.labattop){t.toplabelheight=Math.max(t.toplabelheight,s._y+s.labwidth-t.axisheight)}else if(s.labatbottom){t.bottomlabelheight=Math.max(t.bottomlabelheight,s.labwidth-s._y)}}}}{let a=s.labelfontsize+Ke+s.labelfontsize;if(e.label_stratify){a+=e.label_stratify.length*(Ke+s.labelfontsize)}t.toplabelheight=Math.max(t.toplabelheight,a)}cs(e,t,s);e.skewer.g.append("line").attr("y1",t.toplabelheight+t.maxradius).attr("y2",t.toplabelheight+t.maxradius).attr("x2",s.width).attr("stroke",Je).attr("shape-rendering","crispEdges");e.skewer.g.append("line").attr("y1",t.toplabelheight+t.maxradius+t.axisheight).attr("y2",t.toplabelheight+t.maxradius+t.axisheight).attr("x2",s.width).attr("stroke",Je).attr("shape-rendering","crispEdges");e.skewer.nmg=e.skewer.g.selectAll().data(a).enter().append("g").attr("class","sja_skg2").each((function(t){t.g=this}));e.skewer.nmg.attr("transform",(e=>"translate("+e.x+","+(t.toplabelheight+Ve+t.maxradius+t.axisheight+t.maxradius)+")"));if(i){e.skewer.nmg.append("path").attr("class","sja_aa_stem").attr("d",(e=>is(e,t))).attr("stroke",(t=>e.color4disc(t.mlst[0]))).attr("fill",(t=>t.mlst.length==1?"none":Je))}const r=e.skewer.nmg.selectAll().data((t=>t.mlst)).enter().append("g").attr("class","sja_aa_discg").each((function(t){t.g=this}));r.attr("transform",(e=>"translate("+e.xoff+","+(e._y+t.maxradius)*-1+")"));r.filter((t=>t.shapeTriangle)).append("path").attr("d",(t=>ds(t.radius))).attr("fill",(t=>e.color4disc(t))).attr("stroke","white").attr("class","sja_aa_disk_fill");r.filter((t=>t.shapeCircle)).append("circle").attr("stroke",(t=>e.color4disc(t))).attr("fill","none").attr("r",(t=>t.radius-.5)).attr("class","sja_aa_disk_fill");r.filter((t=>!t.shapeTriangle&&!t.shapeCircle)).append("circle").attr("fill",(t=>e.color4disc(t))).attr("stroke","white").attr("r",(t=>t.radius-.5)).attr("class","sja_aa_disk_fill");e.skewer.hlBoxG=r.append("g");r.filter((t=>t.shapeTriangle)).append("path").attr("d",(t=>ds(t.radius))).attr("stroke",(t=>e.color4disc(t))).attr("fill","white").attr("class","sja_aa_disckick").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>{os(a,t,e)})).on("mouseout",((t,s)=>{rs(s,e)})).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target)}));r.filter((t=>!t.shapeTriangle)).append("circle").attr("r",(t=>t.radius-.5)).attr("stroke",(t=>e.color4disc(t))).attr("class","sja_aa_disckick").attr("fill","white").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>{os(a,t,e)})).on("mouseout",((t,s)=>{rs(s,e)})).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target)}));r.filter((t=>t.labattop||t.labatbottom)).append("text").each((function(t){t.__svg_textlabel=this})).text((t=>e.mnamegetter(t))).attr("font-family",He).attr("font-size",(t=>{t._labfontsize=Math.max(12,t.radius*1.2);return t._labfontsize})).attr("fill",(t=>e.color4disc(t))).attr("x",(e=>t.showsamplebar||t.showgenotypebyvalue?t.axisheight+t.maxradius+4:e.radius+e.rimwidth+Ve)).attr("y",(t=>t._labfontsize*We)).attr("class","sja_aa_disclabel").attr("transform",(t=>"rotate("+(t.labattop?"-":"")+"90)")).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>os(a,t,e))).on("mouseout",((t,s)=>rs(s,e))).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target.previousSibling)}))}function ss(t,e,s,a){let n=0;for(const e of t){let t=0;for(const s of e.mlst){t+=2*(s.radius+s.rimwidth)}if(e.mlst.length==1){e.width=t}else{e.width=Math.min(Xe,t);const s=e.mlst[0];const a=e.mlst[e.mlst.length-1];e.fixedgew=s.radius+s.rimwidth+a.radius+a.rimwidth}n+=e.width}if(n<=a.width){let e=0;for(const s of t){s.x=e+s.mlst[0].radius+s.mlst[0].rimwidth;e+=s.width;if(s.mlst.length==1){s.stemw=0}else{s.stemw=s.width-s.fixedgew}}as(t,a.width);for(const e of t){e.xoffset=e.x-e.x0;if(e.mlst.length==1){e.mlst[0].xoff=0;e.stemw=0}else{e.stemw=e.width-e.fixedgew;const t=e.stemw/(e.mlst.length-1);for(let s=0;s<e.mlst.length;s++){e.mlst[s].xoff=t*s}}}return true}for(const e of t){e.x=e.x0;e.xoffset=0;for(const t of e.mlst){t.xoff=0}}return false}function as(t,e){for(let s=0;s<t.length;s++){if(t[s].x0<0)continue;if(t[s].x0>e)break;while(1){let a=0,n=0;for(let i=s;i<t.length;i++){const s=t[i];if(s.x0>e){return}a+=Math.abs(s.x-s.x0-s.stemw/2);s.x++;n+=Math.abs(s.x-s.x0-s.stemw/2)}if(t[s].x>t[s].x0-t[s].stemw/2){for(let e=s;e<t.length;e++){t[e].x--}break}const i=t[t.length-1];if(i.x+i.width/2>=e){return}if(n<=a);else{for(let a=s;a<t.length;a++){if(t[a].x0>e){break}t[a].x--}break}}}}function ns(t){const e=[];for(const s of t){for(const t of s.mlst){e.push({m:t,w:2*(t.radius+t.rimwidth),x:s.x0,y:t._y})}}e.sort(((t,e)=>e.y-t.y));for(let t=0;t<e.length;t++){const s=e[t];let a=false;for(let n=0;n<t;n++){const t=e[n];if(Math.abs(s.x-t.x)<(s.w+t.w)/2-2){a=true;break}}if(!a){s.m.labattop=true}}for(let t=e.length-1;t>=0;t--){const s=e[t];if(s.m.labattop)continue;let a=false;for(let n=e.length-1;n>t;n--){const t=e[n];if(t.m.labatbottom&&Math.abs(t.x-s.x)<(t.w+s.w)/2-2){a=true;break}}if(!a){s.m.labatbottom=true}}}function is(t,e){if(t.mlst.length==1){return"M0,0v"+e.stem1+"l"+-t.xoffset+","+e.stem2+"v"+e.stem3}return"M0,0"+"v"+e.stem1+"l"+-t.xoffset+","+e.stem2+"v"+e.stem3+"v-"+e.stem3+"l"+(t.stemw+t.xoffset-1)+",-"+e.stem2+"v-"+e.stem1}function os(t,e,s){if(t.__svg_textlabel){k(t.__svg_textlabel).attr("font-size",t._labfontsize*1.1)}s.pica.g.attr("transform","translate("+(t.aa.x+t.xoff)+","+(e.toplabelheight+e.maxradius+e.axisheight-t._y)+")");const a=10;const n=4;const i=t._labfontsize||13;const o=s.color4disc(t);const r=[];if(e.tooltipPrintValue){const s=e.tooltipPrintValue(t);if(Array.isArray(s)){r.push(...s.map((t=>`${t.k} = ${t.v}`)))}}else{r.push(e.label+" = "+(t.__value_missing?"NA":t.__value_use))}if(s.mds.queries?.ld?.mOverlay?.data){if(t.ssm_id==s.mds.queries.ld.mOverlay.m.ssm_id);else{let e="?";for(const a of s.mds.queries.ld.mOverlay.data){if(a.pos==t.pos&&a.alleles==t.ref+"."+t.alt){e=a.r2;break}}r.push("r2 = "+e)}}if(!t.labattop&&!t.labatbottom){r.push(s.mnamegetter(t))}let l=0;for(const t of r){s.pica.g.append("text").attr("font-size",i).attr("font-family",He).text(t).each((function(){l=Math.max(l,this.getBBox().width)})).remove()}const c=n*2+l;let d,f,m=true;if(c+a>t.aa.x+t.xoff){m=false;f=t.radius+t.rimwidth;d=f+a}else{f=-t.radius-t.rimwidth-a;d=f-c}const u=i*r.length;s.pica.g.append("rect").attr("x",d-2).attr("y",-2-n-u/2).attr("width",4+c).attr("height",4+n*2+u).attr("fill","white");s.pica.g.append("line").attr("x1",f).attr("x2",f+a).attr("stroke","white").attr("stroke-width",3).attr("shape-rendering","crispEdges");s.pica.g.append("line").attr("x1",f).attr("x2",f+a).attr("stroke",o).attr("shape-rendering","crispEdges");s.pica.g.append("rect").attr("x",d).attr("y",-n-u/2).attr("width",c).attr("height",n*2+u).attr("fill","none").attr("stroke",o).attr("shape-rendering","crispEdges");let p=(i-u)/2;for(const t of r){s.pica.g.append("text").text(t).attr("text-anchor",m?"end":"start").attr("font-size",i).attr("font-family",He).attr("x",m?f-n:d+n).attr("y",p).attr("fill",o).attr("dominant-baseline","central");p+=i}}function rs(t,e){if(t.__svg_textlabel){k(t.__svg_textlabel).attr("font-size",t._labfontsize)}e.pica.g.selectAll("*").remove()}function ls(t,e,s){for(const e of t){for(const t of e.mlst){delete t.__value_use;delete t.__value_missing}}if(e.byAttribute){for(const s of t){for(const t of s.mlst){const s=t[e.byAttribute];if(Number.isFinite(s)){t.__value_use=s}else{t.__value_missing=true}}}}else if(e.byInfo){for(const s of t){for(const t of s.mlst){const s=t?.info?.[e.byInfo];if(Number.isFinite(s)){t.__value_use=s}else{t.__value_missing=true}}}}else{throw"unknown method of getting value"}if(e.axisSetting.auto){e.minvalue=null;e.maxvalue=null;for(const s of t){for(const t of s.mlst){if("__value_use"in t){if(e.minvalue==null){e.minvalue=t.__value_use;e.maxvalue=t.__value_use}else{e.minvalue=Math.min(e.minvalue,t.__value_use);e.maxvalue=Math.max(e.maxvalue,t.__value_use)}}}}}else if(e.axisSetting.fixed){e.minvalue=e.axisSetting.fixed.min;e.maxvalue=e.axisSetting.fixed.max}else{throw"unknown axisSetting"}}function cs(t,e,s){e.axisg.attr("transform","translate(0,"+(e.toplabelheight+e.maxradius)+")").selectAll("*").remove();const a=d().domain([e.minvalue,e.maxvalue]).range([e.axisheight,0]);const n=N().scale(a).ticks(4);if(e.isinteger){n.tickFormat(y("d"));if(e.maxvalue-e.minvalue<3){n.ticks(e.maxvalue-e.minvalue)}}L({axis:e.axisg.call(n),showline:true,fontsize:e.dotwidth});e.axisWidth=0;e.axisg.selectAll("text").each((function(){e.axisWidth=Math.max(e.axisWidth,this.getBBox().width)}));e.axisWidth+=15;let i;e.axisg.append("text").attr("fill","black").attr("font-size",e.dotwidth).attr("dominant-baseline","central").attr("text-anchor","end").attr("class","sjpp-mds3-nm-axislabel sja_clbtext2").attr("y",e.axisheight/2).attr("x",-e.axisWidth).text(e.label||Ye).each((function(){i=this.getBBox().width})).on("click",(a=>{t.menutip.clear().showunder(a.target).d.append("div").text("Cancel").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.menutip.hide();e.inuse=false;t.skewer.viewModes.find((t=>t.type=="skewer")).inuse=true;us({skewer:t.skewer.rawmlst},t,s);Pe(t,s);t._finish()}));I({holder:t.menutip.d.append("div").style("margin","10px"),noPercentile:true,callback:a=>{e.axisSetting=a;ts(t);es(e,t,s)},setting:e.axisSetting})}));t.skewer.maxwidth=e.axisWidth+i}function ds(t){return`M 0 -${t} L ${t} ${t*.7} h -${t*2} Z`}function fs(t){const e=t.mds.queries?.ld?.mOverlay?.m;if(!e)return;t.skewer.hlssmid=new Set([e.ssm_id]);qe(t)}const ms=10;function us(t,e,s){if(!e.skewer){e.subtk2height.skewer=0;return}e.skewer.maxwidth=0;bs(e,t.skewer);ps(e,t.skewer);const a=e.skewer.viewModes.find((t=>t.inuse));if(!a)throw"no mode!!";if(t.skewer){e.skewer.rawmlst=t.skewer}if(a.type=="numeric"){e.subtk2height.skewer=Ze(a,t,e,s);qe(e);return}if(a.type!="skewer")throw'mode.type is not "skewer"';if(t&&!t.skewer&&s.usegm&&s.gmmode!="genomic"&&s.pannedpx!=undefined){hs(e,s);e.skewer.selection.attr("transform",(t=>"translate("+t.x+","+t.y+")"));ye(e,s)}else{e.skewer.g.selectAll("*").remove();e.skewer.data=gs(e,s);ke(e,s)}if(!e.skewer.data||e.skewer.data.length==0){e.subtk2height.skewer=0;e.skewer.g.selectAll("*").remove();return}if(e.skewer.hlssmid){const t=[];const a=[];for(const s of e.skewer.data){let n=false;for(const t of s.groups){for(const s of t.mlst){if(e.skewer.hlssmid.has(s.ssm_id)){n=true;break}}}if(n){a.push(s)}else{t.push(s)}}Se(t,e);_e(a,e,s);qe(e)}else{ye(e,s)}e.subtk2height.skewer=e.skewer.maxheight+e.skewer.stem1+e.skewer.stem2+e.skewer.stem3}function ps(t,e){if(!t.hlaachange||!e)return;const s=new Set(t.hlaachange.split(","));delete t.hlaachange;t.skewer.hlssmid=new Set;for(const a of e){if(s.has(a.mname))t.skewer.hlssmid.add(a.ssm_id)}}function hs(t,e){for(const s of t.skewer.data){if(s.isbin){let t=0;for(const a of s.mlst){const s=e.seekcoord(a.chr,a.pos);if(a.usehitidx!=undefined&&s[a.usehitidx]){t+=s[a.usehitidx].x}else if(s.length==1){t+=s[0].x}else{console.log("cannot map item");console.log(a)}}s.x0=t/s.mlst.length;s.x=s.x0+(s.xoffset!=undefined?s.xoffset:0)}else{const t=e.seekcoord(s.chr,s.pos);if(t.length>0){s.x0=t[0].x;s.x=s.x0+(s.xoffset!=undefined?s.xoffset:0)}else{console.log("cannot map group of item");console.log(s)}}}}function gs(t,e){const s=ze(t,t.skewer.rawmlst,e);for(const t of s){t.groups=ws(t.mlst)}if(t.skewer.data&&e.pannedpx!=undefined){const e={};for(const s of t.skewer.data){e[s.chr+"."+s.pos]={mode:s.showmode,xoffset:s.xoffset,slabelrotate:s.slabelrotate}}for(const t of s){const s=t.chr+"."+t.pos;if(e[s]){t.showmode=e[s].mode;t.xoffset=e[s].xoffset;t.slabelrotate=e[s].slabelrotate}}}for(const t of s){t.occurrence=t.groups.reduce(((t,e)=>t+e.occurrence),0)}return s}function ws(t,e){const s=new Map;for(const e of t){if(!Number.isInteger(e.dt))continue;if(!s.has(e.dt))s.set(e.dt,new Map);switch(e.dt){case p:if(!s.get(e.dt).has(e.class))s.get(e.dt).set(e.class,new Map);const t=e.mname||"";if(!s.get(e.dt).get(e.class).has(t)){s.get(e.dt).get(e.class).set(t,[])}s.get(e.dt).get(e.class).get(t).push(e);break;case r:case l:if(!s.get(e.dt).has(e.class)){s.get(e.dt).set(e.class,{use5:new Map,use3:new Map})}if(e.useNterm){if(!s.get(e.dt).get(e.class).use5.has(e.mname)){s.get(e.dt).get(e.class).use5.set(e.mname,[])}s.get(e.dt).get(e.class).use5.get(e.mname).push(e)}else{if(!s.get(e.dt).get(e.class).use3.has(e.mname)){s.get(e.dt).get(e.class).use3.set(e.mname,[])}s.get(e.dt).get(e.class).use3.get(e.mname).push(e)}break;case n:case M:case j:case _:if(!s.has(e.dt)){s.set(e.dt,[])}s.get(e.dt).push(e);break;default:console.log("unknown datatype: "+e.dt);console.log(e);return}}const a=[];for(const[t,e]of s){switch(t){case p:for(const[s,n]of e){if(n.size>ms){const e=[];for(const t of n.values())e.push(...t);a.push({dt:t,mlst:e,mnameCompact:i[s].label})}else{for(const e of n.values()){a.push({dt:t,mlst:e})}}}break;case r:case l:for(const s of e.values()){if(s.use5.size>ms){const e=[];for(const t of s.use5.values())e.push(...t);a.push({dt:t,mlst:e,useNterm:true,mnameCompact:t==r?"SV":"fusion"})}else{for(const e of s.use5.values()){a.push({dt:t,mlst:e,useNterm:true})}}if(s.use3.size>ms){const e=[];for(const t of s.use3.values())e.push(...t);a.push({dt:t,mlst:e,useNterm:false,mnameCompact:t==r?"SV":"fusion"})}else{for(const e of s.use3.values()){a.push({dt:t,mlst:e,useNterm:false})}}}break;case n:case M:case j:case _:a.push({dt:t,mlst:e})}}for(const t of a){let e=0,s=0;for(const a of t.mlst){e+=a.rim1count||0;s+=a.rim2count||0}t.rim1count=e;t.rim2count=s}if(t.some((t=>Number.isFinite(t.occurrence)))){for(const t of a)t.occurrence=t.mlst.reduce(((t,e)=>t+e.occurrence),0)}else{for(const t of a)t.occurrence=t.mlst.length}a.sort(((t,e)=>e.occurrence-t.occurrence));return a}function bs(t,e){ks(t,e);for(const e of t.skewer.viewModes){if(e.type=="numeric"&&!e.inuse&&e.axisg){e.axisg.remove();delete e.axisg}}}function ks(t,e){if(e&&e.find((t=>Number.isFinite(t.occurrence)))){if(!t.skewer.viewModes.find((t=>t.type=="numeric"&&t.byAttribute=="occurrence"))){t.skewer.viewModes.push({type:"numeric",byAttribute:"occurrence",label:"Occurrence",isinteger:true})}}}function xs(t,e,s){e.cnv?.g.selectAll("*").remove();if(!t.cnv){delete e.subtk2height.cnv;return}const[a,n,i]=vs(t,e,s);e.cnv.cnvLst=n;e.cnv.absoluteMax=i;e.cnv.colorScale=d([-i,0,i],[e.cnv.lossColor,"white",e.cnv.gainColor]).clamp(true);const[o,r]=_s(a||n);if(a){for(const t of a){for(const a of t.cnvs){js(a,t.y*(o+r),o,e,s,t)}}}else{for(const t of n){js(t,t.y*(o+r),o,e,s)}}const l=(a||n).length;e.subtk2height.cnv=l*o+(l-1)*r}function vs(t,e,s){let a=0;const n=new Map;const i=[];for(const e of t.cnv){if(!e.chr)continue;if(!Number.isFinite(e.value)){if(typeof e.class=="string"){if(e.class==A){e.value=1}else if(e.class==S){e.value=-1}else{continue}}else{continue}}if(!Number.isInteger(e.start)||!Number.isInteger(e.stop))continue;const t=s.seekcoord(e.chr,e.start)[0];if(!t)continue;const o=s.seekcoord(e.chr,e.stop)[0];if(!o)continue;const r=structuredClone(e);if(t.x>o.x){r.x1=o.x;r.x2=t.x}else{r.x1=t.x;r.x2=o.x}a=Math.max(a,Math.abs(e.value));i.push(r);if(Array.isArray(e.samples)){for(const t of e.samples){if(!n.has(t.sample_id))n.set(t.sample_id,[]);n.get(t.sample_id).push(structuredClone(r))}}}let o;if(n.size){o=[];for(const[t,e]of n){e.sort(((t,e)=>t.x1-e.x1));o.push({sample_id:t,cnvs:e,x1:Math.min(...e.map((t=>t.x1))),x2:Math.max(...e.map((t=>t.x2)))})}o.sort(((t,e)=>t.x1-e.x1));for(let t=0;t<o.length;t++)o[t].y=t}else{i.sort(((t,e)=>t.x1-e.x1));Ms(i,0)}return[o,i,Math.min(e.cnv.absoluteValueRenderMax,a)]}const ys=d([40,120],[10,1]);function _s(t){if(t.length>120)return[1,0];if(t.length<40)return[10,1];return[Math.ceil(ys(t.length)),1]}function js(t,e,s,a,n,i){const o=Math.max(0,t.x1),r=Math.min(t.x2,n.width);a.cnv.g.append("rect").attr("x",o).attr("y",e).attr("width",r-o).attr("height",s).attr("fill",a.cnv.colorScale(t.value)).on("mouseover",(e=>{e.target.setAttribute("stroke","black");a.itemtip.clear().show(e.clientX,e.clientY);const s=h({holder:a.itemtip.d});const n=structuredClone(t);if(i){n.samples=[{sample_id:i.sample_id}]}Kt({mlst:[n],tk:a},s)})).on("mouseout",(t=>{t.target.setAttribute("stroke","");a.itemtip.hide()}))}function Ms(t,e){const s=[];for(const a of t){for(let t=0;t<s.length;t++){if(s[t]+e<a.x1){s[t]=a.x2;a.y=t;break}}if(!("y"in a)){a.y=s.length;s.push(a.x2)}}}async function As(t,e){e.tkcloakon(t);e.block_setheight();try{if(!t.mds||t.uninitialized){await pt(t,e)}const s=await qs(t,e);if(t.uninitialized){t.clear();delete t.uninitialized}us(s,t,e);xs(s,t,e);await Ue(s,t,e);t._finish(s)}catch(e){if(t.clear)t.clear();if(t.subtk2height)t.subtk2height.skewer=50;if(t._finish)t._finish({error:e.message||e});if(e.stack)console.log(e.stack);return}}function Ss(t,e){const s={genome:e.genome.name,forTrack:1,skewerRim:t.mds.queries?.snvindel?.skewerRim};const a={"Content-Type":"application/json",Accept:"application/json"};if(t.mds.has_skewer){s.skewer=1}if(t.set_id){s.set_id=t.set_id}if(t.filter0){s.filter0=t.filter0}if(t.filterObj){if(t.filterObj?.lst.length){s.filterObj=t.filterObj}}if(t.token){a["X-Auth-Token"]=t.token}if(t.mds.label){s.dslabel=t.mds.label}else{if(t.bcf){if(t.bcf.file){s.bcffile=t.bcf.file}else if(t.bcf.url){s.bcfurl=t.bcf.url;if(t.bcf.indexURL)s.bcfindexURL=t.bcf.indexURL}else{throw".file and .url missing for tk.bcf{}"}}}Cs(t,e,s);if(t.legend.mclass.hiddenvalues.size){s.hiddenmclasslst=[...t.legend.mclass.hiddenvalues].join(",")}if(t.legend.bcfInfo){const e={};for(const s in t.legend.bcfInfo){if(t.legend.bcfInfo[s].hiddenvalues.size){e[s]=[...t.legend.bcfInfo[s].hiddenvalues]}}if(Object.keys(e).length){s.infoFilter=e}}if(t.legend.formatFilter){const e={};for(const s in t.legend.formatFilter){if(t.legend.formatFilter[s].hiddenvalues.size){e[s]=[...t.legend.formatFilter[s].hiddenvalues]}}if(Object.keys(e).length){s.formatFilter=e}}if(t.cnv){if(t.cnv.cnvMaxLength)s.cnvMaxLength=t.cnv.cnvMaxLength;if(t.cnv.cnvGainCutoff)s.cnvGainCutoff=t.cnv.cnvGainCutoff;if(t.cnv.cnvLossCutoff)s.cnvLossCutoff=t.cnv.cnvLossCutoff}return[s,a]}async function qs(t,e){let s;if(t.custom_variants){s=await zs(t,e)}else{const[a,n]=Ss(t,e);s=await u("mds3",{body:a,headers:n})}if(s.error)throw s.error;return s}function Cs(t,e,s){if(typeof s!="object")throw"par{} is not object";let a=[];if(e.usegm){const t={chr:e.rglst[0].chr,reverse:e.rglst[0].reverse,width:0,start:null,stop:null};for(let s=e.startidx;s<=e.stopidx;s++){const a=e.rglst[s];t.width+=a.width+e.regionspace;t.start=t.start==null?a.start:Math.min(t.start,a.start);t.stop=t.stop==null?a.stop:Math.max(t.stop,a.stop)}a.push(t);if(e.gmmode=="genomic");else{s.isoform=e.usegm.isoform;s.gene=e.usegm.name}}else{a=e.tkarg_rglst(t)}let n=0;for(const t of a){t.xoff=0;n+=t.width+e.regionspace}if(e.subpanels.length==t.subpanels.length){for(const t of e.subpanels){a.push({chr:t.chr,start:t.start,stop:t.stop,width:t.width,exonsf:t.exonsf,xoff:n});n+=t.width+t.leftpad}}s.rglst=a}async function zs(t,e){const a={skewer:[],cnv:[]};let n=null,o;for(let t=e.startidx;t<=e.stopidx;t++){if(n==null){n=e.rglst[t].start;o=e.rglst[t].stop}else{n=Math.min(n,e.rglst[t].start);o=Math.max(o,e.rglst[t].stop)}}const c=new Map;for(const d of t.custom_variants){if(d.dt==s){if(d.chr!=e.rglst[0].chr)continue;if(Math.max(d.start,n)>Math.min(d.stop,o))continue;a.cnv.push(d)}else if(d.dt==p||d.dt==r||d.dt==l){if(d.chr!=e.rglst[0].chr)continue;if(d.pos<=n||d.pos>=o)continue;if(!d.class)d.class="X";if(!i[d.class])d.class="X";if(t.legend.mclass.hiddenvalues.has(d.class))continue;a.skewer.push(d)}else{throw"unknown custom data dt"}c.set(d.class,1+(c.get(d.class)||0))}if(a.cnv.length==0)delete a.cnv;const d=new Set;if(a.skewer?.some((t=>t.samples))){for(const t of a.skewer){if(t.samples){for(const e of t.samples)d.add(e.sample_id)}}}if(a.cnv?.some((t=>t.samples))){for(const t of a.cnv){if(t.samples){for(const e of t.samples)d.add(e.sample_id)}}}if(d.size)a.sampleTotalNumber=d.size;a.mclass2variantcount=[...c];await Ls(t,a.skewer);return a}async function Ls(t){if(!t.mds.queries?.ld?.mOverlay)return;if(!t.mds.termdb?.vocabApi)return;delete t.mds.queries.ld.mOverlay.data;const e=await t.mds.termdb.vocabApi.getLDdata(t.mds.queries.ld.mOverlay.ldtkname,t.mds.queries.ld.mOverlay.m);if(e.error||!Array.isArray(e.lst))return;t.mds.queries.ld.mOverlay.data=e.lst}var $s=Object.freeze({__proto__:null,loadTk:As,rangequery_rglst:Cs});export{te as d,mt as g,Ee as m,$s as t};
|
|
1
|
+
import{M as t,B as e,ap as s,aq as a,ar as n,z as i,an as o,as as r,at as l,bL as c,I as d,V as f,u as m,b as u,ak as p,D as h,n as g,r as w,aN as b,d as k,be as x,aG as v,W as y,aQ as _,aR as j,aP as M,bE as A,bD as S}from"./app-2cd97738.js";import{l as q}from"./block.legend-d2b7f1cb.js";import{s as C,m as z}from"./regression.results-6f85a5dc.js";import{a as L}from"./axisstyle-fac7f76b.js";import{c as $,b as N}from"./axis-747c801e.js";import{r as R}from"./table-f50a9344.js";import{d as O}from"./arc-3d6751aa.js";import{m as I}from"./block-4134e823.js";import{t as D}from"./downloadTextfile-5723af95.js";import{T}from"./toggleButtons-04c5ad7c.js";import{m as B}from"./radiobutton-09bff425.js";import{v as F}from"./vcf-145bf5dd.js";import{n as U}from"./niceNumLabels-5f45218a.js";import{f as G}from"./termsetting-ad8c4f3a.js";import{r as P}from"./rehydrateFilter-12d118cb.js";const E="white",H="black";const V="Unannotated";function W(e,s){if(!e.legend)e.legend={};e.legend.tip=new t({padding:"0px"});const[a,n,i]=q(s,e.name);e.legend.headTd=i;e.tr_legend=a;const o=n.append("table").style("border-spacing","5px").style("border-collapse","separate");e.legend.table=o;K(e,s);Q(e);X(e);J(e);nt(e);lt(e);dt(e)}function K(t,e){if(!t.legend.mclass)t.legend.mclass={};if(!t.legend.mclass.hiddenvalues)t.legend.mclass.hiddenvalues=new Set;t.legend.mclass.row=t.legend.table.append("tr");t.legend.mclass.row.append("td").style("text-align","right").style("opacity",.7).text(e.mclassOverride?e.mclassOverride.className||"Mutation":"Mutation");t.legend.mclass.holder=t.legend.mclass.row.append("td")}function Q(t){if(!t.variantShapeName)return;const e=t.legend.table.append("tr").append("td").attr("colspan",2);const s=t.legend.variantShapeName={};{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=12 height=12>\n\t\t\t<circle cx=6 cy=6 r=6 fill=gray></circle></svg> n=`);s.dotCount=a.append("span");if(t.variantShapeName.dot)a.append("span").text(", "+t.variantShapeName.dot);s.dotDiv=a}{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=12 height=12>\n\t\t\t<path d="M 6 0 L 0 12 h 12 Z" fill=gray></path></svg> n=`);s.triangleCount=a.append("span");if(t.variantShapeName.triangle)a.append("span").text(", "+t.variantShapeName.triangle);s.triangleDiv=a}{const a=e.append("div");a.append("span").html(`<svg style="display:inline-block" width=13 height=13>\n\t\t\t<circle cx=6.5 cy=6.5 r=6 stroke=gray fill=none></circle></svg> n=`);s.circleCount=a.append("span");if(t.variantShapeName.circle)a.append("span").text(", "+t.variantShapeName.circle);s.circleDiv=a}}function X(t){if(!t.mds.bcf?.info)return;const e=[];for(const s in t.mds.bcf.info){const a=t.mds.bcf.info[s];if(a.categories){e.push(s)}}if(!e.length)return;if(!t.legend.bcfInfo)t.legend.bcfInfo={};for(const s of e){const e=t.legend.table.append("tr");e.append("td").style("text-align","right").style("opacity",.7).text(t.mds.bcf.info[s].name||s);t.legend.bcfInfo[s]={hiddenvalues:new Set,row:e,holder:e.append("td")}}}function J(t){if(!t.mds.bcf?.format)return;const e=[];for(const s in t.mds.bcf.format){if(t.mds.bcf.format[s].isFilter)e.push(s)}if(!e.length)return;if(!t.legend.formatFilter)t.legend.formatFilter={};for(const s of e){const e=t.legend.table.append("tr");e.append("td").style("text-align","right").style("opacity",.7).text(t.mds.bcf.format[s].Description);t.legend.formatFilter[s]={hiddenvalues:new Set,row:e,holder:e.append("td")}}}function Y(t,e){if(!e.legend.formatFilter)return;if(!t.skewer){console.log("data.skewer[] is not present and cannot show INFO legend");return}for(const s in e.legend.formatFilter){e.legend.formatFilter[s].holder.selectAll("*").remove();const a=new Map;let n=0;for(const e of t.skewer){if(!e.formatK2count?.[s])continue;for(const t in e.formatK2count[s].v2c){a.set(t,e.formatK2count[s].v2c[t]+(a.get(t)||0))}n+=e.formatK2count[s].unannotatedCount||0}const i=[...a];i.sort(((t,e)=>e[1]-t[1]));if(n){i.push([V,n])}for(const[t,a]of i){const n=e.legend.formatFilter[s].holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(()=>{e.legend.tip.clear().showunder(n.node()).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{e.legend.formatFilter[s].hiddenvalues.add(t);Z(e)}));e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const t of i){e.legend.formatFilter[s].hiddenvalues.add(t[0])}e.legend.formatFilter[s].hiddenvalues.delete(t);Z(e)}));if(e.legend.formatFilter[s].hiddenvalues.size){e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{e.legend.formatFilter[s].hiddenvalues.clear();Z(e)}))}}));n.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background","#aaa").style("margin-right","5px").html(a>1?a:" ");n.append("div").style("display","inline-block").text(t)}for(const t of e.legend.formatFilter[s].hiddenvalues){let a=false;e.legend.formatFilter[s].holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text(t).on("click",(async()=>{if(a)return;a=true;e.legend.formatFilter[s].hiddenvalues.delete(t);Z(e)}))}}}function Z(t){t.legend.tip.hide();t.load()}function tt(t,e,s){if(!e.legend){return}e.legend.mclass.currentData=t.mclass2variantcount;at(e);et(t,e);st(t,e);Y(t,e);ot(t,e);ct(e);ft(e)}function et(t,e){if(!e.variantShapeName)return;let s=0,a=0,n=0;for(const e of t.skewer){if(e.shapeTriangle)a++;else if(e.shapeCircle)n++;else s++}const i=e.legend.variantShapeName;i.dotDiv.style("display",s?"block":"none");i.triangleDiv.style("display",a?"block":"none");i.circleDiv.style("display",n?"block":"none");i.dotCount.text(s);i.triangleCount.text(a);i.circleCount.text(n)}function st(t,e){if(!e.legend.bcfInfo)return;if(!t.skewer){console.log("data.skewer[] is not present and cannot show INFO legend");return}for(const s in e.legend.bcfInfo){e.legend.bcfInfo[s].holder.selectAll("*").remove();if(e.mds.bcf.info[s].Type=="String"){const a=new Map;for(const e of t.skewer){const t=s in e.info?e.info[s]:V;if(Array.isArray(t)){for(const e of t){a.set(e,1+(a.get(e)||0))}}else{a.set(t,1+(a.get(t)||0))}}const n=[...a].sort(((t,e)=>e[1]-t[1]));for(const[t,a]of n){const i=e.legend.bcfInfo[s].holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(()=>{e.legend.tip.clear().showunder(i.node()).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{e.legend.bcfInfo[s].hiddenvalues.add(t);Z(e)}));e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const t of n){e.legend.bcfInfo[s].hiddenvalues.add(t[0])}e.legend.bcfInfo[s].hiddenvalues.delete(t);Z(e)}));if(e.legend.bcfInfo[s].hiddenvalues.size){e.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{e.legend.bcfInfo[s].hiddenvalues.clear();Z(e)}))}const a=e.mds.bcf.info[s].categories?.[t]?.desc;if(a){e.legend.tip.d.append("div").style("padding","10px").style("font-size",".8em").style("width","150px").html(a)}}));i.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background",e.mds.bcf.info[s].categories?.[t]?.color||E).html(a>1?a:" ");i.append("div").style("display","inline-block").style("color",e.mds.bcf.info[s].categories?.[t]?.color||H).style("padding-left","5px").text(e.mds.bcf.info[s].categories?.[t]?.label||t)}for(const t of e.legend.bcfInfo[s].hiddenvalues){let a=false;e.legend.bcfInfo[s].holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").text(t).on("click",(async()=>{if(a)return;a=true;e.legend.bcfInfo[s].hiddenvalues.delete(t);Z(e)}))}}}}function at(t){if(!t.legend.mclass.currentData||t.legend.mclass.currentData.length==0)return;t.legend.mclass.holder.selectAll("*").remove();const c=[],d=[];for(const[e,s]of t.legend.mclass.currentData){const a={k:e,count:s};if(t.legend.mclass.hiddenvalues.has(e)){d.push(a)}else{c.push(a)}}c.sort(((t,e)=>e.count-t.count));d.sort(((t,e)=>e.count-t.count));for(const e of t.legend.mclass.hiddenvalues){if(!d.find((t=>t.k==e))){d.push({k:e})}}for(const f of c){let m,u,p="#858585";if(Number.isInteger(f.k)){m=e[f.k];if(f.k==s){u="Copy number variation."}else if(f.k==a){u="Loss of heterozygosity."}else if(f.k==n){p=i[o].color;u="Internal tandem duplication."}else if(f.k==r){u="Structural variation of DNA."}else if(f.k==l){u="Fusion gene from RNA-seq."}}else{m=i[f.k].label;p=i[f.k].color;u=i[f.k].desc}const h=t.legend.mclass.holder.append("div").attr("class","sja_clb").style("display","inline-block").on("click",(e=>{t.legend.tip.clear().showunder(e.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{t.legend.mclass.hiddenvalues.add(f.k);Z(t)}));t.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show only").on("click",(()=>{for(const e of c){t.legend.mclass.hiddenvalues.add(e.k)}t.legend.mclass.hiddenvalues.delete(f.k);Z(t)}));if(d.length){t.legend.tip.d.append("div").attr("class","sja_menuoption").text("Show all").on("click",(()=>{t.legend.mclass.hiddenvalues.clear();Z(t)}))}t.legend.tip.d.append("div").style("padding","10px").style("font-size",".8em").style("width","150px").html(u)}));h.append("div").style("display","inline-block").attr("class","sja_mcdot").style("background",p).html(f.count>1?f.count:" ");h.append("div").style("display","inline-block").style("color",p).html(" "+m)}for(const s of d){let a=false;t.legend.mclass.holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text((s.count?"("+s.count+") ":"")+(Number.isInteger(s.k)?e[s.k]:i[s.k].label)).on("click",(async e=>{if(a)return;a=true;t.legend.mclass.hiddenvalues.delete(s.k);e.target.innerHTML="Updating...";await t.load()}))}}function nt(t,e){if(!t.mds.queries?.snvindel?.skewerRim)return;const s=t.legend.skewerRim={};if(!t.mds.queries.snvindel.skewerRim.hiddenvaluelst)t.mds.queries.snvindel.skewerRim.hiddenvaluelst=[];s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7);s.holder=s.row.append("td")}function it(t){const e=t.mds.queries.snvindel.skewerRim;if(e.type=="format"){if(!e.formatKey)throw"skewerRim.formatKey missing";return t.mds.bcf?.format?.[e.formatKey]?.Description||e.formatKey}return"unknown skewerRim.type"}function ot(t,e){const s=e.mds.queries?.snvindel?.skewerRim;if(!s)return;let a=0,n=0;for(const e of t.skewer){const t=e.rim1count||0;a+=t;n+=e.occurrence-t}const i=e.legend.skewerRim;i.headerTd.text(it(e));i.holder.selectAll("*").remove();if(a>0){i.holder.append("div").attr("class","sja_clb").style("display","inline-block").html(`${rt(1)}${s.rim1value}, n=${a}`).on("click",(t=>{e.legend.tip.clear().showunder(t.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{s.hiddenvaluelst.push(s.rim1value);Z(e)}))}))}if(n>0){i.holder.append("div").attr("class","sja_clb").style("display","inline-block").html(`${rt()}${s.noRimValue}, n=${n}`).on("click",(t=>{e.legend.tip.clear().showunder(t.target).d.append("div").attr("class","sja_menuoption").text("Hide").on("click",(()=>{s.hiddenvaluelst.push(s.noRimValue);Z(e)}))}))}for(const t of s.hiddenvaluelst){let a=false;i.holder.append("div").style("display","inline-block").attr("class","sja_clb").style("text-decoration","line-through").style("opacity",.7).text(t).on("click",(async n=>{if(a)return;a=true;s.hiddenvaluelst.splice(s.hiddenvaluelst.indexOf(t),1);n.target.innerHTML="Updating...";await e.load()}))}}function rt(t){return'<svg width="19" height="19" style="margin-right: 5px;">'+'<circle cx="7" cy="12" r="7" fill="#b1b1b1"></circle>'+(t==1?'<path d="M6.735557395310443e-16,-11A11,11 0 0,1 11,0L9,0A9,9 0 0,0 5.51091059616309e-16,-9Z" transform="translate(7,12)" fill="#858585" stroke="none"></path>':t==2?"":"")+"</svg>"}function lt(t,e){if(!t.mds.queries?.ld)return;t.mds.queries.ld.colorScale=c(t.mds.queries.ld.overlay.color_0,t.mds.queries.ld.overlay.color_1);const s=t.legend.ld={};s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7);s.holder=s.row.append("td");s.showHolder=s.holder.append("div").style("display","none");C(s.showHolder,t.mds.queries.ld.colorScale);s.showHolder.append("span").text("Cancel overlay").style("font-size",".7em").attr("class","sja_clbtext").on("click",(()=>{delete t.mds.queries.ld.mOverlay;if(t.skewer?.hlssmid)delete t.skewer.hlssmid;t.load()}))}function ct(t){if(!t.mds.queries?.ld?.mOverlay){if(t.legend.ld){t.legend.ld.headerTd.html("");t.legend.ld.showHolder.style("display","none")}return}t.legend.ld.headerTd.html(t.mds.queries.ld.mOverlay.ldtkname+" LD r<sup>2</sup>");t.legend.ld.showHolder.style("display","block")}function dt(t,e){if(!t.cnv)return;const s=t.legend.cnv={};s.row=t.legend.table.append("tr");s.headerTd=s.row.append("td").style("text-align","right").style("opacity",.7).text("CNV");s.holder=s.row.append("td");s.showHolder=s.holder.append("div").style("display","none")}function ft(t){if(!t.cnv)return;t.legend.cnv.holder.selectAll("*").remove();const e=t.legend.cnv.holder.append("svg");const s=20;const a=15;const n=10;const i=150;L({axis:e.append("g").attr("transform","translate("+n+","+s+")").call($().scale(d().domain([-t.cnv.absoluteMax,t.cnv.absoluteMax]).range([0,i])).ticks(4)),fontsize:12});const o="grad"+Math.random();const r=e.append("defs").append("linearGradient").attr("id",o);r.append("stop").attr("offset","0%").attr("stop-color",t.cnv.lossColor);r.append("stop").attr("offset","50%").attr("stop-color","white");r.append("stop").attr("offset","100%").attr("stop-color",t.cnv.gainColor);e.append("rect").attr("x",n).attr("y",s).attr("width",i).attr("height",a).attr("fill",`url(#${o})`);e.attr("width",n*2+i).attr("height",s+a)}function mt(t){if(t.lst.length==0){return"No filter"}if(t.lst.length==1&&t.lst[0].type=="tvs"){const e=t.lst[0].tvs;if(!e)throw"f.lst[0].tvs{} missing";const s=e?.term?.type;if(s=="categorical"){if(!Array.isArray(e.values))throw"f.lst[0].tvs.values not array";const t=e.values[0]?.key;if(t==undefined)throw"f.lst[0].tvs.values[0].key missing";const s=e.term.values?.[t]?.label||t;if(e.values.length==1){if((e.term.name+s).length<20){return e.term.name+(e.isnot?"!=":": ")+s}return(e.isnot?"!":"")+(s.length<15?s:s.substring(0,13)+"...")}return`${e.isnot?"!":""}${s.length<12?s:s.substring(0,10)+"..."} (${e.values.length})`}if(s=="integer"||s=="float"||s=="geneExpression"||s=="metaboliteIntensity"){return ut(e)}throw"unknown tvs term type"}return"Filter ("+t.lst.length+")"}function ut(t){if(!Array.isArray(t.ranges))throw"tvs.ranges not array";if(!t.ranges[0])throw"tvs.ranges[] blank array";const e=t.ranges[0];let s,a;const n=t.term.valueConversion;if(n){if("start"in e)s=f(e.start,n.fromUnit,n.toUnit,n.scaleFactor,true);if("stop"in e)a=f(e.stop,n.fromUnit,n.toUnit,n.scaleFactor,true)}else{if(t.term.type=="integer"){if("start"in e)s=Math.round(e.start);if("stop"in e)a=Math.round(e.stop)}else{if("start"in e)s=e.start;if("stop"in e)a=e.stop;if("start"in e&&"stop"in e){[s,a]=U([s,a])}}}let i;if(t.isnot){if(e.startunbounded)i=`x ${e.stopinclusive?">":">="} ${a}`;else if(e.stopunbounded)i=`x ${e.startinclusive?"<":"<="} ${s}`;else i=`!(${s} ${a})`}else{if(e.startunbounded)i=`x ${e.stopinclusive?"<=":"<"} ${a}`;else if(e.stopunbounded)i=`x ${e.startinclusive?">=":">"} ${s}`;else i=`${s}${e.startinclusive?"<=":"<"}x${e.stopinclusive?"<=":"<"}${a}`}if(t.ranges.length>1)i+="...";return i}async function pt(e,s){e.subtk2height={};e.leftlabels={g:e.gleft.append("g"),doms:{},laby:0,xoff:0,maxwidth:0};e._finish=ht(e,s);e.cache={};e.itemtip=new t;e.menutip=new t({padding:""});e.load=Ct(e,s);e.mnamegetter=t=>{if(e.mds.queries?.snvindel?.vcfid4skewerName&&t.vcf_id)return t.vcf_id;const s=t.mname;if(!s)return"";if(s.length>25){return s.substr(0,20)+"..."}return s};await vt(e,s);await _t(e,s);await At(e,s);jt(e,s);Mt(e,s);wt(e);bt(e);if(e.filterObj)await Promise.all(P(e.filterObj,e.mds.termdb.vocabApi));e.tklabel.text(e.mds.label||e.name);e.clear=()=>{if(e.skewer)e.skewer.g.selectAll("*").remove()};W(e,s);xt(e);e.color4disc=t=>{if(e.mutationColorBy){if(e.mutationColorBy=="hardcode"){if(t.color)return t.color}}if(e.mds.queries?.ld?.mOverlay?.data){const s=e.mds.queries.ld.mOverlay.m;if(t.chr==s.chr&&t.pos==s.pos&&t.ref==s.ref&&t.alt==s.alt){return e.mds.queries.ld.overlay.color_1}for(const s of e.mds.queries.ld.mOverlay.data){if(s.pos==t.pos&&s.alleles==t.ref+"."+t.alt){return e.mds.queries.ld.colorScale(s.r2)}}return e.mds.queries.ld.overlay.color_0}if(e.vcfinfofilter&&e.vcfinfofilter.setidx4mclass!=undefined){const s=e.vcfinfofilter.lst[e.vcfinfofilter.setidx4mclass];const[a,n]=zt(s,t);if(a||n==undefined)return"black";for(const t of n){if(s.categories[t]){return s.categories[t].color}else{return"black"}}}if(i[t.class]){return i[t.class].color}return"black"};gt(e);if(e.hlssmid){e.skewer.hlssmid=new Set(e.hlssmid.split(","));delete e.hlssmid}try{It(e)}catch(t){console.error(t)}}function ht(t,e){return s=>{t.legend?.headTd.text(t.name+(t.filterObj?" - "+mt(t.filterObj):""));if(t.cnv){t.cnv.g.transition().attr("transform",`translate(0,${t.subtk2height.skewer||0})`)}if(s){if(s.error){t.subtk2height.skewer=40}else{let a=0;if(s.skewer)a=s.skewer.length;if(s.cnv)a+=s.cnv.length;if(a==0){let s="view range";if(e.usegm&&e.gmmode!="genomic")s=e.usegm.name||e.usegm.isoform;t.skewer.g.append("text").text("No mutation in "+s).attr("y",25).attr("x",e.width/2).attr("text-anchor","middle").attr("dominant-baseline","center");t.subtk2height.skewer=40}}}t.height_main=Math.max(t.subtk2height.leftlabels||0,t.subtk2height.skewer+(t.subtk2height.cnv||0))+t.toppad+t.bottompad;if(s){tt(s,t)}t.leftLabelMaxwidth=Math.max(t.leftlabels.maxwidth+t.leftlabels.xoff,t.skewer?t.skewer.maxwidth:0);e.tkcloakoff(t,{error:s?s.error:null});e.block_setheight();e.setllabel();if(typeof t.callbackOnRender=="function"){t.callbackOnRender(t,e)}}}function gt(t){const e=m();if(t.skewer){if(e.has("hlaachange")){t.hlaachange=e.get("hlaachange")}if(e.has("hlssmid")){t.hlssmid=e.get("hlssmid").split(",")}}}function wt(t){if(!t.mds.has_skewer)return;t.skewer={g:t.glider.append("g"),hlBoxColor:t.mds.hlBoxColor||"red",hideDotLabels:false,pointup:true};kt(t)}function bt(t){let e=t.mds.termdbConfig?.queries?.cnv;if(!e){if(t.mds.has_cnv){e={}}}if(!e)return;t.cnv={g:t.glider.append("g"),cnvMaxLength:e.cnvMaxLength,cnvGainCutoff:e.cnvGainCutoff,cnvLossCutoff:e.cnvLossCutoff,absoluteValueRenderMax:e.absoluteValueRenderMax||5,gainColor:e.gainColor||"#D6683C",lossColor:e.lossColor||"#67a9cf"}}function kt(t){t.skewer.viewModes=t.skewerModes;delete t.skewerModes;if(!t.skewer.viewModes)t.skewer.viewModes=[];const e=t.skewer.viewModes;if(!Array.isArray(e))throw"skewerModes[] is not array";if(t.mds.skewerModes){for(const s of t.mds.skewerModes)e.push(s)}if(!e.find((t=>t.type=="skewer")))e.push({type:"skewer"});for(const t of e){if(typeof t!="object")throw"one of skewerModes[] is not object";if(t.type=="skewer"){if(!t.label)t.label="lollipops"}else if(t.type=="numeric"){if(t.byAttribute){if(!t.label)t.label=t.byAttribute}else if(t.byInfo);else{throw"unknown data method for a type=numeric mode"}}else{throw"unknown type from a skewerModes[]"}}if(!e.find((t=>t.inuse)))e[0].inuse=true}function xt(t){if(t.mds.hiddenmclass){for(const e of t.mds.hiddenmclass)t.legend.mclass.hiddenvalues.add(e)}}async function vt(t,e){if(t.dslabel){const s=await u("getDataset",{body:{genome:e.genome.name,dsname:t.dslabel}});if(s.error)throw"Error: "+s.error;if(!s.ds)throw"data.ds{} missing";t.mds=s.ds;t.name=s.ds.label;return}if(!t.name)t.name="Custom data";t.mds={};if(t.bcf){if(!t.bcf.file&&!t.bcf.url)throw"file or url missing for tk.bcf{}";t.mds.has_skewer=true;await Ot(t,e.genome)}else if(t.custom_variants){Lt(t,e);Rt(t)}else{throw"unknown data source for custom track"}yt(t)}function yt(t){if(!t.sampleAnnotation)return;if(!Array.isArray(t.sampleAnnotation.terms))throw"sampleAnnotation.terms is not array";if(!t.mds.termdb)t.mds.termdb={};t.mds.termdb.terms=t.sampleAnnotation.terms;t.mds.termdb.annotations=t.sampleAnnotation.annotations}async function _t(t,e){const s=t.mds.termdb;if(!s)return;{const a={};if(t.mds.label){a.vocab={genome:e.genome.name,dslabel:t.mds.label}}else if(s.terms){a.vocab={terms:s.terms,sampleannotation:s.annotations}}else{throw"do not know how to init vocab"}const n=await import("./FilterRxComp-0f35b322.js").then((function(t){return t.k}));s.vocabApi=n.vocabInit(a);if(!s.vocabApi.app){s.vocabApi.app={opts:{genome:e.genome}}}}t.mds.termdbConfig=await s.vocabApi.getTermdbConfig();if(t.mds.termdb.allowCaseDetails){t.mds.termdb.allowCaseDetails.get=async t=>{}}}function jt(t,e){if(!t.mds.queries?.snvindel?.m2csq)return;t.mds.queries.snvindel.m2csq.get=async s=>{const a={genome:e.genome.name,dslabel:t.mds.label,m2csq:1};if(t.mds.queries.snvindel.m2csq.by=="ssm_id"){a.ssm_id=s.ssm_id}else{return{error:"unknown query method"}}const n={"Content-Type":"application/json",Accept:"application/json"};if(t.token)n["X-Auth-Token"]=t.token;return await u("mds3",{body:a,headers:n},{serverData:t.cache})}}function Mt(t,e){if(!t.mds.queries?.singleSampleMutation)return;t.mds.queries.singleSampleMutation.get=async s=>{const a={genome:e.genome.name,dslabel:t.mds.label,sample:s};const n={"Content-Type":"application/json",Accept:"application/json"};if(t.token)n["X-Auth-Token"]=t.token;const i=await u("termdb/singleSampleMutation",{body:a,headers:n});if(i.error)throw i.error;if(!Array.isArray(i.mlst))throw"data.mlst is not array";return i.mlst}}async function At(t,e){if(!t.mds.variant2samples)return;if(t.custom_variants){St(t)}else{qt(t,e)}if(t.mds.variant2samples.twLst){if(!Array.isArray(t.mds.variant2samples.twLst))throw"v2s.twLst[] not array";if(!t.mds.termdb?.vocabApi)throw"mds.termdb.vocabApi should be present for initiating v2s.twLst";for(const e of t.mds.variant2samples.twLst)await G(e,t.mds.termdb.vocabApi)}}function St(t,e){t.mds.variant2samples.get=e=>{if(e.querytype==t.mds.variant2samples.type_samples){const t=[];for(const s of e.mlst){if(!s.samples)continue;for(const e of s.samples){const a=JSON.parse(JSON.stringify(e));a.ssm_id=s.ssm_id;t.push(a)}}return{samples:t}}if(e.querytype==t.mds.variant2samples.type_summary){throw"todo: summary"}if(e.querytype==t.mds.variant2samples.type_sunburst){throw"todo: sunburst"}throw"unknown querytype"};t.mds.getSamples=()=>{const e=new Map;for(const s of t.custom_variants){if(!s.samples)continue;for(const t of s.samples){if(e.has(t.sample_id)){e.get(t.sample_id).ssm_id_lst.push(s.ssm_id)}else{const a=JSON.parse(JSON.stringify(t));a.ssm_id_lst=[s.ssm_id];e.set(t.sample_id,a)}}}return{samples:[...e.values()]}}}function qt(t,e){t.mds.variant2samples.get=async s=>{const a={genome:e.genome.name,variant2samples:1,get:s.querytype};if(t.mds.label){a.dslabel=t.mds.label}else if(t.bcf){if(t.bcf.file)a.bcffile=t.bcf.file;else if(t.bcf.url)a.bcfurl=t.bcf.url;else throw"tk.bcf{}: file/url missing"}else{throw"no dslabel or tk.bcf"}if(s.groupSsmBySample){a.groupSsmBySample=1}if(s.mlst){if(t.mds.variant2samples.variantkey=="ssm_id"){a.ssm_id_lst=s.mlst.map((t=>t.ssm_id)).join(",")}else{throw"unknown variantkey for variant2samples"}}if(s.isoform){a.isoform=s.isoform}if(s.rglst){a.rglst=s.rglst}const n={"Content-Type":"application/json",Accept:"application/json"};if(t.set_id)a.set_id=t.set_id;if(t.token)n["X-Auth-Token"]=t.token;if(t.filter0)a.filter0=t.filter0;if(t.filterObj)a.filterObj=t.filterObj;if(s.tid2value)a.tid2value=s.tid2value;if(s.querytype==t.mds.variant2samples.type_sunburst){if(t.mds.variant2samples.sunburst_twLst){a.twLst=t.mds.variant2samples.sunburst_twLst}}else if(s.querytype==t.mds.variant2samples.type_samples){if(t.mds.variant2samples.twLst)a.twLst=t.mds.variant2samples.twLst}else if(s.querytype==t.mds.variant2samples.type_summary){if(t.mds.variant2samples.twLst)a.twLst=t.mds.variant2samples.twLst}else{throw"unknown querytype"}a.skewerRim=t.mds.queries.snvindel?.skewerRim;if(t.legend.formatFilter){const e={};for(const s in t.legend.formatFilter){if(t.legend.formatFilter[s].hiddenvalues.size){e[s]=[...t.legend.formatFilter[s].hiddenvalues]}}if(Object.keys(e).length){a.formatFilter=e}}if(t.legend.mclass?.hiddenvalues?.size){a.hiddenmclasslst=[...t.legend.mclass.hiddenvalues].join(",")}const i=await u("mds3",{body:a,headers:n},{serverData:t.cache});if(i.error)throw i.error;const o=i.variant2samples;if(!o)throw"result error";if(s.querytype==t.mds.variant2samples.type_sunburst){if(!Array.isArray(o.nodes))throw"nodes[] not array from return"}else if(s.querytype==t.mds.variant2samples.type_samples){if(!Array.isArray(o.samples))throw"samples[] not array from return"}else if(s.querytype==t.mds.variant2samples.type_summary){if(!Array.isArray(o.summary))throw"summary[] not array from return"}else{throw"unknown querytype"}return o};t.mds.getSamples=async(s={})=>{if(s.isSummary){s.querytype=t.mds.variant2samples.type_summary}else{s.querytype=t.mds.variant2samples.type_samples;s.groupSsmBySample=1}Cs(t,e,s);return await t.mds.variant2samples.get(s)}}function Ct(t,e){return async()=>await As(t,e)}function zt(t,e){if(t.altalleleinfo){if(!e.altinfo)return["no .altinfo"];const s=e.altinfo[t.altalleleinfo.key];if(s==undefined){if(t.numericfilter){return[null,[0]]}return[null,undefined]}let a=Array.isArray(s)?s:[s];if(t.altalleleinfo.separator){a=a[0].split(t.altalleleinfo.separator)}return[null,a]}if(t.locusinfo){if(!e.info)return["no .info"];const s=e.info[t.locusinfo.key];if(s==undefined){if(t.numericfilter){return[null,[0]]}return[null,undefined]}let a=Array.isArray(s)?s:[s];if(t.locusinfo.separator){a=a[0].split(t.locusinfo.separator)}return[null,a]}return["no trigger"]}function Lt(t,e){for(const a of t.custom_variants){if(a.dt==p){t.mds.has_skewer=true;$t(a);continue}if(a.dt==l||a.dt==r){t.mds.has_skewer=true;Nt(a,e);continue}if(a.dt==s){t.mds.has_cnv=true;a.ssm_id=a.chr+"."+a.start+"."+a.stop+"."+a.class;continue}throw"unknown dt for a custom variant"}}function $t(t){if(!t.chr)throw".chr missing for custom snvindel";if(!Number.isInteger(t.pos))throw".pos not integer for custom snvindel";if(!t.ssm_id){t.ssm_id=t.chr+"."+t.pos+"."+(t.ref&&t.alt?t.ref+"."+t.alt:t.mname)}}function Nt(t,e){if(t.pairlst);else{if(!t.chr1)throw".chr1 missing for custom sv/fusion";if(!Number.isInteger(t.pos1))throw".pos1 not integer for custom svfusion";if(t.strand1!="+"&&t.strand1!="-")throw".strand1 not +/- for custom svfusion";if(!t.chr2)throw".chr1 missing for custom sv/fusion";if(!Number.isInteger(t.pos2))throw".pos1 not integer for custom svfusion";if(t.strand2!="+"&&t.strand2!="-")throw".strand1 not +/- for custom svfusion";t.pairlst=[{a:{chr:t.chr1,pos:t.pos1,strand:t.strand1,name:t.gene1||""},b:{chr:t.chr2,pos:t.pos2,strand:t.strand2,name:t.gene2||""}}];delete t.chr1;delete t.pos1;delete t.strand1;delete t.gene1;delete t.chr2;delete t.pos2;delete t.strand2;delete t.gene2}const s=[t.dt];const a=e.seekcoord(t.pairlst[0].a.chr,t.pairlst[0].a.pos);if(a.length&&a[0].x>0&&a[0].x<e.width){s.push(...[t.pairlst[0].a.chr,t.pairlst[0].a.pos,t.pairlst[0].a.strand,0,t.pairlst[0].a.name]);t.mname=t.pairlst[0].b.name||"";t.chr=t.pairlst[0].a.chr;t.pos=t.pairlst[0].a.pos;t.pairlstIdx=0}else{const a=e.seekcoord(t.pairlst[0].b.chr,t.pairlst[0].b.pos);if(a.length&&a[0].x>0&&a[0].x<e.width){s.push(...[t.pairlst[0].b.chr,t.pairlst[0].b.pos,t.pairlst[0].b.strand,1,t.pairlst[0].b.name]);t.mname=t.pairlst[0].a.name||"";t.chr=t.pairlst[0].b.chr;t.pos=t.pairlst[0].b.pos;t.pairlstIdx=1}}t.ssm_id=s.join(".")}function Rt(t){if(t.custom_variants.find((t=>t.occurrence!=undefined))){return}for(const e of t.custom_variants){if(e.sample){e.sample_id=e.sample;delete e.sample}}if(!t.custom_variants.find((t=>t.sample_id))){return}const e=[];const s=new Map;for(const a of t.custom_variants){if(a.dt!=p){a.occurrence=1;a.samples=[{sample_id:a.sample_id}];delete a.sample_id;e.push(a);continue}const t=a.mname+"."+a.chr+"."+a.pos+"."+a.ref+"."+a.alt;const n=s.get(t);if(n){n.occurrence++;n.samples.push({sample_id:a.sample_id})}else{a.occurrence=1;a.samples=[{sample_id:a.sample_id}];delete a.sample_id;s.set(t,a)}}t.custom_variants=e;for(const e of s.values())t.custom_variants.push(e);if(!t.mds.variant2samples)t.mds.variant2samples={};const a=t.mds.variant2samples;a.type_samples="samples";a.type_summary="summary";a.type_sunburst="sunburst"}async function Ot(t,e){const s={genome:e.name};if(t.bcf.file){s.file=t.bcf.file}else{s.url=t.bcf.url;if(t.bcf.indexURL)s.indexURL=t.bcf.indexURL}const a=await u("vcfheader",{body:s});if(a.error)throw a.error;const[n,i,o,r]=F(a.metastr.split("\n"));if(r)throw"Error parsing VCF meta lines: "+r.join("; ");t.mds.bcf={info:n,format:i};if(o?.length){t.mds.bcf.samples=o;t.mds.variant2samples={type_samples:"samples",variantkey:"ssm_id"}}if(!t.mds.queries)t.mds.queries={};t.mds.queries.snvindel={forTrack:true}}function It(t){const e=t.allow2selectSamples;if(!e)return;if(!e.buttonText)e.buttonText="Select samples";if(typeof e.buttonText!="string")throw"allow2selectSamples.buttonText value is not string";if(!e.attributes)e.attributes=[{from:"sample_id",to:"sample_id"}];if(!Array.isArray(e.attributes))throw"allow2selectSamples.attributes[] is not array";if(e.attributes.length==0)throw"allow2selectSamples.attributes[] blank array";for(const t of e.attributes){if(typeof t.from!="string"||!t.from)throw"allow2selectSamples.attributes.from is not string";if(typeof t.to!="string"||!t.to)throw"allow2selectSamples.attributes.to is not string"}if(typeof e.callback!="function")throw"allow2selectSamples.callback() is not function";e._cart=[]}async function Dt(t){for(const e of t.mlst){if(e.dt!=p&&e.dt!=l&&e.dt!=r&&e.dt!=s)throw"mlst[] contains unknown dt"}if(t.mlst.length==1){await Bt(t)}else{await Ft(t)}Tt(t)}function Tt(t){if(!t.tipDiv){return}const e=[];for(const s of t.div.selectAll("div").selectAll("table")){if(s)e.push(s)}if(!e.length)return;let s=0;for(const t of e){const e=t.firstChild;if(e.tagName!="THEAD")continue;const a=e.firstChild;if(a.tagName!="TR")continue;s=Math.max(s,a.childNodes?.length)}if(s>5){t.tipDiv.style("left","50px")}}async function Bt(t){const e=h({holder:t.div});const a=t.mlst[0];if(a.dt==p){Ut(t,e)}else if(a.dt==r||a.dt==l){await Wt(t,e)}else if(a.dt==s){Kt(t,e)}else{throw"oneItem: unknown dt"}t.singleSampleDiv=e;if(t.tk.mds.variant2samples){if(a.occurrence){await Zt(t)}}}async function Ft(t){const e=t.div.append("div").style("margin-bottom","10px").style("display","none");e.append("span").html("≪ Back to list").attr("class","sja_clbtext").on("click",(()=>{m.style("display","");e.style("display","none");a.style("display","none")}));const a=t.div.append("div").style("display","none");const n=[{label:"Click a variant to see details"}];const o=t.mlst.some((t=>t.occurrence));if(o){n.push({label:"Occurrence"})}let c=null;if(t.tk.mds.bcf?.info){c=[];for(const e in t.tk.mds.bcf.info){if(t.tk.mds.bcf.info[e].categories){c.push(e);n.push({label:t.tk.mds.bcf.info[e].name||e})}}if(c.length==0)c=null}let d;if(t.tk.skewer){d=t.tk.skewer.viewModes.find((t=>t.inuse&&t.type=="numeric"&&t.byAttribute!="occurrence"));if(d){n.push({label:d.label})}}t.mlst.sort(((t,e)=>t.__x-e.__x));const f=[];for(const e of t.mlst){const s=[{}];if(o){s.push({value:"occurrence"in e?e.occurrence:""})}if(c){for(const a of c){const n=e.info[a];if(n==undefined){s.push({})}else{const e=t.tk.mds.bcf.info[a].categories[n];if(e?.color){s.push({html:`<span style="background:${e.color}"> </span> ${e.label||n}`})}else{s.push({value:n})}}}}if(d){s.push({value:e[d.byAttribute]})}f.push(s)}const m=t.div.append("div");R({div:m,columns:n,rows:f,striped:false,resize:true});for(const[n,o]of t.mlst.entries()){const c=f[n][0].__td.append("div").attr("class","sja_menuoption").on("click",(()=>{m.style("display","none");e.style("display","");a.style("display","").selectAll("*").remove();const s=Object.assign({},t);s.mlst=[o];s.div=a;Dt(s)}));if(o.dt==p){c.append("span").text(t.tk.mnamegetter(o));c.append("span").text(i[o.class].label).style("font-size",".8em").style("margin-left","10px").style("color",i[o.class].color);c.append("span").text(`${o.chr}:${o.pos+1}${o.ref?", "+o.ref+">"+o.alt:""}`).style("font-size",".8em").style("margin-left","10px")}else if(o.dt==r||o.dt==l){c.append("span").text(i[o.class].label).style("font-size",".7em").style("margin-right","8px");Qt(o.pairlst[0],c)}else if(o.dt==s){c.append("span").style("background",t.tk.cnv.colorScale(o.value)).text(o.value).style("font-size",".8em").style("padding","0px 3px");c.append("span").style("margin-left","10px").text(`${o.chr}:${o.start}-${o.stop}`)}else{c.text("error: unknown m.dt")}}if(!t.doNotListSample4multim&&t.tk.mds.variant2samples){const e=t.mlst.reduce(((t,e)=>t+(e.occurrence||0)),0);if(e){t.div.append("div").style("margin-top","10px").append("span").attr("class","sja_clbtext").text("List all samples").on("click",(async e=>{e.target.remove();m.remove();await Zt(t);Tt(t)}))}}}function Ut({mlst:t,tk:e,block:s},a){const n=t[0];{const[t,e]=a.addRow();t.text(s.mclassOverride?s.mclassOverride.className:"Consequence");Ht(e,n)}{const[t,i]=a.addRow();t.text(n.ref&&n.alt?"Mutation":"Position");Vt(i,n,e,s)}if(n.occurrence>1){const[t,e]=a.addRow();t.text("Occurrence");e.text(n.occurrence)}Gt(n,e,a);Pt(n,e,a);Yt(n,e,a);if(n.info){for(const t in n.info){if(t=="CSQ"){continue}const[s,i]=a.addRow();s.text(t);const o=n.info[t];const r=e.mds?.bcf?.info?.[t];if(Array.isArray(o)){for(const t of o){Et(n,r,t,i)}}else{Et(n,r,o,i)}if(r?.Description){i.append("span").style("margin-left","10px").style("font-size",".8em").style("opacity",.6).text(r.Description)}}}}function Gt(t,e,s){const a=e.skewer.viewModes.find((t=>t.inuse));if(a.type!="numeric"||a.byAttribute=="occurrence")return;if(a.tooltipPrintValue){const e=a.tooltipPrintValue(t);if(Array.isArray(e)){for(const t of e){const[e,a]=s.addRow();e.text(t.k);a.text(t.v)}}else{console.log("unknown return value")}return}const[n,i]=s.addRow();n.text(a.label);i.text(t.__value_missing?"NA":t.__value_use)}function Pt(t,e,s){if(!t.htmlSections)return;if(!Array.isArray(t.htmlSections))throw"htmlSections[] is not array";for(const e of t.htmlSections){const[t,a]=s.addRow();if(e.key&&e.html){t.text(e.key);a.html(e.html)}}}function Et(t,e,s,a,n){if(!e){a.append("span").text(s);return}if(e.urlBase){a.append("a").text(s).attr("href",e.urlBase+s).attr("target","_blank");return}const i=a.append("span").text(s);if(e&&e.categories){const t=e.categories[s];if(t){i.style("padding","1px 4px").style("background",t.color);if(t.textcolor){i.style("color",t.textcolor)}}}}function Ht(t,e){t.append("span").text(e.mname);t.append("span").style("margin-left","5px").style("color",i[e.class].color).style("font-size",".8em").text(i[e.class].label.toUpperCase())}function Vt(t,e,s,a){const n=t.append("span").text(`${e.chr}:${e.pos+1} ${e.ref&&e.alt?e.ref+">"+e.alt:""}`);const i=s.mds.termdbConfig?.urlTemplates?.ssm||s.mds.queries?.snvindel?.ssmUrl;if(i){const s=z(i,e,n,a.genome.name);if(s?.length){t.append("span").style("margin-left","10px").html(s.join(" "))}}}async function Wt(t,e){await Xt(t.mlst[0],e.scrollDiv.insert("div",":first-child"),t.block);{const[s,a]=e.addRow();s.text("Data type");a.text(i[t.mlst[0].class].label)}{const[s,a]=e.addRow();s.text("Break points");for(const e of t.mlst[0].pairlst){Qt(e,a.append("div"))}}}function Kt(t,e){const s=t.mlst[0];{const[a,n]=e.addRow();a.text("Copy number change");n.html(`<span style="background:${t.tk.cnv.colorScale(s.value)}"> </span> ${s.value}`)}{const[t,a]=e.addRow();t.text("Position");a.text(s.chr+":"+s.start+"-"+s.stop)}if(s.samples){const[t,a]=e.addRow();t.text("Sample");for(const t of s.samples){a.append("div").text(t.sample_id)}}}function Qt(t,e){if(t.a.name)e.append("span").text(t.a.name).style("font-weight","bold").style("margin-right","5px");e.append("span").text(`${t.a.chr}:${t.a.pos} ${t.a.strand=="+"?"forward":"reverse"} > ${t.b.chr}:${t.b.pos} ${t.b.strand=="+"?"forward":"reverse"}`);if(t.b.name)e.append("span").text(t.b.name).style("font-weight","bold").style("margin-left","5px")}async function Xt(t,e,s){const a=e.append("div").text("Loading...");try{if(!t.pairlst)throw".pairlst[] missing";const n={a:{chr:t.pairlst[0].a.chr,position:t.pairlst[0].a.pos,strand:t.pairlst[0].a.strand},b:{chr:t.pairlst[0].b.chr,position:t.pairlst[0].b.pos,strand:t.pairlst[0].b.strand}};await Jt(n.a,s);await Jt(n.b,s);a.remove();const i=await import("./svgraph-6ab3011b.js");i.default({pairlst:[n],genome:s.genome,holder:e})}catch(t){a.text(t.message||t)}}async function Jt(t,e){const s=await u("isoformbycoord",{body:{genome:e.genome.name,chr:t.chr,pos:t.position}});if(s.error)throw s.error;const a=s.lst.find((t=>t.isdefault))||s.lst[0];if(a){t.name=a.name;t.gm={isoform:a.isoform}}}function Yt(t,e,s){if(!e.mds.queries?.ld)return;const[a,n]=s.addRow();a.text("LD overlay");const i=e.mds.queries.ld.mOverlay?.m;if(i){const s=n.append("div").style("margin-bottom","5px");if(t.ssm_id==i.ssm_id){s.html(e.mds.queries.ld.mOverlay.ldtkname+" r<sup>2</sup> values against this variant are displayed on all the other variants.")}else{let a=null;for(const s of e.mds.queries.ld.mOverlay.data||[]){if(s.pos==t.pos&&s.alleles==t.ref+"."+t.alt){a=s.r2;break}}if(a==null){s.html("No r<sup>2</sup> value is found.")}else{s.html(e.mds.queries.ld.mOverlay.ldtkname+" r<sup>2</sup> = "+a)}}}n.append("div").html("Click a button to overlay LD r<sup>2</sup> values against this variant:").style("font-size",".8em").style("opacity",.5);for(const s of e.mds.queries.ld.tracks){const a=n.append("button").text(s.name);if(i&&i.ssm_id==t.ssm_id){if(s.name==e.mds.queries.ld.mOverlay.ldtkname){a.property("disabled",true);continue}}a.on("click",(()=>{e.itemtip.hide();e.mds.queries.ld.mOverlay={ldtkname:s.name,m:{chr:t.chr,pos:t.pos,ref:t.ref,alt:t.alt,ssm_id:t.ssm_id}};e.load()}))}}async function Zt(t){const e=t.div.append("div").text("Loading...").style("padding","10px").style("color","#8AB1D4").style("font-size","1.25em").style("font-weight","bold");t.tid2value_orig=new Set;if(t.tid2value)Object.keys(t.tid2value).forEach(t.tid2value_orig.add,t.tid2value_orig);try{t.querytype=t.tk.mds.variant2samples.type_samples;const s=await t.tk.mds.variant2samples.get(t);await te(s.samples,t);e.remove()}catch(t){e.text("Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}async function te(t,e){if(t.length==1){return await se(t[0],e)}const[s,a]=await oe(t,e.tk);const n={rows:a,columns:s,div:e.div,resize:a.length>10,dataTestId:"sjpp_mds3tk_sampletable"};n.columnButtons=[];if(e.tk.mds.queries?.singleSampleMutation){const s={text:"Disco",dataTestId:"sja_sample_table_disco_button",callback:async(s,a)=>{e.tk.itemtip.hide();e.tk.menutip.hide();let n;if(t[a].ssm_id_lst?.[0]){n=(e.tk.skewer.rawmlst||e.tk.custom_variants).find((e=>e.ssm_id==t[a].ssm_id_lst[0]))}await ie(e.tk,e.block,t[a],n)}};n.columnButtons.push(s)}if(e.tk.mds.queries?.singleSampleGenomeQuantification){for(const s in e.tk.mds.queries.singleSampleGenomeQuantification){const a={text:s,dataTestId:`${s}_button`,callback:async(a,n)=>{const i=g(e.tk.newChartHolder||e.block.holder0);i.header.text(t[n].sample_id);await(await import("./plot.ssgq-aeb2dabc.js")).plotSingleSampleGenomeQuantification(e.tk.mds,e.tk.mds.label,s,t[n],i.body.append("div").style("margin","20px"),e.block.genome,e.block.usegm?.name)}};n.columnButtons.push(a)}}if(e.tk.allow2selectSamples){n.buttons=[{text:e.tk.allow2selectSamples.buttonText,class:e.tk.allow2selectSamples.class,callback:s=>{ee(e.tk,e.block,t,s);e.tk.itemtip.hide();e.tk.menutip.hide()}}]}return R(n)}async function ee(t,e,s,a){const n=[...s];const i=a.map((t=>n[t]));t.allow2selectSamples.callback({samples:await t.mds.termdb.vocabApi.convertSampleId(i,t.allow2selectSamples.attributes),source:"Samples with "+le(e)})}async function se(t,e){const s=e.singleSampleDiv||h({holder:e.div});if(t.sample_id){const[a,n]=s.addRow();a.text(e.tk.mds.termdbConfig?.lollipop?.sample||"Sample");let i;if(t.ssm_id_lst?.[0]){i=e.tk.skewer.rawmlst.find((e=>e.ssm_id==t.ssm_id_lst[0]))}ne(t,e.tk,n,e.block,i)}if("caseIsOpenAccess"in t){const[e,a]=s.addRow();e.text("Access");a.text(t.caseIsOpenAccess?"Open":"Controlled")}if(e.tk.mds.variant2samples.twLst){for(const a of e.tk.mds.variant2samples.twLst){const[e,n]=s.addRow();e.text(a.term.name).style("text-overflow","ellipsis");n.style("text-overflow","ellipsis");if(a.term.id in t){if(Array.isArray(t[a.term.id])){if(a.baseURL){n.html(t[a.term.id].map((t=>`<a href=${a.baseURL+t} target=_blank>${t}</a>`)).join("<br>"))}else{n.html(t[a.term.id].join("<br>"))}}else{const e=ae(t,a);if(a.baseURL){n.html(`<a href=${a.baseURL+e} target=_blank>${e}</a>`)}else{n.text(e)}}}}}if(t.ssmid2format){for(const a of t.ssm_id_lst){if(t.ssm_id_lst.length>1){const[t,n]=s.addRow();n.style("padding-top","20px");const i=e.tk.skewer.rawmlst.find((t=>t.ssm_id==a));if(i){if(i.dt==p){Vt(n,i,e.tk,e.block)}else if(i.dt==r||i.dt==l){Qt(i.pairlst[0],n)}else{n.text(a)}}else{n.text(a)}}for(const n in t.ssmid2format[a]){const i=t.ssmid2format[a][n];const[o,r]=s.addRow();const l=e.tk.mds?.bcf?.format?.[n];o.text(l&&l.Description||n);r.html(re(l,i))}}}}function ae(t,e){if(!(e.term.id in t))return"";const s=t[e.term.id];if(e.term.values?.[s]?.label)return e.term.values[s].label;const a=e.term.valueConversion;if(a)return f(s,a.fromUnit,a.toUnit,a.scaleFactor);return s}function ne(t,e,s,a,n){const i=e.mds.termdbConfig?.urlTemplates?.sample;if(i){const e=s.append("a");e.attr("href",i.base+(t[i.namekey]||t.sample_id));e.attr("target","_blank");e.text(t.sample_id);e.style("word-break","break-word")}else{s.append("span").attr("class","pp_mds3_singleSampleNameSpan").text(t.sample_id)}const o=s.append("div");if(e.allow2selectSamples){const s=e.allow2selectSamples.buttonText;const n=o.append("button").style("margin-right","10px").text(s.endsWith("s")?s.substring(0,s.length-1):s).on("click",(()=>{ee(e,a,[t],[0]);e.itemtip.hide();e.menutip.hide()}));if(e.allow2selectSamples.class)n.attr("class",e.allow2selectSamples.class)}if(e.mds.queries?.singleSampleMutation){o.append("button").style("margin-right","10px").text("Disco plot").attr("data-testid","proteinpaint_disc_table_disco_button").on("click",(async()=>{e.itemtip.hide();await ie(e,a,t,n)}))}if(e.mds.queries?.singleSampleGenomeQuantification){for(const s in e.mds.queries.singleSampleGenomeQuantification){o.append("button").text(s).on("click",(async()=>{const n=g(e.newChartHolder||a.holder0);n.header.text(t.sample_id);await(await import("./plot.ssgq-aeb2dabc.js")).plotSingleSampleGenomeQuantification(e.mds,e.mds.label,s,t,n.body.append("div").style("margin","20px"),a.genome,a.usegm?.name)}))}}}async function ie(t,e,s,a){const n=g(t.newChartHolder||e.holder0);const i=[s.sample_id];if(a){i.push(", with ");if(e.usegm){i.push(e.usegm.name)}else{i.push(a.isoform)}i.push(" "+a.mname)}n.header.text(i.join(""));try{(await import("./plot.disco-9a544f9a.js")).default(t.mds,t.mds.label,s,n.body,e.genome,{downloadImgName:i.join("")+" Disco",Disco:{prioritizeGeneLabelsByGeneSets:true}})}catch(t){n.body.append("div").text("Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}async function oe(t,e){const s=t.some((t=>"caseIsOpenAccess"in t)),a=t.some((t=>t.ssm_id))||t.some((t=>t.ssm_id_lst)),n=t.some((t=>t.ssmid2format))&&e.mds?.bcf?.format;const o=new Set;const c=[{label:e.mds.termdbConfig?.lollipop?.sample||"Sample"}],d=[];if(s){c.push({label:"Access"})}if(e.mds.variant2samples.twLst){for(const t of e.mds.variant2samples.twLst){const e={label:t.term.name};c.push(e)}}if(a){c.push({label:"Mutations",isSsm:true})}if(n){for(const e of t){if(!e.ssmid2format)continue;for(const t in e.ssmid2format){for(const s in e.ssmid2format[t])o.add(s)}}for(const t in e.mds.bcf.format){if(!o.has(t))continue;const s=e.mds.bcf.format[t];c.push({label:s.Description||t})}}for(const c of t){const t=[{value:c.sample_id}];let f=c.ssm_id_lst;if(!f&&c.ssm_id)f=[c.ssm_id];{const s=e.mds.termdbConfig?.urlTemplates?.sample;if(s){t[0].url=s.base+(c[s.namekey]||c.sample_id)}}if(s){t.push({value:c.caseIsOpenAccess?"Open":"Controlled"})}if(e.mds.variant2samples.twLst){for(const s of e.mds.variant2samples.twLst){const e=ae(c,s);if(s.baseURL){t.push({html:`<a href=${s.baseURL+e} target=_blank>${e}</a>`})}else{t.push({value:e})}}}if(a){if(f){const s=[];for(const t of f){const a=[];const n=(e.skewer.rawmlst||e.custom_variants).find((e=>e.ssm_id==t));if(n){if(n.dt==p){if(e.mds.queries&&e.mds.queries.snvindel&&e.mds.queries.snvindel.url){a.push(`<a href=${e.mds.queries.snvindel.url.base+n.ssm_id} target=_blank>${n.mname}</a>`)}else{a.push(n.mname)}}else if(n.dt==r||n.dt==l){const t=n.pairlst[0];a.push(`${t.a.name||""} ${t.a.chr}:${t.a.pos} ${t.a.strand=="+"?"forward":"reverse"} > ${t.b.name||""} ${t.b.chr}:${t.b.pos} ${t.b.strand=="+"?"forward":"reverse"}`)}else{throw"unknown dt"}a.push(`<span style="color:${w(i[n.class].color).darker()};font-size:0.8em;">${i[n.class].label}</span>`);s.push(a.join(" "))}else{s.push(t)}}t.push({html:s.join("<br>")})}else{t.push({value:""})}}if(n){if(!f)throw"ssm_id_lst missing, cannot show format";for(const s in e.mds.bcf.format){if(!o.has(s))continue;if(!c.ssmid2format){t.push({value:""});continue}const a=e.mds.bcf.format[s];const n=[];for(const t of f){const e=c.ssmid2format?.[t]?.[s];n.push(re(a,e))}t.push({html:n.join("<br>")})}}d.push(t)}return[c,d]}function re(t,e){if(t&&e&&t.Number=="R"&&t.Type=="Integer"){const t=e.split(",").map(Number);if(t.length==2){const[e,s]=t;if(e>=0&&s>=0&&e+s>0){return`${b(null,{f:s/(s+e)})} <span style="font-size:.8em">${s}/${s+e}</span>`}}}return e}function le(t){if(t.gmmode=="genomic"){const e=t.rglst[0];return"mutations from "+e.chr+":"+e.start+"-"+e.stop}if(t.usegm)return"mutations in "+t.usegm.name;return"mutations"}const ce=10;async function de(t,e,s,a,n){try{if(e.click_snvindel){e.skewer.hlssmid=new Set(t.mlst.map((t=>t.ssm_id)));qe(e);e.click_snvindel(t.mlst[0]);return}if("occurrence"in t&&t.occurrence>=ce&&e.mds.variant2samples&&e.mds.variant2samples.sunburst_twLst){await fe(t,e,s,a);return}await me({mlst:t.mlst,tk:e,block:s,tippos:a})}catch(t){s.error(t.message||t);if(t.stack)console.log(t.stack)}}async function fe(t,e,s,a){e.glider.style("cursor","wait");const n=await e.mds.variant2samples.get({mlst:t.mlst,querytype:e.mds.variant2samples.type_sunburst});e.glider.style("cursor","auto");const i={nodes:n.nodes,occurrence:t.occurrence,boxyoff:e.yoff,boxheight:Math.min(800,e.height),boxwidth:s.width,svgheight:Number.parseFloat(s.svg.attr("height")),g:e.skewer.g.append("g"),pica:e.pica,click_listbutton:(n,i)=>{me({mlst:t.mlst,tk:e,block:s,tippos:a})},click_ring:async(a,n)=>{e.itemtip.clear();const i={mlst:t.mlst,tk:e,block:s,div:e.itemtip.d,tid2value:{}};i.tid2value[n.data.id0]=n.data.v0;if(n.data.id1)i.tid2value[n.data.id1]=n.data.v1;if(n.data.id2)i.tid2value[n.data.id2]=n.data.v2;i.mlst=t.mlst.map((t=>{if(e.mds.variant2samples.variantkey=="ssm_id"){return{ssm_id:t.ssm_id,occurrence:0}}throw"unknown variant2samples.variantkey"}));i.mlst[0].occurrence=n.value;const o=a.clientX;const r=a.clientY;await Zt(i);e.itemtip.show2(o,r)}};if(t.aa){i.cx=t.aa.x;i.cy=xe(t,e)+t.yoffset*(e.skewer.pointup?-1:1)}else{i.cx=t.x;i.cy=t.y+(e.skewer.pointup?1:-1)*e.skewer.stem1/2}if(t.mlst.length==1){i.chartlabel=t.mlst[0].mname}else{const e=new Set(t.mlst.map((t=>t.mname)));if(e.size==1){i.chartlabel=[...e][0]}else{i.chartlabel=t.mlst.reduce(((t,e)=>e.occurrence>t.occurrence?e:t)).mname+" etc"}}const o=await import("./sunburst-30295714.js");o.default(i)}async function me(t){t.tk.itemtip.clear().show(t.tippos.left-10,t.tippos.top-10);t.div=t.tk.itemtip.d;t.tipDiv=t.tk.itemtip.d;await Dt(t)}const ue=0;const pe=1;const he=.3;const ge=1;const we=.6;const be="Arial";function ke(t,e){const s=t.skewer;for(const t of s.data){t.x0=t.x;if(t.xoffset!=undefined){t.x=t.x0+t.xoffset}for(const e of t.groups){e.aa=t}}const a=Math.max(14,e.width/110);let n=0;for(const t of s.data){for(const e of t.groups){n=Math.max(n,e.occurrence)}}let i=0;const o=Math.pow(a/2,2)*Math.PI;if(n<=10)i=o*n*.9;else if(n<=100)i=o*10;else if(n<=1e3)i=o*14;else i=o*20;const c=d().domain([1,n*.5,n*.6,n*.7,n*.8,n]).range([o,o+(i-o)*.8,o+(i-o)*.85,o+(i-o)*.9,o+(i-o)*.95,i]);let f=a/2;s.maxheight=0;for(const t of s.data){if(t.showmode==undefined)t.showmode=ue;if(t.slabelrotate==undefined)t.slabelrotate=false;t.maxradius=0;t.maxrimwidth=0;t.width=0;t.slabelwidth=0;for(const e of t.groups){if(e.occurrence<=1){e.radius=a/2}else{const t=e.occurrence.toString().length;e.radius=Math.max(Math.sqrt(c(e.occurrence)/Math.PI),t*5)}t.maxradius=Math.max(t.maxradius,e.radius);f=Math.max(f,e.radius);e.rimwidth=e.rim1count+e.rim2count==0?0:Math.max(2,e.radius/6);t.maxrimwidth=Math.max(t.maxrimwidth,e.rimwidth)}let e=0;for(const s of t.groups){s.yoffset=e+s.radius+s.rimwidth;e+=(s.radius+s.rimwidth)*2}s.maxheight=Math.max(s.maxheight,e)}s.selection=s.g.selectAll().data(s.data).enter().append("g").attr("class","sja_skg").each((function(t){t.skewer=this}));const m=s.selection.selectAll().data((t=>t.groups)).enter().append("g").attr("transform",(e=>"translate(0,"+(e.aa.showmode==ue?0:e.yoffset*(t.skewer.pointup?-1:1))+")")).attr("class","sja_aa_discg").each((function(t){t.g=this}));const u=m.append("circle");u.filter((t=>t.dt==p||t.dt==r||t.dt==l)).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("stroke","white").attr("r",(t=>t.radius-.5));m.filter((t=>t.dt==l||t.dt==r)).append("path").attr("fill","white").attr("stroke","none").attr("d",(t=>O()({innerRadius:0,outerRadius:t.radius-2,startAngle:t.useNterm?0:Math.PI,endAngle:t.useNterm?Math.PI:Math.PI*2})));const h=m.filter((t=>t.occurrence>1)).append("text").text((t=>t.occurrence)).attr("font-family",be).attr("class","sja_aa_discnum").attr("fill-opacity",(t=>t.aa.showmode==ue?0:1)).attr("stroke-opacity",(t=>t.aa.showmode==ue?0:1)).attr("text-anchor","middle").each((t=>{const e=t.radius*1.5;t.discnumfontsize=Math.min(e/(t.occurrence.toString().length*we),e)})).attr("font-size",(t=>t.discnumfontsize)).attr("y",(t=>t.discnumfontsize*he));h.filter((t=>t.dt==p)).attr("fill","white");h.filter((t=>t.dt==r||t.dt==l)).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("stroke-width",.8).attr("font-weight","bold").attr("fill","white");m.append("text").text((e=>e.mnameCompact||t.mnamegetter(e.mlst[0]))).attr("font-size",(t=>{t._labfontsize=Math.max(12,t.radius*1.2);return t._labfontsize})).each((function(t){const e=this.getBBox().width;t._label_width=e;if(t.aa.groups.length==1){t.aa.slabelrotate=true;t.aa.slabelwidth=e;s.maxheight=Math.max(s.maxheight,(t.radius+t.rimwidth)*2+2+e)}})).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("x",(t=>t.radius+t.rimwidth+1)).attr("y",(t=>t._labfontsize*he)).attr("font-family",be).classed("sja_aa_disclabel",true).attr("fill-opacity",(t=>t.aa.showmode==ue?0:1)).attr("transform","scale(1) rotate(0)").on("mousedown",(t=>{t.stopPropagation()})).on("click",((s,a)=>{Se([a.aa],t);je(t,e)}));s.hlBoxG=m.append("g");for(const t of s.data){let e=0,s=0;for(const a of t.groups){e=Math.max(e,a.radius+a.rimwidth);s=Math.max(s,a.radius+a.rimwidth+ge+a._label_width)}t.width=e+s}m.append("circle").attr("r",(t=>t.radius-.5)).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("class","sja_aa_disckick").attr("fill","white").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.stopPropagation()})).on("mouseover",((e,s)=>{if(t.disc_mouseover){t.disc_mouseover(s,e.target)}})).on("mouseout",((e,s)=>{if(t.disc_mouseout){t.disc_mouseout(s)}})).on("click",(async(s,a)=>{de(a,t,e,s.target.getBoundingClientRect(),s.target)}));const g=O().innerRadius((t=>t.radius)).outerRadius((t=>t.radius+t.rimwidth)).startAngle(0).endAngle((t=>{t.rim1_startangle=Math.PI*2*t.rim1count/t.occurrence;return t.rim1_startangle}));m.filter((t=>t.rim1count>0)).append("path").attr("d",g).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("class","sja_aa_discrim").attr("fill-opacity",0);const w=O().innerRadius((t=>t.radius+.5)).outerRadius((t=>t.radius+.5+t.rimwidth)).startAngle((t=>t.rim1_startangle)).endAngle((t=>t.rim1_startangle+Math.PI*2*t.rim2count/t.occurrence));m.filter((t=>t.rim2count>0)).append("path").attr("d",w).attr("stroke",(e=>t.color4disc(e.mlst[0]))).attr("fill","none").attr("class","sja_aa_discrim").attr("stroke-opacity",0);{let t=0;let e=0;for(const a of s.data){if(a.x-a.maxradius-a.maxrimwidth<e){t++}e=Math.max(e,a.x+a.width-a.maxradius-a.maxrimwidth)}s.stem1=t==0?0:a;s.stem2=d().domain([0,1,s.data.length]).range([0,a,a*3])(t)}const b=a*.7;let x=0;for(const t of s.data){for(const e of t.groups){x=Math.max(x,e.occurrence)}}s.stem3=Math.max(2,b+a*Math.min(5,x));s.selection.append("circle").attr("class","sja_aa_skkick").attr("fill","white").attr("fill-opacity",0).attr("stroke","none").attr("r",(t=>t.maxradius+1)).attr("cy",(e=>(t.skewer.pointup?-1:1)*e.maxradius)).attr("transform",(t=>`scale(${t.showmode==ue?"1,1":"0.01,0.01"})`)).on("mouseover",((e,s)=>{let a=0;let n=0;const i=5;const o=t.skewer.pointup?7:14;for(const e of s.groups){e.pica_fontsize=Math.max(11,e.radius);a+=e.pica_fontsize+1;t.pica.g.append("text").text((e.mnameCompact||e.mlst[0].mname)+(e.occurrence>1?" x"+e.occurrence:"")).attr("font-size",e.pica_fontsize).each((function(){n=Math.max(n,this.getBBox().width)})).remove()}n+=i*2;const r=a+5;t.pica.g.append("rect").attr("y",t.skewer.pointup?-r:0).attr("width",n).attr("height",r).attr("fill","white").attr("fill-opacity",.8).attr("stroke","#ccc").attr("shape-rendering","crispEdges");a=0;const l=t.pica.g.selectAll().data(s.groups).enter().append("g").attr("transform",((e,s)=>{a+=e.pica_fontsize+1;return"translate("+i+","+a*(t.skewer.pointup?-1:1)+")"}));l.append("text").text((t=>t.mnameCompact||t.mlst[0].mname)).attr("font-size",(t=>t.pica_fontsize)).each((function(t){t.pica_mlabelwidth=this.getBBox().width})).attr("fill",(e=>t.color4disc(e.mlst[0]))).attr("dominant-baseline",t.skewer.pointup?"hanging":"auto");const c=s.groups[0].pica_mlabelwidth;t.pica.x=s.x-i-c/2;t.pica.y=s.y+(t.skewer.pointup?-1:1)*(s.maxradius*2+o+2);t.pica.g.attr("transform","translate("+t.pica.x+","+t.pica.y+")");l.filter((t=>t.occurrence>1)).append("text").text((t=>"x"+t.occurrence)).attr("x",(t=>t.pica_mlabelwidth+5)).attr("font-size",(t=>t.pica_fontsize)).attr("dominant-baseline",t.skewer.pointup?"hanging":"auto").attr("fill","#9e9e9e");const d=t.pica.g.append("g").attr("transform","translate("+(i+c/2)+","+(t.skewer.pointup?1:-1)+")");d.append("line").attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","#858585").attr("shape-rendering","crispEdges");d.append("line").attr("x1",-1).attr("x2",-1).attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","white").attr("shape-rendering","crispEdges");d.append("line").attr("x1",1).attr("x2",1).attr("y2",(t.skewer.pointup?1:-1)*o).attr("stroke","white").attr("shape-rendering","crispEdges")})).on("mouseout",((e,s)=>{t.pica.g.selectAll("*").remove()})).on("click",((s,a)=>{t.pica.g.selectAll("*").remove();_e([a],t,e)}));let v=0;for(const t of s.data){v=Math.max(v,t.occurrence)}const y=d().domain([1,v]).range([b,s.stem3-f]);s.selection.attr("transform",(e=>{e.foldyoffset=y(e.occurrence);e.y=xe(e,t);return"translate("+e.x+","+e.y+")"}));s.selection.append("path").attr("class","sja_aa_stem").attr("d",(e=>ve(e,t))).attr("stroke",(e=>t.color4disc(e.groups[0].mlst[0]))).attr("fill","none");const _=s.selection.filter((t=>t.groups.length>1));_.append("rect").attr("class","sja_aa_ssk_bg").attr("shape-rendering","crispEdges").attr("fill-opacity",0).attr("height",s.stem1).attr("fill",(e=>t.color4disc(e.groups[0].mlst[0]))).attr("width",(t=>{t.ssk_width=Math.max(t.occurrence.toString().length*8+6,2*(t.maxradius+t.maxrimwidth));return t.ssk_width})).attr("x",(t=>-t.ssk_width/2));_.append("text").attr("class","sja_aa_ssk_text").attr("fill","white").attr("fill-opacity",0).attr("font-weight","bold").attr("text-anchor","middle").attr("dominant-baseline","central").text((t=>t.occurrence)).each((t=>{t.ssk_fontsize=Math.min(s.stem1,t.ssk_width/(t.occurrence.toString().length*we))})).attr("font-size",(t=>t.ssk_fontsize));_.append("rect").attr("class","sja_aa_ssk_kick").attr("fill","white").attr("fill-opacity",0).attr("stroke","none").attr("height",s.stem1).attr("x",(t=>-t.ssk_width/2)).attr("width",(t=>t.ssk_width)).on("mouseover",((t,e)=>{const s=k(t.target.parentNode);s.selectAll(".sja_aa_disckick").transition().attr("stroke-opacity",1);s.select(".sja_aa_ssk_bg").transition().attr("fill-opacity",1).attr("stroke-opacity",1);s.select(".sja_aa_ssk_text").transition().attr("fill-opacity",1)})).on("mouseout",(function(t,e){const s=k(t.target.parentNode);s.selectAll(".sja_aa_disckick").transition().attr("stroke-opacity",0);s.select(".sja_aa_ssk_bg").transition().attr("fill-opacity",0).attr("stroke-opacity",0);s.select(".sja_aa_ssk_text").transition().attr("fill-opacity",0)})).on("click",(async(s,a)=>{de(a,t,e,s.target.getBoundingClientRect(),null,s.target)}))}function xe(t,e){if(e.skewer.pointup){if(t.showmode==ue){return e.skewer.maxheight+e.skewer.stem1+e.skewer.stem2+e.skewer.stem3-t.foldyoffset}return e.skewer.maxheight}if(t.showmode==ue)return t.foldyoffset;return e.skewer.stem1+e.skewer.stem2+e.skewer.stem3}function ve(t,e){if(e.skewer.pointup){if(t.showmode==ue){return"M0,0v0l0,0v"+t.foldyoffset}return"M0,0v"+e.skewer.stem1+"l"+(t.x0-t.x)+","+e.skewer.stem2+"v"+e.skewer.stem3}if(t.showmode==ue){return"M0,0v0l0,0v-"+t.foldyoffset}return"M0,0v-"+e.skewer.stem1+"l"+(t.x0-t.x)+",-"+e.skewer.stem2+"v-"+e.skewer.stem3}function ye(t,e){if(t.skewer.data.length==0)return;const s=0;const a=e.width;let n=0;const i=[];const o=[];for(const e of t.skewer.data){if(e.x0<s||e.x0>a){delete e.xoffset;o.push(e)}else{n+=e.slabelrotate?(e.groups[0].radius+e.groups[0].rimwidth)*2:e.width;i.push(e)}}Se(o,t);let r=[];const l=[];if(n<a-s){r=i}else{i.sort(((t,e)=>{if(e.occurrence==t.occurrence){if(e.groups.length==t.groups.length){return Math.abs(t.x0*2-s-a)-Math.abs(e.x0*2-s-a)}else{return e.groups.length-t.groups.length}}return e.occurrence-t.occurrence}));let t=0;let e=(a-s)*.8;let n=false;for(const s of i){if(n){delete s.xoffset;l.push(s);s.showmode=ue}else{if(t+s.width<e){r.push(s);t+=s.width}else{n=true;delete s.xoffset;l.push(s);s.showmode=ue}}}}Se(l,t);_e(r,t,e)}function _e(t,e,s){const a=1e3;const n=new Set;const i=new Set;let o=false;for(const s of t){if(s.showmode==pe){n.add(s.x0)}else{s.showmode=pe;i.add(s.x0);o=true;s.y=xe(s,e)}}if(o){const t=e.skewer.selection.filter((t=>i.has(t.x0)));t.transition().duration(a).attr("transform",(t=>"translate("+t.x+","+t.y+")"));t.selectAll(".sja_aa_discg").transition().duration(a).attr("transform",(t=>{t.y=t.yoffset*(e.skewer.pointup?-1:1);return"translate(0,"+t.y+")"}));setTimeout((function(){t.selectAll(".sja_aa_disckick").attr("transform","scale(1)").attr("data-testid","scale(1)")}),a);t.selectAll(".sja_aa_discnum").transition().duration(a).attr("fill-opacity",1).attr("stroke-opacity",1);t.filter((t=>t.groups.length>1)).selectAll(".sja_aa_disclabel").transition().duration(a).attr("fill-opacity",1).attr("transform","scale(1)");t.selectAll(".sja_aa_discrim").transition().duration(a).attr("fill-opacity",1).attr("stroke-opacity",1);t.selectAll(".sja_aa_ssk_kick").attr("transform","scale(1)").attr("y",e.skewer.pointup?0:-e.skewer.stem1);t.selectAll(".sja_aa_ssk_bg").attr("transform","scale(1)").attr("y",e.skewer.pointup?0:-e.skewer.stem1);t.selectAll(".sja_aa_ssk_text").attr("transform","scale(1)").attr("y",(e.skewer.pointup?1:-1)*e.skewer.stem1/2);t.selectAll(".sja_aa_skkick").attr("transform","scale(0.01,0.01)");let n=0;t.selectAll(".sja_aa_stem").transition().duration(a).attr("d",(t=>ve(t,e))).each((()=>++n)).on("end",(()=>{if(! --n){je(e,s)}}))}else{je(e,s)}}function je(t,e){const s=1e3;const a=[];const n=new Set;const i=0;const o=e.width;for(const e of t.skewer.data){if(e.x0<i||e.x0>o)continue;if(e.showmode==pe){e.x=e.x0;a.push(e);n.add(e.x0)}}if(a.length==0){return}Me(a,t,e);for(const t of a){t.xoffset=t.x-t.x0}for(let e=0;e<a.length;e++){const s=a[e];if(s.groups.length>1)continue;const n=s.groups[0];if(t.slabel_forcerotate){s.slabelrotate=true}else{const t=a[e+1];const i=t?t.x-t.maxradius-t.maxrimwidth:o;s.slabelrotate=i-s.x-n.radius-n.rimwidth-1<s.slabelwidth}s.width=(n.radius+n.rimwidth)*2+(s.slabelrotate?0:2+s.slabelwidth)}const r=t.skewer.selection.filter((t=>n.has(t.x0)));r.transition().duration(s).attr("transform",(t=>"translate("+t.x+","+t.y+")"));r.selectAll(".sja_aa_stem").transition().duration(s).attr("d",(e=>ve(e,t)));r.filter((t=>t.groups.length==1)).selectAll(".sja_aa_disclabel").transition().duration(s).attr("fill-opacity",1).attr("transform",(e=>"scale(1) rotate("+(e.aa.slabelrotate?(t.skewer.pointup?"-":"")+"90":"0")+")"));t.slabel_forcerotate=false}function Me(t,e,s){const a=0;const n=s.width;let i=a;let o=false;for(const e of t){if(e.x0<a||e.x0>n)continue;if(e.groups.length==1){e.slabelrotate=true;const t=e.groups[0];e.width=(t.radius+t.rimwidth)*2}const t=e.x-e.maxradius-e.maxrimwidth;if(t<i){o=true}if(t+e.width>n){o=true}i=Math.max(i,t+e.width)}if(!o){return false}i=a;for(const e of t){if(e.x0<a||e.x0>n)continue;e.x=i+e.maxradius+e.maxrimwidth;i+=e.width}Ae(t,s.width)}function Ae(t,e){for(let s=0;s<t.length;s++){if(t[s].x0<0)continue;if(t[s].x0>e)break;while(1){let a=0,n=0;for(let i=s;i<t.length;i++){const s=t[i];if(s.x0>e){return}a+=Math.abs(s.x-s.x0);s.x++;n+=Math.abs(s.x-s.x0)}if(t[s].x>=t[s].x0){for(let e=s;e<t.length;e++){t[e].x--}break}const i=t[t.length-1];if(i.x+i.width/2>=e){return}if(n<=a);else{for(let a=s;a<t.length;a++){if(t[a].x0>e){break}t[a].x--}break}}}}function Se(t,e){if(t.length==0)return;const s=1e3;const a=new Set;for(const s of t){s.x=s.x0;a.add(s.x0);s.showmode=ue;s.y=xe(s,e)}const n=e.skewer.selection.filter((t=>a.has(t.x0)));n.transition().duration(s).attr("transform",(t=>"translate("+t.x+","+t.y+")"));n.selectAll(".sja_aa_stem").transition().duration(s).attr("d",(t=>ve(t,e)));n.selectAll(".sja_aa_discg").transition().duration(s).attr("transform",(t=>"translate(0,"+(e.skewer.pointup?"-":"")+t.aa.maxradius+")"));n.selectAll(".sja_aa_disckick").attr("transform","scale(0)");n.selectAll(".sja_aa_discnum").transition().duration(s).attr("fill-opacity",0).attr("stroke-opacity",0);n.selectAll(".sja_aa_disclabel").transition().duration(s).attr("fill-opacity",0).attr("transform","scale(0)");n.selectAll(".sja_aa_discrim").transition().duration(s).attr("fill-opacity",0).attr("stroke-opacity",0);n.selectAll(".sja_aa_ssk_kick").attr("transform","scale(0)");n.selectAll(".sja_aa_ssk_bg").attr("transform","scale(0)");n.selectAll(".sja_aa_ssk_text").attr("transform","scale(0)");n.selectAll(".sja_aa_skkick").transition().duration(s).attr("transform","scale(1)")}function qe(t){t.skewer.hlBoxG.selectAll("*").remove();if(!t.skewer.hlssmid)return;t.skewer.hlBoxG.filter((e=>{if(e.mlst){return e.mlst.find((e=>t.skewer.hlssmid.has(e.ssm_id)))}return t.skewer.hlssmid.has(e.ssm_id)})).append("rect").attr("x",(t=>-t.radius)).attr("y",(t=>-t.radius)).attr("width",(t=>t.radius*2)).attr("height",(t=>t.radius*2)).attr("stroke",t.skewer.hlBoxColor).attr("stroke-width",(t=>t.radius>10?1.5:1)).attr("fill","none").attr("class","sja_mds3_skewer_ssmhlbox")}const Ce=4;function ze(t,e,s){Le(e,t,s);const a=new Map;for(const t of e){if(t.__x==undefined)continue;if(!a.has(t.__x)){a.set(t.__x,[])}a.get(t.__x).push(t)}const n=[];if(s.exonsf>=Ce){for(const[t,e]of a){n.push({chr:e[0].chr,pos:e[0].pos,mlst:e,x:t})}}else{if(s.usegm&&s.usegm.coding&&s.gmmode!=x.genomic){const t=new Map;for(const[e,n]of a){if(n[0].chr!=s.usegm.chr){continue}let i=undefined;for(const t of n){if(Number.isFinite(t.aapos))i=t.aapos}if(i==undefined){i=v(n[0].pos,s.usegm).aapos}if(i==undefined){console.error("data item cannot map to aaposition");console.log(n[0]);continue}a.delete(e);if(!t.has(i)){t.set(i,[])}let o=true;for(const e of t.get(i)){if(Math.abs(e[0].__x-n[0].__x)<=s.exonsf*3){for(const t of n){e.push(t)}o=false;break}}if(o){t.get(i).push(n)}}for(const e of t.values()){for(const t of e){let e=null;for(const s of t){if(Number.isFinite(s.rnapos))e=s}if(e==null){console.log("trying to map mlst to codon, but no rnapos found");for(const e of t){console.log(e)}continue}n.push({chr:t[0].chr,pos:e.pos,mlst:t,x:t[0].__x})}}}const t=[];const e=2;for(const[s,n]of a){const a=Math.floor(s/e);if(!t[a]){t[a]=[]}t[a]=[...t[a],...n]}for(const e of t){if(!e)continue;const t=e.reduce(((t,e)=>t+e.__x),0);n.push({isbin:true,chr:e[0].chr,pos:e[0].pos,mlst:e,x:t/e.length})}}n.sort(((t,e)=>t.x-e.x));return n}function Le(t,e,s){let a=0,n=0;const i=[];const o=[];for(const e of t){delete e.__x;if(s.gmmode==x.protein&&s.usegm.codingstart&&s.usegm.codingstop){if(e.pos<s.usegm.codingstart||e.pos>s.usegm.codingstop){continue}}if(!e.chr){n++;continue}if(!Number.isInteger(e.pos)){a++;continue}const t=s.seekcoord(e.chr,e.pos);if(t.length==0){i.push(e);continue}if(t.length==1){e.__x=t[0].x}else{e.__x=t[0].x}if(e.__x<-1||e.__x>s.width+1){continue}o.push(e)}if(a+n>0){s.tkerror(e,a+n+" items have no chromosome or genomic position")}if(i.length){console.error(i.length+" items not mapped to any region");for(const t of i)console.log(t)}$e(o,e,s)}function $e(t,e,s){for(const e of t){if(s.usegm){const t=v(e.pos,s.usegm);e.rnapos=t.rnapos;e.aapos=t.aapos}if(e.dt==p){continue}if(e.dt==r||e.dt==l){if(e.pairlstIdx==0){e.useNterm=true}else{e.useNterm=false}continue}throw"unknown dt: "+e.dt}}function Ne(t,e,s,a){if(!e.skewer&&!e.cnv)return;if(!e.leftlabels.doms.variants){e.leftlabels.doms.variants=Ee(e,s,a);e.leftlabels.doms.variants.attr("data-testid","sja_variants_label")}let n,i;if(e.custom_variants){n=e.custom_variants.length}else{n=e.skewer.rawmlst.length+(t.cnv?.length||0)}if(n==0){e.leftlabels.doms.variants.text("No variants").attr("class","").style("opacity",.5).on("click",null);return}i=0;if(e.skewer){const t=e.skewer.viewModes.find((t=>t.inuse));if(t.type=="skewer"){i=e.skewer.data.filter((t=>t.x>=0&&t.x<=s.width)).reduce(((t,e)=>t+e.mlst.length),0)}else if(t.type=="numeric"){i=t.data.filter((t=>t.x>=0&&t.x<=s.width)).reduce(((t,e)=>t+e.mlst.length),0)}else{throw"unknown mode type"}}if(t.cnv)i+=t.cnv.length;if(i==0){e.leftlabels.doms.variants.text("0 out of "+n+" variant"+(n>1?"s":"")).attr("class","").style("opacity",.5).on("click",null);return}e.leftlabels.doms.variants.style("opacity",1).attr("class","sja_clbtext2").text(i<n?i+" of "+n+" variants":i+" variant"+(i>1?"s":"")).on("click",(t=>{e.menutip.clear().showunder(t.target);Re(e,s)}));return}function Re(t,e){t.menutip.d.append("div").text("List").attr("class","sja_menuoption").attr("data-testid","sja_list_menuoption").style("border-radius","0px").on("click",(()=>{Oe(t,e)}));if(t.skewer){if(t.skewer.hlssmid){t.menutip.d.append("div").text("Cancel highlight").style("border-radius","0px").attr("class","sja_menuoption").on("click",(()=>{delete t.skewer.hlssmid;t.skewer.hlBoxG.selectAll("*").remove();const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="skewer"){ye(t,e)}else if(s.type=="numeric");else{throw"unknown mode type"}t.menutip.hide()}))}const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="skewer"){const s=t.skewer.data.reduce(((t,e)=>t+e.showmode),0);if(s>0){t.menutip.d.append("div").text("Collapse").attr("class","sja_menuoption").attr("data-testid","sja_collapse_menuoption").style("border-radius","0px").on("click",(()=>{Se(t.skewer.data,t);t.menutip.hide()}))}else if(s==0){t.menutip.d.append("div").text("Expand").attr("class","sja_menuoption").attr("data-testid","sja_expand_menuoption").style("border-radius","0px").on("click",(()=>{ye(t,e);t.menutip.hide()}))}t.menutip.d.append("div").text(t.skewer.pointup?"Point down":"Point up").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.skewer.pointup=!t.skewer.pointup;t.load();t.menutip.hide()}))}else if(s.type=="numeric"){t.menutip.d.append("div").text(t.skewer.hideDotLabels?"Show all variant labels":"Hide all variant labels").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.skewer.hideDotLabels=!t.skewer.hideDotLabels;t.load();t.menutip.hide()}))}}if(!t.custom_variants){t.menutip.d.append("div").text("Download").attr("class","sja_menuoption").attr("data-testid","sjpp_mds3tk_variantdownload_menuoption").style("border-radius","0px").on("click",(()=>{Te(t,e);t.menutip.hide()}))}Ie(t,e)}async function Oe(t,a){t.menutip.clear();const n=new Map;if(t.skewer){const e=t.skewer.viewModes.find((t=>t.inuse));let s;if(e.type=="skewer"){s=t.skewer.data.filter((t=>t.x>=0&&t.x<=a.width))}else if(e.type=="numeric"){s=e.data}else{throw"unknown mode type"}for(const t of s){for(const e of t.mlst){if(!n.has(e.dt))n.set(e.dt,[]);n.get(e.dt).push(e)}}}if(t.cnv?.cnvLst){n.set(s,t.cnv.cnvLst)}if(n.size==1){const e=t.menutip.d.append("div").style("margin","10px");await Dt({div:e,mlst:n.get([...n.keys()][0]),tk:t,block:a,doNotListSample4multim:true});return}const i=[];for(const[t,s]of n){i.push({label:s.length+" "+e[t]})}new T({holder:t.menutip.d.append("div").attr("class","sja_pp_vlb_dttabdiv").style("margin","10px"),tabs:i}).main();let o=0;for(const[e,s]of n){Dt({div:i[o++].contentHolder.append("div").style("margin-left","10px"),mlst:s,tk:t,block:a,doNotListSample4multim:true})}}function Ie(t,e){if(!t.skewer)return;if(t.skewer.viewModes.length<=1){return}const s=[];for(const[e,a]of t.skewer.viewModes.entries()){const t={label:De(a),value:e};if(a.inuse)t.checked=true;s.push(t)}B({holder:t.menutip.d.append("div").attr("class","sja_pp_vlb_viewmoderadiodiv").style("margin","10px"),options:s,callback:async s=>{for(const e of t.skewer.viewModes)e.inuse=false;t.skewer.viewModes[s].inuse=true;us({skewer:t.skewer.rawmlst},t,e);Pe(t,e);t._finish()}})}function De(t){if(!t)return"MISSING!!";if(t.type=="skewer")return"As lollipops";if(t.type=="numeric")return t.label+" as Y axis";return"unknown mode"}async function Te(t,e){if(!t.mds.variant2samples){console.log("TODO: variant-only");return}const s={querytype:"samples"};Cs(t,e,s);const a=(await t.mds.variant2samples.get(s)).samples;const[n,o]=await oe(a,t);const c=[];for(const t of n){if(t.isSsm){c.push("AAchange");c.push("Consequence");c.push("Mutation");continue}if(t.isMaf){c.push("Alternative allele depth in tumor");c.push("Total depth in tumor");continue}c.push(t.label)}const d=[];for(const[e,s]of a.entries()){let a;if(Array.isArray(s.ssm_id_lst)){a=s.ssm_id_lst}else if(s.ssm_id){a=[s.ssm_id]}else{console.log("sample obj lacks ssm_id and ssm_id_lst");continue}for(const s of a){const a=t.skewer.rawmlst.find((t=>t.ssm_id==s));if(!a){console.log("ssm not found by id: "+s);continue}const c=[];for(const[t,d]of n.entries()){if(d.isSsm){if(a.dt==p){c.push(a.mname);c.push(i[a.class].label);c.push(a.chr+":"+(a.pos+1)+" "+a.ref+">"+a.alt)}else if(a.dt==r||a.dt==l){c.push("");c.push(i[a.class].label);c.push(a.pairlst[0].a.chr+":"+a.pairlst[0].a.pos+">"+a.pairlst[0].b.chr+":"+a.pairlst[0].b.pos)}continue}const n=o[e][t];if(n.bySsmid){if(s in n.bySsmid){const t=n.bySsmid[s];if(d.isMaf){c.push(t.altTumor);c.push(t.totalTumor)}else{c.push(t)}}else{c.push("")}continue}if(d.isMaf){c.push(n.altTumor);c.push(n.totalTumor);continue}c.push(n.value)}d.push(c.join("\t"))}}D(le(e)+" "+(new Date).toLocaleDateString()+".txt",c.join("\t")+"\n"+d.join("\n"))}const Be=5;const Fe="Arial";async function Ue(t,e,s){let a=0;Ne(t,e,s,a);if(e.leftlabels.doms.variants){a+=Be+s.labelfontsize}if("sampleTotalNumber"in t||e.leftlabels.doms.samples){const n=await import("./leftlabel.sample-afcdcefd.js");n.makeSampleLabel(t,e,s,a);a+=Be+s.labelfontsize;if(e.filterObj){n.makeSampleFilterLabel(t,e,s,a)}if(e.leftlabels.doms.filterObj){a+=Be+s.labelfontsize}}if(e.showCloseLeftlabel){if(!e.leftlabels.doms.close){e.leftlabels.doms.close=Ee(e,s,a).text("Close").on("click",(()=>{for(const[t,a]of s.tklst.entries()){if(a.tkid==e.tkid){s.tk_remove(t)}}}))}a+=Be+s.labelfontsize}e.leftlabels.laby=a;Pe(e,s);Ge(e);e.subtk2height.leftlabels=a+20}function Ge(t){t.leftlabels.maxwidth=t.tklabel.node().getBBox().width;for(const e in t.leftlabels.doms){t.leftlabels.maxwidth=Math.max(t.leftlabels.maxwidth,t.leftlabels.doms[e].node().getBBox().width)}}function Pe(t,e){if(t.leftlabels.laby==0){return}t.leftlabels.xoff=0;if(t.skewer){const s=t.skewer.viewModes.find((t=>t.inuse));if(s.type=="numeric"){const a=t.leftlabels.laby+Be+e.labelfontsize;if(a>s.toplabelheight+5){t.leftlabels.xoff=s.axisWidth}}}t.leftlabels.g.transition().attr("transform",`translate(-${t.leftlabels.xoff},${Be+e.labelfontsize})`)}function Ee(t,e,s){return t.leftlabels.g.append("text").attr("font-size",e.labelfontsize).attr("font-family",Fe).attr("y",e.labelfontsize/2+s).attr("text-anchor","end").attr("dominant-baseline","central").attr("class","sja_clbtext2").attr("fill","black").attr("x",e.tkleftlabel_xshift)}const He="Arial";const Ve=1;const We=.3;const Ke=5;const Qe=7;const Xe=100;const Je="#ededed";const Ye="Numeric value";function Ze(t,e,s,a){const n=ze(s,e.skewer||s.skewer.rawmlst,a).filter((t=>t.x>=0&&t.x<=a.width));t.data=n;if(!t.axisg)t.axisg=s.gleft.append("g");if(!t.axisheight)t.axisheight=150;ts(s);es(t,s,a);fs(s);return t.toplabelheight+t.maxradius+t.axisheight+t.maxradius+t.stem1+t.stem2+t.stem3+t.bottomlabelheight}function ts(t){t.skewer.g.selectAll("*").remove();if(t.skewer.nmg)t.skewer.nmg.selectAll("*").remove()}function es(t,e,s){if(!t.axisSetting){t.axisSetting={auto:1}}const a=t.data;for(const t of a){t.x0=t.x;if(t.xoffset!=undefined){t.x=t.x0+t.xoffset}}const n=Math.max(14,s.width/110);t.dotwidth=n;t.maxradius=0;for(const e of a){for(const s of e.mlst){s.radius=n/2;t.maxradius=Math.max(s.radius,t.maxradius);s.rimwidth=0;s.aa=e}}const i=ss(a,t,e,s);ls(a,t);const o=d().domain([t.minvalue,t.maxvalue]).range([0,t.axisheight]);for(const e of a){for(const s of e.mlst){if(s.__value_missing){s._y=0}else{if(s.__value_use<t.minvalue){s._y=0}else if(s.__value_use>t.maxvalue){s._y=t.axisheight}else{s._y=o(s.__value_use)}}}}if(i){t.stem1=5;t.stem2=20;t.stem3=10}else{t.stem1=0;t.stem2=0;t.stem3=0}for(const t of a){for(const s of t.mlst){e.glider.append("text").text(e.mnamegetter(s)).attr("font-family",He).attr("font-size",s.radius*2-2).each((function(){s.labwidth=this.getBBox().width})).remove()}}for(const t of a){for(const e of t.mlst){delete e.labattop;delete e.labatbottom}}if(!e.skewer.hideDotLabels){if(i){for(const t of a){if(t.mlst.length==1){const e=t.mlst[0];e.labattop=true}else{if((t.width-t.fixedgew)/(t.mlst.length-1)<Qe);else{for(const e of t.mlst){e.labattop=true}}}}}else{ns(a)}}t.toplabelheight=0;t.bottomlabelheight=0;if(t.showsamplebar||t.showgenotypebyvalue){for(const e of a){for(const s of e.mlst){t.toplabelheight=Math.max(t.toplabelheight,s.labwidth)}}}else{for(const e of a){for(const s of e.mlst){if(s.labattop){t.toplabelheight=Math.max(t.toplabelheight,s._y+s.labwidth-t.axisheight)}else if(s.labatbottom){t.bottomlabelheight=Math.max(t.bottomlabelheight,s.labwidth-s._y)}}}}{let a=s.labelfontsize+Ke+s.labelfontsize;if(e.label_stratify){a+=e.label_stratify.length*(Ke+s.labelfontsize)}t.toplabelheight=Math.max(t.toplabelheight,a)}cs(e,t,s);e.skewer.g.append("line").attr("y1",t.toplabelheight+t.maxradius).attr("y2",t.toplabelheight+t.maxradius).attr("x2",s.width).attr("stroke",Je).attr("shape-rendering","crispEdges");e.skewer.g.append("line").attr("y1",t.toplabelheight+t.maxradius+t.axisheight).attr("y2",t.toplabelheight+t.maxradius+t.axisheight).attr("x2",s.width).attr("stroke",Je).attr("shape-rendering","crispEdges");e.skewer.nmg=e.skewer.g.selectAll().data(a).enter().append("g").attr("class","sja_skg2").each((function(t){t.g=this}));e.skewer.nmg.attr("transform",(e=>"translate("+e.x+","+(t.toplabelheight+Ve+t.maxradius+t.axisheight+t.maxradius)+")"));if(i){e.skewer.nmg.append("path").attr("class","sja_aa_stem").attr("d",(e=>is(e,t))).attr("stroke",(t=>e.color4disc(t.mlst[0]))).attr("fill",(t=>t.mlst.length==1?"none":Je))}const r=e.skewer.nmg.selectAll().data((t=>t.mlst)).enter().append("g").attr("class","sja_aa_discg").each((function(t){t.g=this}));r.attr("transform",(e=>"translate("+e.xoff+","+(e._y+t.maxradius)*-1+")"));r.filter((t=>t.shapeTriangle)).append("path").attr("d",(t=>ds(t.radius))).attr("fill",(t=>e.color4disc(t))).attr("stroke","white").attr("class","sja_aa_disk_fill");r.filter((t=>t.shapeCircle)).append("circle").attr("stroke",(t=>e.color4disc(t))).attr("fill","none").attr("r",(t=>t.radius-.5)).attr("class","sja_aa_disk_fill");r.filter((t=>!t.shapeTriangle&&!t.shapeCircle)).append("circle").attr("fill",(t=>e.color4disc(t))).attr("stroke","white").attr("r",(t=>t.radius-.5)).attr("class","sja_aa_disk_fill");e.skewer.hlBoxG=r.append("g");r.filter((t=>t.shapeTriangle)).append("path").attr("d",(t=>ds(t.radius))).attr("stroke",(t=>e.color4disc(t))).attr("fill","white").attr("class","sja_aa_disckick").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>{os(a,t,e)})).on("mouseout",((t,s)=>{rs(s,e)})).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target)}));r.filter((t=>!t.shapeTriangle)).append("circle").attr("r",(t=>t.radius-.5)).attr("stroke",(t=>e.color4disc(t))).attr("class","sja_aa_disckick").attr("fill","white").attr("fill-opacity",0).attr("stroke-opacity",0).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>{os(a,t,e)})).on("mouseout",((t,s)=>{rs(s,e)})).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target)}));r.filter((t=>t.labattop||t.labatbottom)).append("text").each((function(t){t.__svg_textlabel=this})).text((t=>e.mnamegetter(t))).attr("font-family",He).attr("font-size",(t=>{t._labfontsize=Math.max(12,t.radius*1.2);return t._labfontsize})).attr("fill",(t=>e.color4disc(t))).attr("x",(e=>t.showsamplebar||t.showgenotypebyvalue?t.axisheight+t.maxradius+4:e.radius+e.rimwidth+Ve)).attr("y",(t=>t._labfontsize*We)).attr("class","sja_aa_disclabel").attr("transform",(t=>"rotate("+(t.labattop?"-":"")+"90)")).on("mousedown",(t=>{t.preventDefault()})).on("mouseover",((s,a)=>os(a,t,e))).on("mouseout",((t,s)=>rs(s,e))).on("click",((t,a)=>{de({mlst:[a]},e,s,t.target.getBoundingClientRect(),t.target.previousSibling)}))}function ss(t,e,s,a){let n=0;for(const e of t){let t=0;for(const s of e.mlst){t+=2*(s.radius+s.rimwidth)}if(e.mlst.length==1){e.width=t}else{e.width=Math.min(Xe,t);const s=e.mlst[0];const a=e.mlst[e.mlst.length-1];e.fixedgew=s.radius+s.rimwidth+a.radius+a.rimwidth}n+=e.width}if(n<=a.width){let e=0;for(const s of t){s.x=e+s.mlst[0].radius+s.mlst[0].rimwidth;e+=s.width;if(s.mlst.length==1){s.stemw=0}else{s.stemw=s.width-s.fixedgew}}as(t,a.width);for(const e of t){e.xoffset=e.x-e.x0;if(e.mlst.length==1){e.mlst[0].xoff=0;e.stemw=0}else{e.stemw=e.width-e.fixedgew;const t=e.stemw/(e.mlst.length-1);for(let s=0;s<e.mlst.length;s++){e.mlst[s].xoff=t*s}}}return true}for(const e of t){e.x=e.x0;e.xoffset=0;for(const t of e.mlst){t.xoff=0}}return false}function as(t,e){for(let s=0;s<t.length;s++){if(t[s].x0<0)continue;if(t[s].x0>e)break;while(1){let a=0,n=0;for(let i=s;i<t.length;i++){const s=t[i];if(s.x0>e){return}a+=Math.abs(s.x-s.x0-s.stemw/2);s.x++;n+=Math.abs(s.x-s.x0-s.stemw/2)}if(t[s].x>t[s].x0-t[s].stemw/2){for(let e=s;e<t.length;e++){t[e].x--}break}const i=t[t.length-1];if(i.x+i.width/2>=e){return}if(n<=a);else{for(let a=s;a<t.length;a++){if(t[a].x0>e){break}t[a].x--}break}}}}function ns(t){const e=[];for(const s of t){for(const t of s.mlst){e.push({m:t,w:2*(t.radius+t.rimwidth),x:s.x0,y:t._y})}}e.sort(((t,e)=>e.y-t.y));for(let t=0;t<e.length;t++){const s=e[t];let a=false;for(let n=0;n<t;n++){const t=e[n];if(Math.abs(s.x-t.x)<(s.w+t.w)/2-2){a=true;break}}if(!a){s.m.labattop=true}}for(let t=e.length-1;t>=0;t--){const s=e[t];if(s.m.labattop)continue;let a=false;for(let n=e.length-1;n>t;n--){const t=e[n];if(t.m.labatbottom&&Math.abs(t.x-s.x)<(t.w+s.w)/2-2){a=true;break}}if(!a){s.m.labatbottom=true}}}function is(t,e){if(t.mlst.length==1){return"M0,0v"+e.stem1+"l"+-t.xoffset+","+e.stem2+"v"+e.stem3}return"M0,0"+"v"+e.stem1+"l"+-t.xoffset+","+e.stem2+"v"+e.stem3+"v-"+e.stem3+"l"+(t.stemw+t.xoffset-1)+",-"+e.stem2+"v-"+e.stem1}function os(t,e,s){if(t.__svg_textlabel){k(t.__svg_textlabel).attr("font-size",t._labfontsize*1.1)}s.pica.g.attr("transform","translate("+(t.aa.x+t.xoff)+","+(e.toplabelheight+e.maxradius+e.axisheight-t._y)+")");const a=10;const n=4;const i=t._labfontsize||13;const o=s.color4disc(t);const r=[];if(e.tooltipPrintValue){const s=e.tooltipPrintValue(t);if(Array.isArray(s)){r.push(...s.map((t=>`${t.k} = ${t.v}`)))}}else{r.push(e.label+" = "+(t.__value_missing?"NA":t.__value_use))}if(s.mds.queries?.ld?.mOverlay?.data){if(t.ssm_id==s.mds.queries.ld.mOverlay.m.ssm_id);else{let e="?";for(const a of s.mds.queries.ld.mOverlay.data){if(a.pos==t.pos&&a.alleles==t.ref+"."+t.alt){e=a.r2;break}}r.push("r2 = "+e)}}if(!t.labattop&&!t.labatbottom){r.push(s.mnamegetter(t))}let l=0;for(const t of r){s.pica.g.append("text").attr("font-size",i).attr("font-family",He).text(t).each((function(){l=Math.max(l,this.getBBox().width)})).remove()}const c=n*2+l;let d,f,m=true;if(c+a>t.aa.x+t.xoff){m=false;f=t.radius+t.rimwidth;d=f+a}else{f=-t.radius-t.rimwidth-a;d=f-c}const u=i*r.length;s.pica.g.append("rect").attr("x",d-2).attr("y",-2-n-u/2).attr("width",4+c).attr("height",4+n*2+u).attr("fill","white");s.pica.g.append("line").attr("x1",f).attr("x2",f+a).attr("stroke","white").attr("stroke-width",3).attr("shape-rendering","crispEdges");s.pica.g.append("line").attr("x1",f).attr("x2",f+a).attr("stroke",o).attr("shape-rendering","crispEdges");s.pica.g.append("rect").attr("x",d).attr("y",-n-u/2).attr("width",c).attr("height",n*2+u).attr("fill","none").attr("stroke",o).attr("shape-rendering","crispEdges");let p=(i-u)/2;for(const t of r){s.pica.g.append("text").text(t).attr("text-anchor",m?"end":"start").attr("font-size",i).attr("font-family",He).attr("x",m?f-n:d+n).attr("y",p).attr("fill",o).attr("dominant-baseline","central");p+=i}}function rs(t,e){if(t.__svg_textlabel){k(t.__svg_textlabel).attr("font-size",t._labfontsize)}e.pica.g.selectAll("*").remove()}function ls(t,e,s){for(const e of t){for(const t of e.mlst){delete t.__value_use;delete t.__value_missing}}if(e.byAttribute){for(const s of t){for(const t of s.mlst){const s=t[e.byAttribute];if(Number.isFinite(s)){t.__value_use=s}else{t.__value_missing=true}}}}else if(e.byInfo){for(const s of t){for(const t of s.mlst){const s=t?.info?.[e.byInfo];if(Number.isFinite(s)){t.__value_use=s}else{t.__value_missing=true}}}}else{throw"unknown method of getting value"}if(e.axisSetting.auto){e.minvalue=null;e.maxvalue=null;for(const s of t){for(const t of s.mlst){if("__value_use"in t){if(e.minvalue==null){e.minvalue=t.__value_use;e.maxvalue=t.__value_use}else{e.minvalue=Math.min(e.minvalue,t.__value_use);e.maxvalue=Math.max(e.maxvalue,t.__value_use)}}}}}else if(e.axisSetting.fixed){e.minvalue=e.axisSetting.fixed.min;e.maxvalue=e.axisSetting.fixed.max}else{throw"unknown axisSetting"}}function cs(t,e,s){e.axisg.attr("transform","translate(0,"+(e.toplabelheight+e.maxradius)+")").selectAll("*").remove();const a=d().domain([e.minvalue,e.maxvalue]).range([e.axisheight,0]);const n=N().scale(a).ticks(4);if(e.isinteger){n.tickFormat(y("d"));if(e.maxvalue-e.minvalue<3){n.ticks(e.maxvalue-e.minvalue)}}L({axis:e.axisg.call(n),showline:true,fontsize:e.dotwidth});e.axisWidth=0;e.axisg.selectAll("text").each((function(){e.axisWidth=Math.max(e.axisWidth,this.getBBox().width)}));e.axisWidth+=15;let i;e.axisg.append("text").attr("fill","black").attr("font-size",e.dotwidth).attr("dominant-baseline","central").attr("text-anchor","end").attr("class","sjpp-mds3-nm-axislabel sja_clbtext2").attr("y",e.axisheight/2).attr("x",-e.axisWidth).text(e.label||Ye).each((function(){i=this.getBBox().width})).on("click",(a=>{t.menutip.clear().showunder(a.target).d.append("div").text("Cancel").attr("class","sja_menuoption").style("border-radius","0px").on("click",(()=>{t.menutip.hide();e.inuse=false;t.skewer.viewModes.find((t=>t.type=="skewer")).inuse=true;us({skewer:t.skewer.rawmlst},t,s);Pe(t,s);t._finish()}));I({holder:t.menutip.d.append("div").style("margin","10px"),noPercentile:true,callback:a=>{e.axisSetting=a;ts(t);es(e,t,s)},setting:e.axisSetting})}));t.skewer.maxwidth=e.axisWidth+i}function ds(t){return`M 0 -${t} L ${t} ${t*.7} h -${t*2} Z`}function fs(t){const e=t.mds.queries?.ld?.mOverlay?.m;if(!e)return;t.skewer.hlssmid=new Set([e.ssm_id]);qe(t)}const ms=10;function us(t,e,s){if(!e.skewer){e.subtk2height.skewer=0;return}e.skewer.maxwidth=0;bs(e,t.skewer);ps(e,t.skewer);const a=e.skewer.viewModes.find((t=>t.inuse));if(!a)throw"no mode!!";if(t.skewer){e.skewer.rawmlst=t.skewer}if(a.type=="numeric"){e.subtk2height.skewer=Ze(a,t,e,s);qe(e);return}if(a.type!="skewer")throw'mode.type is not "skewer"';if(t&&!t.skewer&&s.usegm&&s.gmmode!="genomic"&&s.pannedpx!=undefined){hs(e,s);e.skewer.selection.attr("transform",(t=>"translate("+t.x+","+t.y+")"));ye(e,s)}else{e.skewer.g.selectAll("*").remove();e.skewer.data=gs(e,s);ke(e,s)}if(!e.skewer.data||e.skewer.data.length==0){e.subtk2height.skewer=0;e.skewer.g.selectAll("*").remove();return}if(e.skewer.hlssmid){const t=[];const a=[];for(const s of e.skewer.data){let n=false;for(const t of s.groups){for(const s of t.mlst){if(e.skewer.hlssmid.has(s.ssm_id)){n=true;break}}}if(n){a.push(s)}else{t.push(s)}}Se(t,e);_e(a,e,s);qe(e)}else{ye(e,s)}e.subtk2height.skewer=e.skewer.maxheight+e.skewer.stem1+e.skewer.stem2+e.skewer.stem3}function ps(t,e){if(!t.hlaachange||!e)return;const s=new Set(t.hlaachange.split(","));delete t.hlaachange;t.skewer.hlssmid=new Set;for(const a of e){if(s.has(a.mname))t.skewer.hlssmid.add(a.ssm_id)}}function hs(t,e){for(const s of t.skewer.data){if(s.isbin){let t=0;for(const a of s.mlst){const s=e.seekcoord(a.chr,a.pos);if(a.usehitidx!=undefined&&s[a.usehitidx]){t+=s[a.usehitidx].x}else if(s.length==1){t+=s[0].x}else{console.log("cannot map item");console.log(a)}}s.x0=t/s.mlst.length;s.x=s.x0+(s.xoffset!=undefined?s.xoffset:0)}else{const t=e.seekcoord(s.chr,s.pos);if(t.length>0){s.x0=t[0].x;s.x=s.x0+(s.xoffset!=undefined?s.xoffset:0)}else{console.log("cannot map group of item");console.log(s)}}}}function gs(t,e){const s=ze(t,t.skewer.rawmlst,e);for(const t of s){t.groups=ws(t.mlst)}if(t.skewer.data&&e.pannedpx!=undefined){const e={};for(const s of t.skewer.data){e[s.chr+"."+s.pos]={mode:s.showmode,xoffset:s.xoffset,slabelrotate:s.slabelrotate}}for(const t of s){const s=t.chr+"."+t.pos;if(e[s]){t.showmode=e[s].mode;t.xoffset=e[s].xoffset;t.slabelrotate=e[s].slabelrotate}}}for(const t of s){t.occurrence=t.groups.reduce(((t,e)=>t+e.occurrence),0)}return s}function ws(t,e){const s=new Map;for(const e of t){if(!Number.isInteger(e.dt))continue;if(!s.has(e.dt))s.set(e.dt,new Map);switch(e.dt){case p:if(!s.get(e.dt).has(e.class))s.get(e.dt).set(e.class,new Map);const t=e.mname||"";if(!s.get(e.dt).get(e.class).has(t)){s.get(e.dt).get(e.class).set(t,[])}s.get(e.dt).get(e.class).get(t).push(e);break;case r:case l:if(!s.get(e.dt).has(e.class)){s.get(e.dt).set(e.class,{use5:new Map,use3:new Map})}if(e.useNterm){if(!s.get(e.dt).get(e.class).use5.has(e.mname)){s.get(e.dt).get(e.class).use5.set(e.mname,[])}s.get(e.dt).get(e.class).use5.get(e.mname).push(e)}else{if(!s.get(e.dt).get(e.class).use3.has(e.mname)){s.get(e.dt).get(e.class).use3.set(e.mname,[])}s.get(e.dt).get(e.class).use3.get(e.mname).push(e)}break;case n:case M:case j:case _:if(!s.has(e.dt)){s.set(e.dt,[])}s.get(e.dt).push(e);break;default:console.log("unknown datatype: "+e.dt);console.log(e);return}}const a=[];for(const[t,e]of s){switch(t){case p:for(const[s,n]of e){if(n.size>ms){const e=[];for(const t of n.values())e.push(...t);a.push({dt:t,mlst:e,mnameCompact:i[s].label})}else{for(const e of n.values()){a.push({dt:t,mlst:e})}}}break;case r:case l:for(const s of e.values()){if(s.use5.size>ms){const e=[];for(const t of s.use5.values())e.push(...t);a.push({dt:t,mlst:e,useNterm:true,mnameCompact:t==r?"SV":"fusion"})}else{for(const e of s.use5.values()){a.push({dt:t,mlst:e,useNterm:true})}}if(s.use3.size>ms){const e=[];for(const t of s.use3.values())e.push(...t);a.push({dt:t,mlst:e,useNterm:false,mnameCompact:t==r?"SV":"fusion"})}else{for(const e of s.use3.values()){a.push({dt:t,mlst:e,useNterm:false})}}}break;case n:case M:case j:case _:a.push({dt:t,mlst:e})}}for(const t of a){let e=0,s=0;for(const a of t.mlst){e+=a.rim1count||0;s+=a.rim2count||0}t.rim1count=e;t.rim2count=s}if(t.some((t=>Number.isFinite(t.occurrence)))){for(const t of a)t.occurrence=t.mlst.reduce(((t,e)=>t+e.occurrence),0)}else{for(const t of a)t.occurrence=t.mlst.length}a.sort(((t,e)=>e.occurrence-t.occurrence));return a}function bs(t,e){ks(t,e);for(const e of t.skewer.viewModes){if(e.type=="numeric"&&!e.inuse&&e.axisg){e.axisg.remove();delete e.axisg}}}function ks(t,e){if(e&&e.find((t=>Number.isFinite(t.occurrence)))){if(!t.skewer.viewModes.find((t=>t.type=="numeric"&&t.byAttribute=="occurrence"))){t.skewer.viewModes.push({type:"numeric",byAttribute:"occurrence",label:"Occurrence",isinteger:true})}}}function xs(t,e,s){e.cnv?.g.selectAll("*").remove();if(!t.cnv){delete e.subtk2height.cnv;return}const[a,n,i]=vs(t,e,s);e.cnv.cnvLst=n;e.cnv.absoluteMax=i;e.cnv.colorScale=d([-i,0,i],[e.cnv.lossColor,"white",e.cnv.gainColor]).clamp(true);const[o,r]=_s(a||n);if(a){for(const t of a){for(const a of t.cnvs){js(a,t.y*(o+r),o,e,s,t)}}}else{for(const t of n){js(t,t.y*(o+r),o,e,s)}}const l=(a||n).length;e.subtk2height.cnv=l*o+(l-1)*r}function vs(t,e,s){let a=0;const n=new Map;const i=[];for(const e of t.cnv){if(!e.chr)continue;if(!Number.isFinite(e.value)){if(typeof e.class=="string"){if(e.class==A){e.value=1}else if(e.class==S){e.value=-1}else{continue}}else{continue}}if(!Number.isInteger(e.start)||!Number.isInteger(e.stop))continue;const t=s.seekcoord(e.chr,e.start)[0];if(!t)continue;const o=s.seekcoord(e.chr,e.stop)[0];if(!o)continue;const r=structuredClone(e);if(t.x>o.x){r.x1=o.x;r.x2=t.x}else{r.x1=t.x;r.x2=o.x}a=Math.max(a,Math.abs(e.value));i.push(r);if(Array.isArray(e.samples)){for(const t of e.samples){if(!n.has(t.sample_id))n.set(t.sample_id,[]);n.get(t.sample_id).push(structuredClone(r))}}}let o;if(n.size){o=[];for(const[t,e]of n){e.sort(((t,e)=>t.x1-e.x1));o.push({sample_id:t,cnvs:e,x1:Math.min(...e.map((t=>t.x1))),x2:Math.max(...e.map((t=>t.x2)))})}o.sort(((t,e)=>t.x1-e.x1));for(let t=0;t<o.length;t++)o[t].y=t}else{i.sort(((t,e)=>t.x1-e.x1));Ms(i,0)}return[o,i,Math.min(e.cnv.absoluteValueRenderMax,a)]}const ys=d([40,120],[10,1]);function _s(t){if(t.length>120)return[1,0];if(t.length<40)return[10,1];return[Math.ceil(ys(t.length)),1]}function js(t,e,s,a,n,i){const o=Math.max(0,t.x1),r=Math.min(t.x2,n.width);a.cnv.g.append("rect").attr("x",o).attr("y",e).attr("width",r-o).attr("height",s).attr("fill",a.cnv.colorScale(t.value)).on("mouseover",(e=>{e.target.setAttribute("stroke","black");a.itemtip.clear().show(e.clientX,e.clientY);const s=h({holder:a.itemtip.d});const n=structuredClone(t);if(i){n.samples=[{sample_id:i.sample_id}]}Kt({mlst:[n],tk:a},s)})).on("mouseout",(t=>{t.target.setAttribute("stroke","");a.itemtip.hide()}))}function Ms(t,e){const s=[];for(const a of t){for(let t=0;t<s.length;t++){if(s[t]+e<a.x1){s[t]=a.x2;a.y=t;break}}if(!("y"in a)){a.y=s.length;s.push(a.x2)}}}async function As(t,e){e.tkcloakon(t);e.block_setheight();try{if(!t.mds||t.uninitialized){await pt(t,e)}const s=await qs(t,e);if(t.uninitialized){t.clear();delete t.uninitialized}us(s,t,e);xs(s,t,e);await Ue(s,t,e);t._finish(s)}catch(e){if(t.clear)t.clear();if(t.subtk2height)t.subtk2height.skewer=50;if(t._finish)t._finish({error:e.message||e});if(e.stack)console.log(e.stack);return}}function Ss(t,e){const s={genome:e.genome.name,forTrack:1,skewerRim:t.mds.queries?.snvindel?.skewerRim};const a={"Content-Type":"application/json",Accept:"application/json"};if(t.mds.has_skewer){s.skewer=1}if(t.set_id){s.set_id=t.set_id}if(t.filter0){s.filter0=t.filter0}if(t.filterObj){if(t.filterObj?.lst.length){s.filterObj=t.filterObj}}if(t.token){a["X-Auth-Token"]=t.token}if(t.mds.label){s.dslabel=t.mds.label}else{if(t.bcf){if(t.bcf.file){s.bcffile=t.bcf.file}else if(t.bcf.url){s.bcfurl=t.bcf.url;if(t.bcf.indexURL)s.bcfindexURL=t.bcf.indexURL}else{throw".file and .url missing for tk.bcf{}"}}}Cs(t,e,s);if(t.legend.mclass.hiddenvalues.size){s.hiddenmclasslst=[...t.legend.mclass.hiddenvalues].join(",")}if(t.legend.bcfInfo){const e={};for(const s in t.legend.bcfInfo){if(t.legend.bcfInfo[s].hiddenvalues.size){e[s]=[...t.legend.bcfInfo[s].hiddenvalues]}}if(Object.keys(e).length){s.infoFilter=e}}if(t.legend.formatFilter){const e={};for(const s in t.legend.formatFilter){if(t.legend.formatFilter[s].hiddenvalues.size){e[s]=[...t.legend.formatFilter[s].hiddenvalues]}}if(Object.keys(e).length){s.formatFilter=e}}if(t.cnv){if(t.cnv.cnvMaxLength)s.cnvMaxLength=t.cnv.cnvMaxLength;if(t.cnv.cnvGainCutoff)s.cnvGainCutoff=t.cnv.cnvGainCutoff;if(t.cnv.cnvLossCutoff)s.cnvLossCutoff=t.cnv.cnvLossCutoff}return[s,a]}async function qs(t,e){let s;if(t.custom_variants){s=await zs(t,e)}else{const[a,n]=Ss(t,e);s=await u("mds3",{body:a,headers:n})}if(s.error)throw s.error;return s}function Cs(t,e,s){if(typeof s!="object")throw"par{} is not object";let a=[];if(e.usegm){const t={chr:e.rglst[0].chr,reverse:e.rglst[0].reverse,width:0,start:null,stop:null};for(let s=e.startidx;s<=e.stopidx;s++){const a=e.rglst[s];t.width+=a.width+e.regionspace;t.start=t.start==null?a.start:Math.min(t.start,a.start);t.stop=t.stop==null?a.stop:Math.max(t.stop,a.stop)}a.push(t);if(e.gmmode=="genomic");else{s.isoform=e.usegm.isoform;s.gene=e.usegm.name}}else{a=e.tkarg_rglst(t)}let n=0;for(const t of a){t.xoff=0;n+=t.width+e.regionspace}if(e.subpanels.length==t.subpanels.length){for(const t of e.subpanels){a.push({chr:t.chr,start:t.start,stop:t.stop,width:t.width,exonsf:t.exonsf,xoff:n});n+=t.width+t.leftpad}}s.rglst=a}async function zs(t,e){const a={skewer:[],cnv:[]};let n=null,o;for(let t=e.startidx;t<=e.stopidx;t++){if(n==null){n=e.rglst[t].start;o=e.rglst[t].stop}else{n=Math.min(n,e.rglst[t].start);o=Math.max(o,e.rglst[t].stop)}}const c=new Map;for(const d of t.custom_variants){if(d.dt==s){if(d.chr!=e.rglst[0].chr)continue;if(Math.max(d.start,n)>Math.min(d.stop,o))continue;a.cnv.push(d)}else if(d.dt==p||d.dt==r||d.dt==l){if(d.chr!=e.rglst[0].chr)continue;if(d.pos<=n||d.pos>=o)continue;if(!d.class)d.class="X";if(!i[d.class])d.class="X";if(t.legend.mclass.hiddenvalues.has(d.class))continue;a.skewer.push(d)}else{throw"unknown custom data dt"}c.set(d.class,1+(c.get(d.class)||0))}if(a.cnv.length==0)delete a.cnv;const d=new Set;if(a.skewer?.some((t=>t.samples))){for(const t of a.skewer){if(t.samples){for(const e of t.samples)d.add(e.sample_id)}}}if(a.cnv?.some((t=>t.samples))){for(const t of a.cnv){if(t.samples){for(const e of t.samples)d.add(e.sample_id)}}}if(d.size)a.sampleTotalNumber=d.size;a.mclass2variantcount=[...c];await Ls(t,a.skewer);return a}async function Ls(t){if(!t.mds.queries?.ld?.mOverlay)return;if(!t.mds.termdb?.vocabApi)return;delete t.mds.queries.ld.mOverlay.data;const e=await t.mds.termdb.vocabApi.getLDdata(t.mds.queries.ld.mOverlay.ldtkname,t.mds.queries.ld.mOverlay.m);if(e.error||!Array.isArray(e.lst))return;t.mds.queries.ld.mOverlay.data=e.lst}var $s=Object.freeze({__proto__:null,loadTk:As,rangequery_rglst:Cs});export{te as d,mt as g,Ee as m,$s as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as t}from"./tslib.es6-c3c2d88f.js";import{d as i}from"./app-
|
|
1
|
+
import{_ as t}from"./tslib.es6-c3c2d88f.js";import{d as i}from"./app-2cd97738.js";class e{constructor(t){this.opts=this.validateOpts(t);this.tabs=t.tabs;this.dom={holder:t.holder};this.defaultTabWidth=90;o(this)}validateOpts(t){if(!t.holder)throw`missing opts.holder for Tabs()`;if(!Array.isArray(t.tabs))throw`invalid opts.tabs array for Tabs()`;if(!t.linePosition)t.linePosition="bottom";if(t.linePosition!="bottom"&&t.linePosition!="top"&&t.linePosition!="right"&&t.linePosition!="left")throw`Invalid .linePosition arg. Must be either bottom, top, right, or left`;if(!t.tabsPosition)t.tabsPosition="horizontal";if(t.tabsPosition!="horizontal"&&t.tabsPosition!="vertical")throw`Invalid .tabsPosition arg. Must be either vertical or horizontal`;return t}main(){return t(this,void 0,void 0,(function*(){try{yield this.render()}catch(t){if(t.stack)console.log(t.stack);else throw t}}))}}function o(e){e.render=()=>t(this,void 0,void 0,(function*(){const o=e.tabs.find((t=>t.active));if(!o)e.tabs[0].active=true;const s=e.opts.linePosition=="bottom"||e.opts.linePosition=="top"?"center":e.opts.linePosition;e.dom.tabsHolder=e.dom.holder.append("div").style(`border-${e.opts.linePosition}`,"0.5px solid #1575ad");if(!e.opts.contentHolder&&!e.opts.noContent){e.dom.contentHolder=e.dom.holder.append("div")}else e.dom.contentHolder=e.opts.contentHolder;if(e.opts.tabsPosition=="vertical"){e.dom.tabsHolder.style("display","inline-grid").style("align-items","start").style("gap",e.opts.gap||"");e.dom.contentHolder.style("display","inline-block").style("vertical-align","top").style("position","relative")}else e.dom.tabsHolder.style("display","inline-block");yield e.dom.tabsHolder.selectAll("button").data(e.tabs).enter().append("button").attr("data-testid","sja_toggle_button").attr("class","sj-toggle-button").classed("sjpp-active",(t=>t.active)).style("padding","0px").style("width",(t=>t.width?`${t.width}px`:"fit-content")).style("min-width",(t=>t.width?null:Math.max(e.defaultTabWidth))).style("border","none").style("background-color","transparent").style("display",e.opts.tabsPosition=="vertical"?"flex":"inline-grid").property("disabled",(t=>t.disabled?t.disabled():false)).each((function(o){return t(this,void 0,void 0,(function*(){o.wrapper=i(this);if(e.opts.linePosition=="right")o.wrapper.style("justify-self","end");if(e.opts.linePosition=="left")o.wrapper.style("justify-self","start");if(e.opts.linePosition=="top"||e.opts.linePosition=="left"){o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-flex":"flex");o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-block":"block")}else{o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-block":"block");o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-flex":"flex")}if(o.disabled&&o.isVisible){o.wrapper.style("cursor",o.disabled()==true&&o.isVisible()==true?"not-allowed":"pointer")}o.tab.style("color",o.active?"#1575ad":"#757373").style("text-align",s).style("padding","5px").html(o.label);o.line.style("background-color","#1575ad").style("visibility",o.active?"visible":"hidden");if(e.opts.linePosition=="top"||e.opts.linePosition=="bottom"){o.line.style("height","8px").style("padding","0px 5px")}else{o.line.style("align-self","stretch").style("padding","5px 0px").html('<span style="width: 8px";> </span>')}if(e.dom.contentHolder){o.contentHolder=e.dom.contentHolder.append("div").style("display",o.active?"block":"none");if(e.opts.tabsPosition=="horizontal"&&!e.opts.noTopContentStyle){o.contentHolder.style("padding-top","10px").style("margin-top","10px")}}if(o.active&&o.callback)yield o.callback(event,o);o.wrapper.on("mouseenter",(()=>{o.tab.style("color",o.active?"#757373":"#1575ad")})).on("mouseleave",(()=>{o.tab.style("color",o.active?"#1575ad":"#757373")}))}))})).on("click",((i,o)=>t(this,void 0,void 0,(function*(){for(const t of e.tabs){t.active=t===o}const t=e.tabs.findIndex((t=>t.active));e.update(t);if(o.callback)yield o.callback(i,o)}))));const l=e.tabs.findIndex((t=>t.active));e.update(l)}));e.update=(t=0,i={})=>{e.tabs.forEach(((i,e)=>{i.active=t===e}));e.dom.tabsHolder.selectAll("button").data(e.tabs).classed("sjpp-active",(t=>t.active)).each((t=>{t.wrapper.classed("sjpp-active",t.active);if(t.isVisible)t.wrapper.style("display",(t=>i&&t.isVisible()?"":"none"));if(t.contentHolder)t.contentHolder.style("display",t.active?"block":"none");t.tab.style("color",t.active?"#1575ad":"#757373");t.line.style("visibility",t.active?"visible":"hidden")}))}}export{e as T};
|