@sjcrh/proteinpaint-client 2.70.4-0 → 2.70.4-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (225) hide show
  1. package/dist/{2dmaf-6f2b3f88.js → 2dmaf-10bbb2ca.js} +1 -1
  2. package/dist/{AppHeader-955a82b0.js → AppHeader-12e9156c.js} +1 -1
  3. package/dist/{ColorScale-fa6a7f7e.js → ColorScale-9cbdc512.js} +1 -1
  4. package/dist/{DEanalysis-016ae3c0.js → DEanalysis-9f73323c.js} +1 -1
  5. package/dist/{Disco-8d4ac677.js → Disco-d1cc3db2.js} +1 -1
  6. package/dist/{Disco.UI-53c935e7.js → Disco.UI-dace64a2.js} +1 -1
  7. package/dist/{DragControls-afc18c4c.js → DragControls-775761a9.js} +1 -1
  8. package/dist/{DziViewer-dadc3f05.js → DziViewer-141fbac4.js} +1 -1
  9. package/dist/{FilterRxComp-864406bf.js → FilterRxComp-8de2ef58.js} +1 -1
  10. package/dist/FilterStateless-d43e3ec3.js +1 -0
  11. package/dist/{HicApp-1bc8d57a.js → HicApp-4b71d1c5.js} +1 -1
  12. package/dist/{OrbitControls-11d3262c.js → OrbitControls-904501cc.js} +1 -1
  13. package/dist/{TiaViewer-a46a911e.js → TiaViewer-0f9949f0.js} +1 -1
  14. package/dist/{adSandbox-fa648a5b.js → adSandbox-1a16d02c.js} +1 -1
  15. package/dist/{app-b469c020.js → app-3a4da08d.js} +1 -1
  16. package/dist/{app-6f0f05ed.js → app-6e44d843.js} +1 -1
  17. package/dist/app-b9010998.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/{bam-f2ee5353.js → bam-1b879efd.js} +1 -1
  20. package/dist/{barchart-a5a67224.js → barchart-fc6d5aa5.js} +1 -1
  21. package/dist/{barchart.events-821cf10c.js → barchart.events-23b1357c.js} +1 -1
  22. package/dist/{bars.renderer-b22181d6.js → bars.renderer-eea09a32.js} +1 -1
  23. package/dist/{block-0af7f0f4.js → block-407b97f8.js} +1 -1
  24. package/dist/block.lazyload-322ad0fc.js +1 -0
  25. package/dist/{block.legend-7a390a6b.js → block.legend-377553b7.js} +1 -1
  26. package/dist/{block.mds-220a07a6.js → block.mds-e77bacea.js} +1 -1
  27. package/dist/{block.mds.cnv-3342f28a.js → block.mds.cnv-442896ee.js} +1 -1
  28. package/dist/{block.mds.expressionrank-2c94a01d.js → block.mds.expressionrank-4e5e1f26.js} +1 -1
  29. package/dist/{block.mds.expressionstat-ddbea187.js → block.mds.expressionstat-6e30b00c.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-f34474ae.js → block.mds.geneboxplot-6e87d058.js} +1 -1
  31. package/dist/{block.mds.junction-08e37e56.js → block.mds.junction-35ec3c2f.js} +1 -1
  32. package/dist/{block.mds.svcnv-30bf730c.js → block.mds.svcnv-8080c594.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-5d44f2aa.js → block.mds.svcnv.share-77c51d56.js} +1 -1
  34. package/dist/{block.mds2-6580d2b3.js → block.mds2-a7032b50.js} +1 -1
  35. package/dist/{block.svg-835cf83a.js → block.svg-b8bddeb4.js} +1 -1
  36. package/dist/{block.tk.aicheck-884bd9f6.js → block.tk.aicheck-f31b486c.js} +1 -1
  37. package/dist/{block.tk.ase-f9771fa8.js → block.tk.ase-e927fb3e.js} +1 -1
  38. package/dist/{block.tk.bam-4419aa47.js → block.tk.bam-5e93c76d.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-73f2dd95.js → block.tk.bedgraphdot-f7ea53b9.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-adde40a8.js → block.tk.bigwig.ui-c703de92.js} +1 -1
  41. package/dist/{block.tk.hicstraw-7b32a02e.js → block.tk.hicstraw-68472d6b.js} +1 -1
  42. package/dist/{block.tk.junction-54a91687.js → block.tk.junction-eaac715d.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-5b056010.js → block.tk.junction.textmatrixui-8fc20be4.js} +1 -1
  44. package/dist/{block.tk.ld-1ad8a98f.js → block.tk.ld-d7482971.js} +1 -1
  45. package/dist/{block.tk.menu-69c561cf.js → block.tk.menu-114cd2df.js} +1 -1
  46. package/dist/{block.tk.pgv-78f266ba.js → block.tk.pgv-c49e8d71.js} +1 -1
  47. package/dist/{boxplot-20164653.js → boxplot-a65f7394.js} +1 -1
  48. package/dist/{brainImaging-1035cb6e.js → brainImaging-14a5433d.js} +1 -1
  49. package/dist/{brush-00c2bb22.js → brush-24ccc195.js} +1 -1
  50. package/dist/{categorical-5d8ad189.js → categorical-48f0a5cf.js} +1 -1
  51. package/dist/{condition-dac60382.js → condition-68463274.js} +1 -1
  52. package/dist/{controls-79c2ad7a.js → controls-2d1093f6.js} +1 -1
  53. package/dist/{controls.btns-3484ef98.js → controls.btns-8f035504.js} +1 -1
  54. package/dist/{controls.config-babccfed.js → controls.config-b04137d0.js} +1 -1
  55. package/dist/{controls.divide-1e07a3e0.js → controls.divide-e6c33f27.js} +1 -1
  56. package/dist/{controls.overlay-af10b295.js → controls.overlay-e37a8b33.js} +1 -1
  57. package/dist/{controls.term1-6a4aef25.js → controls.term1-02590c4c.js} +1 -1
  58. package/dist/{cuminc-8801ac11.js → cuminc-761e952c.js} +1 -1
  59. package/dist/{customdata.inputui-6f62e6a0.js → customdata.inputui-a1347d1d.js} +1 -1
  60. package/dist/{dataDownload-fd0bba52.js → dataDownload-52de8390.js} +1 -1
  61. package/dist/{databrowser.ui-ac0494b5.js → databrowser.ui-6c3a5984.js} +1 -1
  62. package/dist/{density-7cd0c670.js → density-e0ac993d.js} +1 -1
  63. package/dist/{dictionary-1d4108d6.js → dictionary-591a0afd.js} +1 -1
  64. package/dist/{drag-b013e793.js → drag-35cea852.js} +1 -1
  65. package/dist/{e2pca-88c83bee.js → e2pca-c7d1f866.js} +1 -1
  66. package/dist/{ep-66365314.js → ep-264f4459.js} +1 -1
  67. package/dist/{facet-32faadd6.js → facet-e99322e6.js} +1 -1
  68. package/dist/{fusion.parse-0150d046.js → fusion.parse-7542c334.js} +1 -1
  69. package/dist/{geneExpClustering-7bf564fc.js → geneExpClustering-376d43a9.js} +1 -1
  70. package/dist/{geneExpression-9c9463c5.js → geneExpression-41e14106.js} +1 -1
  71. package/dist/geneExpression-e479f657.js +1 -0
  72. package/dist/{geneExpression-0022c9dc.js → geneExpression-e9fc48b8.js} +1 -1
  73. package/dist/{geneORA-e81cee51.js → geneORA-52064509.js} +1 -1
  74. package/dist/{geneVariant-bce9835c.js → geneVariant-498e6ce0.js} +1 -1
  75. package/dist/geneVariant-b3224fff.js +1 -0
  76. package/dist/{genefusion.ui-66f8fdc1.js → genefusion.ui-47d1e054.js} +1 -1
  77. package/dist/{genesearch-18b93a37.js → genesearch-a28dfb78.js} +1 -1
  78. package/dist/{geneset-bb05301b.js → geneset-da1087de.js} +1 -1
  79. package/dist/{genomeBrowser-fd859c9f.js → genomeBrowser-6f6386e8.js} +1 -1
  80. package/dist/{genomeBrowser.controls-4b04a2d4.js → genomeBrowser.controls-ff2f323e.js} +1 -1
  81. package/dist/{groupsetting-69814902.js → groupsetting-1ca86c7f.js} +1 -1
  82. package/dist/{gsea-8c690560.js → gsea-30dbe7af.js} +1 -1
  83. package/dist/{hierCluster-69b55b95.js → hierCluster-8ef4b4eb.js} +1 -1
  84. package/dist/{hierCluster.config-876de22e.js → hierCluster.config-f936e95e.js} +1 -1
  85. package/dist/{hierCluster.interactivity-e8f580c9.js → hierCluster.interactivity-549fcee4.js} +1 -1
  86. package/dist/{hierCluster.renderers-7e9b62c3.js → hierCluster.renderers-b03d9a4c.js} +1 -1
  87. package/dist/{html.legend-3c1e525c.js → html.legend-feb61556.js} +1 -1
  88. package/dist/{imagePlot-8061fa14.js → imagePlot-4f11bc27.js} +1 -1
  89. package/dist/{lasso-54eaa3e7.js → lasso-8389cad4.js} +1 -1
  90. package/dist/launch.adhoc-2009f139.js +1 -0
  91. package/dist/{leftlabel.sample-fb8bf652.js → leftlabel.sample-f1df7e52.js} +1 -1
  92. package/dist/legacyDataset-3d38203e.js +1 -0
  93. package/dist/{log-cb5e556d.js → log-7d3ceb5e.js} +1 -1
  94. package/dist/{lollipop-46b2bb69.js → lollipop-823e4f15.js} +1 -1
  95. package/dist/{maf-477b5d04.js → maf-56dbe1ef.js} +1 -1
  96. package/dist/{maftimeline-744a4085.js → maftimeline-0827c2ef.js} +1 -1
  97. package/dist/{matrix-5052edcb.js → matrix-20fc3633.js} +1 -1
  98. package/dist/{matrix.cells-b082abe1.js → matrix.cells-ef3e5f22.js} +1 -1
  99. package/dist/{matrix.cluster-eb053815.js → matrix.cluster-6ae10fbe.js} +1 -1
  100. package/dist/{matrix.config-1f4ba7f4.js → matrix.config-e6b25e60.js} +1 -1
  101. package/dist/{matrix.controls-b40ba030.js → matrix.controls-95d0fd8d.js} +1 -1
  102. package/dist/{matrix.data-211cac04.js → matrix.data-92192aa4.js} +1 -1
  103. package/dist/{matrix.dom-d2c069bb.js → matrix.dom-d16c278f.js} +1 -1
  104. package/dist/{matrix.groups-d46f40ed.js → matrix.groups-861d1854.js} +1 -1
  105. package/dist/{matrix.interactivity-d6969646.js → matrix.interactivity-6cdc2ead.js} +1 -1
  106. package/dist/{matrix.layout-70aa32aa.js → matrix.layout-22fff13a.js} +1 -1
  107. package/dist/{matrix.legend-9403109e.js → matrix.legend-b1b3a087.js} +1 -1
  108. package/dist/{matrix.renderers-91e21fe9.js → matrix.renderers-fa608759.js} +1 -1
  109. package/dist/{matrix.serieses-e827e54d.js → matrix.serieses-73418918.js} +1 -1
  110. package/dist/{matrix.sort-f8be2491.js → matrix.sort-3c1fc2c4.js} +1 -1
  111. package/dist/{matrix.sorterUi-9eacbc45.js → matrix.sorterUi-5fa1ba2a.js} +1 -1
  112. package/dist/{mavb-a5de3e47.js → mavb-793e2a8f.js} +1 -1
  113. package/dist/{mds.fimo-59b4658d.js → mds.fimo-8927b797.js} +1 -1
  114. package/dist/{mds.samplescatterplot-1bc279d2.js → mds.samplescatterplot-53b1eb91.js} +1 -1
  115. package/dist/{mds.survivalplot-b4d925c3.js → mds.survivalplot-29ece1fa.js} +1 -1
  116. package/dist/metaboliteIntensity-cd6e133a.js +1 -0
  117. package/dist/{niceNumLabels-41f2ed20.js → niceNumLabels-04450193.js} +1 -1
  118. package/dist/{nodrag-e449e378.js → nodrag-f2560d20.js} +1 -1
  119. package/dist/{notify-75d3b82e.js → notify-6217df3f.js} +1 -1
  120. package/dist/{numeric-44355c76.js → numeric-72dff019.js} +1 -1
  121. package/dist/{numeric.binary-827a9c0a.js → numeric.binary-5b39dc1d.js} +1 -1
  122. package/dist/{numeric.continuous-3330c631.js → numeric.continuous-71b90c2e.js} +1 -1
  123. package/dist/numeric.discrete-f0d827b0.js +1 -0
  124. package/dist/{numeric.spline-6ae20857.js → numeric.spline-7cf0405c.js} +1 -1
  125. package/dist/{numeric.toggle-66fd4e7a.js → numeric.toggle-a8a1259d.js} +1 -1
  126. package/dist/{oncomatrix-0c894e0b.js → oncomatrix-7d8a3369.js} +1 -1
  127. package/dist/{parseData-375bad6c.js → parseData-20acd1bf.js} +1 -1
  128. package/dist/{plot.2dvaf-c3e2eff7.js → plot.2dvaf-10541358.js} +1 -1
  129. package/dist/plot.app-441e1de7.js +1 -0
  130. package/dist/plot.barplot-bb0b714e.js +1 -0
  131. package/dist/{plot.boxplot-14a4217e.js → plot.boxplot-426b0bea.js} +1 -1
  132. package/dist/{plot.brainImaging-736f62d7.js → plot.brainImaging-99f88216.js} +1 -1
  133. package/dist/{plot.disco-19a991ab.js → plot.disco-6f126fb8.js} +1 -1
  134. package/dist/{plot.dzi-484da441.js → plot.dzi-3c70e937.js} +1 -1
  135. package/dist/{plot.ssgq-100d5b32.js → plot.ssgq-aedc065d.js} +1 -1
  136. package/dist/{plot.tia-d9bd8bf7.js → plot.tia-64f34320.js} +1 -1
  137. package/dist/{plot.vaf2cov-e5848d97.js → plot.vaf2cov-46a70953.js} +1 -1
  138. package/dist/{profileBarchart-749bfdc2.js → profileBarchart-c992b146.js} +1 -1
  139. package/dist/profileHome-8c718316.js +1 -0
  140. package/dist/profilePlot-86515e01.js +1 -0
  141. package/dist/{profilePolar-8a4479c5.js → profilePolar-3e08dadf.js} +1 -1
  142. package/dist/{profileRadar-d8082180.js → profileRadar-3f1d6bef.js} +1 -1
  143. package/dist/profileRadarFacility-0da40ca8.js +1 -0
  144. package/dist/{profileSummary-9a1bd99a.js → profileSummary-bd62a8a8.js} +1 -1
  145. package/dist/{recover-1133c1bc.js → recover-af1a4195.js} +1 -1
  146. package/dist/{regression.inputs-27de07ea.js → regression.inputs-739a78c2.js} +1 -1
  147. package/dist/{regression.inputs.values.table-9fc932ad.js → regression.inputs.values.table-b4f9f099.js} +1 -1
  148. package/dist/{regression.results-da71e4c3.js → regression.results-f4ffd1c4.js} +1 -1
  149. package/dist/{renderPvalueTable-5c318920.js → renderPvalueTable-b8b12366.js} +1 -1
  150. package/dist/roundValue-67b66074.js +1 -0
  151. package/dist/{sampleScatter-9ca658a6.js → sampleScatter-86db717b.js} +1 -1
  152. package/dist/{sampleScatter.rendererThree-e700b65d.js → sampleScatter.rendererThree-c8e3f5ed.js} +2 -2
  153. package/dist/sampleView-c3a5f3e8.js +1 -0
  154. package/dist/{samplelst-0ccbbf01.js → samplelst-c1c292b5.js} +1 -1
  155. package/dist/{samplematrix-21786406.js → samplematrix-a322ddf4.js} +1 -1
  156. package/dist/{scatter-d4a5ed23.js → scatter-bd2ac5f4.js} +1 -1
  157. package/dist/select2Terms-3d45bfc0.js +1 -0
  158. package/dist/{selectGenomeWithTklst-eb5f4de2.js → selectGenomeWithTklst-1e9d40e3.js} +1 -1
  159. package/dist/{singleCellCellType-83dc7f52.js → singleCellCellType-0d30c300.js} +1 -1
  160. package/dist/{singleCellGeneExpression-3854f588.js → singleCellGeneExpression-1b26fa19.js} +1 -1
  161. package/dist/{singleCellPlot-81993221.js → singleCellPlot-119fed8e.js} +1 -1
  162. package/dist/{singlecell-4e4a3b54.js → singlecell-1fc535b4.js} +1 -1
  163. package/dist/{singlecell-a09c171a.js → singlecell-89029a9a.js} +1 -1
  164. package/dist/snp-0478ff1c.js +1 -0
  165. package/dist/{snp-bbc8f43f.js → snp-875f52ba.js} +1 -1
  166. package/dist/{snplocus-4f2e11f0.js → snplocus-3298c7bf.js} +1 -1
  167. package/dist/{spliceevent.a53ss.diagram-2c625517.js → spliceevent.a53ss.diagram-9c912484.js} +1 -1
  168. package/dist/{spliceevent.exonskip.diagram-cf4ee6d2.js → spliceevent.exonskip.diagram-100ffd1a.js} +1 -1
  169. package/dist/spliceevent.exonskip.getdefault-10e902bd.js +1 -0
  170. package/dist/{spliceevent.noeventdiagram-ac251cf8.js → spliceevent.noeventdiagram-33a24a4d.js} +1 -1
  171. package/dist/{spliceevent.phrase-703d6afe.js → spliceevent.phrase-774b5aa5.js} +1 -1
  172. package/dist/{stattable-d8f452d7.js → stattable-812b51f7.js} +1 -1
  173. package/dist/{style.gdc-0b1f3ec7.js → style.gdc-af4f2f75.js} +1 -1
  174. package/dist/{summary-4c0b714c.js → summary-c85f74f5.js} +1 -1
  175. package/dist/{sunburst-45d01de1.js → sunburst-57a6fbbb.js} +1 -1
  176. package/dist/survival-9115452e.js +1 -0
  177. package/dist/{survival-f3599afe.js → survival-ef62db18.js} +1 -1
  178. package/dist/svg.download-dfb1c538.js +1 -0
  179. package/dist/{svg.legend-376638a9.js → svg.legend-2a128bc8.js} +1 -1
  180. package/dist/{svgraph-b86fbb57.js → svgraph-86492cd0.js} +1 -1
  181. package/dist/{svmr-c0710827.js → svmr-d10b1375.js} +1 -1
  182. package/dist/{table-f1438af6.js → table-4a439020.js} +1 -1
  183. package/dist/{table-ee180aed.js → table-4ae16e8f.js} +1 -1
  184. package/dist/{termInfo-3f8fae03.js → termInfo-2c3d1c01.js} +1 -1
  185. package/dist/{termdb.bins-0d2b6a1d.js → termdb.bins-b2b3dc54.js} +1 -1
  186. package/dist/{tk-b4c2881b.js → tk-6cf63dbf.js} +1 -1
  187. package/dist/{toggleButtons-367bd754.js → toggleButtons-b50565cd.js} +1 -1
  188. package/dist/{tp.ui-83353bab.js → tp.ui-0f9033b1.js} +1 -1
  189. package/dist/tvs.density-2357e5a1.js +1 -0
  190. package/dist/{tvs.geneVariant-ba2c2223.js → tvs.geneVariant-112f63d0.js} +1 -1
  191. package/dist/{tvs.numeric-4334dc4d.js → tvs.numeric-b5585ea6.js} +1 -1
  192. package/dist/{tvs.samplelst-6fdfaf37.js → tvs.samplelst-aeccc596.js} +1 -1
  193. package/dist/{uiUtils-d2dc20e3.js → uiUtils-54423dc7.js} +1 -1
  194. package/dist/{variantBrowser-75ce9997.js → variantBrowser-2de570f2.js} +1 -1
  195. package/dist/{vcf-009d1950.js → vcf-e6039792.js} +1 -1
  196. package/dist/{violin-accf3db9.js → violin-32b2849a.js} +1 -1
  197. package/dist/{violin.interactivity-8a905715.js → violin.interactivity-a56b2dd2.js} +1 -1
  198. package/dist/{violin.renderer-66e19966.js → violin.renderer-33987359.js} +1 -1
  199. package/dist/{violinRenderer-b0263a7f.js → violinRenderer-e7605a7e.js} +1 -1
  200. package/dist/{viridis-d53a7312.js → viridis-6ea36b0a.js} +1 -1
  201. package/dist/{y-e453aba8.js → y-8723e700.js} +1 -1
  202. package/dist/{zoom-8b011c5e.js → zoom-4480a18f.js} +1 -1
  203. package/package.json +1 -1
  204. package/dist/FilterStateless-150f3ab3.js +0 -1
  205. package/dist/app-ed3943f5.js +0 -1
  206. package/dist/block.lazyload-4d56d50f.js +0 -1
  207. package/dist/geneExpression-14c2fce4.js +0 -1
  208. package/dist/geneVariant-d0d0da80.js +0 -1
  209. package/dist/launch.adhoc-1023d87f.js +0 -1
  210. package/dist/legacyDataset-c5e3a89b.js +0 -1
  211. package/dist/metaboliteIntensity-9ed1a5c1.js +0 -1
  212. package/dist/numeric.discrete-96dece96.js +0 -1
  213. package/dist/plot.app-15e1b0ec.js +0 -1
  214. package/dist/plot.barplot-8dea333b.js +0 -1
  215. package/dist/profileHome-6f72f114.js +0 -1
  216. package/dist/profilePlot-f7136257.js +0 -1
  217. package/dist/profileRadarFacility-12099217.js +0 -1
  218. package/dist/roundValue-0f4c2fb0.js +0 -1
  219. package/dist/sampleView-7cac2862.js +0 -1
  220. package/dist/select2Terms-d722ea7f.js +0 -1
  221. package/dist/snp-f862038f.js +0 -1
  222. package/dist/spliceevent.exonskip.getdefault-3416f641.js +0 -1
  223. package/dist/survival-89207f02.js +0 -1
  224. package/dist/svg.download-1b3e7530.js +0 -1
  225. package/dist/tvs.density-077cee9c.js +0 -1
@@ -1 +1 @@
1
- import{_ as t}from"./tslib.es6-62bb2d8e.js";import{M as e,bm as s,aj as n,as as i,ar as o,ao as a,ap as r,z as l,H as c,d as h,O as d,h as p,J as u}from"./app-b469c020.js";import{d as g}from"./arc-3d6751aa.js";import{p as m,c as f}from"./constant-426a1483.js";import{s as v}from"./svg.legend-376638a9.js";import{a as A,l as x}from"./line-264f8f9e.js";import{t as M}from"./math-2fb199c6.js";import{topBarInit as R}from"./controls.btns-3484ef98.js";import{configUiInit as b}from"./controls.config-babccfed.js";import"./controls.overlay-af10b295.js";import"./roundValue-0f4c2fb0.js";import"path";import"./FilterRxComp-864406bf.js";import"./table-f1438af6.js";import"./termdb.bins-0d2b6a1d.js";import"./controls.term1-6a4aef25.js";import"./controls.divide-1e07a3e0.js";var C=Math.abs;var y=Math.cos;var w=Math.sin;var I=Math.PI;var L=I/2;var D=1e-12;var T=Array.prototype.slice;function O(t){return function(){return t}}function P(t){return t.source}function N(t){return t.target}function E(t){return t.radius}function V(t){return t.startAngle}function S(t){return t.endAngle}function z(){return 0}function B(t){var e=P,s=N,n=E,i=E,o=V,a=S,r=z,l=null;function c(){var c,h=e.apply(this,arguments),d=s.apply(this,arguments),p=r.apply(this,arguments)/2,u=T.call(arguments),g=+n.apply(this,(u[0]=h,u)),f=o.apply(this,u)-L,v=a.apply(this,u)-L,A=+i.apply(this,(u[0]=d,u)),x=o.apply(this,u)-L,M=a.apply(this,u)-L;if(!l)l=c=m();if(p>D){if(C(v-f)>p*2+D)v>f?(f+=p,v-=p):(f-=p,v+=p);else f=v=(f+v)/2;if(C(M-x)>p*2+D)M>x?(x+=p,M-=p):(x-=p,M+=p);else x=M=(x+M)/2}l.moveTo(g*y(f),g*w(f));l.arc(0,0,g,f,v);if(f!==x||v!==M){if(t){var R=+t.apply(this,arguments),b=A-R,I=(x+M)/2;l.quadraticCurveTo(0,0,b*y(x),b*w(x));l.lineTo(A*y(I),A*w(I));l.lineTo(b*y(M),b*w(M))}else{l.quadraticCurveTo(0,0,A*y(x),A*w(x));l.arc(0,0,A,x,M)}}l.quadraticCurveTo(0,0,g*y(f),g*w(f));l.closePath();if(c)return l=null,c+""||null}if(t)c.headRadius=function(e){return arguments.length?(t=typeof e==="function"?e:O(+e),c):t};c.radius=function(t){return arguments.length?(n=i=typeof t==="function"?t:O(+t),c):n};c.sourceRadius=function(t){return arguments.length?(n=typeof t==="function"?t:O(+t),c):n};c.targetRadius=function(t){return arguments.length?(i=typeof t==="function"?t:O(+t),c):i};c.startAngle=function(t){return arguments.length?(o=typeof t==="function"?t:O(+t),c):o};c.endAngle=function(t){return arguments.length?(a=typeof t==="function"?t:O(+t),c):a};c.padAngle=function(t){return arguments.length?(r=typeof t==="function"?t:O(+t),c):r};c.source=function(t){return arguments.length?(e=t,c):e};c.target=function(t){return arguments.length?(s=t,c):s};c.context=function(t){return arguments.length?(l=t==null?null:t,c):l};return c}function G(){return B()}function $(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function k(t){return t}function W(){var t=k,e=$,s=null,n=f(0),i=f(M),o=f(0);function a(a){var r,l=(a=A(a)).length,c,h,d=0,p=new Array(l),u=new Array(l),g=+n.apply(this,arguments),m=Math.min(M,Math.max(-M,i.apply(this,arguments)-g)),f,v=Math.min(Math.abs(m)/l,o.apply(this,arguments)),x=v*(m<0?-1:1),R;for(r=0;r<l;++r){if((R=u[p[r]=r]=+t(a[r],r,a))>0){d+=R}}if(e!=null)p.sort((function(t,s){return e(u[t],u[s])}));else if(s!=null)p.sort((function(t,e){return s(a[t],a[e])}));for(r=0,h=d?(m-l*x)/d:0;r<l;++r,g=f){c=p[r],R=u[c],f=g+(R>0?R*h:0)+x,u[c]={data:a[c],index:r,value:R,startAngle:g,endAngle:f,padAngle:v}}return u}a.value=function(e){return arguments.length?(t=typeof e==="function"?e:f(+e),a):t};a.sortValues=function(t){return arguments.length?(e=t,s=null,a):e};a.sort=function(t){return arguments.length?(s=t,e=null,a):s};a.startAngle=function(t){return arguments.length?(n=typeof t==="function"?t:f(+t),a):n};a.endAngle=function(t){return arguments.length?(i=typeof t==="function"?t:f(+t),a):i};a.padAngle=function(t){return arguments.length?(o=typeof t==="function"?t:f(+t),a):o};return a}class F{constructor(t,e,s){this.radius=t;this.width=e;this.color=s}render(t){const e=g();const s={startAngle:0,endAngle:Math.PI*2,innerRadius:this.radius,outerRadius:this.radius+this.width,color:this.color,text:"No label"};const n=[];n.push(s);const i=t.append("g");i.selectAll("path").data(n).enter().append("path").attr("d",(t=>e(t))).attr("fill",(t=>t.color))}}class j{static create(){const t=new e({padding:5});t.d.style("border","1px solid #FFF").style("position","absolute").style("z-index",1001);return t}}var _;(function(t){t["Intrachromosomal"]="#1B9E77";t["Interchromosomal"]="#6A3D9A"})(_||(_={}));class H{static getColor(t,e){if(t!=e){return _.Interchromosomal.valueOf()}else{return _.Intrachromosomal.valueOf()}}}class U{render(t,e){let n=0;if(e.length>0){n=e[0].target.radius;const s=new F(n,2,"#6464641A");s.render(t)}const i=G().radius(n);const o=t.selectAll(".chord").data(e);const a=j.create();o.enter().append("path").attr("class","chord").attr("d",i).attr("fill",(t=>H.getColor(t.source.positionInChromosome.chromosome,t.target.positionInChromosome.chromosome))).on("mouseover",((t,e)=>{const n=s({holder:a.d});this.createTooltip(n,e);a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()}))}createTooltip(t,e){{const[e,s]=t.addRow();e.text("Data type");s.append("span").style("margin-left","5px").text("Fusion transcript")}{const s=e.source.positionInChromosome;const n=e.target.positionInChromosome;const[i,o]=t.addRow();i.text("Position");o.append("span").style("margin-left","5px").text(` ${e.source.gene?e.source.gene:""} ${s.chromosome}:${s.position} ${e.source.strand=="+"?"forward":"reverse"} > `+` ${e.target.gene?e.target.gene:""} ${n.chromosome}:${n.position} ${e.target.strand=="+"?"forward":"reverse"} `)}}}class q{constructor(t,e){this.renders=t;this.legendRenderer=e;this.fusionRenderer=new U}render(t,e){const s=t.append("div").style("display","inline-block").style("font-family","Arial");const n=s.append("svg").attr("id","sjpp_disco_plot").attr("data-testid","sjpp_disco_plot").attr("width",e.width).attr("height",e.height+e.legendHeight);const i=n.append("g").attr("class","mainG").attr("transform",`translate(${e.settings.rings.labelLinesInnerRadius+e.settings.rings.labelsToLinesDistance+100},${e.height/2})`);for(const[t,s]of this.renders){const n=e.getElements(t);const o=e.getCollisions(t);s.render(i,n,o)}this.fusionRenderer.render(i,e.fusions);this.legendRenderer.render(i,e.legend,-1*(e.settings.rings.labelLinesInnerRadius+e.settings.rings.labelsToLinesDistance+50),e.width,e.height/2)}}class X{constructor(e){this.discoApp=e;this.downloadClickListener=t=>{const e=this.discoApp.state.settings.downloadImgName||"disco.plot";const s=document.createElement("a");document.body.appendChild(s);s.addEventListener("click",(()=>{const n=new XMLSerializer;const i=new Blob([n.serializeToString(t)],{type:"image/svg+xml"});s.download=e+".svg";s.href=URL.createObjectURL(i);document.body.removeChild(s)}),false);s.click()};this.geneClickListener=(e,s)=>t(this,void 0,void 0,(function*(){const{filter:t,filter0:n}=this.discoApp.app.getState().termfilter;const i={holder:this.discoApp.app.opts.holder,genome:this.discoApp.app.opts.state.args.genome,nobox:true,query:e,tklst:[{type:"mds3",dslabel:this.discoApp.app.opts.state.dslabel,hlaachange:s.join(","),filter0:n,filterObj:t}]};const o=yield import("./app-b469c020.js").then((function(t){return t.c3}));yield o.default(i)}))}}class K{constructor(t,e,s){this.chromosomes=[];this.chromosomesOrder=[];this.keysArray=[];this.totalSizeArray=[];this.chrSizesArray=[];const n=s||e;this.settings=t;this.chromosomesOrder=[];let i=0;this.totalPadAngle=Object.keys(n).length*this.settings.padAngle;this.totalChromosomesAngle=2*Math.PI-this.totalPadAngle;for(const t in n){const e=t.slice(0,3)==="chr"?t.slice(3):t;this.chromosomesOrder.push(t);this.keysArray.push(e);this.totalSizeArray.push(i);this.chrSizesArray.push(n[t]);i+=n[t]}this.totalSize=i;let o=0;for(let t=0;t<this.keysArray.length;t++){const e=this.totalChromosomesAngle*(this.chrSizesArray[t]/i);const s=t==0?this.settings.padAngle/2:o+this.settings.padAngle;const n=t==0?this.settings.padAngle/2+e:o+this.settings.padAngle+e;const a={start:this.totalSizeArray[t],size:this.chrSizesArray[t],factor:1,startAngle:s,endAngle:n,angle:(s+n)/2,innerRadius:this.settings.chromosomeInnerRadius,outerRadius:this.settings.chromosomeInnerRadius+this.settings.chromosomeWidth,color:"#AAA",text:this.keysArray[t]};this.chromosomes.push(a);if(a.endAngle!=null){o=a.endAngle}}}}class J{constructor(t,e){this.sampleName=t;this.prioritizedGenes=e}map(t){return{dt:t.dt,mname:t.mname,mClass:t.class,gene:t.gene,chr:t.chr,ref:t.ref,alt:t.alt,position:t.pos?t.pos:t.position,poschr:t.poschr,posbins:t.posbins,poslabel:t.poslabel,sampleName:this.sampleName,ssm_id:t.ssm_id,start:t.start,stop:t.stop,value:t.value,segmean:t.segmean,isPrioritized:this.prioritizedGenes.some((e=>e==t.gene)),chrA:t.chrA,chrB:t.chrB,geneA:t.geneA,geneB:t.geneB,posA:t.posA,posB:t.posB,strandA:t.strandA,strandB:t.strandB}}}class Q{map(t,e){return this.calculatePercentileForPositivesAndNegatives(t,e)}calculatePercentileForPositivesAndNegatives(t,e){const s=t.filter((t=>t>0));const n=t.filter((t=>t<0)).map((t=>-1*t));let i=NaN;let o=NaN;if(s.length>0){i=this.calculatePercentile(s,e)}if(n.length>0){o=-1*this.calculatePercentile(n,e)}return{positive:i,negative:o}}calculatePercentile(t,e){if(t.length===0){throw new Error("Array must contain at least one element.")}const s=t.sort(((t,e)=>t-e));const n=e/100*(s.length-1);const i=Math.floor(n);const o=Math.ceil(n);const a=n-i;if(i===o){return s[i]}return s[i]+a*(s[o]-s[i])}}class Y{constructor(t,e,s,l=[]){this.labelData=[];this.nonExonicSnvData=[];this.nonExonicInnerRadius=0;this.snvRingDataMap=new Map;this.snvInnerRadius=0;this.snvData=[];this.bpx=0;this.onePxArcAngle=0;this.filteredSnvData=[];this.lohData=[];this.lohInnerRadius=0;this.cnvData=[];this.cnvInnerRadius=0;this.fusionData=[];this.fusionRadius=0;this.hasPrioritizedGenes=false;this.cnvLossMaxValue=0;this.cnvGainMaxValue=0;this.percentilePositive=0;this.percentileNegative=0;this.cnvMaxPercentileAbs=0;this.lohMaxValue=undefined;this.lohMinValue=undefined;this.snvFilter=t=>t.dt==n;this.fusionFilter=t=>t.dt==i||t.dt==o;this.cnvFilter=t=>t.dt==a;this.lohFilter=t=>t.dt==r;this.compareData=(t,e)=>{const s=this.reference.chromosomesOrder.indexOf(t.chr)-this.reference.chromosomesOrder.indexOf(e.chr);if(s!=0){return s}const n=t.pos?t.pos:t.start;const i=e.pos?e.pos:e.start;return n-i};this.settings=t;this.reference=e;this.sample=s;this.lastInnerRadious=this.settings.rings.chromosomeInnerRadius;this.gainCapped=this.settings.Disco.cnvCapping;this.lossCapped=-1*this.settings.Disco.cnvCapping;this.nonExonicFilter=e=>{if(l.length>0&&this.settings.Disco.prioritizeGeneLabelsByGeneSets){return l.includes(e.gene)&&t.rings.nonExonicFilterValues.includes(yt.snvClassLayer[e.mClass])}else{return t.rings.nonExonicFilterValues.includes(yt.snvClassLayer[e.mClass])}};this.snvRingFilter=e=>{if(l.length>0&&this.settings.Disco.prioritizeGeneLabelsByGeneSets){return l.includes(e.gene)&&t.rings.snvRingFilters.includes(yt.snvClassLayer[e.mClass])}else{return t.rings.snvRingFilters.includes(yt.snvClassLayer[e.mClass])}};this.dataObjectMapper=new J(s,l)}map(t){const e=[];t.forEach((t=>{const s=this.reference.chromosomesOrder.indexOf(t.chr);const l=this.reference.chromosomesOrder.indexOf(t.chrA);const c=this.reference.chromosomesOrder.indexOf(t.chrB);if(t.dt==n){if(s!=-1&&this.snvData.length<this.settings.snv.maxMutationCount){this.addData(t,e)}}else if(t.dt==i||t.dt==o){if(l!=-1&&c!=-1){this.addData(t,e)}}else if([a,r].includes(Number(t.dt))){this.addData(t,e)}else{throw Error("Unknown mutation type!")}}));const s=e.sort(this.compareData);if(this.settings.rings.nonExonicRingEnabled){s.forEach((t=>{this.filterNonExonicSnvData(t)}))}if(this.nonExonicSnvData.length>0){this.nonExonicInnerRadius=this.lastInnerRadious-this.settings.rings.nonExonicRingWidth;this.lastInnerRadious=this.nonExonicInnerRadius}s.forEach((t=>{this.filterSnvs(t)}));s.forEach((t=>{this.filterLohs(t)}));if(this.lohData.length>0){this.lohInnerRadius=this.lastInnerRadious-this.settings.rings.lohRingWidth;this.lastInnerRadious=this.lohInnerRadius}s.forEach((t=>{this.filterCnvs(t)}));if(this.cnvData.length>0){this.cnvInnerRadius=this.lastInnerRadious-this.settings.rings.cnvRingWidth;this.lastInnerRadious=this.cnvInnerRadius;this.cappedCnvMaxAbsValue=Math.min(this.settings.Disco.cnvCapping,Math.max(Math.abs(Y.capMaxValue(this.cnvLossMaxValue,this.gainCapped,this.lossCapped)),Math.abs(Y.capMaxValue(this.cnvGainMaxValue,this.gainCapped,this.lossCapped))));const t=(new Q).map(this.cnvData.map((t=>t.value)),this.settings.Disco.cnvPercentile);this.percentilePositive=Y.capMaxValue(t.positive,this.gainCapped,this.lossCapped);this.percentileNegative=Y.capMaxValue(t.negative,this.gainCapped,this.lossCapped);this.cnvMaxPercentileAbs=Math.min(this.settings.Disco.cnvCapping,Math.max(this.percentilePositive,Math.abs(this.percentileNegative)))}s.forEach((t=>{this.filterFusion(t)}));if(this.fusionData.length>0){this.fusionRadius=this.lastInnerRadious}const l={labelData:this.labelData,nonExonicSnvData:this.nonExonicSnvData,nonExonicInnerRadius:this.nonExonicInnerRadius,snvRingDataMap:this.snvRingDataMap,snvInnerRadius:this.snvInnerRadius,snvData:this.snvData,bpx:this.bpx,onePxArcAngle:this.onePxArcAngle,filteredSnvData:this.filteredSnvData,lohData:this.lohData,lohInnerRadius:this.lohInnerRadius,cnvData:this.cnvData,cnvInnerRadius:this.cnvInnerRadius,fusionData:this.fusionData,fusionRadius:this.fusionRadius,hasPrioritizedGenes:this.hasPrioritizedGenes,cnvGainMaxValue:this.cnvGainMaxValue,cnvLossMaxValue:this.cnvLossMaxValue,cappedCnvMaxAbsValue:this.cappedCnvMaxAbsValue,percentilePositive:this.percentilePositive,percentileNegative:this.percentileNegative,cnvMaxPercentileAbs:this.cnvMaxPercentileAbs,lohMaxValue:this.lohMaxValue,lohMinValue:this.lohMinValue};return l}addData(t,e){const s=this.dataObjectMapper.map(t);if(s.isPrioritized){this.hasPrioritizedGenes=true}e.push(s)}filterNonExonicSnvData(t){if(this.snvFilter(t)){if(this.settings.rings.nonExonicRingEnabled&&this.nonExonicFilter(t)){this.nonExonicSnvData.push(t)}}}filterSnvs(t){if(this.snvFilter(t)){this.snvData.push(t);if(this.snvRingFilter(t)){if(this.snvInnerRadius==0){this.snvInnerRadius=this.lastInnerRadious-this.settings.rings.snvRingWidth;this.lastInnerRadious=this.snvInnerRadius;this.bpx=Math.floor(this.reference.totalSize/(this.reference.totalChromosomesAngle*this.snvInnerRadius));this.onePxArcAngle=1/this.snvInnerRadius}this.filteredSnvData.push(t);this.labelData.push(t);const e=this.calculateArcAngle(t);let s=this.snvRingDataMap.get(e);if(!s){s=new Array}s.push(t);this.snvRingDataMap.set(e,s)}}}filterFusion(t){if(this.fusionFilter(t)){t.isPrioritized=true;this.fusionData.push(t);this.labelData.push(t)}}filterLohs(t){if(this.lohFilter(t)){if(this.lohMaxValue==undefined||this.lohMaxValue<t.value){this.lohMaxValue=t.segmean}if(this.lohMinValue==undefined||this.lohMinValue>t.value){this.lohMinValue=t.segmean}this.lohData.push(t)}}filterCnvs(t){if(this.cnvFilter(t)){if(this.cnvGainMaxValue==undefined||this.cnvGainMaxValue<t.value){this.cnvGainMaxValue=t.value}if(this.cnvLossMaxValue==undefined||this.cnvLossMaxValue>t.value){this.cnvLossMaxValue=t.value}this.cnvData.push(t)}}calculateArcAngle(t){const e=this.reference.chromosomes[this.reference.chromosomesOrder.findIndex((e=>t.chr==e))];const s=Math.floor(t.position/this.bpx);return e.startAngle+s*this.onePxArcAngle}static capMaxValue(t,e,s){if(t&&Math.sign(t)==1){return t>e?e:t}if(Math.sign(t)==-1){return t<s?s:t}return 0}static capMinValue(t,e=1){if(Math.sign(t)==1){return t>e?t:e}if(Math.sign(t)==-1){return t<-1*e?t:-1*e}return 1}}class Z{constructor(t,e,s,n,i,o,a,r,l){this.snvTitle=t;this.cnvTitle=e;this.lohTitle=s;this.fusionTitle=n;this.snvClassMap=i;this.cnvClassMap=o;this.cnvRenderingType=a;this.lohLegend=l;this.fusionLegend=r}legendCount(){return(this.snvClassMap.size>0?1:0)+(this.cnvClassMap.size>0?1:0)+(this.lohLegend?1:0)+(this.fusionLegend?1:0)}}class tt{constructor(t,e,s,n,i){this.source=t;this.target=e;this.genes=s;this.count=n;this.endpts=i}}class et{constructor(t,e,s,n,i,o,a,r){this.startAngle=t;this.endAngle=e;this.radius=s;this.gene=n;this.value=i;this.genes=o;this.positionInChromosome=a;this.strand=r}}class st{constructor(t,e,s){this.radius=t;this.sampleName=e;this.reference=s}map(t){const e=[];t.forEach((t=>{const s=new Set;s.add(t.geneA);s.add(t.geneB);const n=new et(this.calculateStartAngle(t.chrA,t.posA),this.calculateEndAngle(t.chrA,t.posA),this.radius,t.geneA,t.value,s,{chromosome:t.chrA,position:t.posA},t.strandA);const i=new et(this.calculateStartAngle(t.chrB,t.posB),this.calculateEndAngle(t.chrB,t.posB),this.radius,t.geneB,t.value,s,{chromosome:t.chrB,position:t.posB},t.strandB);const o=new tt(n,i,"genes",-1,"Endpoints");e.push(o)}));return e}calculateStartAngle(t,e){const s=this.reference.chromosomesOrder.indexOf(t);const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)-.01}calculateEndAngle(t,e){const s=this.reference.chromosomesOrder.indexOf(t);const n=this.reference.chromosomes[s];return.01+n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}}class nt{static provide(t){const e=Math.min(Math.max(t,0),1);const s=Math.round(e*255);return`rgb(${s}, ${s}, ${s})`}}class it{constructor(t,e){this.minValue=t;this.maxValue=e;this.colorStartValue=nt.provide(t);this.colorEndValue=nt.provide(e)}}var ot;(function(t){t[t["CHROMOSOME"]=0]="CHROMOSOME";t[t["LABEL"]=1]="LABEL";t[t["NONEXONICSNV"]=2]="NONEXONICSNV";t[t["SNV"]=3]="SNV";t[t["CNV"]=4]="CNV";t[t["LOH"]=5]="LOH";t[t["FUSION"]=6]="FUSION"})(ot||(ot={}));class at{constructor(t,e,s,n,i,o,a){this.settings=t;this.rings=e;this.legend=s;this.fusions=n;this.genesetName=o;this.width=1.2*(this.settings.horizontalPadding+this.settings.rings.labelLinesInnerRadius+this.settings.rings.labelsToLinesDistance);this.height=2*(this.settings.rings.labelLinesInnerRadius+this.settings.rings.labelsToLinesDistance+this.settings.verticalPadding);this.legendHeight=this.calculateLegendHeight(s);this.snvDataLength=i.snvData.length;this.filteredSnvDataLength=i.filteredSnvData.length;this.snvDataLengthAll=a;this.cnvMaxValue=i.cnvGainMaxValue;this.cnvMinValue=i.cnvLossMaxValue;this.cappedCnvMaxAbsValue=i.cappedCnvMaxAbsValue;this.negativePercentile80=i.percentileNegative;this.positivePercentile80=i.percentilePositive}getElements(t){switch(t){case ot.CHROMOSOME:return this.rings.chromosomesRing?this.rings.chromosomesRing.elements:[];case ot.LABEL:return this.rings.labelsRing.elementsToDisplay;case ot.NONEXONICSNV:return this.rings.nonExonicArcRing?this.rings.nonExonicArcRing.elements:[];case ot.SNV:return this.rings.snvArcRing?this.rings.snvArcRing.elements:[];case ot.CNV:return this.rings.cnvArcRing?this.rings.cnvArcRing.elements:[];case ot.LOH:return this.rings.lohArcRing?this.rings.lohArcRing.elements:[];default:throw new Error(`ringType ${t} not defined`)}}getCollisions(t){if(t==ot.LABEL){return this.rings.labelsRing.collisions}else{return undefined}}calculateLegendHeight(t){const e=this.settings.legend.rowHeight;return e*t.legendCount()}}class rt{constructor(t,e,s){this.innerRadius=t;this.outerRadius=t+e;this.width=e;this.elements=s}}class lt{constructor(){const t={};for(const e in l){t[l[e].label]=l[e];t[e]=l[e]}this.mlabel=t}static getInstance(){if(!lt.instance){lt.instance=new lt}return lt.instance}}class ct{constructor(t,e,s){this.snvType=t;this.color=e;this.count=s}}class ht{constructor(t,e,s,n){this.snvClassMap=new Map;this.svnInnerRadius=t;this.svnWidth=e;this.sampleName=s;this.reference=n;this.bpx=Math.floor(this.reference.totalSize/(this.reference.totalChromosomesAngle*t));this.onePxArcAngle=1/t}map(t){const e=[];for(const s of t.keys()){const n=t.get(s);if(n){const t=n.length;for(let i=0;i<n.length;i++){const o=n[i];const a=this.snvClassMap.get(o.mClass);if(a){this.snvClassMap.set(o.mClass,this.createSnvLegend(o.mClass,++a.count))}else{this.snvClassMap.set(o.mClass,this.createSnvLegend(o.mClass,1))}const r=s;const l=s+this.onePxArcAngle;const c=lt.getInstance().mlabel?lt.getInstance().mlabel[o.mClass]:undefined;const h={startAngle:r,endAngle:l,innerRadius:this.svnInnerRadius+i*this.svnWidth/t,outerRadius:this.svnInnerRadius+(i+1)*this.svnWidth/t,color:c.color,text:o.gene,dataClass:c.label,mname:o.mname,chr:o.chr,pos:o.position,sampleName:[o.sampleName]};e.push(h)}}}return e}createSnvLegend(t,e){const s=lt.getInstance().mlabel[t];return new ct(s.label,s.color,e)}}class dt{constructor(t,e,s,n){this.text=t;this.cnvType=e;this.color=s;this.value=n}}var pt;(function(t){t[t["Loss"]=0]="Loss";t[t["Gain"]=1]="Gain";t[t["Cap"]=2]="Cap"})(pt||(pt={}));var ut;(function(t){t["heatmap"]="heatmap";t["bar"]="bar"})(ut||(ut={}));class gt{static getColor(t,e,s=0){const n=e.cnv;const i=e.Disco.cnvRenderingType==ut.heatmap?e.Disco.cnvCapping:s;const o=e.Disco.cnvRenderingType==ut.heatmap?-1*e.Disco.cnvCapping:-1*s;if(t<o){return n.cappedLossColor}else if(t>=o&&t<=0){return n.lossColor}else if(t>0&&t<=i){return n.ampColor}else{return n.cappedAmpColor}}}class mt{constructor(t,e,s,n,i,o=0,a=0,r=0,l=0,c="",h){this.cnvClassMap=new Map;this.cnvInnerRadius=t;this.cnvWidth=e;this.settings=s;this.sampleName=n;this.reference=i;this.cnvMaxValue=o;this.cnvMinValue=a;this.cnvMaxAbsValue=r;this.cnvAbsPercentile=l;this.cnvUnit=c;this.cnvRenderingType=h;this.gainCapped=Math.min(l,this.settings.Disco.cnvCapping);this.lossCapped=-1*Math.min(l,this.settings.Disco.cnvCapping);this.lossOnly=o<=0;this.gainOnly=a>=0;this.onePxArcAngle=1/this.cnvInnerRadius;const d=new dt("Max",o>0?pt.Gain:pt.Loss,this.getColor(o),o);const p=new dt("Min",a>0?pt.Gain:pt.Loss,this.getColor(a),a);const u=new dt("Capping",pt.Loss,this.getColor(a>0?a:o),this.settings.Disco.cnvCapping);this.cnvClassMap.set(pt.Gain,d);this.cnvClassMap.set(pt.Loss,p);this.cnvClassMap.set(pt.Cap,u)}map(t){const e=[];t.forEach((t=>{let s=this.calculateStartAngle(t);let n=this.calculateEndAngle(t);if(n-s<this.onePxArcAngle){const t=this.onePxArcAngle-(n-s);s=s-t/2;n=s+t/2}const i=this.calculateInnerRadius(t);const o=this.calculateOuterRadius(t);const a=this.getColor(t.value);const r={startAngle:s,endAngle:n,innerRadius:i,outerRadius:o,color:a,text:t.gene,chr:t.chr,start:t.start,stop:t.stop,value:t.value,unit:this.cnvUnit,sampleName:[this.sampleName]};e.push(r)}));return e}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.start)/s.size)}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.stop)/s.size)}getColor(t){return gt.getColor(t,this.settings,this.cnvAbsPercentile)}calculateInnerRadius(t){if(this.cnvRenderingType==ut.heatmap){return this.cnvInnerRadius}if(this.gainOnly){return this.cnvInnerRadius}if(this.lossOnly){const e=this.cnvInnerRadius+this.cnvWidth;return e+Y.capMinValue(this.cnvWidth*Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile)}const e=this.cnvInnerRadius+this.cnvWidth/2;if(Math.sign(t.value)==1){return e}if(Math.sign(t.value)==-1){return e+Y.capMinValue(Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile*(this.cnvWidth/2))}return 1}calculateOuterRadius(t){const e=this.cnvInnerRadius+this.cnvWidth;if(this.cnvRenderingType==ut.heatmap){return e}if(this.gainOnly){return this.cnvInnerRadius+Y.capMinValue(this.cnvWidth*Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile)}if(this.lossOnly){return e}const s=this.cnvInnerRadius+this.cnvWidth/2;if(Math.sign(t.value)==1){return s+Y.capMinValue(Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvMaxAbsValue*(this.cnvWidth/2))}if(Math.sign(t.value)==-1){return s}return 1}}class ft{constructor(t,e){this.points=new Array;this.points=t;this.color=e}}class vt{static createLabel(t,e,s,n,i,o,a,r,l,c,h=false,d,p,u){const g=(t+e)/2;const m=g-Math.PI/2;const f=`rotate(${g*180/Math.PI-90}) translate(${n})${g>Math.PI?"rotate(180)":""}`;const v=g>Math.PI?"end":"";const A=s;const x=n-d;const M=[];const R={x:A*Math.cos(m),y:A*Math.sin(m)};const b={x:x*Math.cos(m),y:x*Math.sin(m)};M.push(R);M.push(b);const C=new ft(M,a);const y={startAngle:t,endAngle:e,innerRadius:s,outerRadius:n,angle:g,value:i,text:o,color:a,transform:f,textAnchor:v,ccAngle:m,line:C,isPrioritized:h,start:c,stop:c,chr:l,mutationsTooltip:p?[p]:undefined,fusionTooltip:u?[u]:undefined};return y}static createMovedLabel(t,e){const s=t.startAngle+e;const n=t.endAngle+e;const i=(s+n)/2;const o=i-Math.PI/2;const a=t.innerRadius;const r=t.outerRadius-2;const l=(r-a)/3;const c=Math.cos(t.ccAngle);const h=Math.sin(t.ccAngle);const d=Math.cos(t.ccAngle+e);const p=Math.sin(t.ccAngle+e);const u=[];const g={x:a*c,y:a*h};const m={x:(a+l)*c,y:(a+l)*h};const f={x:(a+2*l)*d,y:(a+2*l)*p};const v={x:(a+3*l)*d,y:(a+3*l)*p};u.push(g);u.push(m);u.push(f);u.push(v);const A=new ft(u,t.color);const x="rotate("+(i*180/Math.PI-90)+")"+"translate("+t.outerRadius+")"+(i>Math.PI?"rotate(180)":"");const M=i>Math.PI?"end":"";const R=t.mutationsTooltip?t.mutationsTooltip[0].color:t.fusionTooltip?t.fusionTooltip[0].color:undefined;const b={startAngle:s,endAngle:n,innerRadius:t.innerRadius,outerRadius:t.outerRadius,angle:i,value:t.value,text:t.text,transform:x,textAnchor:M,ccAngle:o,color:R,line:A,isPrioritized:t.isPrioritized,start:t.start,stop:t.stop,chr:t.chr,mutationsTooltip:t.mutationsTooltip,fusionTooltip:t.fusionTooltip};return b}}class At{constructor(t,e,s,n=0){this.labelMap=new Map;this.settings=t;this.sampleName=e;this.reference=s;this.cnvMaxPercentileAbs=n}map(t,e=[]){const s=this.settings.rings.labelLinesInnerRadius;const o=s+this.settings.rings.labelsToLinesDistance;t.forEach((t=>{if(t.dt==n){const e=this.calculateStartAngle(t.chr,t.position);const n=this.calculateEndAngle(t.chr,t.position);const i=lt.getInstance().mlabel?lt.getInstance().mlabel[t.mClass]:undefined;this.addLabelOrMutation(t,t.gene,t.mname,e,n,s,o,i.color,i.label)}if(t.dt==i){const e=H.getColor(t.chrA,t.chrB);if(t.geneA){const n=this.calculateStartAngle(t.chrA,t.posA);const i=this.calculateEndAngle(t.chrA,t.posA);this.addLabelOrFusion(t,t.geneA,t.posA,n,i,s,o,e)}if(t.geneB&&t.geneA!=t.geneB){const n=this.calculateStartAngle(t.chrB,t.posB);const i=this.calculateEndAngle(t.chrB,t.posB);this.addLabelOrFusion(t,t.geneB,t.posB,n,i,s,o,e)}}}));const a=Array.from(this.labelMap.values());a.forEach((t=>{e.forEach((e=>{if(t.stop>=e.start&&e.stop>=t.start&&t.chr==e.chr){const s={value:e.value,color:gt.getColor(e.value,this.settings,this.cnvMaxPercentileAbs),chr:e.chr,start:e.start,stop:e.stop};if(t.cnvTooltip){t.cnvTooltip.push(s)}else{t.cnvTooltip=[];t.cnvTooltip.push(s)}}}))}));return Array.from(this.labelMap.values())}addLabelOrMutation(t,e,s,n,i,o,a,r,l){const c=this.labelMap.get(e);const h={mname:s,color:r,dataClass:l,chr:t.chr,position:t.position};if(!c){this.labelMap.set(e,vt.createLabel(n,i,o,a,t.value,e,r,l,t.chr,t.position,t.isPrioritized,this.settings.rings.labelsToLinesGap,h))}else{if(c.mutationsTooltip){c.start=Math.min(c.start,t.position);c.stop=Math.max(c.stop,t.position);c.mutationsTooltip.push(h)}else{c.mutationsTooltip=[];c.start=Math.min(c.start,t.position);c.stop=Math.max(c.stop,t.position);c.mutationsTooltip.push(h)}}}addLabelOrFusion(t,e,s,n,i,o,a,r){const l=this.labelMap.get(e);const c={color:r,chrA:t.chrA,chrB:t.chrB,posA:t.posA,posB:t.posB,geneA:t.geneA,geneB:t.geneB,strandA:t.strandA,strandB:t.strandB};if(!l){this.labelMap.set(e,vt.createLabel(n,i,o,a,t.value,e,r,"Fusion transcript",t.chr,t.position,t.isPrioritized,this.settings.rings.labelsToLinesGap,undefined,c))}else{if(l.fusionTooltip){l.start=Math.min(l.start,s);l.stop=Math.max(l.stop,s);l.fusionTooltip.push(c)}else{l.fusionTooltip=[];l.start=Math.min(l.start,s);l.stop=Math.max(l.stop,s);l.fusionTooltip.push(c)}}}calculateStartAngle(t,e){const s=this.reference.chromosomesOrder.findIndex((e=>e==t));const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}calculateEndAngle(t,e){const s=this.reference.chromosomesOrder.findIndex((e=>e==t));const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}}class xt extends rt{constructor(t,e,s){super(t.rings.labelLinesInnerRadius,t.rings.labelsToLinesDistance,e.sort(((t,e)=>t.startAngle<e.startAngle?-1:t.startAngle>e.startAngle?1:0)));this.elementsToDisplay=[];this.settings=t;this.hasPrioritizedGenes=s;const n=2*Math.PI*(t.rings.labelLinesInnerRadius+t.rings.labelsToLinesDistance);this.overlapAngle=this.settings.label.overlapAngleFactor*this.settings.label.fontSize/n;this.calculateCollisions()}calculateCollisions(){this.collisions=[];let t=[];t=this.elements.filter((t=>t.isPrioritized));if(this.settings.label.prioritizeGeneLabelsByGeneSets){this.elementsToDisplay=this.getLabelsWithPrioritizedGenes(t)}else if(this.hasPrioritizedGenes){const t=this.elements.filter((t=>t.isPrioritized));const e=this.getLabelsWithPrioritizedGenes(t);const s=this.elements.filter((t=>!t.isPrioritized));const n=[...s,...e].sort(((t,e)=>t.startAngle-e.startAngle));this.elementsToDisplay=this.getAllLabels(n)}else{this.elementsToDisplay=this.getLabelsWithPrioritizedGenes(this.elements)}}getLabelsWithPrioritizedGenes(t){const e=[];let s={endAngle:0};t.forEach(((t,n)=>{if(n==0){e.push(t);s=t}else{const n=s.endAngle-t.startAngle+this.overlapAngle;if(n>0&&n<this.settings.label.maxDeltaAngle){const i=vt.createMovedLabel(t,n);e===null||e===void 0?void 0:e.push(i);s=i}if(n<=0){e.push(t);s=t}}}));return e}getAllLabels(t){var e;const s=[];let n={endAngle:0};const i=t.length;let o=-1;for(let a=0;a<t.length;a++){const r=t[a];if(r.isPrioritized){s.push(r);o=a;n=r;continue}if(a==0){if(i>1){if(this.isElementOverlappingNextCancerGene(t,o,r,0)){continue}s.push(r);n=r}continue}const l=n.endAngle-r.startAngle+this.overlapAngle;if(l>0&&l<this.settings.label.maxDeltaAngle){if(a==length-1){s.push(r);continue}if(this.isElementOverlappingNextCancerGene(t,o,r,l)){continue}const i=vt.createMovedLabel(r,l);(e=this.collisions)===null||e===void 0?void 0:e.push(i);s.push(r);n=i}if(l<=0){if(this.isElementOverlappingNextCancerGene(t,o,r,0)){continue}s.push(r);n=r}}return s}isElementOverlappingNextCancerGene(t,e,s,n){const i=this.getNextLabelWithCancerGene(t,e);if(i){const t=s.endAngle+n-i.startAngle+this.overlapAngle;if(t>0){return true}}return false}getNextLabelWithCancerGene(t,e){return t.find(((t,s)=>t.isPrioritized&&s>e))}}class Mt{constructor(t,e,s,n){this.nonExonicInnerRadius=t;this.nonExonicWidht=e;this.sampleName=s;this.reference=n;this.onePxArcAngle=1/t}map(t){const e=this.nonExonicInnerRadius;const s=e+this.nonExonicWidht;const n=[];t.forEach((t=>{const i=lt.getInstance().mlabel?lt.getInstance().mlabel[t.mClass]:undefined;const o=this.calculateStartAngle(t);const a=this.calculateEndAngle(t);const r={startAngle:o,endAngle:a,innerRadius:e,outerRadius:s,color:i.color,text:t.gene,dataClass:i.label,mname:t.mname,chr:t.chr,pos:t.position,sampleName:[t.sampleName]};n.push(r)}));return n}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.position)/s.size)-this.onePxArcAngle}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return this.onePxArcAngle+s.startAngle+(s.endAngle-s.startAngle)*(Number(t.position)/s.size)}}class Rt{constructor(t,e,s,n){this.lohInnerRadius=t;this.lohWidth=e;this.sampleName=s;this.reference=n}map(t){const e=[];t.forEach((t=>{const s=this.calculateStartAngle(t);const n=this.calculateEndAngle(t);const i=this.lohInnerRadius;const o=i+this.lohWidth;const a=nt.provide(t.segmean);const r={startAngle:s,endAngle:n,innerRadius:i,outerRadius:o,color:a,text:t.gene,chr:t.chr,start:t.start,stop:t.stop,value:t.segmean};e.push(r)}));return e}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.start)/s.size)}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.stop)/s.size)}}class bt{constructor(t,e,s,n,i,o){this.labelsRing=t;this.chromosomesRing=e;this.nonExonicArcRing=s;this.snvArcRing=n;this.cnvArcRing=i;this.lohArcRing=o}}class Ct{constructor(t,e,s,n,i){this.nonExonicArcRing=undefined;this.settings=t;this.dataMapper=e;this.reference=s;this.sampleName=n;this.genesetName=i}map(t){const e=this.dataMapper.map(t);const s=new At(this.settings,this.sampleName,this.reference,e.cnvMaxPercentileAbs);const i=s.map(e.labelData,e.cnvData);const o=new xt(this.settings,i,e.hasPrioritizedGenes);const a=new rt(this.settings.rings.chromosomeInnerRadius,this.settings.rings.chromosomeWidth,this.reference.chromosomes);const r=new Mt(e.nonExonicInnerRadius,this.settings.rings.nonExonicRingWidth,this.sampleName,this.reference);const l=r.map(e.nonExonicSnvData);if(l.length>0){this.nonExonicArcRing=new rt(e.nonExonicInnerRadius,this.settings.rings.nonExonicRingWidth,l)}this.snvArcsMapper=new ht(e.snvInnerRadius,this.settings.rings.snvRingWidth,this.sampleName,this.reference);const c=this.snvArcsMapper.map(e.snvRingDataMap);if(c.length>0){this.snvArcRing=new rt(e.snvInnerRadius,this.settings.rings.snvRingWidth,c)}const h=new Rt(e.lohInnerRadius,this.settings.rings.lohRingWidth,this.sampleName,this.reference);const d=h.map(e.lohData);if(d.length>0){this.lohArcRing=new rt(e.lohInnerRadius,this.settings.rings.lohRingWidth,d)}this.cnvArcsMapper=new mt(e.cnvInnerRadius,this.settings.rings.cnvRingWidth,this.settings,this.sampleName,this.reference,e.percentilePositive,e.percentileNegative,e.cappedCnvMaxAbsValue,e.cnvMaxPercentileAbs,this.settings.cnv.unit,this.settings.Disco.cnvRenderingType);const p=this.cnvArcsMapper.map(e.cnvData);if(p.length>0){this.cnvArcRing=new rt(e.cnvInnerRadius,this.settings.rings.cnvRingWidth,p)}const u=new st(e.fusionRadius,this.sampleName,this.reference);const g=u.map(e.fusionData);let m;if(this.settings.legend.lohLegendEnabled&&e.lohMinValue&&e.lohMaxValue){m=new it(e.lohMinValue,e.lohMaxValue)}const f=new Z(this.settings.legend.snvTitle,this.settings.legend.cnvTitle,this.settings.legend.lohTitle,this.settings.legend.fusionTitle,this.snvArcsMapper?this.snvArcsMapper.snvClassMap:new Map,this.cnvArcsMapper?this.cnvArcsMapper.cnvClassMap:new Map,this.settings.Disco.cnvRenderingType,g.length>0,m);const v=new bt(o,a,this.nonExonicArcRing,this.snvArcRing,this.cnvArcRing,this.lohArcRing);return new at(this.settings,v,f,g,e,this.genesetName,t.filter((t=>t.dt==n)).length)}}class yt{constructor(t){this.settings=t}map(t){var e,s;const n=t.args.chromosomes;const i=t.args.genome.majorchr;const o=t.args.sampleName;const a=t.args.genome;const r=((e=a===null||a===void 0?void 0:a.geneset)===null||e===void 0?void 0:e[0])?a.geneset[0].lst:[];const l=((s=a===null||a===void 0?void 0:a.geneset)===null||s===void 0?void 0:s[0])?a.geneset[0].name:"";const c=t.args.data;const h=new K(this.settings,i,n);const d=new Y(this.settings,h,o,r);return new Ct(this.settings,d,h,o,l).map(c)}}yt.snvClassLayer={M:"exonic",E:"exonic",F:"exonic",N:"exonic",S:"exonic",D:"exonic",I:"exonic",P:"exonic",L:"exonic",Utr3:"exonic",Utr5:"exonic",mnv:"non-exonic",ITD:"non-exonic",insertion:"non-exonic",deletion:"non-exonic",Intron:"non-exonic",X:"non-exonic",noncoding:"non-exonic"};class wt{constructor(t){this.cappedCnvMaxAbsValue=t}map(t){const e=[];let s=0;if(t.snvClassMap){this.mapSnv(t,e,s++)}if(t.cnvRenderingType==ut.heatmap){this.mapCnvHeatmap(t,e,s++)}else if(t.cnvRenderingType==ut.bar){if(t.cnvClassMap){this.mapCnvBar(t,e,s++)}}if(t.lohLegend){this.mapLoh(t,e,s++)}if(t.fusionLegend){this.mapFusion(t,e,s++)}return e}mapSnv(t,e,s){const n=[];let i=0;for(const[e,s]of t.snvClassMap){n.push({termid:t.snvTitle,key:e,text:`${s.snvType} (${s.count})`,color:s.color,order:i++,border:"1px solid #ccc"})}e.push({name:t.snvTitle,order:s,items:n})}mapCnvBar(t,e,s){if(!t.cnvClassMap)return;const n=t.cnvClassMap.get(pt.Gain);const i=t.cnvClassMap.get(pt.Loss);const o=t.cnvClassMap.get(pt.Cap);if(n&&i&&o){let a=0;const r=[];if(n.value>0){r.push({termid:t.cnvTitle,key:pt.Gain,text:`Max: ${n.value}`,color:n.color,order:a++,border:"1px solid #ccc"})}if(i.value<0){r.push({termid:t.cnvTitle,key:pt.Loss,text:`Min: ${i.value}`,color:i.color,order:a++,border:"1px solid #ccc"})}r.push({termid:t.cnvTitle,key:pt.Cap,text:`Capping: ${o.value}`,color:o.color,order:a++,border:"1px solid #ccc"});e.push({name:t.cnvTitle,order:s,items:r})}}mapCnvHeatmap(t,e,s){if(!t.cnvClassMap)return;const n=t.cnvClassMap.get(pt.Gain);const i=t.cnvClassMap.get(pt.Loss);const o=t.cnvClassMap.get(pt.Cap);if(n&&i&&o){let a=0;const r=[];if(n.value>0){r.push({termid:t.cnvTitle,key:pt.Gain,text:"Copy number gain",width:100,domain:[0,1],minLabel:0,maxLabel:n.value,order:a++,isLegendItem:true,dt:4,scale:c([0,1],["white",n.color])})}if(i.value<0){r.push({termid:t.cnvTitle,key:pt.Loss,text:"Copy number loss",width:100,domain:[0,1],minLabel:0,maxLabel:i.value,order:a++,isLegendItem:true,dt:4,scale:c([0,1],["white",i.color])})}r.push({termid:t.cnvTitle,key:pt.Cap,text:`Capping: ${o.value}`,color:o.color,order:a++,border:"1px solid #ccc"});e.push({name:t.cnvTitle,order:s,items:r})}}mapLoh(t,e,s){if(!t.lohLegend)return;const n=[];n.push({termid:t.lohTitle,key:"min",text:"min",color:t.lohLegend.colorStartValue,order:0,border:"1px solid #ccc"});n.push({termid:t.lohTitle,key:"max",text:"max",color:t.lohLegend.colorEndValue,order:1,border:"1px solid #ccc"});e.push({name:t.lohTitle,order:s,items:n})}mapFusion(t,e,s){const n=[];n.push({termid:t.fusionTitle,key:_.Interchromosomal,text:"Interchromosomal",color:_.Interchromosomal.valueOf(),order:0,border:"1px solid #ccc"});n.push({termid:t.fusionTitle,key:_.Intrachromosomal,text:"Intrachromosomal",color:_.Intrachromosomal.valueOf(),order:1,border:"1px solid #ccc"});e.push({name:t.fusionTitle,order:s,items:n})}}class It{constructor(t=0,e){this.fontSize=e;this.legendJSONMapper=new wt(t)}render(t,e,s,n,i){const o=v({holder:t.append("g").attr("data-testid","sjpp_disco_plot_legend"),rectFillFxn:t=>t.color,iconStroke:"#aaa"});const a={xOffset:s};const r=this.legendJSONMapper.map(e);o(r,{settings:Object.assign({},{svgw:n,svgh:i,dimensions:a,fontsize:this.fontSize})})}}class Lt{constructor(t,e,s){this.padAngle=t;this.innerRadius=e;this.outerRadius=s}render(t,e){const s=W().padAngle(this.padAngle).value((t=>t.size)).sort(null);const n=s(e);const i=g().innerRadius(this.innerRadius).outerRadius(this.outerRadius);const o=t.append("g").attr("data-testid","sjpp_chromosomes_arc_group");o.selectAll("path").data(n).enter().append("path").attr("d",i).attr("fill","black");o.selectAll("text").data(n).enter().append("text").attr("transform",(t=>`translate(${i.centroid(t)}) rotate(${t.data.angle*180/Math.PI-90})${t.data.angle>Math.PI?"rotate(180)":""}`)).attr("dy","0.35em").attr("text-anchor","middle").text((t=>t.data.text)).style("fill","white")}}class Dt{constructor(t,e){this.animationDuration=t;this.geneClickListener=e}render(t,e,n){const i=t.append("g");const o=x().x((t=>t.x)).y((t=>t.y));const a=j.create();i.selectAll(".group").data(e).enter().append("g").attr("class","group").each(((t,e,n)=>{const i=h(n[e]);i.append("text").attr("class","chord-text").attr("dy",".35em").attr("transform",t.transform).style("text-anchor",t.textAnchor).style("font-size","12px").style("fill",t.color).style("cursor","pointer").text(t.text).on("click",(()=>{if(t.mutationsTooltip){this.geneClickListener(t.text,t.mutationsTooltip.map((t=>t.mname)))}})).on("mouseover",(e=>{const n=s({holder:a.d});this.createTooltip(n,t);a.show(e.x,e.y)})).on("mouseout",(()=>{a.clear();a.hide()}));i.append("path").attr("class","chord-tick").datum(t.line.points).style("stroke",t.color).style("fill","none").attr("d",o)}));i.selectAll(".group").each(((t,e,s)=>{const i=n?n.find((e=>e.text===t.text)):undefined;if(i){const t=h(s[e]);t.selectAll(".chord-text").datum(i).transition().duration(this.animationDuration).attr("transform",i.transform).style("text-anchor",i.textAnchor);t.selectAll(".chord-tick").datum(i.line.points).transition().duration(this.animationDuration).style("fill","none").attr("d",o)}}))}createTooltip(t,e){if(e.mutationsTooltip){const[s,n]=t.addRow();s.text("Gene");n.append("span").style("margin-left","5px").text(e.text);e.mutationsTooltip.forEach((e=>{{const[s,n]=t.addRow();s.text("Consequence");n.append("span").text(e.mname);n.append("span").style("margin-left","5px").style("color",e.color).text(e.dataClass)}{const[s,n]=t.addRow();s.text("Mutation");n.append("span").text(`${e.chr}:${e.position}`)}}))}if(e.fusionTooltip){const[s,n]=t.addRow();s.text("Data type");n.append("span").text("Fusion transcript");e.fusionTooltip.forEach((e=>{const[s,n]=t.addRow();s.text("Break points");n.append("span").text(` ${e.geneA?e.geneA:""} ${e.chrA}:${e.posA} \n\t\t\t\t\t\t${e.strandA=="+"?"forward":"reverse"} > `+`${e.geneB?e.geneB:""} ${e.chrB}:${e.posB} ${e.strandB=="+"?"forward":"reverse"} `)}))}if(e.cnvTooltip){e.cnvTooltip.forEach((e=>{const[s,n]=t.addRow();s.text("CNV");n.append("span").style("color",e.color).text(e.value).append("span").style("margin-left","5px").text(`${e.chr}:${e.start}-${e.stop}`)}))}}}function Tt(t={}){const e={downloadImgName:"disco.plot",Disco:{cnvCapping:5,isOpen:false,prioritizeGeneLabelsByGeneSets:false,showPrioritizeGeneLabelsByGeneSets:false,cnvRenderingType:ut.heatmap,cnvPercentile:80},rings:{nonExonicRingWidth:20,snvRingWidth:20,lohRingWidth:20,cnvRingWidth:30,snvRingFilters:["exonic"],chromosomeInnerRadius:190,chromosomeWidth:20,labelLinesInnerRadius:210,labelsToLinesDistance:30,labelsToLinesGap:2,nonExonicRingEnabled:true,nonExonicFilterValues:["non-exonic"]},verticalPadding:70,horizontalPadding:500,layerScaler:1,padAngle:.002,label:{fontSize:12,maxDeltaAngle:.05,animationDuration:1e3,overlapAngleFactor:5},cnv:{capping:5,ampColor:"#D6683C",lossColor:"#67a9cf",cappedAmpColor:"#8B0000",cappedLossColor:"#00008B",unit:"Unit"},snv:{maxMutationCount:1e4},legend:{snvTitle:"SNV",cnvTitle:"CNV",lohTitle:"LOH",fusionTitle:"SV",lohLegendEnabled:true,fontSize:12,rowHeight:48},menu:{padding:5}};return d(e,t)}class Ot{constructor(t){this.geneClickListener=t}render(t,e){const i=g();const o=t.append("g");const a=j.create();o.selectAll("path").data(e).enter().append("path").attr("d",(t=>i(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const i=s({holder:a.d});const o=structuredClone(e);o.dt=n;o.class=e.dataClass;o.gene=o.text;{const[t,e]=i.addRow();t.text("Consequence");e.append("span").text(o.mname);e.append("span").style("margin-left","5px").style("color",o.color).style("font-size",".8em").text(o.dataClass)}{const[t,e]=i.addRow();t.text(o.ref&&o.alt?"Mutation":"Position");e.append("span").text(`${o.chr}:${o.pos+1} ${o.ref&&o.alt?o.ref+">"+o.alt:""}`)}if(o.gene){const[t,e]=i.addRow();t.text("Gene");e.text(o.gene)}if(o.occurrence>1){const[t,e]=i.addRow();t.text("Occurrence");e.text(o.occurrence)}a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()})).on("click",((t,e)=>{this.geneClickListener(e.text,[e.mname])}))}}class Pt{constructor(t,e){this.svnWidth=t;this.geneClickListener=e}render(t,e){if(e.length>0){const s=e[0].innerRadius;const n=new F(s,this.svnWidth,"#6464641A");n.render(t)}const i=g();const o=t.append("g");const a=j.create();o.selectAll("path").data(e).enter().append("path").attr("d",(t=>i(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const i=s({holder:a.d});const o=structuredClone(e);o.dt=n;o.class=e.dataClass;o.gene=o.text;{const[t,e]=i.addRow();t.text("Consequence");e.append("span").text(o.mname);e.append("span").style("margin-left","5px").style("color",o.color).style("font-size",".8em").text(o.dataClass)}{const[t,e]=i.addRow();t.text(o.ref&&o.alt?"Mutation":"Position");e.append("span").text(`${o.chr}:${o.pos+1} ${o.ref&&o.alt?o.ref+">"+o.alt:""}`)}if(o.gene){const[t,e]=i.addRow();t.text("Gene");e.text(o.gene)}if(o.occurrence>1){const[t,e]=i.addRow();t.text("Occurrence");e.text(o.occurrence)}a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()})).on("click",((t,e)=>{this.geneClickListener(e.text,[e.mname])}))}}class Nt{render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const n=s({holder:o.d});const i=structuredClone(e);i.dt=r;i.gene=i.text;{const[t,e]=n.addRow();t.text("Data type");e.append("span").style("margin-left","5px").text("Loss of Heterozygosity")}const[a,l]=n.addRow();a.text("Position");l.append("span").text(`${e.chr}:${e.start}-${e.stop}`);o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class Et{render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const n=structuredClone(e);n.dt=a;n.samples=[{sample_id:e.sampleName}];n.gene=n.text;const i=s({holder:o.d});{const[t,e]=i.addRow();t.text("Copy number change");e.html(`<span style="background:${n.color}">&nbsp;&nbsp;</span> ${n.value}`)}{const[t,e]=i.addRow();t.text("Position");e.text(n.chr+":"+n.start+"-"+n.stop)}{const[t,e]=i.addRow();t.text("Unit");e.text(n.value)}o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class Vt{constructor(t=0,e=0){this.positivePercentile80=t;this.negativePercentile80=e}render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>c([this.negativePercentile80,0,this.positivePercentile80],[t.color,"white",t.color]).clamp(true)(t.value))).on("mouseover",((t,e)=>{const n=s({holder:o.d});const i=structuredClone(e);i.dt=a;i.samples=[{sample_id:e.sampleName}];i.gene=i.text;{const[t,e]=n.addRow();t.text("Copy number change");e.html(`<span style="background:${i.color}">&nbsp;&nbsp;</span> ${i.value}`)}{const[t,e]=n.addRow();t.text("Position");e.text(i.chr+":"+i.start+"-"+i.stop)}{const[t,e]=n.addRow();t.text("Unit");e.text(i.value)}o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class St{constructor(t){this.recreateViewModel=false;this.type="Disco";this.opts=t;this.isOpen=false;this.discoInteractions=new X(this)}init(){return t(this,void 0,void 0,(function*(){const t=this.app.getState();const e=t.plots.find((t=>t.id===this.id)).settings;this.stateViewModelMapper=new yt(e);this.viewModel=this.stateViewModelMapper.map(t);const s=this.opts.holder;const n=s.append("div").style("display","inline-block").style("vertical-align","top");const i=n.append("div");const o=n.append("div");const a=this.getConfigInputsOptions(this.viewModel);this.features=yield u({topbar:R({app:this.app,id:this.id,downloadHandler:()=>this.discoInteractions.downloadClickListener(s.select('svg[id="sjpp_disco_plot"]').node()),callback:()=>this.toggleVisibility(this.isOpen),isOpen:()=>this.isOpen,holder:i}),config:b({app:this.app,id:this.id,holder:o,isOpen:()=>this.isOpen,inputs:a})})}))}getConfigInputsOptions(t){const e=[];if(t.settings.Disco.showPrioritizeGeneLabelsByGeneSets){const s=[{boxLabel:t.genesetName,label:`Filter mutations`,type:"checkbox",chartType:"Disco",settingsKey:"prioritizeGeneLabelsByGeneSets",title:`Only show mutations for ${t.genesetName} genes`}];e.push(...s)}const s=[{label:"CNV capping",type:"number",chartType:"Disco",settingsKey:"cnvCapping",title:"Cnv capping",min:0},{boxLabel:"",label:"CNV rendering type",type:"radio",chartType:"Disco",settingsKey:"cnvRenderingType",title:"CNV rendering type",options:[{label:"Heatmap",value:ut.heatmap},{label:"Bar",value:ut.bar}]},{label:"CNV percentile",type:"number",chartType:"Disco",settingsKey:"cnvPercentile",title:"Cnv percentile",min:1,max:100}];e.push(...s);return e}main(){return t(this,void 0,void 0,(function*(){const t=this.state.settings;this.isOpen=t.Disco.isOpen;if(this.recreateViewModel){this.stateViewModelMapper=new yt(t);this.viewModel=this.stateViewModelMapper.map(this.app.getState())}this.recreateViewModel=true;if(this.viewModel){const e=this.opts.holder;e.select('div[id="sjpp_disco_plot_holder_div"]').remove();const s=e.append("div").attr("id","sjpp_disco_plot_holder_div").style("display","inline-block");const n=this.app.getState();for(const t in this.features){this.features[t].update({state:this.state,appState:n})}const i=new It(this.viewModel.cappedCnvMaxAbsValue,t.label.fontSize);const o=new q(this.getRingRenderers(t,this.viewModel,this.discoInteractions.geneClickListener),i);o.render(s,this.viewModel)}}))}getState(t){return t.plots.find((t=>t.id===this.id))}getRingRenderers(t,e,s){const n=new Lt(t.padAngle,t.rings.chromosomeInnerRadius,t.rings.chromosomeInnerRadius+t.rings.chromosomeWidth);const i=new Dt(t.label.animationDuration,s);const o=new Ot(s);const a=new Pt(t.rings.snvRingWidth,s);const r=t.Disco.cnvRenderingType===ut.heatmap?new Vt(e.positivePercentile80,e.negativePercentile80):new Et;const l=new Nt;const c=new Map;c.set(ot.CHROMOSOME,n);c.set(ot.LABEL,i);c.set(ot.NONEXONICSNV,o);c.set(ot.SNV,a);c.set(ot.CNV,r);c.set(ot.LOH,l);return c}toggleVisibility(t){this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{settings:{Disco:{isOpen:!t}}}})}}const zt=p(St);const Bt=zt;function Gt(e){return t(this,void 0,void 0,(function*(){return{chartType:"Disco",subfolder:"disco",extension:"ts",settings:Tt(e.overrides)}}))}export{Bt as componentInit,zt as discoInit,Gt as getPlotConfig};
1
+ import{_ as t}from"./tslib.es6-62bb2d8e.js";import{M as e,bm as s,aj as n,as as i,ar as o,ao as a,ap as r,z as l,H as c,d as h,O as d,h as p,J as u}from"./app-3a4da08d.js";import{d as g}from"./arc-3d6751aa.js";import{p as m,c as f}from"./constant-426a1483.js";import{s as v}from"./svg.legend-2a128bc8.js";import{a as A,l as x}from"./line-264f8f9e.js";import{t as M}from"./math-2fb199c6.js";import{topBarInit as R}from"./controls.btns-8f035504.js";import{configUiInit as b}from"./controls.config-b04137d0.js";import"./controls.overlay-e37a8b33.js";import"./roundValue-67b66074.js";import"path";import"./FilterRxComp-8de2ef58.js";import"./table-4a439020.js";import"./termdb.bins-b2b3dc54.js";import"./controls.term1-02590c4c.js";import"./controls.divide-e6c33f27.js";var C=Math.abs;var y=Math.cos;var w=Math.sin;var I=Math.PI;var L=I/2;var D=1e-12;var T=Array.prototype.slice;function O(t){return function(){return t}}function P(t){return t.source}function N(t){return t.target}function E(t){return t.radius}function V(t){return t.startAngle}function S(t){return t.endAngle}function z(){return 0}function B(t){var e=P,s=N,n=E,i=E,o=V,a=S,r=z,l=null;function c(){var c,h=e.apply(this,arguments),d=s.apply(this,arguments),p=r.apply(this,arguments)/2,u=T.call(arguments),g=+n.apply(this,(u[0]=h,u)),f=o.apply(this,u)-L,v=a.apply(this,u)-L,A=+i.apply(this,(u[0]=d,u)),x=o.apply(this,u)-L,M=a.apply(this,u)-L;if(!l)l=c=m();if(p>D){if(C(v-f)>p*2+D)v>f?(f+=p,v-=p):(f-=p,v+=p);else f=v=(f+v)/2;if(C(M-x)>p*2+D)M>x?(x+=p,M-=p):(x-=p,M+=p);else x=M=(x+M)/2}l.moveTo(g*y(f),g*w(f));l.arc(0,0,g,f,v);if(f!==x||v!==M){if(t){var R=+t.apply(this,arguments),b=A-R,I=(x+M)/2;l.quadraticCurveTo(0,0,b*y(x),b*w(x));l.lineTo(A*y(I),A*w(I));l.lineTo(b*y(M),b*w(M))}else{l.quadraticCurveTo(0,0,A*y(x),A*w(x));l.arc(0,0,A,x,M)}}l.quadraticCurveTo(0,0,g*y(f),g*w(f));l.closePath();if(c)return l=null,c+""||null}if(t)c.headRadius=function(e){return arguments.length?(t=typeof e==="function"?e:O(+e),c):t};c.radius=function(t){return arguments.length?(n=i=typeof t==="function"?t:O(+t),c):n};c.sourceRadius=function(t){return arguments.length?(n=typeof t==="function"?t:O(+t),c):n};c.targetRadius=function(t){return arguments.length?(i=typeof t==="function"?t:O(+t),c):i};c.startAngle=function(t){return arguments.length?(o=typeof t==="function"?t:O(+t),c):o};c.endAngle=function(t){return arguments.length?(a=typeof t==="function"?t:O(+t),c):a};c.padAngle=function(t){return arguments.length?(r=typeof t==="function"?t:O(+t),c):r};c.source=function(t){return arguments.length?(e=t,c):e};c.target=function(t){return arguments.length?(s=t,c):s};c.context=function(t){return arguments.length?(l=t==null?null:t,c):l};return c}function G(){return B()}function $(t,e){return e<t?-1:e>t?1:e>=t?0:NaN}function k(t){return t}function W(){var t=k,e=$,s=null,n=f(0),i=f(M),o=f(0);function a(a){var r,l=(a=A(a)).length,c,h,d=0,p=new Array(l),u=new Array(l),g=+n.apply(this,arguments),m=Math.min(M,Math.max(-M,i.apply(this,arguments)-g)),f,v=Math.min(Math.abs(m)/l,o.apply(this,arguments)),x=v*(m<0?-1:1),R;for(r=0;r<l;++r){if((R=u[p[r]=r]=+t(a[r],r,a))>0){d+=R}}if(e!=null)p.sort((function(t,s){return e(u[t],u[s])}));else if(s!=null)p.sort((function(t,e){return s(a[t],a[e])}));for(r=0,h=d?(m-l*x)/d:0;r<l;++r,g=f){c=p[r],R=u[c],f=g+(R>0?R*h:0)+x,u[c]={data:a[c],index:r,value:R,startAngle:g,endAngle:f,padAngle:v}}return u}a.value=function(e){return arguments.length?(t=typeof e==="function"?e:f(+e),a):t};a.sortValues=function(t){return arguments.length?(e=t,s=null,a):e};a.sort=function(t){return arguments.length?(s=t,e=null,a):s};a.startAngle=function(t){return arguments.length?(n=typeof t==="function"?t:f(+t),a):n};a.endAngle=function(t){return arguments.length?(i=typeof t==="function"?t:f(+t),a):i};a.padAngle=function(t){return arguments.length?(o=typeof t==="function"?t:f(+t),a):o};return a}class F{constructor(t,e,s){this.radius=t;this.width=e;this.color=s}render(t){const e=g();const s={startAngle:0,endAngle:Math.PI*2,innerRadius:this.radius,outerRadius:this.radius+this.width,color:this.color,text:"No label"};const n=[];n.push(s);const i=t.append("g");i.selectAll("path").data(n).enter().append("path").attr("d",(t=>e(t))).attr("fill",(t=>t.color))}}class j{static create(){const t=new e({padding:5});t.d.style("border","1px solid #FFF").style("position","absolute").style("z-index",1001);return t}}var _;(function(t){t["Intrachromosomal"]="#1B9E77";t["Interchromosomal"]="#6A3D9A"})(_||(_={}));class H{static getColor(t,e){if(t!=e){return _.Interchromosomal.valueOf()}else{return _.Intrachromosomal.valueOf()}}}class U{render(t,e){let n=0;if(e.length>0){n=e[0].target.radius;const s=new F(n,2,"#6464641A");s.render(t)}const i=G().radius(n);const o=t.selectAll(".chord").data(e);const a=j.create();o.enter().append("path").attr("class","chord").attr("d",i).attr("fill",(t=>H.getColor(t.source.positionInChromosome.chromosome,t.target.positionInChromosome.chromosome))).on("mouseover",((t,e)=>{const n=s({holder:a.d});this.createTooltip(n,e);a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()}))}createTooltip(t,e){{const[e,s]=t.addRow();e.text("Data type");s.append("span").style("margin-left","5px").text("Fusion transcript")}{const s=e.source.positionInChromosome;const n=e.target.positionInChromosome;const[i,o]=t.addRow();i.text("Position");o.append("span").style("margin-left","5px").text(` ${e.source.gene?e.source.gene:""} ${s.chromosome}:${s.position} ${e.source.strand=="+"?"forward":"reverse"} > `+` ${e.target.gene?e.target.gene:""} ${n.chromosome}:${n.position} ${e.target.strand=="+"?"forward":"reverse"} `)}}}class q{constructor(t,e){this.renders=t;this.legendRenderer=e;this.fusionRenderer=new U}render(t,e){const s=t.append("div").style("display","inline-block").style("font-family","Arial");const n=s.append("svg").attr("id","sjpp_disco_plot").attr("data-testid","sjpp_disco_plot").attr("width",e.width).attr("height",e.height+e.legendHeight);const i=n.append("g").attr("class","mainG").attr("transform",`translate(${e.settings.rings.labelLinesInnerRadius+e.settings.rings.labelsToLinesDistance+100},${e.height/2})`);for(const[t,s]of this.renders){const n=e.getElements(t);const o=e.getCollisions(t);s.render(i,n,o)}this.fusionRenderer.render(i,e.fusions);this.legendRenderer.render(i,e.legend,-1*(e.settings.rings.labelLinesInnerRadius+e.settings.rings.labelsToLinesDistance+50),e.width,e.height/2)}}class X{constructor(e){this.discoApp=e;this.downloadClickListener=t=>{const e=this.discoApp.state.settings.downloadImgName||"disco.plot";const s=document.createElement("a");document.body.appendChild(s);s.addEventListener("click",(()=>{const n=new XMLSerializer;const i=new Blob([n.serializeToString(t)],{type:"image/svg+xml"});s.download=e+".svg";s.href=URL.createObjectURL(i);document.body.removeChild(s)}),false);s.click()};this.geneClickListener=(e,s)=>t(this,void 0,void 0,(function*(){const{filter:t,filter0:n}=this.discoApp.app.getState().termfilter;const i={holder:this.discoApp.app.opts.holder,genome:this.discoApp.app.opts.state.args.genome,nobox:true,query:e,tklst:[{type:"mds3",dslabel:this.discoApp.app.opts.state.dslabel,hlaachange:s.join(","),filter0:n,filterObj:t}]};const o=yield import("./app-3a4da08d.js").then((function(t){return t.c3}));yield o.default(i)}))}}class K{constructor(t,e,s){this.chromosomes=[];this.chromosomesOrder=[];this.keysArray=[];this.totalSizeArray=[];this.chrSizesArray=[];const n=s||e;this.settings=t;this.chromosomesOrder=[];let i=0;this.totalPadAngle=Object.keys(n).length*this.settings.padAngle;this.totalChromosomesAngle=2*Math.PI-this.totalPadAngle;for(const t in n){const e=t.slice(0,3)==="chr"?t.slice(3):t;this.chromosomesOrder.push(t);this.keysArray.push(e);this.totalSizeArray.push(i);this.chrSizesArray.push(n[t]);i+=n[t]}this.totalSize=i;let o=0;for(let t=0;t<this.keysArray.length;t++){const e=this.totalChromosomesAngle*(this.chrSizesArray[t]/i);const s=t==0?this.settings.padAngle/2:o+this.settings.padAngle;const n=t==0?this.settings.padAngle/2+e:o+this.settings.padAngle+e;const a={start:this.totalSizeArray[t],size:this.chrSizesArray[t],factor:1,startAngle:s,endAngle:n,angle:(s+n)/2,innerRadius:this.settings.chromosomeInnerRadius,outerRadius:this.settings.chromosomeInnerRadius+this.settings.chromosomeWidth,color:"#AAA",text:this.keysArray[t]};this.chromosomes.push(a);if(a.endAngle!=null){o=a.endAngle}}}}class J{constructor(t,e){this.sampleName=t;this.prioritizedGenes=e}map(t){return{dt:t.dt,mname:t.mname,mClass:t.class,gene:t.gene,chr:t.chr,ref:t.ref,alt:t.alt,position:t.pos?t.pos:t.position,poschr:t.poschr,posbins:t.posbins,poslabel:t.poslabel,sampleName:this.sampleName,ssm_id:t.ssm_id,start:t.start,stop:t.stop,value:t.value,segmean:t.segmean,isPrioritized:this.prioritizedGenes.some((e=>e==t.gene)),chrA:t.chrA,chrB:t.chrB,geneA:t.geneA,geneB:t.geneB,posA:t.posA,posB:t.posB,strandA:t.strandA,strandB:t.strandB}}}class Q{map(t,e){return this.calculatePercentileForPositivesAndNegatives(t,e)}calculatePercentileForPositivesAndNegatives(t,e){const s=t.filter((t=>t>0));const n=t.filter((t=>t<0)).map((t=>-1*t));let i=NaN;let o=NaN;if(s.length>0){i=this.calculatePercentile(s,e)}if(n.length>0){o=-1*this.calculatePercentile(n,e)}return{positive:i,negative:o}}calculatePercentile(t,e){if(t.length===0){throw new Error("Array must contain at least one element.")}const s=t.sort(((t,e)=>t-e));const n=e/100*(s.length-1);const i=Math.floor(n);const o=Math.ceil(n);const a=n-i;if(i===o){return s[i]}return s[i]+a*(s[o]-s[i])}}class Y{constructor(t,e,s,l=[]){this.labelData=[];this.nonExonicSnvData=[];this.nonExonicInnerRadius=0;this.snvRingDataMap=new Map;this.snvInnerRadius=0;this.snvData=[];this.bpx=0;this.onePxArcAngle=0;this.filteredSnvData=[];this.lohData=[];this.lohInnerRadius=0;this.cnvData=[];this.cnvInnerRadius=0;this.fusionData=[];this.fusionRadius=0;this.hasPrioritizedGenes=false;this.cnvLossMaxValue=0;this.cnvGainMaxValue=0;this.percentilePositive=0;this.percentileNegative=0;this.cnvMaxPercentileAbs=0;this.lohMaxValue=undefined;this.lohMinValue=undefined;this.snvFilter=t=>t.dt==n;this.fusionFilter=t=>t.dt==i||t.dt==o;this.cnvFilter=t=>t.dt==a;this.lohFilter=t=>t.dt==r;this.compareData=(t,e)=>{const s=this.reference.chromosomesOrder.indexOf(t.chr)-this.reference.chromosomesOrder.indexOf(e.chr);if(s!=0){return s}const n=t.pos?t.pos:t.start;const i=e.pos?e.pos:e.start;return n-i};this.settings=t;this.reference=e;this.sample=s;this.lastInnerRadious=this.settings.rings.chromosomeInnerRadius;this.gainCapped=this.settings.Disco.cnvCapping;this.lossCapped=-1*this.settings.Disco.cnvCapping;this.nonExonicFilter=e=>{if(l.length>0&&this.settings.Disco.prioritizeGeneLabelsByGeneSets){return l.includes(e.gene)&&t.rings.nonExonicFilterValues.includes(yt.snvClassLayer[e.mClass])}else{return t.rings.nonExonicFilterValues.includes(yt.snvClassLayer[e.mClass])}};this.snvRingFilter=e=>{if(l.length>0&&this.settings.Disco.prioritizeGeneLabelsByGeneSets){return l.includes(e.gene)&&t.rings.snvRingFilters.includes(yt.snvClassLayer[e.mClass])}else{return t.rings.snvRingFilters.includes(yt.snvClassLayer[e.mClass])}};this.dataObjectMapper=new J(s,l)}map(t){const e=[];t.forEach((t=>{const s=this.reference.chromosomesOrder.indexOf(t.chr);const l=this.reference.chromosomesOrder.indexOf(t.chrA);const c=this.reference.chromosomesOrder.indexOf(t.chrB);if(t.dt==n){if(s!=-1&&this.snvData.length<this.settings.snv.maxMutationCount){this.addData(t,e)}}else if(t.dt==i||t.dt==o){if(l!=-1&&c!=-1){this.addData(t,e)}}else if([a,r].includes(Number(t.dt))){this.addData(t,e)}else{throw Error("Unknown mutation type!")}}));const s=e.sort(this.compareData);if(this.settings.rings.nonExonicRingEnabled){s.forEach((t=>{this.filterNonExonicSnvData(t)}))}if(this.nonExonicSnvData.length>0){this.nonExonicInnerRadius=this.lastInnerRadious-this.settings.rings.nonExonicRingWidth;this.lastInnerRadious=this.nonExonicInnerRadius}s.forEach((t=>{this.filterSnvs(t)}));s.forEach((t=>{this.filterLohs(t)}));if(this.lohData.length>0){this.lohInnerRadius=this.lastInnerRadious-this.settings.rings.lohRingWidth;this.lastInnerRadious=this.lohInnerRadius}s.forEach((t=>{this.filterCnvs(t)}));if(this.cnvData.length>0){this.cnvInnerRadius=this.lastInnerRadious-this.settings.rings.cnvRingWidth;this.lastInnerRadious=this.cnvInnerRadius;this.cappedCnvMaxAbsValue=Math.min(this.settings.Disco.cnvCapping,Math.max(Math.abs(Y.capMaxValue(this.cnvLossMaxValue,this.gainCapped,this.lossCapped)),Math.abs(Y.capMaxValue(this.cnvGainMaxValue,this.gainCapped,this.lossCapped))));const t=(new Q).map(this.cnvData.map((t=>t.value)),this.settings.Disco.cnvPercentile);this.percentilePositive=Y.capMaxValue(t.positive,this.gainCapped,this.lossCapped);this.percentileNegative=Y.capMaxValue(t.negative,this.gainCapped,this.lossCapped);this.cnvMaxPercentileAbs=Math.min(this.settings.Disco.cnvCapping,Math.max(this.percentilePositive,Math.abs(this.percentileNegative)))}s.forEach((t=>{this.filterFusion(t)}));if(this.fusionData.length>0){this.fusionRadius=this.lastInnerRadious}const l={labelData:this.labelData,nonExonicSnvData:this.nonExonicSnvData,nonExonicInnerRadius:this.nonExonicInnerRadius,snvRingDataMap:this.snvRingDataMap,snvInnerRadius:this.snvInnerRadius,snvData:this.snvData,bpx:this.bpx,onePxArcAngle:this.onePxArcAngle,filteredSnvData:this.filteredSnvData,lohData:this.lohData,lohInnerRadius:this.lohInnerRadius,cnvData:this.cnvData,cnvInnerRadius:this.cnvInnerRadius,fusionData:this.fusionData,fusionRadius:this.fusionRadius,hasPrioritizedGenes:this.hasPrioritizedGenes,cnvGainMaxValue:this.cnvGainMaxValue,cnvLossMaxValue:this.cnvLossMaxValue,cappedCnvMaxAbsValue:this.cappedCnvMaxAbsValue,percentilePositive:this.percentilePositive,percentileNegative:this.percentileNegative,cnvMaxPercentileAbs:this.cnvMaxPercentileAbs,lohMaxValue:this.lohMaxValue,lohMinValue:this.lohMinValue};return l}addData(t,e){const s=this.dataObjectMapper.map(t);if(s.isPrioritized){this.hasPrioritizedGenes=true}e.push(s)}filterNonExonicSnvData(t){if(this.snvFilter(t)){if(this.settings.rings.nonExonicRingEnabled&&this.nonExonicFilter(t)){this.nonExonicSnvData.push(t)}}}filterSnvs(t){if(this.snvFilter(t)){this.snvData.push(t);if(this.snvRingFilter(t)){if(this.snvInnerRadius==0){this.snvInnerRadius=this.lastInnerRadious-this.settings.rings.snvRingWidth;this.lastInnerRadious=this.snvInnerRadius;this.bpx=Math.floor(this.reference.totalSize/(this.reference.totalChromosomesAngle*this.snvInnerRadius));this.onePxArcAngle=1/this.snvInnerRadius}this.filteredSnvData.push(t);this.labelData.push(t);const e=this.calculateArcAngle(t);let s=this.snvRingDataMap.get(e);if(!s){s=new Array}s.push(t);this.snvRingDataMap.set(e,s)}}}filterFusion(t){if(this.fusionFilter(t)){t.isPrioritized=true;this.fusionData.push(t);this.labelData.push(t)}}filterLohs(t){if(this.lohFilter(t)){if(this.lohMaxValue==undefined||this.lohMaxValue<t.value){this.lohMaxValue=t.segmean}if(this.lohMinValue==undefined||this.lohMinValue>t.value){this.lohMinValue=t.segmean}this.lohData.push(t)}}filterCnvs(t){if(this.cnvFilter(t)){if(this.cnvGainMaxValue==undefined||this.cnvGainMaxValue<t.value){this.cnvGainMaxValue=t.value}if(this.cnvLossMaxValue==undefined||this.cnvLossMaxValue>t.value){this.cnvLossMaxValue=t.value}this.cnvData.push(t)}}calculateArcAngle(t){const e=this.reference.chromosomes[this.reference.chromosomesOrder.findIndex((e=>t.chr==e))];const s=Math.floor(t.position/this.bpx);return e.startAngle+s*this.onePxArcAngle}static capMaxValue(t,e,s){if(t&&Math.sign(t)==1){return t>e?e:t}if(Math.sign(t)==-1){return t<s?s:t}return 0}static capMinValue(t,e=1){if(Math.sign(t)==1){return t>e?t:e}if(Math.sign(t)==-1){return t<-1*e?t:-1*e}return 1}}class Z{constructor(t,e,s,n,i,o,a,r,l){this.snvTitle=t;this.cnvTitle=e;this.lohTitle=s;this.fusionTitle=n;this.snvClassMap=i;this.cnvClassMap=o;this.cnvRenderingType=a;this.lohLegend=l;this.fusionLegend=r}legendCount(){return(this.snvClassMap.size>0?1:0)+(this.cnvClassMap.size>0?1:0)+(this.lohLegend?1:0)+(this.fusionLegend?1:0)}}class tt{constructor(t,e,s,n,i){this.source=t;this.target=e;this.genes=s;this.count=n;this.endpts=i}}class et{constructor(t,e,s,n,i,o,a,r){this.startAngle=t;this.endAngle=e;this.radius=s;this.gene=n;this.value=i;this.genes=o;this.positionInChromosome=a;this.strand=r}}class st{constructor(t,e,s){this.radius=t;this.sampleName=e;this.reference=s}map(t){const e=[];t.forEach((t=>{const s=new Set;s.add(t.geneA);s.add(t.geneB);const n=new et(this.calculateStartAngle(t.chrA,t.posA),this.calculateEndAngle(t.chrA,t.posA),this.radius,t.geneA,t.value,s,{chromosome:t.chrA,position:t.posA},t.strandA);const i=new et(this.calculateStartAngle(t.chrB,t.posB),this.calculateEndAngle(t.chrB,t.posB),this.radius,t.geneB,t.value,s,{chromosome:t.chrB,position:t.posB},t.strandB);const o=new tt(n,i,"genes",-1,"Endpoints");e.push(o)}));return e}calculateStartAngle(t,e){const s=this.reference.chromosomesOrder.indexOf(t);const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)-.01}calculateEndAngle(t,e){const s=this.reference.chromosomesOrder.indexOf(t);const n=this.reference.chromosomes[s];return.01+n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}}class nt{static provide(t){const e=Math.min(Math.max(t,0),1);const s=Math.round(e*255);return`rgb(${s}, ${s}, ${s})`}}class it{constructor(t,e){this.minValue=t;this.maxValue=e;this.colorStartValue=nt.provide(t);this.colorEndValue=nt.provide(e)}}var ot;(function(t){t[t["CHROMOSOME"]=0]="CHROMOSOME";t[t["LABEL"]=1]="LABEL";t[t["NONEXONICSNV"]=2]="NONEXONICSNV";t[t["SNV"]=3]="SNV";t[t["CNV"]=4]="CNV";t[t["LOH"]=5]="LOH";t[t["FUSION"]=6]="FUSION"})(ot||(ot={}));class at{constructor(t,e,s,n,i,o,a){this.settings=t;this.rings=e;this.legend=s;this.fusions=n;this.genesetName=o;this.width=1.2*(this.settings.horizontalPadding+this.settings.rings.labelLinesInnerRadius+this.settings.rings.labelsToLinesDistance);this.height=2*(this.settings.rings.labelLinesInnerRadius+this.settings.rings.labelsToLinesDistance+this.settings.verticalPadding);this.legendHeight=this.calculateLegendHeight(s);this.snvDataLength=i.snvData.length;this.filteredSnvDataLength=i.filteredSnvData.length;this.snvDataLengthAll=a;this.cnvMaxValue=i.cnvGainMaxValue;this.cnvMinValue=i.cnvLossMaxValue;this.cappedCnvMaxAbsValue=i.cappedCnvMaxAbsValue;this.negativePercentile80=i.percentileNegative;this.positivePercentile80=i.percentilePositive}getElements(t){switch(t){case ot.CHROMOSOME:return this.rings.chromosomesRing?this.rings.chromosomesRing.elements:[];case ot.LABEL:return this.rings.labelsRing.elementsToDisplay;case ot.NONEXONICSNV:return this.rings.nonExonicArcRing?this.rings.nonExonicArcRing.elements:[];case ot.SNV:return this.rings.snvArcRing?this.rings.snvArcRing.elements:[];case ot.CNV:return this.rings.cnvArcRing?this.rings.cnvArcRing.elements:[];case ot.LOH:return this.rings.lohArcRing?this.rings.lohArcRing.elements:[];default:throw new Error(`ringType ${t} not defined`)}}getCollisions(t){if(t==ot.LABEL){return this.rings.labelsRing.collisions}else{return undefined}}calculateLegendHeight(t){const e=this.settings.legend.rowHeight;return e*t.legendCount()}}class rt{constructor(t,e,s){this.innerRadius=t;this.outerRadius=t+e;this.width=e;this.elements=s}}class lt{constructor(){const t={};for(const e in l){t[l[e].label]=l[e];t[e]=l[e]}this.mlabel=t}static getInstance(){if(!lt.instance){lt.instance=new lt}return lt.instance}}class ct{constructor(t,e,s){this.snvType=t;this.color=e;this.count=s}}class ht{constructor(t,e,s,n){this.snvClassMap=new Map;this.svnInnerRadius=t;this.svnWidth=e;this.sampleName=s;this.reference=n;this.bpx=Math.floor(this.reference.totalSize/(this.reference.totalChromosomesAngle*t));this.onePxArcAngle=1/t}map(t){const e=[];for(const s of t.keys()){const n=t.get(s);if(n){const t=n.length;for(let i=0;i<n.length;i++){const o=n[i];const a=this.snvClassMap.get(o.mClass);if(a){this.snvClassMap.set(o.mClass,this.createSnvLegend(o.mClass,++a.count))}else{this.snvClassMap.set(o.mClass,this.createSnvLegend(o.mClass,1))}const r=s;const l=s+this.onePxArcAngle;const c=lt.getInstance().mlabel?lt.getInstance().mlabel[o.mClass]:undefined;const h={startAngle:r,endAngle:l,innerRadius:this.svnInnerRadius+i*this.svnWidth/t,outerRadius:this.svnInnerRadius+(i+1)*this.svnWidth/t,color:c.color,text:o.gene,dataClass:c.label,mname:o.mname,chr:o.chr,pos:o.position,sampleName:[o.sampleName]};e.push(h)}}}return e}createSnvLegend(t,e){const s=lt.getInstance().mlabel[t];return new ct(s.label,s.color,e)}}class dt{constructor(t,e,s,n){this.text=t;this.cnvType=e;this.color=s;this.value=n}}var pt;(function(t){t[t["Loss"]=0]="Loss";t[t["Gain"]=1]="Gain";t[t["Cap"]=2]="Cap"})(pt||(pt={}));var ut;(function(t){t["heatmap"]="heatmap";t["bar"]="bar"})(ut||(ut={}));class gt{static getColor(t,e,s=0){const n=e.cnv;const i=e.Disco.cnvRenderingType==ut.heatmap?e.Disco.cnvCapping:s;const o=e.Disco.cnvRenderingType==ut.heatmap?-1*e.Disco.cnvCapping:-1*s;if(t<o){return n.cappedLossColor}else if(t>=o&&t<=0){return n.lossColor}else if(t>0&&t<=i){return n.ampColor}else{return n.cappedAmpColor}}}class mt{constructor(t,e,s,n,i,o=0,a=0,r=0,l=0,c="",h){this.cnvClassMap=new Map;this.cnvInnerRadius=t;this.cnvWidth=e;this.settings=s;this.sampleName=n;this.reference=i;this.cnvMaxValue=o;this.cnvMinValue=a;this.cnvMaxAbsValue=r;this.cnvAbsPercentile=l;this.cnvUnit=c;this.cnvRenderingType=h;this.gainCapped=Math.min(l,this.settings.Disco.cnvCapping);this.lossCapped=-1*Math.min(l,this.settings.Disco.cnvCapping);this.lossOnly=o<=0;this.gainOnly=a>=0;this.onePxArcAngle=1/this.cnvInnerRadius;const d=new dt("Max",o>0?pt.Gain:pt.Loss,this.getColor(o),o);const p=new dt("Min",a>0?pt.Gain:pt.Loss,this.getColor(a),a);const u=new dt("Capping",pt.Loss,this.getColor(a>0?a:o),this.settings.Disco.cnvCapping);this.cnvClassMap.set(pt.Gain,d);this.cnvClassMap.set(pt.Loss,p);this.cnvClassMap.set(pt.Cap,u)}map(t){const e=[];t.forEach((t=>{let s=this.calculateStartAngle(t);let n=this.calculateEndAngle(t);if(n-s<this.onePxArcAngle){const t=this.onePxArcAngle-(n-s);s=s-t/2;n=s+t/2}const i=this.calculateInnerRadius(t);const o=this.calculateOuterRadius(t);const a=this.getColor(t.value);const r={startAngle:s,endAngle:n,innerRadius:i,outerRadius:o,color:a,text:t.gene,chr:t.chr,start:t.start,stop:t.stop,value:t.value,unit:this.cnvUnit,sampleName:[this.sampleName]};e.push(r)}));return e}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.start)/s.size)}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.stop)/s.size)}getColor(t){return gt.getColor(t,this.settings,this.cnvAbsPercentile)}calculateInnerRadius(t){if(this.cnvRenderingType==ut.heatmap){return this.cnvInnerRadius}if(this.gainOnly){return this.cnvInnerRadius}if(this.lossOnly){const e=this.cnvInnerRadius+this.cnvWidth;return e+Y.capMinValue(this.cnvWidth*Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile)}const e=this.cnvInnerRadius+this.cnvWidth/2;if(Math.sign(t.value)==1){return e}if(Math.sign(t.value)==-1){return e+Y.capMinValue(Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile*(this.cnvWidth/2))}return 1}calculateOuterRadius(t){const e=this.cnvInnerRadius+this.cnvWidth;if(this.cnvRenderingType==ut.heatmap){return e}if(this.gainOnly){return this.cnvInnerRadius+Y.capMinValue(this.cnvWidth*Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvAbsPercentile)}if(this.lossOnly){return e}const s=this.cnvInnerRadius+this.cnvWidth/2;if(Math.sign(t.value)==1){return s+Y.capMinValue(Y.capMaxValue(t.value,this.gainCapped,this.lossCapped)/this.cnvMaxAbsValue*(this.cnvWidth/2))}if(Math.sign(t.value)==-1){return s}return 1}}class ft{constructor(t,e){this.points=new Array;this.points=t;this.color=e}}class vt{static createLabel(t,e,s,n,i,o,a,r,l,c,h=false,d,p,u){const g=(t+e)/2;const m=g-Math.PI/2;const f=`rotate(${g*180/Math.PI-90}) translate(${n})${g>Math.PI?"rotate(180)":""}`;const v=g>Math.PI?"end":"";const A=s;const x=n-d;const M=[];const R={x:A*Math.cos(m),y:A*Math.sin(m)};const b={x:x*Math.cos(m),y:x*Math.sin(m)};M.push(R);M.push(b);const C=new ft(M,a);const y={startAngle:t,endAngle:e,innerRadius:s,outerRadius:n,angle:g,value:i,text:o,color:a,transform:f,textAnchor:v,ccAngle:m,line:C,isPrioritized:h,start:c,stop:c,chr:l,mutationsTooltip:p?[p]:undefined,fusionTooltip:u?[u]:undefined};return y}static createMovedLabel(t,e){const s=t.startAngle+e;const n=t.endAngle+e;const i=(s+n)/2;const o=i-Math.PI/2;const a=t.innerRadius;const r=t.outerRadius-2;const l=(r-a)/3;const c=Math.cos(t.ccAngle);const h=Math.sin(t.ccAngle);const d=Math.cos(t.ccAngle+e);const p=Math.sin(t.ccAngle+e);const u=[];const g={x:a*c,y:a*h};const m={x:(a+l)*c,y:(a+l)*h};const f={x:(a+2*l)*d,y:(a+2*l)*p};const v={x:(a+3*l)*d,y:(a+3*l)*p};u.push(g);u.push(m);u.push(f);u.push(v);const A=new ft(u,t.color);const x="rotate("+(i*180/Math.PI-90)+")"+"translate("+t.outerRadius+")"+(i>Math.PI?"rotate(180)":"");const M=i>Math.PI?"end":"";const R=t.mutationsTooltip?t.mutationsTooltip[0].color:t.fusionTooltip?t.fusionTooltip[0].color:undefined;const b={startAngle:s,endAngle:n,innerRadius:t.innerRadius,outerRadius:t.outerRadius,angle:i,value:t.value,text:t.text,transform:x,textAnchor:M,ccAngle:o,color:R,line:A,isPrioritized:t.isPrioritized,start:t.start,stop:t.stop,chr:t.chr,mutationsTooltip:t.mutationsTooltip,fusionTooltip:t.fusionTooltip};return b}}class At{constructor(t,e,s,n=0){this.labelMap=new Map;this.settings=t;this.sampleName=e;this.reference=s;this.cnvMaxPercentileAbs=n}map(t,e=[]){const s=this.settings.rings.labelLinesInnerRadius;const o=s+this.settings.rings.labelsToLinesDistance;t.forEach((t=>{if(t.dt==n){const e=this.calculateStartAngle(t.chr,t.position);const n=this.calculateEndAngle(t.chr,t.position);const i=lt.getInstance().mlabel?lt.getInstance().mlabel[t.mClass]:undefined;this.addLabelOrMutation(t,t.gene,t.mname,e,n,s,o,i.color,i.label)}if(t.dt==i){const e=H.getColor(t.chrA,t.chrB);if(t.geneA){const n=this.calculateStartAngle(t.chrA,t.posA);const i=this.calculateEndAngle(t.chrA,t.posA);this.addLabelOrFusion(t,t.geneA,t.posA,n,i,s,o,e)}if(t.geneB&&t.geneA!=t.geneB){const n=this.calculateStartAngle(t.chrB,t.posB);const i=this.calculateEndAngle(t.chrB,t.posB);this.addLabelOrFusion(t,t.geneB,t.posB,n,i,s,o,e)}}}));const a=Array.from(this.labelMap.values());a.forEach((t=>{e.forEach((e=>{if(t.stop>=e.start&&e.stop>=t.start&&t.chr==e.chr){const s={value:e.value,color:gt.getColor(e.value,this.settings,this.cnvMaxPercentileAbs),chr:e.chr,start:e.start,stop:e.stop};if(t.cnvTooltip){t.cnvTooltip.push(s)}else{t.cnvTooltip=[];t.cnvTooltip.push(s)}}}))}));return Array.from(this.labelMap.values())}addLabelOrMutation(t,e,s,n,i,o,a,r,l){const c=this.labelMap.get(e);const h={mname:s,color:r,dataClass:l,chr:t.chr,position:t.position};if(!c){this.labelMap.set(e,vt.createLabel(n,i,o,a,t.value,e,r,l,t.chr,t.position,t.isPrioritized,this.settings.rings.labelsToLinesGap,h))}else{if(c.mutationsTooltip){c.start=Math.min(c.start,t.position);c.stop=Math.max(c.stop,t.position);c.mutationsTooltip.push(h)}else{c.mutationsTooltip=[];c.start=Math.min(c.start,t.position);c.stop=Math.max(c.stop,t.position);c.mutationsTooltip.push(h)}}}addLabelOrFusion(t,e,s,n,i,o,a,r){const l=this.labelMap.get(e);const c={color:r,chrA:t.chrA,chrB:t.chrB,posA:t.posA,posB:t.posB,geneA:t.geneA,geneB:t.geneB,strandA:t.strandA,strandB:t.strandB};if(!l){this.labelMap.set(e,vt.createLabel(n,i,o,a,t.value,e,r,"Fusion transcript",t.chr,t.position,t.isPrioritized,this.settings.rings.labelsToLinesGap,undefined,c))}else{if(l.fusionTooltip){l.start=Math.min(l.start,s);l.stop=Math.max(l.stop,s);l.fusionTooltip.push(c)}else{l.fusionTooltip=[];l.start=Math.min(l.start,s);l.stop=Math.max(l.stop,s);l.fusionTooltip.push(c)}}}calculateStartAngle(t,e){const s=this.reference.chromosomesOrder.findIndex((e=>e==t));const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}calculateEndAngle(t,e){const s=this.reference.chromosomesOrder.findIndex((e=>e==t));const n=this.reference.chromosomes[s];return n.startAngle+(n.endAngle-n.startAngle)*(Number(e)/n.size)}}class xt extends rt{constructor(t,e,s){super(t.rings.labelLinesInnerRadius,t.rings.labelsToLinesDistance,e.sort(((t,e)=>t.startAngle<e.startAngle?-1:t.startAngle>e.startAngle?1:0)));this.elementsToDisplay=[];this.settings=t;this.hasPrioritizedGenes=s;const n=2*Math.PI*(t.rings.labelLinesInnerRadius+t.rings.labelsToLinesDistance);this.overlapAngle=this.settings.label.overlapAngleFactor*this.settings.label.fontSize/n;this.calculateCollisions()}calculateCollisions(){this.collisions=[];let t=[];t=this.elements.filter((t=>t.isPrioritized));if(this.settings.label.prioritizeGeneLabelsByGeneSets){this.elementsToDisplay=this.getLabelsWithPrioritizedGenes(t)}else if(this.hasPrioritizedGenes){const t=this.elements.filter((t=>t.isPrioritized));const e=this.getLabelsWithPrioritizedGenes(t);const s=this.elements.filter((t=>!t.isPrioritized));const n=[...s,...e].sort(((t,e)=>t.startAngle-e.startAngle));this.elementsToDisplay=this.getAllLabels(n)}else{this.elementsToDisplay=this.getLabelsWithPrioritizedGenes(this.elements)}}getLabelsWithPrioritizedGenes(t){const e=[];let s={endAngle:0};t.forEach(((t,n)=>{if(n==0){e.push(t);s=t}else{const n=s.endAngle-t.startAngle+this.overlapAngle;if(n>0&&n<this.settings.label.maxDeltaAngle){const i=vt.createMovedLabel(t,n);e===null||e===void 0?void 0:e.push(i);s=i}if(n<=0){e.push(t);s=t}}}));return e}getAllLabels(t){var e;const s=[];let n={endAngle:0};const i=t.length;let o=-1;for(let a=0;a<t.length;a++){const r=t[a];if(r.isPrioritized){s.push(r);o=a;n=r;continue}if(a==0){if(i>1){if(this.isElementOverlappingNextCancerGene(t,o,r,0)){continue}s.push(r);n=r}continue}const l=n.endAngle-r.startAngle+this.overlapAngle;if(l>0&&l<this.settings.label.maxDeltaAngle){if(a==length-1){s.push(r);continue}if(this.isElementOverlappingNextCancerGene(t,o,r,l)){continue}const i=vt.createMovedLabel(r,l);(e=this.collisions)===null||e===void 0?void 0:e.push(i);s.push(r);n=i}if(l<=0){if(this.isElementOverlappingNextCancerGene(t,o,r,0)){continue}s.push(r);n=r}}return s}isElementOverlappingNextCancerGene(t,e,s,n){const i=this.getNextLabelWithCancerGene(t,e);if(i){const t=s.endAngle+n-i.startAngle+this.overlapAngle;if(t>0){return true}}return false}getNextLabelWithCancerGene(t,e){return t.find(((t,s)=>t.isPrioritized&&s>e))}}class Mt{constructor(t,e,s,n){this.nonExonicInnerRadius=t;this.nonExonicWidht=e;this.sampleName=s;this.reference=n;this.onePxArcAngle=1/t}map(t){const e=this.nonExonicInnerRadius;const s=e+this.nonExonicWidht;const n=[];t.forEach((t=>{const i=lt.getInstance().mlabel?lt.getInstance().mlabel[t.mClass]:undefined;const o=this.calculateStartAngle(t);const a=this.calculateEndAngle(t);const r={startAngle:o,endAngle:a,innerRadius:e,outerRadius:s,color:i.color,text:t.gene,dataClass:i.label,mname:t.mname,chr:t.chr,pos:t.position,sampleName:[t.sampleName]};n.push(r)}));return n}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.position)/s.size)-this.onePxArcAngle}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return this.onePxArcAngle+s.startAngle+(s.endAngle-s.startAngle)*(Number(t.position)/s.size)}}class Rt{constructor(t,e,s,n){this.lohInnerRadius=t;this.lohWidth=e;this.sampleName=s;this.reference=n}map(t){const e=[];t.forEach((t=>{const s=this.calculateStartAngle(t);const n=this.calculateEndAngle(t);const i=this.lohInnerRadius;const o=i+this.lohWidth;const a=nt.provide(t.segmean);const r={startAngle:s,endAngle:n,innerRadius:i,outerRadius:o,color:a,text:t.gene,chr:t.chr,start:t.start,stop:t.stop,value:t.segmean};e.push(r)}));return e}calculateStartAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.start)/s.size)}calculateEndAngle(t){const e=this.reference.chromosomesOrder.indexOf(t.chr);const s=this.reference.chromosomes[e];return s.startAngle+(s.endAngle-s.startAngle)*(Number(t.stop)/s.size)}}class bt{constructor(t,e,s,n,i,o){this.labelsRing=t;this.chromosomesRing=e;this.nonExonicArcRing=s;this.snvArcRing=n;this.cnvArcRing=i;this.lohArcRing=o}}class Ct{constructor(t,e,s,n,i){this.nonExonicArcRing=undefined;this.settings=t;this.dataMapper=e;this.reference=s;this.sampleName=n;this.genesetName=i}map(t){const e=this.dataMapper.map(t);const s=new At(this.settings,this.sampleName,this.reference,e.cnvMaxPercentileAbs);const i=s.map(e.labelData,e.cnvData);const o=new xt(this.settings,i,e.hasPrioritizedGenes);const a=new rt(this.settings.rings.chromosomeInnerRadius,this.settings.rings.chromosomeWidth,this.reference.chromosomes);const r=new Mt(e.nonExonicInnerRadius,this.settings.rings.nonExonicRingWidth,this.sampleName,this.reference);const l=r.map(e.nonExonicSnvData);if(l.length>0){this.nonExonicArcRing=new rt(e.nonExonicInnerRadius,this.settings.rings.nonExonicRingWidth,l)}this.snvArcsMapper=new ht(e.snvInnerRadius,this.settings.rings.snvRingWidth,this.sampleName,this.reference);const c=this.snvArcsMapper.map(e.snvRingDataMap);if(c.length>0){this.snvArcRing=new rt(e.snvInnerRadius,this.settings.rings.snvRingWidth,c)}const h=new Rt(e.lohInnerRadius,this.settings.rings.lohRingWidth,this.sampleName,this.reference);const d=h.map(e.lohData);if(d.length>0){this.lohArcRing=new rt(e.lohInnerRadius,this.settings.rings.lohRingWidth,d)}this.cnvArcsMapper=new mt(e.cnvInnerRadius,this.settings.rings.cnvRingWidth,this.settings,this.sampleName,this.reference,e.percentilePositive,e.percentileNegative,e.cappedCnvMaxAbsValue,e.cnvMaxPercentileAbs,this.settings.cnv.unit,this.settings.Disco.cnvRenderingType);const p=this.cnvArcsMapper.map(e.cnvData);if(p.length>0){this.cnvArcRing=new rt(e.cnvInnerRadius,this.settings.rings.cnvRingWidth,p)}const u=new st(e.fusionRadius,this.sampleName,this.reference);const g=u.map(e.fusionData);let m;if(this.settings.legend.lohLegendEnabled&&e.lohMinValue&&e.lohMaxValue){m=new it(e.lohMinValue,e.lohMaxValue)}const f=new Z(this.settings.legend.snvTitle,this.settings.legend.cnvTitle,this.settings.legend.lohTitle,this.settings.legend.fusionTitle,this.snvArcsMapper?this.snvArcsMapper.snvClassMap:new Map,this.cnvArcsMapper?this.cnvArcsMapper.cnvClassMap:new Map,this.settings.Disco.cnvRenderingType,g.length>0,m);const v=new bt(o,a,this.nonExonicArcRing,this.snvArcRing,this.cnvArcRing,this.lohArcRing);return new at(this.settings,v,f,g,e,this.genesetName,t.filter((t=>t.dt==n)).length)}}class yt{constructor(t){this.settings=t}map(t){var e,s;const n=t.args.chromosomes;const i=t.args.genome.majorchr;const o=t.args.sampleName;const a=t.args.genome;const r=((e=a===null||a===void 0?void 0:a.geneset)===null||e===void 0?void 0:e[0])?a.geneset[0].lst:[];const l=((s=a===null||a===void 0?void 0:a.geneset)===null||s===void 0?void 0:s[0])?a.geneset[0].name:"";const c=t.args.data;const h=new K(this.settings,i,n);const d=new Y(this.settings,h,o,r);return new Ct(this.settings,d,h,o,l).map(c)}}yt.snvClassLayer={M:"exonic",E:"exonic",F:"exonic",N:"exonic",S:"exonic",D:"exonic",I:"exonic",P:"exonic",L:"exonic",Utr3:"exonic",Utr5:"exonic",mnv:"non-exonic",ITD:"non-exonic",insertion:"non-exonic",deletion:"non-exonic",Intron:"non-exonic",X:"non-exonic",noncoding:"non-exonic"};class wt{constructor(t){this.cappedCnvMaxAbsValue=t}map(t){const e=[];let s=0;if(t.snvClassMap){this.mapSnv(t,e,s++)}if(t.cnvRenderingType==ut.heatmap){this.mapCnvHeatmap(t,e,s++)}else if(t.cnvRenderingType==ut.bar){if(t.cnvClassMap){this.mapCnvBar(t,e,s++)}}if(t.lohLegend){this.mapLoh(t,e,s++)}if(t.fusionLegend){this.mapFusion(t,e,s++)}return e}mapSnv(t,e,s){const n=[];let i=0;for(const[e,s]of t.snvClassMap){n.push({termid:t.snvTitle,key:e,text:`${s.snvType} (${s.count})`,color:s.color,order:i++,border:"1px solid #ccc"})}e.push({name:t.snvTitle,order:s,items:n})}mapCnvBar(t,e,s){if(!t.cnvClassMap)return;const n=t.cnvClassMap.get(pt.Gain);const i=t.cnvClassMap.get(pt.Loss);const o=t.cnvClassMap.get(pt.Cap);if(n&&i&&o){let a=0;const r=[];if(n.value>0){r.push({termid:t.cnvTitle,key:pt.Gain,text:`Max: ${n.value}`,color:n.color,order:a++,border:"1px solid #ccc"})}if(i.value<0){r.push({termid:t.cnvTitle,key:pt.Loss,text:`Min: ${i.value}`,color:i.color,order:a++,border:"1px solid #ccc"})}r.push({termid:t.cnvTitle,key:pt.Cap,text:`Capping: ${o.value}`,color:o.color,order:a++,border:"1px solid #ccc"});e.push({name:t.cnvTitle,order:s,items:r})}}mapCnvHeatmap(t,e,s){if(!t.cnvClassMap)return;const n=t.cnvClassMap.get(pt.Gain);const i=t.cnvClassMap.get(pt.Loss);const o=t.cnvClassMap.get(pt.Cap);if(n&&i&&o){let a=0;const r=[];if(n.value>0){r.push({termid:t.cnvTitle,key:pt.Gain,text:"Copy number gain",width:100,domain:[0,1],minLabel:0,maxLabel:n.value,order:a++,isLegendItem:true,dt:4,scale:c([0,1],["white",n.color])})}if(i.value<0){r.push({termid:t.cnvTitle,key:pt.Loss,text:"Copy number loss",width:100,domain:[0,1],minLabel:0,maxLabel:i.value,order:a++,isLegendItem:true,dt:4,scale:c([0,1],["white",i.color])})}r.push({termid:t.cnvTitle,key:pt.Cap,text:`Capping: ${o.value}`,color:o.color,order:a++,border:"1px solid #ccc"});e.push({name:t.cnvTitle,order:s,items:r})}}mapLoh(t,e,s){if(!t.lohLegend)return;const n=[];n.push({termid:t.lohTitle,key:"min",text:"min",color:t.lohLegend.colorStartValue,order:0,border:"1px solid #ccc"});n.push({termid:t.lohTitle,key:"max",text:"max",color:t.lohLegend.colorEndValue,order:1,border:"1px solid #ccc"});e.push({name:t.lohTitle,order:s,items:n})}mapFusion(t,e,s){const n=[];n.push({termid:t.fusionTitle,key:_.Interchromosomal,text:"Interchromosomal",color:_.Interchromosomal.valueOf(),order:0,border:"1px solid #ccc"});n.push({termid:t.fusionTitle,key:_.Intrachromosomal,text:"Intrachromosomal",color:_.Intrachromosomal.valueOf(),order:1,border:"1px solid #ccc"});e.push({name:t.fusionTitle,order:s,items:n})}}class It{constructor(t=0,e){this.fontSize=e;this.legendJSONMapper=new wt(t)}render(t,e,s,n,i){const o=v({holder:t.append("g").attr("data-testid","sjpp_disco_plot_legend"),rectFillFxn:t=>t.color,iconStroke:"#aaa"});const a={xOffset:s};const r=this.legendJSONMapper.map(e);o(r,{settings:Object.assign({},{svgw:n,svgh:i,dimensions:a,fontsize:this.fontSize})})}}class Lt{constructor(t,e,s){this.padAngle=t;this.innerRadius=e;this.outerRadius=s}render(t,e){const s=W().padAngle(this.padAngle).value((t=>t.size)).sort(null);const n=s(e);const i=g().innerRadius(this.innerRadius).outerRadius(this.outerRadius);const o=t.append("g").attr("data-testid","sjpp_chromosomes_arc_group");o.selectAll("path").data(n).enter().append("path").attr("d",i).attr("fill","black");o.selectAll("text").data(n).enter().append("text").attr("transform",(t=>`translate(${i.centroid(t)}) rotate(${t.data.angle*180/Math.PI-90})${t.data.angle>Math.PI?"rotate(180)":""}`)).attr("dy","0.35em").attr("text-anchor","middle").text((t=>t.data.text)).style("fill","white")}}class Dt{constructor(t,e){this.animationDuration=t;this.geneClickListener=e}render(t,e,n){const i=t.append("g");const o=x().x((t=>t.x)).y((t=>t.y));const a=j.create();i.selectAll(".group").data(e).enter().append("g").attr("class","group").each(((t,e,n)=>{const i=h(n[e]);i.append("text").attr("class","chord-text").attr("dy",".35em").attr("transform",t.transform).style("text-anchor",t.textAnchor).style("font-size","12px").style("fill",t.color).style("cursor","pointer").text(t.text).on("click",(()=>{if(t.mutationsTooltip){this.geneClickListener(t.text,t.mutationsTooltip.map((t=>t.mname)))}})).on("mouseover",(e=>{const n=s({holder:a.d});this.createTooltip(n,t);a.show(e.x,e.y)})).on("mouseout",(()=>{a.clear();a.hide()}));i.append("path").attr("class","chord-tick").datum(t.line.points).style("stroke",t.color).style("fill","none").attr("d",o)}));i.selectAll(".group").each(((t,e,s)=>{const i=n?n.find((e=>e.text===t.text)):undefined;if(i){const t=h(s[e]);t.selectAll(".chord-text").datum(i).transition().duration(this.animationDuration).attr("transform",i.transform).style("text-anchor",i.textAnchor);t.selectAll(".chord-tick").datum(i.line.points).transition().duration(this.animationDuration).style("fill","none").attr("d",o)}}))}createTooltip(t,e){if(e.mutationsTooltip){const[s,n]=t.addRow();s.text("Gene");n.append("span").style("margin-left","5px").text(e.text);e.mutationsTooltip.forEach((e=>{{const[s,n]=t.addRow();s.text("Consequence");n.append("span").text(e.mname);n.append("span").style("margin-left","5px").style("color",e.color).text(e.dataClass)}{const[s,n]=t.addRow();s.text("Mutation");n.append("span").text(`${e.chr}:${e.position}`)}}))}if(e.fusionTooltip){const[s,n]=t.addRow();s.text("Data type");n.append("span").text("Fusion transcript");e.fusionTooltip.forEach((e=>{const[s,n]=t.addRow();s.text("Break points");n.append("span").text(` ${e.geneA?e.geneA:""} ${e.chrA}:${e.posA} \n\t\t\t\t\t\t${e.strandA=="+"?"forward":"reverse"} > `+`${e.geneB?e.geneB:""} ${e.chrB}:${e.posB} ${e.strandB=="+"?"forward":"reverse"} `)}))}if(e.cnvTooltip){e.cnvTooltip.forEach((e=>{const[s,n]=t.addRow();s.text("CNV");n.append("span").style("color",e.color).text(e.value).append("span").style("margin-left","5px").text(`${e.chr}:${e.start}-${e.stop}`)}))}}}function Tt(t={}){const e={downloadImgName:"disco.plot",Disco:{cnvCapping:5,isOpen:false,prioritizeGeneLabelsByGeneSets:false,showPrioritizeGeneLabelsByGeneSets:false,cnvRenderingType:ut.heatmap,cnvPercentile:80},rings:{nonExonicRingWidth:20,snvRingWidth:20,lohRingWidth:20,cnvRingWidth:30,snvRingFilters:["exonic"],chromosomeInnerRadius:190,chromosomeWidth:20,labelLinesInnerRadius:210,labelsToLinesDistance:30,labelsToLinesGap:2,nonExonicRingEnabled:true,nonExonicFilterValues:["non-exonic"]},verticalPadding:70,horizontalPadding:500,layerScaler:1,padAngle:.002,label:{fontSize:12,maxDeltaAngle:.05,animationDuration:1e3,overlapAngleFactor:5},cnv:{capping:5,ampColor:"#D6683C",lossColor:"#67a9cf",cappedAmpColor:"#8B0000",cappedLossColor:"#00008B",unit:"Unit"},snv:{maxMutationCount:1e4},legend:{snvTitle:"SNV",cnvTitle:"CNV",lohTitle:"LOH",fusionTitle:"SV",lohLegendEnabled:true,fontSize:12,rowHeight:48},menu:{padding:5}};return d(e,t)}class Ot{constructor(t){this.geneClickListener=t}render(t,e){const i=g();const o=t.append("g");const a=j.create();o.selectAll("path").data(e).enter().append("path").attr("d",(t=>i(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const i=s({holder:a.d});const o=structuredClone(e);o.dt=n;o.class=e.dataClass;o.gene=o.text;{const[t,e]=i.addRow();t.text("Consequence");e.append("span").text(o.mname);e.append("span").style("margin-left","5px").style("color",o.color).style("font-size",".8em").text(o.dataClass)}{const[t,e]=i.addRow();t.text(o.ref&&o.alt?"Mutation":"Position");e.append("span").text(`${o.chr}:${o.pos+1} ${o.ref&&o.alt?o.ref+">"+o.alt:""}`)}if(o.gene){const[t,e]=i.addRow();t.text("Gene");e.text(o.gene)}if(o.occurrence>1){const[t,e]=i.addRow();t.text("Occurrence");e.text(o.occurrence)}a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()})).on("click",((t,e)=>{this.geneClickListener(e.text,[e.mname])}))}}class Pt{constructor(t,e){this.svnWidth=t;this.geneClickListener=e}render(t,e){if(e.length>0){const s=e[0].innerRadius;const n=new F(s,this.svnWidth,"#6464641A");n.render(t)}const i=g();const o=t.append("g");const a=j.create();o.selectAll("path").data(e).enter().append("path").attr("d",(t=>i(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const i=s({holder:a.d});const o=structuredClone(e);o.dt=n;o.class=e.dataClass;o.gene=o.text;{const[t,e]=i.addRow();t.text("Consequence");e.append("span").text(o.mname);e.append("span").style("margin-left","5px").style("color",o.color).style("font-size",".8em").text(o.dataClass)}{const[t,e]=i.addRow();t.text(o.ref&&o.alt?"Mutation":"Position");e.append("span").text(`${o.chr}:${o.pos+1} ${o.ref&&o.alt?o.ref+">"+o.alt:""}`)}if(o.gene){const[t,e]=i.addRow();t.text("Gene");e.text(o.gene)}if(o.occurrence>1){const[t,e]=i.addRow();t.text("Occurrence");e.text(o.occurrence)}a.show(t.x,t.y)})).on("mouseout",(()=>{a.clear();a.hide()})).on("click",((t,e)=>{this.geneClickListener(e.text,[e.mname])}))}}class Nt{render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const n=s({holder:o.d});const i=structuredClone(e);i.dt=r;i.gene=i.text;{const[t,e]=n.addRow();t.text("Data type");e.append("span").style("margin-left","5px").text("Loss of Heterozygosity")}const[a,l]=n.addRow();a.text("Position");l.append("span").text(`${e.chr}:${e.start}-${e.stop}`);o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class Et{render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>t.color)).on("mouseover",((t,e)=>{const n=structuredClone(e);n.dt=a;n.samples=[{sample_id:e.sampleName}];n.gene=n.text;const i=s({holder:o.d});{const[t,e]=i.addRow();t.text("Copy number change");e.html(`<span style="background:${n.color}">&nbsp;&nbsp;</span> ${n.value}`)}{const[t,e]=i.addRow();t.text("Position");e.text(n.chr+":"+n.start+"-"+n.stop)}{const[t,e]=i.addRow();t.text("Unit");e.text(n.value)}o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class Vt{constructor(t=0,e=0){this.positivePercentile80=t;this.negativePercentile80=e}render(t,e){const n=g();const i=t.append("g");const o=j.create();i.selectAll("path").data(e).enter().append("path").attr("d",(t=>n(t))).attr("fill",(t=>c([this.negativePercentile80,0,this.positivePercentile80],[t.color,"white",t.color]).clamp(true)(t.value))).on("mouseover",((t,e)=>{const n=s({holder:o.d});const i=structuredClone(e);i.dt=a;i.samples=[{sample_id:e.sampleName}];i.gene=i.text;{const[t,e]=n.addRow();t.text("Copy number change");e.html(`<span style="background:${i.color}">&nbsp;&nbsp;</span> ${i.value}`)}{const[t,e]=n.addRow();t.text("Position");e.text(i.chr+":"+i.start+"-"+i.stop)}{const[t,e]=n.addRow();t.text("Unit");e.text(i.value)}o.show(t.x,t.y)})).on("mouseout",(()=>{o.clear();o.hide()}))}}class St{constructor(t){this.recreateViewModel=false;this.type="Disco";this.opts=t;this.isOpen=false;this.discoInteractions=new X(this)}init(){return t(this,void 0,void 0,(function*(){const t=this.app.getState();const e=t.plots.find((t=>t.id===this.id)).settings;this.stateViewModelMapper=new yt(e);this.viewModel=this.stateViewModelMapper.map(t);const s=this.opts.holder;const n=s.append("div").style("display","inline-block").style("vertical-align","top");const i=n.append("div");const o=n.append("div");const a=this.getConfigInputsOptions(this.viewModel);this.features=yield u({topbar:R({app:this.app,id:this.id,downloadHandler:()=>this.discoInteractions.downloadClickListener(s.select('svg[id="sjpp_disco_plot"]').node()),callback:()=>this.toggleVisibility(this.isOpen),isOpen:()=>this.isOpen,holder:i}),config:b({app:this.app,id:this.id,holder:o,isOpen:()=>this.isOpen,inputs:a})})}))}getConfigInputsOptions(t){const e=[];if(t.settings.Disco.showPrioritizeGeneLabelsByGeneSets){const s=[{boxLabel:t.genesetName,label:`Filter mutations`,type:"checkbox",chartType:"Disco",settingsKey:"prioritizeGeneLabelsByGeneSets",title:`Only show mutations for ${t.genesetName} genes`}];e.push(...s)}const s=[{label:"CNV capping",type:"number",chartType:"Disco",settingsKey:"cnvCapping",title:"Cnv capping",min:0},{boxLabel:"",label:"CNV rendering type",type:"radio",chartType:"Disco",settingsKey:"cnvRenderingType",title:"CNV rendering type",options:[{label:"Heatmap",value:ut.heatmap},{label:"Bar",value:ut.bar}]},{label:"CNV percentile",type:"number",chartType:"Disco",settingsKey:"cnvPercentile",title:"Cnv percentile",min:1,max:100}];e.push(...s);return e}main(){return t(this,void 0,void 0,(function*(){const t=this.state.settings;this.isOpen=t.Disco.isOpen;if(this.recreateViewModel){this.stateViewModelMapper=new yt(t);this.viewModel=this.stateViewModelMapper.map(this.app.getState())}this.recreateViewModel=true;if(this.viewModel){const e=this.opts.holder;e.select('div[id="sjpp_disco_plot_holder_div"]').remove();const s=e.append("div").attr("id","sjpp_disco_plot_holder_div").style("display","inline-block");const n=this.app.getState();for(const t in this.features){this.features[t].update({state:this.state,appState:n})}const i=new It(this.viewModel.cappedCnvMaxAbsValue,t.label.fontSize);const o=new q(this.getRingRenderers(t,this.viewModel,this.discoInteractions.geneClickListener),i);o.render(s,this.viewModel)}}))}getState(t){return t.plots.find((t=>t.id===this.id))}getRingRenderers(t,e,s){const n=new Lt(t.padAngle,t.rings.chromosomeInnerRadius,t.rings.chromosomeInnerRadius+t.rings.chromosomeWidth);const i=new Dt(t.label.animationDuration,s);const o=new Ot(s);const a=new Pt(t.rings.snvRingWidth,s);const r=t.Disco.cnvRenderingType===ut.heatmap?new Vt(e.positivePercentile80,e.negativePercentile80):new Et;const l=new Nt;const c=new Map;c.set(ot.CHROMOSOME,n);c.set(ot.LABEL,i);c.set(ot.NONEXONICSNV,o);c.set(ot.SNV,a);c.set(ot.CNV,r);c.set(ot.LOH,l);return c}toggleVisibility(t){this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{settings:{Disco:{isOpen:!t}}}})}}const zt=p(St);const Bt=zt;function Gt(e){return t(this,void 0,void 0,(function*(){return{chartType:"Disco",subfolder:"disco",extension:"ts",settings:Tt(e.overrides)}}))}export{Bt as componentInit,zt as discoInit,Gt as getPlotConfig};
@@ -1 +1 @@
1
- import{_ as t}from"./tslib.es6-62bb2d8e.js";import{m as e,a as l,b as n,c as i,f as a,e as o}from"./uiUtils-d2dc20e3.js";import{T as s}from"./toggleButtons-367bd754.js";import{y as p,aS as d}from"./app-b469c020.js";import{launch as c}from"./launch.adhoc-1023d87f.js";import"./plot.app-15e1b0ec.js";import"./recover-1133c1bc.js";import"./roundValue-0f4c2fb0.js";import"path";import"./FilterRxComp-864406bf.js";import"./table-f1438af6.js";import"./termdb.bins-0d2b6a1d.js";import"./FilterStateless-150f3ab3.js";import"./app-6f0f05ed.js";import"./termInfo-3f8fae03.js";import"./genesearch-18b93a37.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";function r(t,n,i){const a=t.append("div").style("margin","20px 20px 20px 40px").style("font-family","'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif").style("place-items","center left").style("overflow","hidden").classed("sjpp-app-ui",true).classed("sjpp-disco-ui",true);const o={data:[]};e(a,"Select Genome").style("font-size","1.15em").style("padding","10px 0px").style("color","#003366");m(a,n,o);e(a,"Provide Data").style("font-size","1.15em").style("padding","10px 0px 5px 0px").style("color","#003366");a.append("div").style("opacity",.75).style("padding","10px 10px 15px 20px").style("width","65vw").style("line-height","1.5em").html('<p>The plot accepts multiple data types. Input fields for each data type are available in the tabs below. Upload a file or paste data in at least one data type tab and click "Create Disco Plot". <a href="https://proteinpaint.stjude.org/ppdemo/hg38/disco/discoDemoData.tar.gz" target="Demo data">Download example files</a></p>');const s=a.append("div").style("margin-left","2vw");f(s,o);const p=a.append("div").style("display","flex").style("align-items","center").style("padding","15px 0px");h(p,o,n,a,t);l(p,o,".disco_input");if(i)window["doms"]=o;return o}function m(t,e,l){const i=t.append("div").style("margin-left","40px");const a=n(i,e).style("border","1px solid rgb(138, 177, 212)");l.genome=a.node()}function f(e,l){const n=[{label:"SNV Indel",active:true,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="snv";const t=`<ol>\n\t\t\t\t\t<li>chr</li>\n\t\t\t\t\t<li>position</li>\n\t\t\t\t\t<li>gene</li>\n\t\t\t\t\t<li>aachange</li>\n\t\t\t\t\t<li>class</li></ol>\n\t\t\t\t\t<p>Example:</p>\n<pre style="margin-left: 10px;">\nchr1\t226252135\tH3F3A\tK28M\tM\nchr2\t98765432\tTestGene\tTestMutation\tF\n</pre>`;y(n,l,t)}))},{label:"SV",active:false,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="sv";const t=`<ol>\n\t\t\t\t\t<li>chrA</li>\n\t\t\t\t\t<li>posA</li>\n\t\t\t\t\t<li>geneA (optional)</li>\n\t\t\t\t\t<li>chrB</li>\n\t\t\t\t\t<li>posB</li>\n\t\t\t\t\t<li>geneB (optional)</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example (with genes):</p>\n<pre style="margin-left: 10px;">\nchr6\t3067605\tMDC1\tchr12\t61521661\tKMT2D\n</pre>\n\t\t\t\t<p>Example (without genes):</p>\n<pre style="margin-left: 10px;">\nchr6\t3067605\tchr12\t61521661\n</pre>`;y(n,l,t)}))},{label:"CNV",active:false,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="cnv";const t=`<ol>\n\t\t\t\t<li>chr</li>\n\t\t\t\t<li>start</li>\n\t\t\t\t<li>stop</li>\n\t\t\t\t<li>value</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example:</p>\n<pre style="margin-left: 10px;">\nchr1\t1\t100000000\t0.5\nchr1\t100000000\t200000000\t-0.5\n</pre>`;y(n,l,t)}))}];new s({holder:e,tabs:n,tabsPosition:"vertical",linePosition:"right"}).main()}function y(t,e,l){t.contentHolder.style("border","none").style("display","block").style("padding-left","30px");b(t,e);t.contentHolder.append("div").style("padding","15px 0px 0px 10px").style("opacity",.75).text(`Provide ${t.label} data in tab delimited format with the following columns:`).append("span").html(l);delete t.callback}function b(e,l){const n=95;const i=[{label:"Select File",active:true,width:n,callback:(n,i)=>t(this,void 0,void 0,(function*(){const t=e.key;i.contentHolder.style("border","none").style("display","block");d(i.contentHolder);i.contentHolder.append("div").style("padding","0px 0px 5px 15px").style("opacity",.65).text(`Select a local file`);x(i,l,t);delete i.callback}))},{label:"Paste Data",active:false,width:n,callback:(n,i)=>t(this,void 0,void 0,(function*(){const t=e.key;i.contentHolder.style("border","none").style("display","block");d(i.contentHolder);u(i,l,t);delete i.callback}))}];new s({holder:e.contentHolder,tabs:i}).main()}function x(t,e,l){const n=t.contentHolder.append("div").style("display","inline-block");const i=a(n).classed("disco_input",true);i.on("change",(t=>{const n=t.target.files[0];const i=new FileReader;i.onload=t=>{e.data[l+"Text"]=t.target.result};i.readAsText(n,"utf8")}))}function u(e,l,n){const i=e.contentHolder.append("div").style("display","block");const a=o({div:i,cols:50}).style("border","1px solid rgb(138, 177, 212)").style("margin","0px 0px 0px 20px").classed("disco_input",true).on("keyup",(()=>t(this,void 0,void 0,(function*(){l.data[n+"Text"]=a.property("value").trim()}))))}function h(t,e,l,n,a){const o=i({div:t,text:"Create Disco Plot"});const s=t.append("div");o.style("margin-right","10px").style("font-size","16px").classed("sjpp-ui-submitBtn",true).attr("type","submit").on("click",(()=>{if(!e.data||e.data==undefined){const t=s.append("div").style("display","inline-block").style("max-width","20vw");p(t,"Please provide data");setTimeout((()=>t.remove()),2e3)}else{const t=l[e.genome.options[e.genome.selectedIndex].text];n.remove();c(e.data,t,a);v(a,l)}}))}function v(t,e){t.append("button").html("&#171; Back").on("click",(()=>{t.selectAll("*").remove();r(t,e,false)}))}export{r as init_discoplotUI};
1
+ import{_ as t}from"./tslib.es6-62bb2d8e.js";import{m as e,a as l,b as n,c as i,f as a,e as o}from"./uiUtils-54423dc7.js";import{T as s}from"./toggleButtons-b50565cd.js";import{y as p,aS as d}from"./app-3a4da08d.js";import{launch as c}from"./launch.adhoc-2009f139.js";import"./plot.app-441e1de7.js";import"./recover-af1a4195.js";import"./roundValue-67b66074.js";import"path";import"./FilterRxComp-8de2ef58.js";import"./table-4a439020.js";import"./termdb.bins-b2b3dc54.js";import"./FilterStateless-d43e3ec3.js";import"./app-6e44d843.js";import"./termInfo-2c3d1c01.js";import"./genesearch-a28dfb78.js";import"./checkbox-96437f4d.js";import"./rehydrateFilter-12d118cb.js";function r(t,n,i){const a=t.append("div").style("margin","20px 20px 20px 40px").style("font-family","'Lucida Sans', 'Lucida Sans Regular', 'Lucida Grande', 'Lucida Sans Unicode', Geneva, Verdana, sans-serif").style("place-items","center left").style("overflow","hidden").classed("sjpp-app-ui",true).classed("sjpp-disco-ui",true);const o={data:[]};e(a,"Select Genome").style("font-size","1.15em").style("padding","10px 0px").style("color","#003366");m(a,n,o);e(a,"Provide Data").style("font-size","1.15em").style("padding","10px 0px 5px 0px").style("color","#003366");a.append("div").style("opacity",.75).style("padding","10px 10px 15px 20px").style("width","65vw").style("line-height","1.5em").html('<p>The plot accepts multiple data types. Input fields for each data type are available in the tabs below. Upload a file or paste data in at least one data type tab and click "Create Disco Plot". <a href="https://proteinpaint.stjude.org/ppdemo/hg38/disco/discoDemoData.tar.gz" target="Demo data">Download example files</a></p>');const s=a.append("div").style("margin-left","2vw");y(s,o);const p=a.append("div").style("display","flex").style("align-items","center").style("padding","15px 0px");h(p,o,n,a,t);l(p,o,".disco_input");if(i)window["doms"]=o;return o}function m(t,e,l){const i=t.append("div").style("margin-left","40px");const a=n(i,e).style("border","1px solid rgb(138, 177, 212)");l.genome=a.node()}function y(e,l){const n=[{label:"SNV Indel",active:true,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="snv";const t=`<ol>\n\t\t\t\t\t<li>chr</li>\n\t\t\t\t\t<li>position</li>\n\t\t\t\t\t<li>gene</li>\n\t\t\t\t\t<li>aachange</li>\n\t\t\t\t\t<li>class</li></ol>\n\t\t\t\t\t<p>Example:</p>\n<pre style="margin-left: 10px;">\nchr1\t226252135\tH3F3A\tK28M\tM\nchr2\t98765432\tTestGene\tTestMutation\tF\n</pre>`;f(n,l,t)}))},{label:"SV",active:false,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="sv";const t=`<ol>\n\t\t\t\t\t<li>chrA</li>\n\t\t\t\t\t<li>posA</li>\n\t\t\t\t\t<li>geneA (optional)</li>\n\t\t\t\t\t<li>chrB</li>\n\t\t\t\t\t<li>posB</li>\n\t\t\t\t\t<li>geneB (optional)</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example (with genes):</p>\n<pre style="margin-left: 10px;">\nchr6\t3067605\tMDC1\tchr12\t61521661\tKMT2D\n</pre>\n\t\t\t\t<p>Example (without genes):</p>\n<pre style="margin-left: 10px;">\nchr6\t3067605\tchr12\t61521661\n</pre>`;f(n,l,t)}))},{label:"CNV",active:false,callback:(e,n)=>t(this,void 0,void 0,(function*(){n.key="cnv";const t=`<ol>\n\t\t\t\t<li>chr</li>\n\t\t\t\t<li>start</li>\n\t\t\t\t<li>stop</li>\n\t\t\t\t<li>value</li>\n\t\t\t\t</ol>\n\t\t\t\t<p>Example:</p>\n<pre style="margin-left: 10px;">\nchr1\t1\t100000000\t0.5\nchr1\t100000000\t200000000\t-0.5\n</pre>`;f(n,l,t)}))}];new s({holder:e,tabs:n,tabsPosition:"vertical",linePosition:"right"}).main()}function f(t,e,l){t.contentHolder.style("border","none").style("display","block").style("padding-left","30px");x(t,e);t.contentHolder.append("div").style("padding","15px 0px 0px 10px").style("opacity",.75).text(`Provide ${t.label} data in tab delimited format with the following columns:`).append("span").html(l);delete t.callback}function x(e,l){const n=95;const i=[{label:"Select File",active:true,width:n,callback:(n,i)=>t(this,void 0,void 0,(function*(){const t=e.key;i.contentHolder.style("border","none").style("display","block");d(i.contentHolder);i.contentHolder.append("div").style("padding","0px 0px 5px 15px").style("opacity",.65).text(`Select a local file`);u(i,l,t);delete i.callback}))},{label:"Paste Data",active:false,width:n,callback:(n,i)=>t(this,void 0,void 0,(function*(){const t=e.key;i.contentHolder.style("border","none").style("display","block");d(i.contentHolder);b(i,l,t);delete i.callback}))}];new s({holder:e.contentHolder,tabs:i}).main()}function u(t,e,l){const n=t.contentHolder.append("div").style("display","inline-block");const i=a(n).classed("disco_input",true);i.on("change",(t=>{const n=t.target.files[0];const i=new FileReader;i.onload=t=>{e.data[l+"Text"]=t.target.result};i.readAsText(n,"utf8")}))}function b(e,l,n){const i=e.contentHolder.append("div").style("display","block");const a=o({div:i,cols:50}).style("border","1px solid rgb(138, 177, 212)").style("margin","0px 0px 0px 20px").classed("disco_input",true).on("keyup",(()=>t(this,void 0,void 0,(function*(){l.data[n+"Text"]=a.property("value").trim()}))))}function h(t,e,l,n,a){const o=i({div:t,text:"Create Disco Plot"});const s=t.append("div");o.style("margin-right","10px").style("font-size","16px").classed("sjpp-ui-submitBtn",true).attr("type","submit").on("click",(()=>{if(!e.data||e.data==undefined){const t=s.append("div").style("display","inline-block").style("max-width","20vw");p(t,"Please provide data");setTimeout((()=>t.remove()),2e3)}else{const t=l[e.genome.options[e.genome.selectedIndex].text];n.remove();c(e.data,t,a);v(a,l)}}))}function v(t,e){t.append("button").html("&#171; Back").on("click",(()=>{t.selectAll("*").remove();r(t,e,false)}))}export{r as init_discoplotUI};
@@ -1 +1 @@
1
- import{P as e,R as t,V as n,a as r,M as o,E as i}from"./sampleScatter.rendererThree-e700b65d.js";import"./app-b469c020.js";const s=new e;const a=new t;const c=new n;const l=new r;const p=new r;const u=new r;const d=new o;class f extends i{constructor(e,t,n){super();n.style.touchAction="none";let r=null,o=null;const i=[];const f=this;function m(){n.addEventListener("pointermove",E);n.addEventListener("pointerdown",g);n.addEventListener("pointerup",j);n.addEventListener("pointerleave",j)}function v(){n.removeEventListener("pointermove",E);n.removeEventListener("pointerdown",g);n.removeEventListener("pointerup",j);n.removeEventListener("pointerleave",j);n.style.cursor=""}function h(){v()}function y(){return e}function b(){return a}function E(m){if(f.enabled===false)return;x(m);a.setFromCamera(c,t);if(r){if(a.ray.intersectPlane(s,p)){r.position.copy(p.sub(l).applyMatrix4(d))}f.dispatchEvent({type:"drag",object:r});return}if(m.pointerType==="mouse"||m.pointerType==="pen"){i.length=0;a.setFromCamera(c,t);a.intersectObjects(e,true,i);if(i.length>0){const e=i[0].object;s.setFromNormalAndCoplanarPoint(t.getWorldDirection(s.normal),u.setFromMatrixPosition(e.matrixWorld));if(o!==e&&o!==null){f.dispatchEvent({type:"hoveroff",object:o});n.style.cursor="auto";o=null}if(o!==e){f.dispatchEvent({type:"hoveron",object:e});n.style.cursor="pointer";o=e}}else{if(o!==null){f.dispatchEvent({type:"hoveroff",object:o});n.style.cursor="auto";o=null}}}}function g(o){if(f.enabled===false)return;x(o);i.length=0;a.setFromCamera(c,t);a.intersectObjects(e,true,i);if(i.length>0){r=f.transformGroup===true?e[0]:i[0].object;s.setFromNormalAndCoplanarPoint(t.getWorldDirection(s.normal),u.setFromMatrixPosition(r.matrixWorld));if(a.ray.intersectPlane(s,p)){d.copy(r.parent.matrixWorld).invert();l.copy(p).sub(u.setFromMatrixPosition(r.matrixWorld))}n.style.cursor="move";f.dispatchEvent({type:"dragstart",object:r})}}function j(){if(f.enabled===false)return;if(r){f.dispatchEvent({type:"dragend",object:r});r=null}n.style.cursor=o?"pointer":"auto"}function x(e){const t=n.getBoundingClientRect();c.x=(e.clientX-t.left)/t.width*2-1;c.y=-(e.clientY-t.top)/t.height*2+1}m();this.enabled=true;this.transformGroup=false;this.activate=m;this.deactivate=v;this.dispose=h;this.getObjects=y;this.getRaycaster=b}}export{f as DragControls};
1
+ import{P as e,R as t,V as n,a as r,M as o,E as i}from"./sampleScatter.rendererThree-c8e3f5ed.js";import"./app-3a4da08d.js";const s=new e;const a=new t;const c=new n;const l=new r;const p=new r;const u=new r;const d=new o;class f extends i{constructor(e,t,n){super();n.style.touchAction="none";let r=null,o=null;const i=[];const f=this;function m(){n.addEventListener("pointermove",E);n.addEventListener("pointerdown",g);n.addEventListener("pointerup",j);n.addEventListener("pointerleave",j)}function v(){n.removeEventListener("pointermove",E);n.removeEventListener("pointerdown",g);n.removeEventListener("pointerup",j);n.removeEventListener("pointerleave",j);n.style.cursor=""}function h(){v()}function y(){return e}function b(){return a}function E(m){if(f.enabled===false)return;x(m);a.setFromCamera(c,t);if(r){if(a.ray.intersectPlane(s,p)){r.position.copy(p.sub(l).applyMatrix4(d))}f.dispatchEvent({type:"drag",object:r});return}if(m.pointerType==="mouse"||m.pointerType==="pen"){i.length=0;a.setFromCamera(c,t);a.intersectObjects(e,true,i);if(i.length>0){const e=i[0].object;s.setFromNormalAndCoplanarPoint(t.getWorldDirection(s.normal),u.setFromMatrixPosition(e.matrixWorld));if(o!==e&&o!==null){f.dispatchEvent({type:"hoveroff",object:o});n.style.cursor="auto";o=null}if(o!==e){f.dispatchEvent({type:"hoveron",object:e});n.style.cursor="pointer";o=e}}else{if(o!==null){f.dispatchEvent({type:"hoveroff",object:o});n.style.cursor="auto";o=null}}}}function g(o){if(f.enabled===false)return;x(o);i.length=0;a.setFromCamera(c,t);a.intersectObjects(e,true,i);if(i.length>0){r=f.transformGroup===true?e[0]:i[0].object;s.setFromNormalAndCoplanarPoint(t.getWorldDirection(s.normal),u.setFromMatrixPosition(r.matrixWorld));if(a.ray.intersectPlane(s,p)){d.copy(r.parent.matrixWorld).invert();l.copy(p).sub(u.setFromMatrixPosition(r.matrixWorld))}n.style.cursor="move";f.dispatchEvent({type:"dragstart",object:r})}}function j(){if(f.enabled===false)return;if(r){f.dispatchEvent({type:"dragend",object:r});r=null}n.style.cursor=o?"pointer":"auto"}function x(e){const t=n.getBoundingClientRect();c.x=(e.clientX-t.left)/t.width*2-1;c.y=-(e.clientY-t.top)/t.height*2+1}m();this.enabled=true;this.transformGroup=false;this.activate=m;this.deactivate=v;this.dispose=h;this.getObjects=y;this.getRaycaster=b}}export{f as DragControls};
@@ -1,4 +1,4 @@
1
- import{_ as e}from"./tslib.es6-62bb2d8e.js";import{h as t}from"./app-b469c020.js";import{c as i,a as n}from"./_commonjsHelpers-318dc0aa.js";var r=i((function(e){
1
+ import{_ as e}from"./tslib.es6-62bb2d8e.js";import{h as t}from"./app-3a4da08d.js";import{c as i,a as n}from"./_commonjsHelpers-318dc0aa.js";var r=i((function(e){
2
2
  //! openseadragon 4.1.1
3
3
  //! Built on 2024-04-01
4
4
  //! Git commit: v4.1.1-0-f90d9814