@sjcrh/proteinpaint-client 2.74.2 → 2.76.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (307) hide show
  1. package/dist/{2dmaf-b2d78c57.js → 2dmaf-74b99126.js} +1 -1
  2. package/dist/AppHeader-cecb39c2.js +1 -0
  3. package/dist/{ColorScale-9c76aef3.js → ColorScale-21cab8d2.js} +1 -1
  4. package/dist/DEanalysis-95bad59a.js +1 -0
  5. package/dist/Disco-a6e921a0.js +1 -0
  6. package/dist/Disco.UI-9ad999ed.js +1 -0
  7. package/dist/{DragControls-586f72db.js → DragControls-e3b6a937.js} +1 -1
  8. package/dist/{DziViewer-6311327c.js → DziViewer-354a790d.js} +1 -1
  9. package/dist/FilterRxComp-701a1480.js +1 -0
  10. package/dist/{FilterStateless-046081c2.js → FilterStateless-54c0b763.js} +1 -1
  11. package/dist/{HicApp-40e44cba.js → HicApp-d5a946bf.js} +1 -1
  12. package/dist/{OrbitControls-0cda1772.js → OrbitControls-694652cd.js} +1 -1
  13. package/dist/WSIViewer-dc7f8eb0.js +1 -0
  14. package/dist/adSandbox-f438e388.js +1 -0
  15. package/dist/app-3320ab6f.js +1 -0
  16. package/dist/app-649f8357.js +1 -0
  17. package/dist/app-b369b169.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/bam-431875ef.js +1 -0
  20. package/dist/barchart-8277ed43.js +1 -0
  21. package/dist/barchart.events-da29c90d.js +1 -0
  22. package/dist/{bars.renderer-5f7a4174.js → bars.renderer-dcfdd59b.js} +1 -1
  23. package/dist/block-6aedd569.js +1 -0
  24. package/dist/block.lazyload-87b12654.js +1 -0
  25. package/dist/block.legend-d3f61ef7.js +1 -0
  26. package/dist/{block.mds-effc078d.js → block.mds-3ad17dfa.js} +1 -1
  27. package/dist/{block.mds.cnv-ec861a26.js → block.mds.cnv-857ba868.js} +1 -1
  28. package/dist/{block.mds.expressionrank-a2ad7c80.js → block.mds.expressionrank-7e3b208c.js} +1 -1
  29. package/dist/{block.mds.expressionstat-31dc5595.js → block.mds.expressionstat-f2d31c86.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-3ca857ce.js → block.mds.geneboxplot-f0fbaf12.js} +1 -1
  31. package/dist/{block.mds.junction-debba938.js → block.mds.junction-7f87f48f.js} +1 -1
  32. package/dist/{block.mds.svcnv-8dc5abdf.js → block.mds.svcnv-ac035c12.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-81e62600.js → block.mds.svcnv.share-886d9479.js} +1 -1
  34. package/dist/block.mds2-7852c1ee.js +1 -0
  35. package/dist/{block.svg-9121e8e7.js → block.svg-9b916fa6.js} +1 -1
  36. package/dist/{block.tk.aicheck-c1b478e9.js → block.tk.aicheck-6770e333.js} +1 -1
  37. package/dist/{block.tk.ase-0f6ded48.js → block.tk.ase-ee807e59.js} +1 -1
  38. package/dist/{block.tk.bam-7cd06aee.js → block.tk.bam-00fba6e8.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-3ef8b94e.js → block.tk.bedgraphdot-7fda78e9.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-d1248810.js → block.tk.bigwig.ui-cc1a42f3.js} +1 -1
  41. package/dist/{block.tk.hicstraw-ee731e55.js → block.tk.hicstraw-526470e3.js} +1 -1
  42. package/dist/{block.tk.junction-4d8cab4d.js → block.tk.junction-b43a4cda.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-a6430b27.js → block.tk.junction.textmatrixui-a60ed78a.js} +1 -1
  44. package/dist/{block.tk.ld-8429a18b.js → block.tk.ld-d15bde41.js} +1 -1
  45. package/dist/{block.tk.menu-3f31f958.js → block.tk.menu-3aeb93c6.js} +1 -1
  46. package/dist/{block.tk.pgv-07e46705.js → block.tk.pgv-9af2bd64.js} +1 -1
  47. package/dist/boxplot-e17a17b7.js +1 -0
  48. package/dist/brainImaging-bf2ceee9.js +1 -0
  49. package/dist/{brush-c386fe3d.js → brush-aa175142.js} +1 -1
  50. package/dist/categorical-a52014a1.js +1 -0
  51. package/dist/condition-c646e357.js +1 -0
  52. package/dist/controls-287e6efa.js +1 -0
  53. package/dist/{controls.btns-1cb2bfab.js → controls.btns-79b805dd.js} +1 -1
  54. package/dist/controls.config-28d6d6a8.js +1 -0
  55. package/dist/cuminc-9e275854.js +1 -0
  56. package/dist/{customdata.inputui-cbd712ea.js → customdata.inputui-dc49d94b.js} +1 -1
  57. package/dist/dataDownload-3a3d4f33.js +1 -0
  58. package/dist/databrowser.ui-d8d3f8fd.js +1 -0
  59. package/dist/{density-19266ebf.js → density-a82a8b1c.js} +1 -1
  60. package/dist/dictionary-c5a19d90.js +1 -0
  61. package/dist/{drag-0b968811.js → drag-7b30ba17.js} +1 -1
  62. package/dist/{e2pca-b8752945.js → e2pca-82765817.js} +1 -1
  63. package/dist/{ep-a86b185a.js → ep-d017ec2f.js} +1 -1
  64. package/dist/facet-a9b44ef3.js +1 -0
  65. package/dist/{fusion.parse-244b2b97.js → fusion.parse-d40d0b9d.js} +1 -1
  66. package/dist/geneExpClustering-34c3f518.js +1 -0
  67. package/dist/geneExpression-0d1b7244.js +1 -0
  68. package/dist/{geneExpression-e0430f2e.js → geneExpression-589f485b.js} +1 -1
  69. package/dist/{geneExpression-387205bf.js → geneExpression-7d14983f.js} +1 -1
  70. package/dist/geneORA-903a780f.js +1 -0
  71. package/dist/{geneVariant-7de021b6.js → geneVariant-89601b34.js} +1 -1
  72. package/dist/geneVariant-92c4e870.js +1 -0
  73. package/dist/{genefusion.ui-a331de19.js → genefusion.ui-7e22e811.js} +1 -1
  74. package/dist/{genesearch-ea59f5d4.js → genesearch-a4e19f0d.js} +1 -1
  75. package/dist/geneset-108a39d2.js +1 -0
  76. package/dist/genomeBrowser-12f86a36.js +1 -0
  77. package/dist/genomeBrowser.controls-d5067811.js +1 -0
  78. package/dist/{groupsetting-20ffef77.js → groupsetting-b4416a96.js} +1 -1
  79. package/dist/gsea-543dab25.js +1 -0
  80. package/dist/hierCluster-26e14090.js +1 -0
  81. package/dist/hierCluster.config-98e82dff.js +1 -0
  82. package/dist/{hierCluster.interactivity-9b433033.js → hierCluster.interactivity-e56f6542.js} +1 -1
  83. package/dist/hierCluster.renderers-74a64cf5.js +1 -0
  84. package/dist/{html.legend-abb5452e.js → html.legend-a3f4ebfe.js} +1 -1
  85. package/dist/imagePlot-b9eae4ae.js +1 -0
  86. package/dist/{lasso-55cf4057.js → lasso-f767f634.js} +1 -1
  87. package/dist/launch.adhoc-abca6af3.js +1 -0
  88. package/dist/leftlabel.sample-24c2388d.js +1 -0
  89. package/dist/legacyDataset-e0e201ab.js +1 -0
  90. package/dist/{log-cf45fcf2.js → log-99af3443.js} +1 -1
  91. package/dist/{lollipop-c5b6e615.js → lollipop-806f8fa4.js} +1 -1
  92. package/dist/{maf-7535f1f9.js → maf-b06579e4.js} +1 -1
  93. package/dist/{maftimeline-1292ab62.js → maftimeline-4840a380.js} +1 -1
  94. package/dist/matrix-00bb50ff.js +1 -0
  95. package/dist/matrix.cells-914dd0c6.js +1 -0
  96. package/dist/{matrix.cluster-168bc96b.js → matrix.cluster-783ceab0.js} +1 -1
  97. package/dist/matrix.config-6ce74dfe.js +1 -0
  98. package/dist/matrix.controls-7b2a6f95.js +1 -0
  99. package/dist/{matrix.data-b1d0febe.js → matrix.data-dac4f1b7.js} +1 -1
  100. package/dist/{matrix.dom-00defa30.js → matrix.dom-4e10bbe9.js} +1 -1
  101. package/dist/matrix.groups-b9fca14a.js +1 -0
  102. package/dist/matrix.interactivity-84169b43.js +1 -0
  103. package/dist/{matrix.layout-c2345231.js → matrix.layout-dd5a44fd.js} +1 -1
  104. package/dist/matrix.legend-ac6d45e6.js +1 -0
  105. package/dist/matrix.renderers-78010275.js +1 -0
  106. package/dist/matrix.serieses-9b4fd744.js +1 -0
  107. package/dist/matrix.sort-014d798d.js +1 -0
  108. package/dist/{matrix.sorterUi-a741ba2e.js → matrix.sorterUi-9bf7e6f9.js} +1 -1
  109. package/dist/{mavb-92136d17.js → mavb-c6be46fc.js} +1 -1
  110. package/dist/{mds.fimo-c03115b4.js → mds.fimo-bff6a1ed.js} +1 -1
  111. package/dist/mds.samplescatterplot-9a02b9fb.js +1 -0
  112. package/dist/{mds.survivalplot-366db380.js → mds.survivalplot-055549f4.js} +1 -1
  113. package/dist/{metaboliteIntensity-ddb6e480.js → metaboliteIntensity-fac92f8b.js} +1 -1
  114. package/dist/niceNumLabels-238aabce.js +1 -0
  115. package/dist/{nodrag-2c046d31.js → nodrag-16ad4b03.js} +1 -1
  116. package/dist/{notify-44ebc0df.js → notify-224cccbd.js} +1 -1
  117. package/dist/{numeric-918d4686.js → numeric-b0b17185.js} +1 -1
  118. package/dist/numeric.binary-1f9e93f2.js +1 -0
  119. package/dist/numeric.continuous-ebcd0567.js +1 -0
  120. package/dist/numeric.discrete-7b97044a.js +1 -0
  121. package/dist/numeric.spline-1be88f3d.js +1 -0
  122. package/dist/numeric.toggle-7fa2a770.js +1 -0
  123. package/dist/oncomatrix-351af2a0.js +1 -0
  124. package/dist/{parseData-e66308cd.js → parseData-21fe9822.js} +1 -1
  125. package/dist/partjson.esm-b3f1fc21.js +1 -0
  126. package/dist/{plot.2dvaf-73dbfbd1.js → plot.2dvaf-18a35e4b.js} +1 -1
  127. package/dist/plot.app-30c4b8e5.js +1 -0
  128. package/dist/plot.barplot-7c4865a2.js +1 -0
  129. package/dist/{plot.boxplot-641da058.js → plot.boxplot-fe3046c6.js} +1 -1
  130. package/dist/plot.brainImaging-2ceb6023.js +1 -0
  131. package/dist/plot.disco-6011f87f.js +1 -0
  132. package/dist/{plot.dzi-41ea26e5.js → plot.dzi-6728a7c8.js} +1 -1
  133. package/dist/plot.ssgq-5581dc56.js +1 -0
  134. package/dist/{plot.vaf2cov-80e58833.js → plot.vaf2cov-b2284c64.js} +1 -1
  135. package/dist/{plot.wsi-51cc48ef.js → plot.wsi-9a9d4034.js} +1 -1
  136. package/dist/profileBarchart-0476f1f8.js +1 -0
  137. package/dist/profileHome-32eb9b50.js +1 -0
  138. package/dist/profilePlot-c7e099e8.js +1 -0
  139. package/dist/profilePolar-6b981e63.js +1 -0
  140. package/dist/profileRadar-bca1cc03.js +1 -0
  141. package/dist/profileRadarFacility-bbb1ecd8.js +1 -0
  142. package/dist/profileSummary-b114204f.js +1 -0
  143. package/dist/recover-49e09de0.js +1 -0
  144. package/dist/regression.inputs-a761f40d.js +1 -0
  145. package/dist/regression.inputs.values.table-5929d25a.js +1 -0
  146. package/dist/regression.results-69bc42d0.js +1 -0
  147. package/dist/{renderPvalueTable-895a72c2.js → renderPvalueTable-dc5d15f2.js} +1 -1
  148. package/dist/sampleScatter-2d0ed680.js +1 -0
  149. package/dist/{sampleScatter.rendererThree-5e686004.js → sampleScatter.rendererThree-0b12ac61.js} +2 -2
  150. package/dist/sampleView-484ab133.js +1 -0
  151. package/dist/samplelst-689796e6.js +1 -0
  152. package/dist/{samplematrix-2a1d7d82.js → samplematrix-2b137a05.js} +1 -1
  153. package/dist/scatter-205e013f.js +1 -0
  154. package/dist/{select2Terms-b4fffc50.js → select2Terms-b21e184a.js} +1 -1
  155. package/dist/{selectGenomeWithTklst-acf7e568.js → selectGenomeWithTklst-466995b4.js} +1 -1
  156. package/dist/singleCellCellType-5db730bb.js +1 -0
  157. package/dist/{singleCellGeneExpression-6de17162.js → singleCellGeneExpression-7147a2d0.js} +1 -1
  158. package/dist/singleCellPlot-73b2738f.js +1 -0
  159. package/dist/{singlecell-f76c856a.js → singlecell-24409b72.js} +1 -1
  160. package/dist/singlecell-bca774ed.js +1 -0
  161. package/dist/{snp-9590a1b4.js → snp-37d06246.js} +1 -1
  162. package/dist/snp-a8388ce4.js +1 -0
  163. package/dist/snplocus-7a1ea8c9.js +1 -0
  164. package/dist/{snplst-007a1926.js → snplst-6865d7c7.js} +1 -1
  165. package/dist/{spliceevent.a53ss.diagram-63dfef69.js → spliceevent.a53ss.diagram-e2eab72b.js} +1 -1
  166. package/dist/{spliceevent.exonskip.diagram-76fa9af8.js → spliceevent.exonskip.diagram-4d5df3a1.js} +1 -1
  167. package/dist/spliceevent.exonskip.getdefault-a94aad6e.js +1 -0
  168. package/dist/{spliceevent.noeventdiagram-64a099e0.js → spliceevent.noeventdiagram-ea97b0fb.js} +1 -1
  169. package/dist/{spliceevent.phrase-770c8cac.js → spliceevent.phrase-c5832470.js} +1 -1
  170. package/dist/{stattable-f1189f0f.js → stattable-7c5ecc2f.js} +1 -1
  171. package/dist/{style.gdc-89cfdb0f.js → style.gdc-131f3c77.js} +1 -1
  172. package/dist/summary-5ec455d3.js +1 -0
  173. package/dist/{sunburst-d5379952.js → sunburst-533902a7.js} +1 -1
  174. package/dist/survival-92250664.js +1 -0
  175. package/dist/survival-e16e068f.js +1 -0
  176. package/dist/{svg.download-86850940.js → svg.download-35926549.js} +1 -1
  177. package/dist/{svg.legend-a94b0697.js → svg.legend-8d490df2.js} +1 -1
  178. package/dist/{svgraph-c57b9ae3.js → svgraph-6fac8cbc.js} +1 -1
  179. package/dist/{svmr-cf6f1b27.js → svmr-d07ff695.js} +1 -1
  180. package/dist/table-29d5a973.js +1 -0
  181. package/dist/table-ad744310.js +1 -0
  182. package/dist/termInfo-bf99a37e.js +1 -0
  183. package/dist/{termdb.bins-9faa5170.js → termdb.bins-8b656cc3.js} +1 -1
  184. package/dist/termsetting-33ea66f1.js +1 -0
  185. package/dist/tk-071a7550.js +1 -0
  186. package/dist/{toggleButtons-002aeda1.js → toggleButtons-dbdbad01.js} +1 -1
  187. package/dist/tp.ui-9c2e9fc5.js +1 -0
  188. package/dist/tslib.es6-c3c2d88f.js +1 -0
  189. package/dist/tvs.density-f6128793.js +1 -0
  190. package/dist/{tvs.geneVariant-3a65ad94.js → tvs.geneVariant-ca4bdbb1.js} +1 -1
  191. package/dist/tvs.numeric-0260a825.js +1 -0
  192. package/dist/{tvs.samplelst-1eeb586b.js → tvs.samplelst-cb71b3bf.js} +1 -1
  193. package/dist/{uiUtils-1336bad7.js → uiUtils-f1bd2bcc.js} +1 -1
  194. package/dist/{variantBrowser-f0c812c1.js → variantBrowser-7c540224.js} +1 -1
  195. package/dist/{vcf-c4a23924.js → vcf-5cc55588.js} +1 -1
  196. package/dist/violin-2ba509eb.js +1 -0
  197. package/dist/violin.interactivity-4da6d7a9.js +1 -0
  198. package/dist/{violin.renderer-dafd89fa.js → violin.renderer-ce024265.js} +1 -1
  199. package/dist/{violinRenderer-8215f40d.js → violinRenderer-f7c96a60.js} +1 -1
  200. package/dist/{viridis-ffd14c4d.js → viridis-01ab20c5.js} +1 -1
  201. package/dist/{y-dd197cc9.js → y-67939f83.js} +1 -1
  202. package/dist/{zoom-9c63e74c.js → zoom-25dce8b9.js} +1 -1
  203. package/package.json +6 -4
  204. package/dist/AppHeader-a2a7e518.js +0 -1
  205. package/dist/DEanalysis-a6b50e49.js +0 -1
  206. package/dist/Disco-1c71b7dd.js +0 -1
  207. package/dist/Disco.UI-4c16ee50.js +0 -1
  208. package/dist/FilterRxComp-242f4615.js +0 -1
  209. package/dist/WSIViewer-d90032d7.js +0 -1
  210. package/dist/adSandbox-3528c372.js +0 -1
  211. package/dist/app-07dee349.js +0 -1
  212. package/dist/app-a8c4854a.js +0 -1
  213. package/dist/app-ade9c62a.js +0 -1
  214. package/dist/bam-92483a98.js +0 -1
  215. package/dist/barchart-3e69d094.js +0 -1
  216. package/dist/barchart.events-9b11d97e.js +0 -1
  217. package/dist/block-dcb130fb.js +0 -1
  218. package/dist/block.lazyload-9f031cac.js +0 -1
  219. package/dist/block.legend-b2987cd9.js +0 -1
  220. package/dist/block.mds2-de6e0986.js +0 -1
  221. package/dist/boxplot-1178fffc.js +0 -1
  222. package/dist/brainImaging-98ed7aa2.js +0 -1
  223. package/dist/categorical-26528ce8.js +0 -1
  224. package/dist/condition-b0d74550.js +0 -1
  225. package/dist/controls-0bacec22.js +0 -1
  226. package/dist/controls.config-0ccc9d79.js +0 -1
  227. package/dist/controls.divide-a9fe9466.js +0 -1
  228. package/dist/controls.overlay-fe20d41d.js +0 -1
  229. package/dist/controls.term1-faa2efcf.js +0 -1
  230. package/dist/cuminc-7e2cac2d.js +0 -1
  231. package/dist/dataDownload-ade8d840.js +0 -1
  232. package/dist/databrowser.ui-716f0519.js +0 -1
  233. package/dist/dictionary-3f83ce63.js +0 -1
  234. package/dist/facet-6850cfed.js +0 -1
  235. package/dist/geneExpClustering-7fd3c87e.js +0 -1
  236. package/dist/geneExpression-6462537d.js +0 -1
  237. package/dist/geneORA-7eb818c4.js +0 -1
  238. package/dist/geneVariant-b58e924a.js +0 -1
  239. package/dist/geneset-9f69ad3f.js +0 -1
  240. package/dist/genomeBrowser-1b2b83f7.js +0 -1
  241. package/dist/genomeBrowser.controls-cd8ddeb1.js +0 -1
  242. package/dist/gsea-36376589.js +0 -1
  243. package/dist/hierCluster-f1e30c19.js +0 -1
  244. package/dist/hierCluster.config-da3510b1.js +0 -1
  245. package/dist/hierCluster.renderers-610d8860.js +0 -1
  246. package/dist/imagePlot-7089bdff.js +0 -1
  247. package/dist/launch.adhoc-d229fd55.js +0 -1
  248. package/dist/leftlabel.sample-a919168c.js +0 -1
  249. package/dist/legacyDataset-1cbcb67d.js +0 -1
  250. package/dist/matrix-0614794d.js +0 -1
  251. package/dist/matrix.cells-819d4991.js +0 -1
  252. package/dist/matrix.config-c54ca273.js +0 -1
  253. package/dist/matrix.controls-5eca7822.js +0 -1
  254. package/dist/matrix.groups-4660dd70.js +0 -1
  255. package/dist/matrix.interactivity-23d83183.js +0 -1
  256. package/dist/matrix.legend-2e647224.js +0 -1
  257. package/dist/matrix.renderers-43445f4f.js +0 -1
  258. package/dist/matrix.serieses-972fbe5d.js +0 -1
  259. package/dist/matrix.sort-80d9b788.js +0 -1
  260. package/dist/mds.samplescatterplot-1623e6d0.js +0 -1
  261. package/dist/niceNumLabels-6cfc1508.js +0 -1
  262. package/dist/numeric.binary-80467e8b.js +0 -1
  263. package/dist/numeric.continuous-69a62a15.js +0 -1
  264. package/dist/numeric.discrete-86181905.js +0 -1
  265. package/dist/numeric.spline-1b07fd13.js +0 -1
  266. package/dist/numeric.toggle-37c4bee8.js +0 -1
  267. package/dist/oncomatrix-475271da.js +0 -1
  268. package/dist/plot.app-aa916e0e.js +0 -1
  269. package/dist/plot.barplot-8b440a2b.js +0 -1
  270. package/dist/plot.brainImaging-2f796b0c.js +0 -1
  271. package/dist/plot.disco-43e18d2f.js +0 -1
  272. package/dist/plot.ssgq-e49cb70b.js +0 -1
  273. package/dist/profileBarchart-91463ab6.js +0 -1
  274. package/dist/profileHome-d37a6821.js +0 -1
  275. package/dist/profilePlot-9ca577cb.js +0 -1
  276. package/dist/profilePolar-19c7da5b.js +0 -1
  277. package/dist/profileRadar-8bf094e3.js +0 -1
  278. package/dist/profileRadarFacility-f9fd8971.js +0 -1
  279. package/dist/profileSummary-93999c14.js +0 -1
  280. package/dist/recover-36ada47f.js +0 -1
  281. package/dist/regression.inputs-cb57ece6.js +0 -1
  282. package/dist/regression.inputs.values.table-908bb37a.js +0 -1
  283. package/dist/regression.results-c186a8dc.js +0 -1
  284. package/dist/roundValue-b0d0517c.js +0 -1
  285. package/dist/sampleScatter-9d5b3630.js +0 -1
  286. package/dist/sampleView-2d895023.js +0 -1
  287. package/dist/samplelst-9f8343ff.js +0 -1
  288. package/dist/scatter-b4992f64.js +0 -1
  289. package/dist/singleCellCellType-84a0c2cf.js +0 -1
  290. package/dist/singleCellPlot-2f2b8619.js +0 -1
  291. package/dist/singlecell-90567dde.js +0 -1
  292. package/dist/snp-79ec95ba.js +0 -1
  293. package/dist/snplocus-cb629be1.js +0 -1
  294. package/dist/spliceevent.exonskip.getdefault-31d2950c.js +0 -1
  295. package/dist/summary-b77bef3c.js +0 -1
  296. package/dist/survival-61ab375a.js +0 -1
  297. package/dist/survival-80a0ade9.js +0 -1
  298. package/dist/table-79e3e776.js +0 -1
  299. package/dist/table-eee91e14.js +0 -1
  300. package/dist/termInfo-f851b415.js +0 -1
  301. package/dist/tk-75566002.js +0 -1
  302. package/dist/tp.ui-02911b56.js +0 -1
  303. package/dist/tslib.es6-1f85f553.js +0 -1
  304. package/dist/tvs.density-026fca97.js +0 -1
  305. package/dist/tvs.numeric-3f3d9919.js +0 -1
  306. package/dist/violin-1515c3e6.js +0 -1
  307. package/dist/violin.interactivity-8e2f480d.js +0 -1
@@ -0,0 +1 @@
1
+ import{a7 as t,I as e,ag as s,aA as i,k as o,q as n,W as a,aB as r,aC as l,p as d,ac as c,aD as h,aE as p,ae as f,aF as m,j as g,ah as u,d as b,aG as k,aH as x,aI as y,aJ as w,r as v,aK as _,M as z,aL as j,aM as M,aN as N,ad as C,aO as B,z as I,aP as q,aQ as F,aR as A,ar as S,at as R,as as O,ak as U,ab as D,B as L,x as T,aS as E,aT as P,b as $,l as X,aU as H,aV as Y,aW as G,c as J,w as V,aX as W,a9 as Z,aY as K,Z as Q,n as tt,am as et,e as st,aZ as it,a_ as ot,a$ as nt,b0 as at,b1 as rt,b2 as lt,b3 as dt,b4 as ct,y as ht,b5 as pt,a as ft}from"./app-b369b169.js";import{l as mt,f as gt,s as ut,m as bt,i as kt,d as xt,a as yt,r as wt,b as vt,c as _t,e as zt,g as jt,h as Mt,j as Nt,k as Ct}from"./block.legend-d3f61ef7.js";import{d as Bt,b as It,a as qt,c as Ft}from"./axis-747c801e.js";import{m as At}from"./checkbox-96437f4d.js";import{p as St}from"./pointer-c7475677.js";function Rt(t,e){if(!e.file&&!e.url&&!e.gdcFile)return"neither file or url given";return null}function Ot(t,e){t.uninitialized=true}function Ut(t,e){import("./block.tk.bam-00fba6e8.js").then((s=>{s.loadTk(t,e)}))}function Dt(t,e){t._template=e}function Lt(t,e){t.uninitiated=1}function Tt(t,e){import("./block.tk.pgv-9af2bd64.js").then((s=>{s.loadTk(t,e)}))}function Et(t,e){t._template=e}function Pt(t,e){t.uninitiated=1}function $t(t,e){import("./block.tk.ld-d15bde41.js").then((s=>{s.loadTk(t,e)}))}function Xt(t,e){if(!e.tracks){if(e.file||e.url){e.tracks=[{file:e.file,url:e.url,indexURL:e.indexURL}];delete e.file;delete e.url;delete e.indexURL;delete t.file;delete t.url;delete t.indexURL}else{return".tracks[] missing from junction track template"}}t.tracks=[];for(const s of e.tracks){const e={};for(const t in s){e[t]=s[t]}t.tracks.push(e)}if(t.tracks.length==0){return".tracks[] has 0 length for junction track"}if(e.categories){t.categories={};for(const s in e.categories){const i=e.categories[s];t.categories[s]={color:i.color,label:i.label}}}else{t.nocatepreconfig=true}return null}function Ht(t,e){t.uninitialized=true}function Yt(t,e){import("./block.tk.junction-b43a4cda.js").then((s=>{s.junctionload(t,e)}))}function Gt(t,e){if(!t.fineheight){t.fineheight=200}if(!t.allheight){t.allheight=100}if(!t.midpad){t.midpad=15}if(!t.fineymax){t.fineymax=50}}function Jt(t,e){t.img=t.glider.append("image").on("click",(s=>{if(!t.link)return;if(e.exonsf<1)return;const i=s.clientX-e.svg.node().getBoundingClientRect().left-e.leftheadw-e.lpad;const[o,n]=e.pxoff2region(i);const a=e.rglst[o].chr;const r=t.link.replace("__CHR__",a).replace("__POS__",n+1);window.open(r)}));t.allaxis=t.gleft.append("g");t.fineaxis=t.gleft.append("g").attr("transform","translate(0,"+(t.allheight+t.midpad)+")");t.config_handle=e.maketkconfighandle(t).on("click",(s=>{Wt(t,e)}))}function Vt(i,o){o.tkcloakon(i);const n=["fineheight="+i.fineheight,"allheight="+i.allheight,"midpad="+i.midpad,"fineymax="+i.fineymax,"regionspace="+o.regionspace,"width="+o.width,"rglst="+JSON.stringify(o.tkarg_rglst())];if(i.usegrade)n.push("usegrade="+i.usegrade);if(i.file)n.push("file="+i.file);else n.push("url="+i.url);t("tkbampile?"+n.join("&")).then((t=>{if(t.error)throw{message:t.error};if(t.allgrades){i.grades=t.allgrades;i.usegrade=t.usegrade}i.img.attr("width",o.width).attr("height",i.allheight+i.midpad+i.fineheight).attr("xlink:href",t.src);i.allaxis.selectAll("*").remove();if(t.allmax){const o=e().domain([0,t.allmax]).range([i.allheight,0]);s({axis:i.allaxis.call(Bt().scale(o).ticks(4)),color:"black",showline:true})}const n=e().domain([0,i.fineymax]).range([i.fineheight,0]);s({axis:i.fineaxis.call(It().scale(n)),color:"black",showline:true})})).catch((t=>{if(t.stack)console.log(t.stack);return t.message})).then((t=>{i.height_main=i.toppad+i.allheight+i.midpad+i.fineheight+i.bottompad;o.tkcloakoff(i,{error:t});o.block_setheight()}))}function Wt(t,e){t.tkconfigtip.clear().showunder(t.config_handle.node());const s=t.tkconfigtip.d;if(t.grades){const i=s.append("table").style("margin-bottom","10px");for(const s of t.grades){const o=i.append("tr");o.append("td").html(s==t.usegrade?"&#10004;":"");o.append("td").text(s).classed("sja_menuoption",true).on("click",(i=>{t.usegrade=s;Vt(t,e);t.tkconfigtip.hide()}))}}else{s.append("div").style("margin","10px").text("No grades yet.")}{const i=s.append("div").style("margin-bottom","10px");i.append("div").text("Read depth cutoff:").style("font-size",".8em");const o=i.append("input").attr("size",5).on("keyup",(s=>{if(s.code!="Enter")return;const i=s.target.value;if(!i)return;const o=Number.parseInt(i);if(Number.isNaN(o))return;if(o<=0)return;t.fineymax=o;Vt(t,e)}));i.append("button").text("Set").style("margin-left","3px").on("click",(s=>{const i=o.property("value");if(!i)return;const n=Number.parseInt(i);if(Number.isNaN(n))return;if(n<=0)return;t.fineymax=n;Vt(t,e)}))}for(const t in i){const e=s.append("div").style("margin-bottom","3px");e.append("div").style("width","12px").style("height","12px").style("display","inline-block").style("background-color",i[t]).style("margin-right","10px");e.append("span").text(t)}}function Zt({holder:t,callback:e,setting:s,noPercentile:i}){if(!t)throw"no holder";if(typeof e!="function")throw"callback not function";if(!s)s={auto:1};if(s.auto);else if(s.fixed){if(!Number.isFinite(s.fixed.min))throw"fixed.min is not number";if(!Number.isFinite(s.fixed.max))throw"fixed.max is not number";if(s.fixed.min>=s.fixed.max)throw"fixed min>=max"}else if(s.percentile){if(s.percentile<0||s.percentile>100)throw"invalid setting.percentile"}else{throw"invalid setting{}"}const n=t.append("div");n.append("span").html("Y scale&nbsp;&nbsp;");const a=n.append("select");a.append("option").text("Automatic");a.append("option").text("Fixed");if(!i)a.append("option").text("Percentile");a.on("change",(t=>{const s=t.target.selectedIndex;if(s==0){c.style("display","none");h.style("display","none");e({auto:1});return}if(s==1){c.style("display","");r.node().focus();h.style("display","none");return}c.style("display","none");h.style("display","");d.node().focus()}));a.property("selectedIndex",s.auto?0:s.fixed?1:2);let r,l,d;const c=n.append("div").style("margin","10px").style("display",s.fixed?"block":"none");{const t=c.append("div");t.append("span").html("Max&nbsp;").style("font-family","Courier").style("font-size",".9em");r=t.append("input").attr("type","number").style("width","50px");if(s.fixed)r.property("value",s.fixed.max);const i=c.append("div");i.append("span").html("Min&nbsp;").style("font-family","Courier").style("font-size",".9em");l=i.append("input").attr("type","number").style("width","50px");if(s.fixed)l.property("value",s.fixed.min);i.append("button").text("Set").style("margin-left","5px").on("click",(()=>{let t,s;s=r.property("value");if(s==""){return}s=Number.parseFloat(s);if(Number.isNaN(s)){alert("invalid max value");return}t=l.property("value");if(t==""){return}t=Number.parseFloat(t);if(Number.isNaN(t)){alert("invalid min value");return}if(t>=s){alert("Min must be smaller than max");return}e({fixed:{min:t,max:s}})}))}const h=n.append("div").style("margin-top","6px").style("display",s.percentile?"block":"none");h.append("span").html("Percentile&nbsp;").style("font-family","Courier").style("font-size",".9em");d=h.append("input").attr("type","number").style("width","50px");if(s.percentile){d.property("value",s.percentile)}const p=t=>{if(t=="")return;const s=Number.parseInt(t);if(Number.isNaN(s)||s<=0||s>100){alert("percentile should be integer within range 0-100");return}e({percentile:s})};d.on("keyup",(t=>{if(!o(t))return;p(d.property("value"))}));h.append("button").text("Set").style("margin-left","5px").on("click",(()=>{p(d.property("value"))}))}function Kt(t,e){t.scale={};if(e.scale){for(const s in e.scale){t.scale[s]=e.scale[s]}}else{t.scale.auto=1}if(t.normalize);else{t.normalize={dividefactor:1,disable:1}}t.barheight=e.height||50;t.height_main=t.toppad+t.barheight+t.bottompad;if(!t.ncolor)t.ncolor="#BD005E";if(!t.ncolor2)t.ncolor2="#5E00BD";if(!t.pcolor)t.pcolor="#005EBD";if(!t.pcolor2)t.pcolor2="#FA7D00"}function Qt(t,e){t.img=t.glider.append("image");t.tklabel.attr("y",t.barheight/2);t.leftaxis=t.gleft.append("g");t.config_handle=e.maketkconfighandle(t).on("click",(()=>{t.tkconfigtip.clear().showunder(t.config_handle.node());se(t,e,t.tkconfigtip.d,(()=>te(t,e)))}))}function te(t,i){i.tkcloakon(t);const o=i.tkarg_q(t);if(t.dotplotfactor){o.dotplotfactor=t.dotplotfactor}t.height_main=t.toppad+t.barheight+t.bottompad;t.img.attr("width",i.width).attr("height",t.barheight);n("tkbigwig",o).then((i=>{if(i.error)throw i.error;t.tklabel.transition().attr("y",t.barheight/2);t.img.attr("xlink:href",i.src);if(i.minv!=undefined){t.scale.min=i.minv}if(i.maxv!=undefined){t.scale.max=i.maxv}t.leftaxis.selectAll("*").remove();if(i.nodata){throw"no data in view range"}const o=e().domain([t.scale.min,t.scale.max]).range([t.barheight,0]);const n=It().scale(o).tickValues([t.scale.min,t.scale.max]);if(t.integer4axis){n.tickFormat(a("d"))}s({axis:t.leftaxis.call(n),color:"black",showline:true})})).catch((e=>{t.img.attr("width",1).attr("height",1);if(e.stack){console.log(e.stack)}return typeof e=="string"?e:e.message})).then((e=>{i.tkcloakoff(t,{error:e});i.block_setheight();for(const e of t.subpanels){ee(t,i,e)}}))}function ee(t,e,s){e.tkcloakon_subpanel(s);const i=e.tkarg_q(t);if(t.dotplotfactor){i.dotplotfactor=t.dotplotfactor}i.width=s.width;i.rglst=[{chr:s.chr,start:s.start,stop:s.stop,width:s.width}];delete i.percentile;delete i.autoscale;s.img.attr("width",s.width).attr("height",t.barheight);n("tkbigwig",i).then((t=>{if(t.error)throw t.error;s.img.attr("xlink:href",t.src)})).catch((t=>{s.img.attr("width",1).attr("height",1);if(t.stack){console.log(t.stack)}return typeof t=="string"?t:t.message})).then((t=>{e.tkcloakoff_subpanel(s,{error:t})}))}function se(t,e,s,i){const o={pcolor:{},ncolor:{},pcolor2:{},ncolor2:{},dotplot:{},dividefactor:{}};{const e=s.append("div").style("margin-bottom","15px");e.append("span").html("Height&nbsp;&nbsp;");e.append("input").attr("size",5).property("value",t.barheight).on("keyup",(e=>{if(e.code!="Enter")return;const s=e.target.value;if(s=="")return;const o=Number.parseInt(s);if(Number.isNaN(o)||o<=1){alert("track height must be positive integer");return}t.barheight=o;i(r.height)}))}o.pcolor.row=s.append("div").style("margin-bottom","15px");o.pcolor.lab=o.pcolor.row.append("span").text("Positive value color").style("padding-right","10px");o.pcolor.row.append("input").attr("type","color").property("value",l(t.pcolor)).on("change",(e=>{t.pcolor=e.target.value;i(r.pcolor)}));o.ncolor.row=s.append("div").style("margin-bottom","15px");o.ncolor.lab=o.ncolor.row.append("span").text("Negative value color").style("padding-right","10px");o.ncolor.row.append("input").attr("type","color").property("value",l(t.ncolor)).on("change",(e=>{t.ncolor=e.target.value;i(r.ncolor)}));if(!t.scale.auto){o.pcolor2.row=s.append("div").style("margin-bottom","15px");o.pcolor2.lab=o.pcolor2.row.append("span").html("&ge;Max color").style("padding-right","10px");o.pcolor2.row.append("input").attr("type","color").property("value",l(t.pcolor2)).on("change",(e=>{t.pcolor2=e.target.value;i(r.pcolor2)}));o.ncolor2.row=s.append("div").style("margin-bottom","15px");o.ncolor2.lab=o.ncolor2.row.append("span").html("&le;Min color").style("padding-right","10px");o.ncolor2.row.append("input").attr("type","color").property("value",l(t.ncolor2)).on("change",(e=>{t.ncolor2=e.target.value;i(r.ncolor2)}))}{const e={};if(t.scale.auto){e.auto=1}else if(t.scale.percentile){e.percentile=t.scale.percentile}else{e.fixed={min:t.scale.min,max:t.scale.max}}Zt({holder:s.append("div").style("margin-bottom","15px"),setting:e,callback:e=>{if(e.auto){t.scale.auto=1;i(r.autoscale);return}if(e.fixed){delete t.scale.auto;delete t.scale.percentile;t.scale.max=e.fixed.max;t.scale.min=e.fixed.min;i(r.fixedscale);return}delete t.scale.auto;t.scale.percentile=e.percentile;i(r.percentilescale)}})}{o.dotplot.row=s.append("div").style("margin-bottom","15px");o.dotplot.row.append("span").html("Dot plot&nbsp;&nbsp;");const e=o.dotplot.row.append("select").on("change",(e=>{const s=e.target.selectedIndex;if(s==0){delete t.dotplotfactor}else{t.dotplotfactor=Number.parseInt(e.target.options[s].innerHTML)}i(s==0?r.nodotplot:r.usedotplot)}));let n=e.append("option").text("no");if(!t.dotplotfactor){n.property("selected",1)}n=e.append("option").text("5");if(t.dotplotfactor==5){n.property("selected",1)}n=e.append("option").text("10");if(t.dotplotfactor==10){n.property("selected",1)}n=e.append("option").text("15");if(t.dotplotfactor==15){n.property("selected",1)}n=e.append("option").text("20");if(t.dotplotfactor==20){n.property("selected",1)}}o.dividefactor.row=s.append("div");{const e=Math.random().toString();const s=o.dividefactor.row.append("input").attr("type","checkbox").attr("id",e);if(!t.normalize.disable){s.property("checked",1)}o.dividefactor.row.append("label").html("&nbsp;Apply normalization").attr("for",e);const n=o.dividefactor.row.append("div").style("margin","5px 10px 0px 20px").style("display",t.normalize.disable?"none":"block");n.append("span").html("Divide raw value by&nbsp;");const a=n.append("input").attr("type","number").style("width","60px").property("value",t.normalize.dividefactor).on("keyup",(e=>{if(e.code!="Enter"&&e.code!="NumpadEnter")return;const s=e.target.value;if(s<=0){return}t.normalize.dividefactor=s;i(r.usedividefactor)}));n.append("div").text("Enter a value above zero").style("font-size",".7em").style("color","#858585");s.on("change",(e=>{if(e.target.checked){d(n);delete t.normalize.disable;a.property("value",t.normalize.dividefactor);i(r.usedividefactor);return}c(n);t.normalize.disable=1;i(r.nodividefactor)}))}return o}function ie(t,e){if(!e.file&&!e.url)return"no file or url";return null}function oe(t,e){t.uninitialized=true}function ne(t,e){import("./block.tk.aicheck-6770e333.js").then((s=>{s.loadTk(t,e)}))}function ae(t,e,s){import("./block.tk.aicheck-6770e333.js").then((i=>{i.loadTksubpanel(t,e,s)}))}function re(t,e){if(e.strand1){const s={};for(const t in e.strand1){s[t]=e.strand1[t]}s.scale={};if(e.strand1.scale){for(const t in e.strand1.scale){s.scale[t]=e.strand1.scale[t]}}else{s.scale.auto=1}s.barheight=e.strand1.height||50;if(!s.ncolor)s.ncolor="#BD005E";if(!s.ncolor2)s.ncolor2="#5E00BD";if(!s.pcolor)s.pcolor="#005EBD";if(!s.pcolor2)s.pcolor2="#FA7D00";if(s.normalize);else{s.normalize={dividefactor:1,disable:1}}t.strand1=s;if(!t.strand1.name)t.strand1.name="Forward"}if(e.strand2){const s={};for(const t in e.strand2){s[t]=e.strand2[t]}s.scale={};if(e.strand2.scale){for(const t in e.strand2.scale){s.scale[t]=e.strand2.scale[t]}}else{s.scale.auto=1}s.barheight=e.strand2.height||50;if(!s.ncolor)s.ncolor="#BD005E";if(!s.ncolor2)s.ncolor2="#5E00BD";if(!s.pcolor)s.pcolor="#005EBD";if(!s.pcolor2)s.pcolor2="#FA7D00";if(s.normalize);else{s.normalize={dividefactor:1,disable:1}}t.strand2=s;if(!t.strand2.name)t.strand2.name="Reverse"}t.height_main=t.toppad+(t.strand1?t.strand1.barheight:0)+(t.strand2?t.strand2.barheight:0)+t.bottompad}function le(t,e){const s=[];t.tklabel.attr("y",1).each((function(){s.push(this.getBBox().width)}));t.labforward=e.maketklefthandle(t).text(t.strand1.name).each((function(){s.push(this.getBBox().width)}));t.labreverse=e.maketklefthandle(t).text(t.strand2.name).each((function(){s.push(this.getBBox().width)}));t.leftLabelMaxwidth=Math.max(...s);t.leftaxis=t.gleft.append("g").attr("transform","translate("+e.lpad+",0)");if(t.strand1){t.strand1.img=t.glider.append("image")}if(t.strand2){t.strand2.img=t.glider.append("image")}t.config_handle=e.maketkconfighandle(t).on("click",(()=>{t.tkconfigtip.clear().showunder(t.config_handle.node());he(t,e)}))}function de(t,i){if(!t.strand1){t.height_main=50;i.tkcloakoff(t,{error:t.name+": forward strand track missing"});i.block_setheight();return}if(!t.strand2){t.height_main=50;i.tkcloakoff(t,{error:t.name+": reverse strand track missing"});i.block_setheight();return}i.tkcloakon(t);t.strand1.img.attr("width",i.width).attr("height",t.strand1.barheight);t.strand2.img.attr("width",i.width).attr("height",t.strand2.barheight).attr("y",t.strand1.barheight);const o=i.tkarg_q(t.strand1);o.name=t.name+" forward strand";n("tkbigwig",o).then((e=>{if(e.error)throw"forward strand error: "+e.error;t.strand1.img.attr("xlink:href",e.src);if(i.pannedpx!=undefined){t.strand1.img.attr("x",-i.pannedpx)}if(e.minv!=undefined){t.strand1.scale.min=e.minv}if(e.maxv!=undefined){t.strand1.scale.max=e.maxv}t.strand1.nodata=e.nodata;const s=i.tkarg_q(t.strand2);s.name=t.name+" reverse strand";return n("tkbigwig",s).then((e=>{if(e.error)throw"reverse strand error: "+e.error;t.strand2.img.attr("xlink:href",e.src);if(e.minv!=undefined){t.strand2.scale.min=e.minv}if(e.maxv!=undefined){t.strand2.scale.max=e.maxv}t.strand2.nodata=e.nodata}))})).then((()=>{t.strand1.img.attr("x",0);i.tkcloakoff(t,{});t.leftaxis.selectAll("*").remove();const o=t.strand2.nodata?0:t.strand2.scale.min;const n=t.strand1.nodata?0:t.strand1.scale.max;const r=e().domain([o,0,n]).range([t.strand1.barheight+t.strand2.barheight,t.strand1.barheight,0]);let l="r";if(t.integer4axis){l="d"}const d=Bt().scale(r).tickFormat(a(l)).tickValues([o,0,n]);s({axis:t.leftaxis.call(d),color:"black",showline:true});t.height_main=t.toppad+t.strand1.barheight+t.strand2.barheight+t.bottompad;t.labforward.transition().attr("y",t.strand1.barheight/2);t.labreverse.transition().attr("y",t.strand1.barheight+t.strand2.barheight/2);i.block_setheight();for(const e of t.subpanels){ce(t,i,e)}})).catch((e=>{t.strand1.img.attr("x",0);t.height_main=50;i.tkcloakoff(t,{error:typeof e=="string"?e:e.message});if(e.stack)console.log(e.stack);i.block_setheight()}))}function ce(t,e,s){e.tkcloakon_subpanel(s);s.strand1.img.attr("width",s.width).attr("height",t.strand1.barheight);s.strand2.img.attr("width",s.width).attr("height",t.strand2.barheight).attr("y",t.strand1.barheight);const i=e.tkarg_q(t.strand1);i.width=s.width;i.rglst=[{chr:s.chr,start:s.start,stop:s.stop,width:s.width}];i.maxv=t.strand1.scale.max;i.minv=t.strand1.scale.min;delete i.autoscale;delete i.percentile;n("tkbigwig",i).then((i=>{if(i.error)throw i.error;s.strand1.img.attr("xlink:href",i.src);const o=e.tkarg_q(t.strand2);o.width=s.width;o.rglst=[{chr:s.chr,start:s.start,stop:s.stop,width:s.width}];o.maxv=t.strand2.scale.max;o.minv=t.strand2.scale.min;delete o.autoscale;delete o.percentile;return n("tkbigwig",o).then((t=>{if(t.error)throw t.error;s.strand2.img.attr("xlink:href",t.src)}))})).catch((t=>{if(t.stack){console.log(t.stack)}return typeof t=="string"?t:t.message})).then((t=>{e.tkcloakoff_subpanel(s,{error:t})}))}function he(t,e){const s=t.tkconfigtip.d;{const i=h({holder:s,margin:"0px 0px 15px 0px",label:t.strand1.name});const o=se(t.strand1,e,i,(()=>de(t,e)));o.ncolor.row.remove();o.dotplot.row.remove();if(o.ncolor2.row){o.ncolor2.row.remove()}o.pcolor.lab.text("Color");if(o.pcolor2.lab){o.pcolor2.lab.text("Beyond threshold")}}{const i=h({holder:s,label:t.strand2.name});const o=se(t.strand2,e,i,(()=>de(t,e)));o.pcolor.row.remove();o.dotplot.row.remove();if(o.pcolor2.row){o.pcolor2.row.remove()}o.ncolor.lab.text("Color");if(o.ncolor2.lab){o.ncolor2.lab.text("Beyong threshold")}}}function pe(t,e){t.stackheight=e.stackheight||12;t.stackspace=e.stackspace||1;t.color=t.color||"#6188FF";if(e.usevalue){if(!e.usevalue.key){return".usevalue.key missing"}t.usevalue={};for(const s in e.usevalue){t.usevalue[s]=e.usevalue[s]}}t.busy=true;return null}function fe(t,e){t.img=t.glider.append("image");if(t.categories&&e.legend&&e.legend.holder){const[s,i]=mt(e,t.name);t.tr_legend=s;p(t.categories,i);s.style("display","none");d(s,"table-row")}t.config_handle=e.maketkconfighandle(t).on("click",(()=>{ue(t,e)}))}function me(e,s){if(s.viewrangeabovelimit(e.viewrangeupperlimit)){s.tkcloakoff(e,{error:e.name+": zoom in under "+f(e.viewrangeupperlimit)+" to view data"});e.height_main=30;e.img.attr("width",1).attr("height",1);s.block_setheight();return}s.tkcloakon(e);const i=s.tkarg_bedj(e);if(e.__isgene){if(!s.gmmode||s.gmmode==m.genomic){i.__isgene=true}}t("tkbedj",{method:"POST",body:JSON.stringify(i)}).then((t=>{if(e.__isgene){if(t.returngmdata){e.gmdata=t.returngmdata}else{delete e.gmdata}}if(t.error)throw{message:t.error};e.img.attr("width",s.width).attr("height",t.height).attr("xlink:href",t.src);e.height_main=e.toppad+t.height+e.bottompad;return t})).catch((t=>{e.height_main=30;if(t.stack){console.log(t.stack)}return{error:t.message}})).then((t=>{s.tkcloakoff(e,t);s.block_setheight();s.bedj_tooltip(e,t)}))}function ge(e,s,i){if(e.viewrangeupperlimit&&e.viewrangeupperlimit>=i.stop-i.start){i.height=30;i.img.attr("width",1).attr("height",1);s.block_setheight();return}const o=s.tkarg_bedj(e);o.width=i.width;o.rglst=[{chr:i.chr,start:i.start,stop:i.stop,width:i.width}];if(e.__isgene){if(!s.gmmode||s.gmmode==m.genomic){o.__isgene=true}}s.tkcloakon_subpanel(i);t("tkbedj",{method:"POST",body:JSON.stringify(o)}).then((t=>{if(e.__isgene){if(t.returngmdata){i.gmdata=t.returngmdata}else{delete i.gmdata}}if(t.error)throw{message:t.error};i.img.attr("width",i.width).attr("height",t.height).attr("xlink:href",t.src);i.height=t.height+e.toppad+e.bottompad;return t})).catch((t=>{i.height=30;if(t.stack){console.log(t.stack)}return{error:t.message}})).then((t=>{s.tkcloakoff_subpanel(i,t);s.block_setheight();s.bedj_tooltip(e,t,i)}))}function ue(t,e){t.tkconfigtip.clear().showunder(t.config_handle.node());const s=t.tkconfigtip.d;{const i=s.append("div").style("margin-bottom","10px");i.append("span").html("Item height&nbsp;");i.append("input").attr("type","number").property("value",t.stackheight).style("width","50px").on("keyup",(s=>{if(s.code!="Enter"&&s.code!="NumpadEnter")return;const i=s.target.value;if(i=="")return;const o=Number.parseInt(i);if(Number.isNaN(o)||o<=0){alert("please use positive integer for height");return}t.stackheight=o;me(t,e)}))}if(!t.categories){const i=s.append("div").style("margin-bottom","10px");i.append("span").html("Color&nbsp;");i.append("input").property("value",t.color).attr("type","color").on("change",(s=>{t.color=s.target.value;me(t,e)}))}{const i=s.append("div").style("margin-bottom","10px");At({holder:i,labeltext:"Hide item names",checked:t.hideItemNames,callback:()=>{t.hideItemNames=!t.hideItemNames;me(t,e)}})}{const i=s.append("div").style("margin-bottom","10px");At({holder:i,labeltext:"Show items by names",checked:t.filterByName?true:false,callback:()=>{if(o.style("display")=="none"){o.style("display","block")}else{o.style("display","none");delete t.filterByName;me(t,e)}}});const o=s.append("div").style("margin","0px 0px 10px 25px").style("display",t.filterByName?"block":"none");const n=o.append("textarea").property("rows",4);if(t.filterByName)n.property("value",t.filterByName);n.property("placeholder","One name per row. Case sensitive. Use isoform names for gene track.");o.append("button").style("display","block").text("Submit").on("click",(()=>{const s=n.property("value").trim();if(!s)return;t.filterByName=s;me(t,e)}))}}const be="black";const ke="exonboundaryclass";function xe(t){t.stackheight=t.stackheight0=t.stackheight||30;t.stackspace=5;if(!t.noncodingcolor){t.noncodingcolor="#ccc"}}function ye(t,e){t.tklabel.text(e.usegm.name);t.isoformlabel=e.maketklefthandle(t,13).attr("class",null).text(e.usegm.isoform);Ce(t,e);t.config_handle=e.maketkconfighandle(t).on("click",(()=>{we(t,e)}))}function we(t,e){t.tkconfigtip.clear().showunder(t.config_handle.node());const s=t.tkconfigtip.d;const i=s.append("table");const o=i.append("tr");o.append("td").text(e.gmmode);o.append("td").attr("class","sja_menuoption").text("switch display mode").on("click",(()=>{i.remove();e.showgmmode4switch(s)}));const n=i.append("tr");if(e.allgm.length>1){n.append("td").text(e.usegm.isoform);n.append("td").attr("class","sja_menuoption").text("switch isoform").on("click",(()=>{i.remove();e.showisoform4switch(s)}))}if(e.gmmode==m.gmsum){const t=i.append("tr");let o=0;for(const t of e.allgm){if(!t.hidden)o++}t.append("td").text(o==e.allgm.length?"Showing all "+o+" isoforms":"Showing "+o+" of "+e.allgm.length+" isoforms");t.append("td").attr("class","sja_menuoption").text("show/hide isoforms").on("click",(()=>{i.remove();ve(e,s)}));i.append("tr").append("td").attr("colspan",2).style("padding-top","15px").style("font-size",".8em").html("To rearrange isoforms, drag and move<br>isoform names on the left of the track.")}if(e.usegm.exon.length>1&&(e.gmmode==m.protein||e.gmmode==m.exononly)){const s=i.append("tr");s.append("td").text("Exon boundary");s.append("td").append("button").text(t.exonboundaryhide?"show lines":"hide lines").on("click",(s=>{t.exonboundaryhide=!t.exonboundaryhide;s.target.innerHTML=t.exonboundaryhide?"show lines":"hide lines";e.usegm.__tkg.selectAll("."+ke).attr("stroke-opacity",t.exonboundaryhide?0:1)}))}if(e.gmmode==m.protein||e.gmmode==m.exononly){const s=i.append("tr");const o=s.append("td").attr("colspan",2).append("label");o.append("input").attr("type","checkbox").property("checked",t.noCodonNumberInsideBox).on("change",(()=>{t.noCodonNumberInsideBox=!t.noCodonNumberInsideBox;_e(t,e)}));o.append("span").style("margin-left","10px").text("Hide codon numbers")}}function ve(t,e){const s=new Map;for(const i of t.allgm){if(!i.trackname){g(e,".trackname missing for "+i.isoform);continue}if(!s.has(i.trackname)){s.set(i.trackname,new Map)}s.get(i.trackname).set(i,{hidden:i.hidden})}if(s.size==0){g(e,"no gene track names!");return}for(const[t,i]of s){const s=e.append("div").style("margin","5px");const o=Math.random();const n=s.append("input").attr("type","checkbox").attr("id",o).on("change",(()=>{for(const t of i.values()){t.checkbox.node().checked=n.node().checked}}));let a=true;for(const t of i.values()){if(!t.hidden){a=false;break}}if(!a){n.property("checked",true)}s.append("label").html("&nbsp;&nbsp;"+t).attr("for",o).attr("class","sja_clbtext");for(const[t,s]of i){const i=e.append("div").style("margin","3px 5px 3px 30px");const o=Math.random();s.checkbox=i.append("input").attr("type","checkbox").attr("id",o);if(!s.hidden){s.checkbox.property("checked",true)}i.append("label").html("&nbsp;&nbsp;"+t.isoform+' <span style="color:#858585">'+(t.cdslen?Math.ceil(t.cdslen/3)+" AA":"noncoding")+"</span>").attr("for",o).attr("class","sja_clbtext")}}e.append("button").style("display","block").style("margin-top","5px").text("Apply changes").on("click",(()=>{let e=0;const i=new Set;for(const t of s.values()){for(const[s,o]of t){const t=o.checkbox.node().checked;if(t){e++}else{i.add(s)}}}if(e<=1){window.alert("Must select at least two isoforms");return}for(const e of t.allgm){e.hidden=i.has(e)}delete t.gmmode;t.setgmmode(m.gmsum,true)}))}function _e(t,e){t.busy=false;e.ifbusy();t.glider.attr("transform","translate(0,0)").selectAll("*").remove();if(!e.gmmode){e.tkerror(t,"running usegm track but gmmode not set");return}const s=[];if(e.gmmode==m.gmsum){t.tklabel.text("");t.isoformlabel.text("");t.isoformnames=[];const i=t.stackheight*.7;let o=0;for(const n of e.allgm){if(n.hidden){continue}n.__tkg=t.glider.append("g").attr("transform","translate(0,"+o+")");n.__tky=o;ze(n,i,t,e);const a=n.__tkg.append("text").text(n.isoform).attr("y",i/2).attr("x",-12).attr("text-anchor","end").attr("dominant-baseline","central").attr("font-family",u).attr("fill","black").attr("font-size",e.labelfontsize).each((function(){s.push(this.getBBox().width)})).on("mousedown",(s=>{s.preventDefault();s.stopPropagation();je(n,e,s.clientY,i+t.stackspace)}));t.isoformnames.push(a);o+=i+t.stackspace}t.height_main=o+t.bottompad}else{t.isoformnames=null;e.usegm.__tkg=t.glider.append("g");ze(e.usegm,t.stackheight,t,e);t.height_main=t.toppad+t.stackheight+t.bottompad;t.tklabel.text(e.usegm.name).each((function(){s.push(this.getBBox().width)}));t.isoformlabel.text(e.usegm.isoform).each((function(){s.push(this.getBBox().width)}))}t.leftLabelMaxwidth=Math.max(...s);e.block_setheight();e.setllabel()}function ze(t,i,o,n){const r=t.__tkg;const l=Math.floor(i/5);let d=null;let c=0;for(let e=n.startidx;e<=n.stopidx;e++){const s=n.rglst[e];if(s.chr!=t.chr){c+=s.width+n.regionspace;continue}const i=Math.max(s.start,t.start),o=Math.min(s.stop,t.stop);if(i<o){d=c+(s.reverse?s.stop-o:i-s.start)*n.exonsf;break}c+=s.width+n.regionspace}if(d==null){r.append("text").attr("text-anchor","middle").attr("fill",be).attr("dominant-baseline","central").attr("font-size",Math.min(15,i)).attr("x",n.width/2).attr("y",i/2).text(t.name+" "+t.isoform+" is not in view range");return}let h=null;c=0;for(let e=n.startidx;e<=n.stopidx;e++){const s=n.rglst[e];if(s.chr!=t.chr){c+=s.width+n.regionspace;continue}const i=Math.max(s.start,t.start),o=Math.min(s.stop,t.stop);if(i<o){h=c+(s.reverse?s.stop-i:o-s.start)*n.exonsf}c+=s.width+n.regionspace}if(h==null){console.log("should not happen: stop position not found");r.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",Math.min(15,i)).attr("x",n.width/2).attr("y",i/2).text(t.name+" not in view range");return}const p=d;const f=h;r.append("line").attr("x1",p).attr("y1",i/2).attr("x2",f).attr("y2",i/2).attr("stroke",be).attr("shape-rendering","crispEdges");const g=[];const u=[];if(n.gmmode!=m.protein){if(t.utr5){u.push(...t.utr5)}if(t.utr3){u.push(...t.utr3)}if(t.exon&&!t.coding){u.push(...t.exon)}for(const e of u){c=0;for(let s=n.startidx;s<=n.stopidx;s++){const a=n.rglst[s];if(a.chr!=t.chr){c+=a.width+n.regionspace;continue}const d=Math.max(a.start,e[0]),h=Math.min(a.stop,e[1]);if(d>=h){c+=a.width+n.regionspace;continue}const p=r.append("rect").attr("x",c+(a.reverse?a.stop-h:d-a.start)*n.exonsf).attr("y",l).attr("width",Math.max(1,(h-d)*n.exonsf)).attr("height",i-l*2).attr("fill",o.noncodingcolor);g.push({b:p,r:a,start:d,stop:h})}}}if(t.pdomains){t.pdomains.sort(((t,e)=>e.stop-e.start-(t.stop-t.start)))}let b=null,k=null,x=null,y=null;if(t.coding){for(let e=0;e<t.coding.length;e++){const s=t.coding[e];c=0;for(let o=n.startidx;o<=n.stopidx;o++){const a=n.rglst[o];if(a.chr!=t.chr){c+=a.width+n.regionspace;continue}const l=Math.max(a.start,s[0]),d=Math.min(a.stop,s[1]);if(l>=d){c+=a.width+n.regionspace;continue}const h=c+(a.reverse?a.stop-d:l-a.start)*n.exonsf;const p=Math.max(1,(d-l)*n.exonsf);if(b==null){b=h;k=l;y=d}else{k=Math.min(l,k);y=Math.max(d,y)}x=h+p;const f=r.append("rect").attr("x",h).attr("width",p).attr("height",i).attr("fill","white");g.push({b:f,r:a,start:l,stop:d});if(t.pdomains){let o=0;for(let s=0;s<e;s++){o+=t.coding[s][1]-t.coding[s][0]}const c=o+(a.reverse?s[1]-d:l-s[0]);const p=o+(a.reverse?s[1]-l:d-s[0]);for(const e of t.pdomains){if(e.name+e.description in t.domain_hidden){continue}const s=Math.max(c,(e.start-1)*3);const o=Math.min(p,e.stop*3);if(s<o){r.append("rect").attr("x",h+(s-c)*n.exonsf).attr("width",Math.max(1,(o-s)*n.exonsf)).attr("height",i).attr("fill",e.color)}}}if(n.gmmode!=m.protein&&n.gmmode!=m.exononly){if(l==s[0]){const t=h+(a.reverse?p:0);r.append("line").attr("x1",t).attr("x2",t).attr("y2",i).attr("stroke",be)}if(d==s[1]){const t=h+(a.reverse?0:p);r.append("line").attr("x1",t).attr("x2",t).attr("y2",i).attr("stroke",be)}r.append("line").attr("x1",h).attr("x2",h+p).attr("stroke",be);r.append("line").attr("x1",h).attr("x2",h+p).attr("y1",i).attr("y2",i).attr("stroke",be)}}}}if(n.gmmode==m.exononly||n.gmmode==m.protein){if(b!=null&&x!=null){r.append("line").attr("x1",b).attr("x2",x).attr("stroke",be);r.append("line").attr("x1",b).attr("x2",x).attr("y1",i).attr("y2",i).attr("stroke",be);const e=t.strand=="-";if(k==t.codingstart){r.append("line").attr("x1",e?x:b).attr("x2",e?x:b).attr("y2",i).attr("stroke",be)}if(y==t.codingstop){r.append("line").attr("x1",e?b:x).attr("x2",e?b:x).attr("y2",i).attr("stroke",be)}}for(let e=n.startidx;e<n.stopidx;e++){const s=n.rglst[e];if(s.chr!=t.chr)continue;c=0;for(let t=n.startidx;t<e;t++){c+=n.rglst[t].width+n.regionspace}let a=true;if(t.coding){if(s.reverse){a=s.start<=t.codingstart||s.start>=t.codingstop}else{a=s.stop<=t.codingstart||s.stop>=t.codingstop}}r.append("line").attr("class",ke).attr("x1",c+s.width+n.regionspace/2).attr("x2",c+s.width+n.regionspace/2).attr("y1",a?l:0).attr("y2",i-(a?l:0)).attr("stroke",be).attr("stroke-dasharray","4,2").attr("shape-rendering","crispEdges").attr("stroke-opacity",o.exonboundaryhide?0:1)}}const w=n.exonsf>=6;if(t.coding&&(n.gmmode==m.protein||n.gmmode==m.exononly||n.gmmode==m.splicingrna)){const l=n.exonsf>=2;const d=(i-2)/3;let h;if(n.gmmode==m.protein){h=0}else{h=t.utr5?t.utr5.reduce(((t,e)=>t+e[1]-e[0]),0):0}const p=[],f=[];for(let e=n.startidx;e<=n.stopidx;e++){const s=n.rglst[e];if(s.chr!=t.chr){continue}c=0;for(let t=n.startidx;t<e;t++){c+=n.rglst[t].width+n.regionspace}const o=n.regioncumlen(e);const a=o+s.stop-s.start;if(o>=h+t.cdslen||a<=h){continue}let m,g;if(o<h){m=0;g=(h-o)*n.exonsf}else{m=o-h;g=0}const u=t.startCodonFrame?3-t.startCodonFrame:0;const b=Math.min(t.cdslen,a-h);p.push(1+Math.floor(m/3));f.push(c+g+n.exonsf*(m%3==0?1.5:m%3==1?.5:-.5));p.push(1+Math.floor(b/3));f.push(c+g+(b-m)*n.exonsf);if(w){for(let e=m;e<b;e++){const s=e-u;if(Math.floor(s/3)%2==0){r.append("rect").attr("x",c+g+(e-m)*n.exonsf).attr("width",n.exonsf).attr("height",d*2).attr("fill","black").attr("fill-opacity",.1)}r.append("text").text(t.cdseq[e]).attr("font-family","Courier").attr("font-size",d).attr("dominant-baseline","central").attr("text-anchor","middle").attr("fill","black").attr("x",c+g+(e-m+.5)*n.exonsf).attr("y",2+d/2)}}if(m%3==2){m++;g+=n.exonsf}if(l){for(let e=m;e<b;e++){const s=e-u;if(s%3!=1){continue}r.append("text").text(t.aaseq[Math.floor(s/3)]).attr("font-family","Courier").attr("font-size",d).attr("font-weight","bold").attr("fill","black").attr("dominant-baseline",w?"central":"auto").attr("text-anchor","middle").attr("x",c+g+(e-m+.5)*n.exonsf).attr("y",i/2)}}}if(p.length&&!o.noCodonNumberInsideBox){const t=e().domain(p).range(f);s({axis:r.append("g").attr("transform","translate(0,"+(l?w?d*2:i/2:i/2)+")").call(qt().scale(t).tickSize(0).tickFormat(a("d"))),color:"black",showline:false,fontsize:d})}}if(w&&t.genomicseq){const e=(i-2)/3;for(const s of u){c=0;for(let o=n.startidx;o<=n.stopidx;o++){const a=n.rglst[o];if(a.chr!=t.chr){c+=a.width+n.regionspace;continue}const l=Math.max(a.start,s[0]),d=Math.min(a.stop,s[1]);if(l>=d){c+=a.width+n.regionspace;continue}for(let s=l;s<d;s++){let o=t.genomicseq[s-t.start];if(a.reverse){o=_(o)}r.append("text").text(o).attr("font-family","Courier").attr("font-size",e).attr("dominant-baseline","central").attr("text-anchor","middle").attr("fill","black").attr("x",c+(a.reverse?(a.stop-d)*n.exonsf+(d-l)*n.exonsf-(s-l+.5)*n.exonsf:(l-a.start)*n.exonsf+(s-l+.5)*n.exonsf)).attr("y",i/2)}}}}for(const e of g){r.append("rect").attr("x",e.b.attr("x")).attr("y",e.b.attr("y")).attr("width",e.b.attr("width")).attr("height",e.b.attr("height")).attr("fill","#858585").attr("fill-opacity",0).on("mouseover",(t=>t.target.setAttribute("fill-opacity",.2))).on("mousemove",(s=>Me(o,s,e.r,e.start,e.stop,t,n,i))).on("mouseout",(t=>{t.target.setAttribute("fill-opacity",0);o.tktip.hide()}))}}function je(t,e,s,i){const o=b(document.body);o.on("mousemove",(o=>{const n=o.clientY-s;t.__tkg.attr("transform","translate(0,"+(t.__tky+n)+")");let a=0;for(let s=0;s<e.allgm.length;s++){if(e.allgm[s].isoform==t.isoform){a=s;break}}if(n<0&&a>0){let r=a-1,l=e.allgm[r];while(l.hidden){r--;if(r<0){return}l=e.allgm[r]}if(!l){return}if(-n>=i){e.allgm[r]=t;e.allgm[a]=l;t.__tky=l.__tky;l.__tky+=i;l.__tkg.transition().attr("transform","translate(0,"+l.__tky+")");s=o.clientY}}else if(n>0&&a<e.allgm.length-1){let r=a+1,l=e.allgm[r];while(l.hidden){r++;if(r>=e.allgm.length){return}l=e.allgm[r]}if(!l){return}if(n>=i){e.allgm[r]=t;e.allgm[a]=l;l.__tky=t.__tky;t.__tky+=i;l.__tkg.transition().attr("transform","translate(0,"+l.__tky+")");s=o.clientY}}}));o.on("mouseup",(()=>{t.__tkg.transition().attr("transform","translate(0,"+t.__tky+")");o.on("mousemove",null).on("mouseup",null)}))}function Me(t,e,s,i,o,n,a,r){t.tktip.clear();const l=t.tktip.d.append("div").style("font-family","Courier");const d=e.target.getBoundingClientRect();const c=e.clientX-d.left;let h;if(s.reverse){h=o-Math.ceil(c/a.exonsf)}else{h=i+Math.floor(c/a.exonsf)}const p=k(h,n);if(p.atexon){l.append("div").html('&nbsp;&nbsp;<span style="opacity:.5">exon:</span> '+p.atexon)}if(p.atutr5){l.append("div").html('<span style="opacity:.5">5\' UTR:</span> '+p.atutr5.off+" bp")}else if(p.atutr3){l.append("div").html('<span style="opacity:.5">3\' UTR:</span> '+p.atutr3.off+" bp")}else if(p.aapos){l.append("div").html('&nbsp;&nbsp;&nbsp;&nbsp;<span style="opacity:.5">AA:</span> '+p.aapos+" aa")}if(p.rnapos){l.append("div").html('&nbsp;&nbsp;&nbsp;<span style="opacity:.5">RNA:</span> '+p.rnapos+" bp")}if(p.aapos&&n.pdomains){for(const t of n.pdomains){if(t.name+t.description in n.domain_hidden)continue;if(t.start<=p.aapos&&t.stop>=p.aapos){const e=l.append("div");e.append("span").style("background-color",t.color).html("&nbsp;&nbsp;");e.append("span").style("font-family",u).html("&nbsp;"+t.name);if(t.description){e.append("span").style("font-family",u).style("font-size",".7em").html("&nbsp;"+(t.description.length>30?t.description.substring(0,20)+" ...":t.description))}}}}l.append("div").style("margin-top","5px").style("font-size",".8em").text(n.chr+" "+(h+1));t.tktip.show(e.clientX,n.__tkg.node().getBoundingClientRect().top+r-10)}const Ne=[{key:"CDD",makelink:t=>`https://www.ncbi.nlm.nih.gov/Structure/cdd/cddsrv.cgi?uid=${t.CDD}`},{key:"Pfam",makelink:t=>`https://www.ebi.ac.uk/interpro/entry/pfam/PF${t.Pfam.substr(4)}`},{key:"SMART",makelink:t=>`https://smart.embl.de/smart/do_annotation.pl?BLAST=DUMMY&DOMAIN=${t.SMART.substr(5)}`},{key:"COG",makelink:t=>`https://www.ncbi.nlm.nih.gov/Structure/cdd/cddsrv.cgi?uid=${t.COG}`},{key:"PRK",makelink:t=>`https://www.ncbi.nlm.nih.gov/proteinclusters?term=${t.PRK}`},{key:"pmid",makelink:t=>`https://pubmed.ncbi.nlm.nih.gov/${t.pmid}/`,txt:t=>`PubMed ${t.pmid}`},{key:"url",makelink:t=>t.url,txt:()=>"Reference"}];async function Ce(t,e){if(!e.legend||!e.legend.holder){return}if(!e.usegm){return}if(!t.tr_legend){const[s,i]=mt(e,"PROTEIN");t.tr_legend=s;t.td_legend=i}t.td_legend.selectAll("*").remove();const s=x(e.usegm);const i=[{label:"Hide",hide:t=>e.usegm.domain_hidden[t.key],callback:t=>{for(const s of e.allgm){s.domain_hidden[t.key]=1}}},{label:"Show",hide:t=>!e.usegm.domain_hidden[t.key],callback:t=>{for(const s of e.allgm){delete s.domain_hidden[t.key]}}},{label:"Show All",hide:()=>!Object.keys(e.usegm.domain_hidden).length,callback:()=>{for(const t of e.allgm){t.domain_hidden={}}}},{label:"Show only",hide:()=>Object.keys(e.usegm.domain_hidden).length==s.length-1,callback:t=>{for(const i of e.allgm){delete i.domain_hidden[t.key];for(const e of s){if(e.key!=t.key)i.domain_hidden[e.key]=1}}}}];const o=t.td_legend.selectAll("div").data(s).enter().append("div").classed("sjpp-domain-legend-item",true).style("margin",e.legend.vpad+" 0px 8px 0px");o.append("span").style("padding","5px 0px").style("margin-right","10px");const n=o.append("span").classed("sja_clb",true);const a=n.append("span").style("background-color",(t=>t.fill)).html("&nbsp;&nbsp;&nbsp;").style("margin-right","10px");const r=n.append("span").text((t=>t.name)).style("text-decoration",(t=>e.usegm.domain_hidden[t.key]?"line-through":"none")).style("color",y).style("margin-right","10px");const l=n.append("span").text((t=>t.description)).style("text-decoration",(t=>e.usegm.domain_hidden[t.key]?"line-through":"none")).style("color",y).style("font-size",".7em").style("margin-right","10px");n.on("click",(async(s,o)=>{e.tip.clear().showunder(s.target);await e.tip.d.selectAll("div").data(i.filter((t=>!t.hide(o)))).enter().append("div").style("border-radius","0px").classed("sja_menuoption",true).text((t=>t.label)).on("click",((s,i)=>{s.stopPropagation();i.callback(o);d();e.tip.hide();_e(t,e)}));if(!e.usegm.domain_hidden[o.key]){e.tip.d.append("div").text("Color: ").style("margin","10px").append("input").attr("type","color").attr("value",o.fill).style("margin-left","5px").on("change",(s=>{o.fill=s.target.value;for(const t of e.allgm){t.pdomains.filter((t=>t.name+t.description==o.key)).forEach((t=>t.color=s.target.value))}d();e.tip.hide();_e(t,e)}))}}));o.append("span").each((function(t){const e=b(this);for(const s of Ne){if(t[s.key]){e.append("a").attr("href",s.makelink(t)).attr("target","_blank").text(s.txt?s.txt(t):s.key).style("font-size",".7em").style("padding-right","10px")}}}));const d=()=>{const t=t=>e.usegm.domain_hidden&&e.usegm.domain_hidden[t.key];a.style("background-color",(e=>t(e)?"transparent":e.fill));r.style("text-decoration",(e=>t(e)?"line-through":"none"));l.style("text-decoration",(e=>t(e)?"line-through":"none"))};if(e.usegm.coding&&e.usegm.coding.length>0){let s=false;const i=t.td_legend.append("div").style("margin-top","10px");const o=t.td_legend.append("div").style("display","none");qe(e,t,o);const n=i.append("div").style("display","inline-block").classed("sja_menuoption",true).style("font-size",".8em").html(s?"&#9650; add protein domain":"&#9660; add protein domain").on("click",(()=>{s=!s;o.style("display",s?"block":"none");n.html(s?"&#9650; add protein domain":"&#9660; add protein domain")}))}}let Be=0;function Ie(){return`sjpp-customdomainui-${Be++}`}function qe(t,e,s){const i=s.style("padding","20px");const o=Ie();i.append("label").attr("for",o).html(`Add domains for ${t.usegm.name} <span style="font-size:.8em">${t.usegm.isoform}</span>`);const n=x(t.usegm);const a=[];for(const t of n){if(t.iscustom)a.push(t)}if(a.length>0){const s=i.append("div").style("margin","20px 0px");s.append("div").text("Click to remove a domain").style("font-size",".8em").style("margin-bottom","5px");for(const i of a){const o=s.append("div").classed("sja_menuoption",true);o.append("div").style("background-color",i.fill).style("border","solid 1px "+i.stroke).style("display","inline-block").style("margin-right","5px").style("padding","1px 2px").style("font-family","Courier").html("&nbsp;");o.append("div").style("display","inline-block").text(i.name);o.on("click",(()=>{o.remove();const s=[];for(const e of t.usegm.pdomains){if(e.iscustom&&e.name==i.name)continue;s.push(e)}t.usegm.pdomains=s;_e(e,t);Ce(e,t)}))}}i.append("p").style("font-size",".9em").html('<span style="font-size:.8em;color:#000">EXAMPLE</span>&nbsp;&nbsp;domain_name ; 100 200 ; red');const r=i.append("textarea").attr("id",o).attr("rows",5).attr("cols",30);const l=i.append("div").style("margin-top","5px");const d=l.append("select");d.append("option").text("Codon position");d.append("option").text("mRNA position");d.append("option").text("Genomic position");l.append("button").text("Submit").style("margin-left","5px").on("click",(()=>{const i=r.property("value");if(i=="")return;c.style("display","none");const o=i.trim().split("\n");for(const e of o){const s=e.split(";");if(s.length!=3)return h("invalid line: "+e);const i=s[1].trim().split(" ");if(i.length!=2)return h("position requires start and stop: "+e);const o=Number.parseInt(i[0]);const n=Number.parseInt(i[1]);if(Number.isNaN(o)||Number.isNaN(n))return h("invalid position value: "+e);let a,r;switch(d.node().selectedIndex){case 0:a=o;r=n;break;case 1:let e=w(o,t.usegm);if(e==null)return h("cannot map RNA position "+o+" to gene model");a=k(e,t.usegm).aapos;e=w(n,t.usegm);if(e==null)return h("cannot map RNA position "+n+" to gene model");r=k(e,t.usegm).aapos;break;default:const s=k(o,t.usegm).aapos;const i=k(n,t.usegm).aapos;a=Math.min(s,i);r=Math.max(s,i)}const l=s[2].trim().startsWith("#")?s[2].trim():v(s[2].trim()).formatHex();t.usegm.pdomains.push({iscustom:true,name:s[0].trim(),color:l,start:a,stop:r})}s.style("display","none");_e(e,t);Ce(e,t)}));l.append("button").text("Clear").style("margin-left","5px").on("click",(()=>r.property("value","")));const c=i.append("div").style("margin-top","10px").style("display","none");const h=t=>{c.style("display","block");g(c,t)};i.append("div").style("color","#000").style("margin-top","20px").html(`One protein domain per line.<br>\nEach line has three fields joined by semicolon:\n<ol>\n <li>Name, text with space, no semicolon.</li>\n <li>Range, two integers joined by space.</li>\n <li>Color, e.g. red, #FF0000, rgb(255,0,0).</li>\n</ol>`)}function Fe(t,e){if(t.textdata){if(!t.textdata.raw)return".textdata.raw missing";if(typeof t.textdata.raw!="string")return".textdata.raw should be string";delete e.enzyme}else if(t.bedfile||t.bedurl);else{if(!e.file&&!e.url)return"none of the data sources available: text data, bedj file, or juicebox file"}if(e.domainoverlay){if(!e.domainoverlay.file&&!e.domainoverlay.url)return"file or url missing for domainoverlay";t.domainoverlay={};for(const s in e.domainoverlay){t.domainoverlay[s]=e.domainoverlay[s]}}t.hic={enzyme:e.enzyme};delete t.enzyme;return null}function Ae(t){t.uninitialized=true}function Se(t,e){import("./block.tk.hicstraw-526470e3.js").then((s=>{s.loadTk(t,e)}))}function Re(t,e){if(!e.samplename)return"samplename missing";if(!e.rnabamfile){if(!e.rnabamurl)return"neither file or url given for rnabam"}if(!e.vcffile){if(!e.vcfurl)return"neither file or url given for vcf"}return null}function Oe(t,e){t.uninitialized=true}function Ue(t,e){import("./block.tk.ase-ee807e59.js").then((s=>{s.loadTk(t,e)}))}const De={key:"percentage",label:"Percentage",cutoffValueLst:[{side:">",value:5,label:">5%"},{side:">",value:10,label:">10%"},{side:">",value:20,label:">20%"},{side:">",value:30,label:">30%"},{side:">",value:40,label:">40%"}]};function Le(t,e){if(e.axisheight){const s=Number.parseInt(e.axisheight);if(Number.isNaN(s))return"invalid value for axisheight";t.axisheight=s}else{t.axisheight=200}if(e.legheight){const s=Number.parseInt(e.legheight);if(Number.isNaN(s))return"invalid value for legheight";t.legheight=s}else{t.legheight=50}if(e.neckheight){const s=Number.parseInt(e.neckheight);if(Number.isNaN(s))return"invalid value for neckheight";t.neckheight=s}else{t.neckheight=50}t.height_main=t.toppad+t.axisheight+t.legheight+t.neckheight+t.bottompad;t.yscaleUseLog=e.yscaleUseLog!=undefined?e.yscaleUseLog:true;if(t.iscustom){t.mds={};if(e.infoFilter){if(!e.infoFilter.lst)return".lst missing from infoFilter";t.infoFilter={lst:[]};for(const s of e.infoFilter.lst){if(!s.key)return".key missing from an item of .infoFilter.lst";if(!s.label)s.label=s.key;if(!s.categories)return".categories missing from an item of .infoFilter.lst";const e={key:s.key,label:s.label,categories:{},hiddenCategories:{}};for(const t in s.categories){e.categories[t]=s.categories[t]}if(s.hiddenCategories){for(const t in s.hiddenCategories){e.hiddenCategories[t]=1}}t.infoFilter.lst.push(e)}}else{t.infoFilter={lst:[{key:"type",label:"Type",categories:{canonical:{label:"Canonical",color:"#0C72A8"},exonskip:{label:"Exon skipping",color:"#D14747",valuePerSample:De},exonaltuse:{label:"Exon alternative usage",color:"#E69525",valuePerSample:De},a5ss:{label:"Alternative 5' splice site",color:"#476CD1",valuePerSample:De},a3ss:{label:"Alternative 3' splice site",color:"#47B582",valuePerSample:De},Unannotated:{label:"Not annotated",color:"#787854"}},hiddenCategories:{}}]}}}return null}function Te(t,e){t.leftaxis=t.gleft.append("g");t.tktip.d.style("padding","8px");t.subTracks=[];t.uninitialized=true}function Ee(t,e){import("./block.mds.junction-7f87f48f.js").then((s=>{s.loadTk(t,e)}))}function Pe(t,e){t.valueLabel=e.valueLabel||"CNV";t.toppad=t.bottompad=8;t.gain={barheight:70,color:"#ef8a62",color2:"#FFB236",scale:{auto:1}};if(e.gain){for(const s in e.gain){t.gain[s]=e.gain[s]}}t.loss={barheight:70,color:"#67a9cf",color2:"#FFB236",scale:{auto:1}};if(e.loss){for(const s in e.loss){t.loss[s]=e.loss[s]}}t.height_main=t.toppad+t.gain.barheight+t.loss.barheight+t.bottompad;return null}function $e(t,e){t.gain.axis=t.gleft.append("g");t.loss.axis=t.gleft.append("g");t.img=t.glider.append("image");t.tktip.d.style("padding","8px");t.subTracks=[];t.uninitialized=true}function Xe(t,e){import("./block.mds.cnv-857ba868.js").then((s=>{s.loadTk(t,e)}))}function He(t,e){if(t.file||t.url){t.iscustom=true}if(e.singlesample){if(!e.singlesample.name)return"singlesample.name missing";t.singlesample=e.singlesample}if(e.checkexpressionrank){if(t.iscustom){if(!e.checkexpressionrank.file&&!e.checkexpressionrank.url)return"file/url missing for checkexpressionrank in custom track"}t.checkexpressionrank={};for(const s in e.checkexpressionrank){t.checkexpressionrank[s]=e.checkexpressionrank[s]}}if(e.checkrnabam){if(!e.checkrnabam.samples)return"samples{} missing from checkrnabam";t.iscustom=true}t.gaincolor=e.gaincolor||"#D6683C";t.losscolor=e.losscolor||"#67a9cf";t.lohcolor=e.lohcolor||"#545454";return null}function Ye(t,e){t.uninitialized=true}function Ge(t,e){import("./block.mds.svcnv-ac035c12.js").then((s=>{s.loadTk(t,e)}))}function Je(t,e){t.uninitialized=true}function Ve(t,e){import("./block.mds.expressionrank-7e3b208c.js").then((s=>{s.loadTk(t,e)}))}function We(t,e){t.uninitialized=true}function Ze(t,e){import("./block.mds2-7852c1ee.js").then((s=>{s.loadTk(t,e)}))}function Ke(t,e){t.uninitialized=true}function Qe(t,e){import("./tk-071a7550.js").then((function(t){return t.t})).then((s=>{s.loadTk(t,e)}))}function ts(t,e){t.uninitialized=true}function es(t,e){import("./block.tk.bedgraphdot-7fda78e9.js").then((s=>{s.loadTk(t,e)}))}const ss="#FFE5E5";function is(t,e){t.labyspace=5;t.leftaxis=t.gleft.append("g");if(!t.itemlabelname){t.itemlabelname="mutation"}let s=t.labyspace+e.labelfontsize;const i=new z({padding:"none"});t.label_mcount=e.maketklefthandle(t,s).on("click",(()=>{cs(t,e,t.label_mcount,i)}));s+=t.labyspace+e.labelfontsize;if(t.ds.stratify){t.label_stratify=[];const i=new z;for(const o of t.ds.stratify){const n=JSON.parse(JSON.stringify(o));t.label_stratify.push(n);n.svglabel=e.maketklefthandle(t,s).on("click",(()=>{hs(t,e,n,i)}));s+=t.labyspace+e.labelfontsize}}if(t.ds.iscustom){t.label_close=e.maketklefthandle(t,s).text("Close").on("mousedown",(t=>{t.stopPropagation();t.preventDefault()})).on("click",(()=>{e.deletecustomdsbyname(t.ds.label)}));s+=t.labyspace+e.labelfontsize}e.setllabel(t);if(t.ds.vcfinfofilter){t.vcfinfofilter=t.ds.vcfinfofilter}if(t.ds.info2table){t.info2table=t.ds.info2table}if(t.ds.info2singletable){t.info2singletable=t.ds.info2singletable}if(t.ds.itemlabelname){t.itemlabelname=t.ds.itemlabelname}if(t.ds.url4variant){t.url4variant=t.ds.url4variant}if(e.legend&&e.legend.holder){let s=false;if(t.populationfrequencyfilter){s=true}if(t.vcfinfofilter){s=true}if(t.ds.cohort&&t.ds.cohort.sampleattribute){s=true}if(s){const[s,i]=mt(e,t.name);t.tr_legend=s;t.td_legend=i;if(t.vcfinfofilter){const s=ps(t,e);if(s){delete t.vcfinfofilter;e.error(t.name+": "+s)}const o=i.append("div").style("margin","10px").style("display","none");t.genotype2color={rr:"#ccc",ra:"blue",aa:"red",legend:o};o.append("span").text("Genotype").style("color","#858585");let n=o.append("span").style("padding-left","10px");n.append("div").style("display","inline-block").style("background",t.genotype2color.rr).html("&nbsp;&nbsp;");n.append("span").html("&nbsp;Ref/Ref");n=o.append("span").style("padding-left","10px");n.append("div").style("display","inline-block").style("background",t.genotype2color.ra).html("&nbsp;&nbsp;");n.append("span").html("&nbsp;Ref/Alt");n=o.append("span").style("padding-left","10px");n.append("div").style("display","inline-block").style("background",t.genotype2color.aa).html("&nbsp;&nbsp;");n.append("span").html("&nbsp;Alt/Alt")}if(t.populationfrequencyfilter){const s=fs(t);if(s){delete t.populationfrequencyfilter;e.error(t.name+": "+s)}}if(t.ds.cohort&&t.ds.cohort.sampleattribute){const s=ms(t);if(s){delete t.ds.cohort.sampleattribute;e.error(t.name+": "+s)}}}}}function os(t,e){const s=[];for(const i of t.mlst){if(e.legend){if(e.legend.mclasses.has(i.class)&&e.legend.mclasses.get(i.class).hidden)continue;if(e.legend.morigins.has(i.origin)&&e.legend.morigins.get(i.origin).hidden)continue}s.push(i)}return s}function ns(t,e){const s=os(t,e);const i=[];if(t.ds.id2vcf){const e=[];for(const i in t.ds.id2vcf){const o=[];for(const t of s){if(t.vcfid==i)o.push(t)}if(o.length==0)continue;t.ds.id2vcf[i];e.push("CHROM\tPOS\tREF\tALT\tINFO-locus\tINFO-altAllele\tclass\tname");for(const t of o){const s=[];if(t.info){for(const e in t.info)s.push(e+"="+t.info[e])}const i=[];if(t.altinfo){for(const e in t.altinfo)i.push(e+"="+t.altinfo[e])}e.push(`${t.chr}\t${t.pos}\t${t.ref}\t${t.alt}\t${s.join(";")}\t${i.join(";")}\t${I[t.class].label}\t${t.mname}`)}}i.push({text:e.join("\n")})}else{const e=new Map;for(const t of s){if(!e.has(t.dt)){e.set(t.dt,[])}e.get(t.dt).push(t)}for(const[s,o]of e){let e=null;switch(s){case U:if(!t.snvindelattr){jt(t,o)}e=t.snvindelattr;break;case O:case R:if(!t.svattr){zt(t,o)}e=t.svattr;break;case S:if(!t.itdattr){_t(t,o)}e=t.itdattr;break;case A:case F:if(!t.truncattr){vt(t,o)}e=t.truncattr;break;case q:if(!t.delattr){wt(t,o)}e=t.delattr;break}if(!e){continue}const n=[];for(const t of e){if(t.lst){for(const e of t.lst){if(e.ismaf){n.push(e.label+" mutant allele fraction")}else{n.push(e.label)}}}else{if(t.ismaf){n.push(t.label+" mutant allele fraction")}else{n.push(t.label)}}}const a=[n.join("\t")];for(const t of o){const s=[];for(const i of e){if(i.lst){for(const e of i.lst){if(e.ismaf){const i=e.get(t);if(i&&Number.isFinite(i.f)){s.push(i.f.toFixed(2))}else{s.push("n/a")}}else{s.push(e.get(t))}}}else{if(i.ismaf){const e=i.get(t);if(e&&Number.isFinite(e.f)){s.push(e.f.toFixed(2))}else{s.push("n/a")}}else{s.push(i.get(t))}}}a.push(s.join("\t"))}i.push({label:L[s],text:a.join("\n")})}}D(t.ds.label,i)}function as(t){const e=new Set(["__x","isrim1","isrim2","aapos","alt","chr","class","dt","isoform","mname","origin","pos","ref","rnapos","rnaposition","gene","rnaduplength","rnadellength"]);if(t.ds.cohort&&t.ds.cohort.levels){for(const s of t.ds.cohort.levels){e.add(s.k);if(s.full){e.add(s.full)}}}const s=new Set;for(const i of t.mlst){for(const t in i){if(e.has(t))continue;const o=i[t];if(typeof o=="object"){continue}s.add(t)}}const i=new Map;for(const t of s){i.set(t.toLowerCase(),t)}const o=[];if(i.has("sample"))o.push(i.get("sample"));if(i.has("samplename"))o.push(i.get("samplename"));if(i.has("patient"))o.push(i.get("patient"));if(i.has("patientname"))o.push(i.get("patientname"));if(i.has("sampletype"))o.push(i.get("sampletype"));if(i.has("person"))o.push(i.get("person"));if(i.has("individual"))o.push(i.get("individual"));for(const[t,e]of i){if(o.indexOf(e)==-1){o.push(e)}}return o}function rs(t,e,s){const i=e.append("div").style("margin","20px");const o=i.append("div").style("margin-bottom","5px");o.append("span").style("font-size",".7em").html("Stratify by&nbsp;&nbsp;");const n=as(t);const a=o.append("select").on("change",(()=>{const e=a.node();const i=e.options[e.selectedIndex].innerHTML;ls(i,t,s,r)}));const r=i.append("div");for(const t of n){a.append("option").text(t)}if(n[0]){ls(n[0],t,s,r)}}function ls(t,e,s,i){const o=new Map;for(const s of e.mlst){let e=s[t];if(e==undefined){continue}if(typeof e=="boolean"){if(e){e="true"}else{e="false"}}if(o.has(e)){o.get(e).push(s)}else{o.set(e,[s])}}const n=[...o];n.sort(((t,e)=>e[1].length-t[1].length));i.selectAll("*").remove();if(o.size>10){i.style("height","200px").style("overflow-y","scroll").style("resize","vertical").style("padding","5px")}const a=i.append("table").style("border-spacing","1px").style("border-collapse","separate").style("font-size",".8em");for(const[i,o]of n){const n=a.append("tr");n.append("td").text(o.length).style("text-align","right");const r=n.append("td").classed("sja_menuoption",true);r.text(i);r.on("click",(()=>{const n=e.ds.label+" - "+t+" - "+i;if(s.ownds[n]){s.deletecustomdsbyname(n)}else{const t={label:n,bulkdata:{},parentname:e.ds.label,iscustom:true,sampleselectable:e.ds.sampleselectable};t.bulkdata[s.usegm.name.toUpperCase()]=o;s.addchilddsnoload(t);const i=s.block_addtk_template({type:C.ds,ds:t});xt(i,s)}}));const l=n.append("td");ds(o,l)}}function ds(t,e){const s=new Map;for(const e of t){if(s.has(e.class)){s.set(e.class,s.get(e.class)+1)}else{s.set(e.class,1)}}const i=[...s];i.sort(((t,e)=>e[1]-t[1]));for(const t of i){e.append("span").html(t[1]==1?"&nbsp;":t[1]).style("background-color",I[t[0]].color).classed("sja_mcdot",true)}}function cs(t,e,s,i){i.clear();const o=i.d;if(!t.mlst){console.error(".mlst missing for "+t.name);return}if(t.mlst.length==0){return}if(t.ds.id2vcf);else{if(t.mlst.length<1e3){rs(t,o,e)}else{o.append("div").text("Stratify "+t.mlst.length+" variants").attr("class","sja_menuoption").on("click",(()=>{o.selectAll("*").remove();rs(t,o,e)}))}}if(e.samplecart&&t.ds&&t.ds.sampleselectable){const s=new Set;for(const e of t.mlst){if(e.sample){s.add(e.sample)}}e.samplecart.setBtns({samplelst:[...s],id:e.usegm?e.usegm.name:"",basket:"Gene Mutation",container:o.append("div")})}if(t.numericmode);else{let s=false;for(const e of t.data){if(e.showmode==1){s=true;break}}if(s){o.append("div").text("Fold").attr("class","sja_menuoption").on("click",(()=>{i.hide();gt(t.data,t)}))}else{o.append("div").text("Expand").classed("sja_menuoption",true).on("click",(()=>{i.hide();ut(t,e)}))}}if(t.ds.cohort){o.append("div").text("To sunburst").classed("sja_menuoption",true).on("click",(async()=>{i.hide();const s=os(t,e);await bt(s.length,s,100,t.height_main/2,t,e)}))}o.append("div").text("To table").classed("sja_menuoption",true).on("click",(()=>{const s=o.node().getBoundingClientRect();i.hide();const n=os(t,e);kt({mlst:n,pane:true,x:s.left,y:s.top,tk:t,block:e})}));o.append("div").text("Download").classed("sja_menuoption",true).on("click",(()=>{i.hide();ns(t,e)}));i.showunder(s.node())}function hs(t,e,s,i){i.clear();const o=os(t,e);let n=[];if(s.bycohort){if(!t.ds||!t.ds.cohort||!t.ds.cohort.levels){console.error("some part is missing: tk.ds.cohort.levels");return}n=t.ds.cohort.levels}else{if(s.attr1){n.push({label:s.attr1.label,k:s.attr1.k})}if(s.attr2){n.push({label:s.attr2.label,k:s.attr2.k})}if(s.attr3){n.push({label:s.attr3.label,k:s.attr3.k})}}const a=j()(M(o,n));a.sum((t=>t.value));const r=i.d.append("table");const l=r.append("tr").style("font-size",".9em").style("color","#858585");l.append("td").text(s.label.toUpperCase());if(s.bycohort&&t.ds.cohort.root){l.append("td").text("% TUMOR")}l.append("td");l.append("td").text("MUTATIONS");a.eachBefore((i=>{if(!i.parent)return;const o=t.ds.label+" - "+i.data.name;const n=r.append("tr").classed("sja_clb",true);if(e.ownds[o]){n.style("background-color",ss)}n.append("td").style("padding-left",(i.depth-1)*15+"px").html(i.data.name+(i.data.full?'&nbsp;<span style="font-size:.7em;color:#858585">'+i.data.full+"</span>":""));if(s.bycohort&&t.ds.cohort.root){const e=n.append("td");let s=0;t.ds.cohort.root.each((t=>{if(t.id==i.id){s=t.value}}));if(s==0){e.text("not found").style("font-size",".7em")}else{N(e,{f:i.value/s,v1:i.value,v2:s},{fillbg:t.ds.cohort.fbarbg,fill:t.ds.cohort.fbarfg})}}n.append("td").style("text-align","right").style("font-size",".8em").text(i.value);const a=n.append("td");ds(i.data.lst,a);n.on("click",(()=>{if(e.ownds[o]){e.deletecustomdsbyname(o);n.style("background-color","transparent")}else{n.style("background-color",ss);const s={label:o,bulkdata:{},parentname:t.ds.label,iscustom:true,sampleselectable:t.ds.sampleselectable};s.bulkdata[e.usegm.name.toUpperCase()]=i.data.lst;e.addchilddsnoload(s);const a=e.block_addtk_template({type:C.ds,ds:s});xt(a,e)}}))}));i.showunder(s.svglabel.node())}function ps(t,e){const s=B(t.vcfinfofilter);if(s)return s;const i=t.vcfinfofilter;i.tip=new z({padding:"0px"});if(i.setidx4mclass!=undefined){if(!Number.isInteger(i.setidx4mclass))return".setidx4mclass value should be array index (non-negative integer)";const t=i.lst[i.setidx4mclass];if(!t)return".setidx4mclass value out of bound";if(!t.autocategory){if(!t.categories)return".setidx4mclass does not point to a categorical set"}}if(i.setidx4numeric!=undefined){if(!Number.isInteger(i.setidx4numeric))return".setidx4numeric value should be array index (non-negative integer)";const t=i.lst[i.setidx4numeric];if(!t)return".setidx4numeric value out of bound";if(t.categories)return".setidx4numeric does not point to a numeric set"}i.holder=t.td_legend.append("table").style("border-spacing","5px");for(let s=0;s<i.lst.length;s++){const o=i.lst[s];const n=i.holder.append("tr");o.namebutton=n.append("td").text(o.name).attr("class","sja_clb").style("text-align","right").on("click",(()=>{let n=true;if(o.categories){for(const t of i.lst){if(t.categories){t.namebutton.style("background-color",null).style("border-bottom",null)}}if(s==i.setidx4mclass){delete i.setidx4mclass;n=false}else{i.setidx4mclass=s}}else{for(const t of i.lst){if(!t.categories){t.namebutton.style("background-color",null).style("border-bottom",null)}}if(s==i.setidx4numeric){delete i.setidx4numeric;n=false}else{i.setidx4numeric=s}}if(n){o.namebutton.style("background-color","#f1f1f1").style("border-bottom","solid 2px #ccc")}yt(t,e)}));if(s==i.setidx4mclass||s==i.setidx4numeric){o.namebutton.style("background-color","#f1f1f1").style("border-bottom","solid 2px #ccc")}o.holder=n.append("td")}return null}function fs(t,e){if(!t.populationfrequencyfilter.lst)return".lst[] missing for .populationfrequencyfilter";const s=[];for(const e of t.populationfrequencyfilter.lst){if(typeof e=="number"){s.push({value:e});continue}if(e.value==undefined||typeof e.value!="number"){return".populationfrequencyfilter.lst[].value is not a number"}s.push({value:e.value})}t.populationfrequencyfilter.lst=s;const i=t.td_legend.append("div");if(t.populationfrequencyfilter.name){i.append("div").text(t.populationfrequencyfilter.name).style("display","inline-block").style("color","#858585").style("margin-right","10px")}t.populationfrequencyfilter.holder=i.append("div").style("display","inline-block")}function ms(t,e){const s=t.ds.cohort.sampleattribute;if(!s.lst)return".lst[] missing for .cohort.sampleattribute";const i=t.td_legend.append("div");s.holder=i;s.tip=new z({padding:"0px"})}const gs="#858585";const us=16;const bs=20;const ks="#ccffff";const xs=1e3;let ys=1;class ws{constructor(t){this.blockId=ys++;this.mclassOverride=t.mclassOverride;this.cache={};if(t.debugmode){window.bb=this;this.debugmode=true}this.hostURL=sessionStorage.getItem("hostURL");this.jwt=sessionStorage.getItem("jwt");if(!t.style){t.style={}}if(t.style.margin==undefined){t.style.margin="20px"}if(t.cohort){this.cohort=t.cohort}this.busy=true;if(t.hidedatasetexpression)this.hidedatasetexpression=t.hidedatasetexpression;if(t.variantPageCall_snv)this.variantPageCall_snv=t.variantPageCall_snv;if(t.samplecart)this.samplecart=t.samplecart;this.pannedpx=undefined;this.zoomedin=false;this.resized=false;if(!t.hidegenelegend){this.legend={mclasses:new Map,morigins:new Map,legendcolor:"#7D6836",headtextcolor:"#555",vpad:"5px"}}this.ctrl={};this.ds2handle={};this.ownds={};this.rglst=[];this.tklst=[];this.rotated=t.rotated;this.showreverse=t.showreverse;this.onloadalltk=[];this.onloadalltk_always=t.onloadalltk_always;this.onpanning=t.onpanning;this.onsetheight=t.onsetheight;this.onCoordinateChange=t.onCoordinateChange;this.exonsf=1;this.labelfontsize=14;this.tkleftlabel_xshift=-10;this.genome=t.genome;this.holder0=t.holder;this.errdiv=t.holder.append("div");this.blocktip=new z({padding:"0px"});this.tip=new z({padding:"0px"});if(!this.genome){this.error("no genome");return}if(t.width){this.width=t.width}else{const e=800;const s=t.holder.node().getBoundingClientRect().width;this.width=bs*Math.ceil(Math.max(s*.63,e)/bs);if(t.datasetlst?.includes("pediatric"))this.width-=100}if(t.usegm){this.usegm=t.usegm;if(!this.usegm.pdomains){this.usegm.pdomains=[]}this.allgm=t.allgm;if(!this.allgm){this.allgm=[t.usegm]}if(!t.tklst){t.tklst=[]}const e=t.tklst.find((t=>t.type==C.usegm));if(e){e.name=t.usegm.name}else{t.tklst.push({type:C.usegm,name:t.usegm.name,stackheight:t.gmstackheight})}}else if(t.rglst){for(const e of t.rglst){this.rglst.push({chr:e.chr,bstart:e.start,bstop:e.stop,start:e.start,stop:e.stop,reverse:e.reverse})}this.regionspace=10}else{const e=T(this.genome,t.chr,t.start,t.stop);if(e){this.error(e);return}const s=this.genome.chrlookup[t.chr.toUpperCase()];const i=Math.ceil(this.width/bs);if(t.stop-t.start<i){const e=Math.ceil(i/2);const s=Math.floor((t.start+t.stop)/2);t.start=s-e;t.stop=s+e}this.rglst=[{chr:s.name,bstart:0,bstop:s.len,start:t.start,stop:t.stop,reverse:this.showreverse}];this.regionspace=0}this.startidx=0;this.stopidx=this.rglst.length-1;this.holder=t.holder.append("div").style("margin",t.style.margin).style("display","inline-block").attr("class","sja_Block_div");if(!t.nobox){this.holder.style("border","solid 1px #ccc")}if(t.bgcolor){this.holder.style("background-color",t.bgcolor)}if(this.genome.hasIdeogram){this.initIdeogram(t)}let e;if(!t.butrowbottom){e=this.holder.append("div")}{const e=this.holder.append("div").style("position","relative").style("display","inline-block");this.svg=e.append("svg").attr("data-testid","sjpp_block_svg").on("mousedown",(t=>{t.preventDefault()}));if(!t.noresize){this.resizewidthbutton=e.append("div").text("drag to resize").attr("class","sja_clbtext").style("position","absolute").style("bottom","-5px").style("font-size",".7em").on("mousedown",(t=>{t.preventDefault();const e=t.clientX;const s=b(document.body);s.on("mousemove",(t=>{this.resizewidthbutton.style("right",this.rpad+this.rightheadw+e-t.clientX+"px")}));s.on("mouseup",(t=>{this.resizewidthbutton.style("right",this.rpad+this.rightheadw+"px");s.on("mousemove",null).on("mouseup",null);if(this.busy){return}this.zoomedin=false;this.pannedpx=undefined;this.resized=true;this.width+=t.clientX-e;this.block_coord_updated()}))}))}}if(t.butrowbottom){e=this.holder.append("div").style("margin-top","5px")}if(t.hidegenecontrol){this.hidegenecontrol=true;e.style("display","none")}if(this.legend){const e=this.holder.append("div").style("margin-top","5px");let s=!t.foldlegend;e.append("div").text("LEGEND").attr("class","sja_clb").style("display","inline-block").style("font-size",".7em").style("color",this.legend.legendcolor).style("font-family",u).on("click",(()=>{if(s){s=false;E(i)}else{s=true;P(i)}}));const i=this.holder.append("div").style("border-top","solid 1px "+this.legend.legendcolor);if(t.foldlegend){i.style("display","none")}this.legend.holder=i.append("table").style("border-spacing","15px").style("border-collapse","separate");const[o,n]=mt(this,t.mclassOverride?t.mclassOverride.className:"CLASS");this.legend.tr_mclass=o.style("display","none");this.legend.td_mclass=n;const[a,r]=mt(this,"ORIGIN");this.legend.tr_morigin=a.style("display","none");this.legend.td_morigin=r;if(t.legendimg){const[e,s]=mt(this,t.legendimg.name||"");this.make_legend_img(t.legendimg,s)}}if(t.usegm){this.setgmmode(t.gmmode||m.genomic)}if(this.ideogram){if(this.ideogram.visible)this.updateIdeogram();else this.ideogram.div.style("display","none")}if(t.nobox);else{e.append("div").html(t.dogtag?t.dogtag:t.chr).style("display","inline-block").style("padding","5px").style("background-color","#bbb").style("color","white")}if(this.usegm){this.usegmtip=new z({padding:"none"});this.ctrl.namebutt=e.append("span").attr("class","sja_clbtext").html('<span data-testid="sja_block_usegm_name" style="font-size:1.5em;font-weight:bold">'+this.usegm.name+"</span> "+this.usegm.isoform).on("click",(t=>{t.stopPropagation();this.genemenu()}));e.append("span").html("&nbsp;&nbsp;&nbsp;");e.append("div").text(this.genome.name).attr("class","sjpp-active-tiny-button");this.ctrl.dshandleholder=e.append("span");if(!t.hide_dsHandles){if(this.genome.datasets){for(const t in this.genome.datasets){if(this.genome.datasets[t].isMds){continue}if(this.genome.datasets[t].noHandleOnClient)continue;this.old_dshandle_new(t)}}e.append("div").style("font-family",u).attr("class","sja_opaque8 sjpp-plus-button").text("+").on("click",(t=>{const e=t.target.getBoundingClientRect();this.tip.clear().show(e.left-150,e.top+e.height-15);import("./customdata.inputui-dc49d94b.js").then((t=>t.default(this)))}))}e.append("span").html("&nbsp;&nbsp;&nbsp;")}this.coord={height:0};if(this.usegm);else{_s(this,e);this.coordwidthsays=e.append("span").style("padding","0px 10px 0px 5px").style("font-size","80%");e.append("div").style("display","inline-block").text(this.genome.name).style("background",v("#7B95AB").darker()).style("font-size",".8em").style("color","white").style("padding","1px 5px").style("margin-right","5px").style("border-radius","4px")}if(!t.hide_dsHandles&&this.genome.datasets){const t=[];for(const e in this.genome.datasets){if(this.genome.datasets[e].isMds&&!this.genome.datasets[e].noHandleOnClient){t.push(e)}}if(t.length){this.ctrl.mdsHandleHolder=e.append("span").style("margin-right","10px");for(const e of t)this.mds_handle_make(e)}}this.ctrl.zinbutt=e.append("button").html("In").on("click",(()=>this.zoomblock(2))).on("mouseover",(()=>this.zoombutton_mouseover(2,false,this.ctrl.zinbutt.node())));this.ctrl.zobutt1=e.append("button").html("Out &times;2").on("click",(()=>this.zoomblock(2,true))).on("mouseover",(()=>this.zoombutton_mouseover(2,true,this.ctrl.zobutt1.node())));this.ctrl.zobutt2=e.append("button").html("&times;10").on("click",(()=>this.zoomblock(10,true))).on("mouseover",(()=>this.zoombutton_mouseover(10,true,this.ctrl.zobutt2.node())));this.ctrl.zobutt3=e.append("button").html("&times;50").on("click",(()=>this.zoomblock(50,true))).on("mouseover",(()=>this.zoombutton_mouseover(50,true,this.ctrl.zobutt3.node())));{const t=e.append("button").text("Tracks").style("margin-left","10px");const s=new z({padding:"none"});t.on("click",(t=>{this.pannedpx=undefined;this.zoomedin=false;this.resized=false;const e=t.target.getBoundingClientRect();import("./block.tk.menu-3aeb93c6.js").then((t=>{t.default(this,s,e.left-100,e.top+e.height-15)}))}))}{const t=new z;e.append("button").style("margin-left","10px").text("More").on("click",(e=>{t.clear();const s=e.target.getBoundingClientRect();this.moremenu(t);t.show(s.left-50,s.top+s.height-15)}))}this.gdcBamSliceDownloadBtn=e.append("button").style("margin-left","10px").style("display","none").text("Download GDC BAM slice").on("click",(async()=>{const t=this.tklst.find((t=>t.type=="bam"&&t.gdcFile));if(!t)return;this.gdcBamSliceDownloadBtn.property("disabled",true);const e={"Content-Type":"application/json",Accept:"application/json"};if(t.gdcToken){e["X-Auth-Token"]=t.gdcToken}const s=["clientdownloadgdcslice=1","gdcFileUUID="+t.gdcFile.uuid,"gdcFilePosition="+t.gdcFile.position];const i=await $("tkbam?"+s.join("&"),{headers:e});this.gdcBamSliceDownloadBtn.property("disabled",false);const o=document.createElement("a");o.href=URL.createObjectURL(i);o.download=t.aboutThisFile?t.aboutThisFile[0].v+".bam":"gdc.bam";o.style.display="none";document.body.appendChild(o);o.click();document.body.removeChild(o)}));this.gbase=this.svg.append("g").attr("transform","translate(0,0)");this.gCloak=this.svg.append("g").attr("transform","scale(0)");this.gCloakRect=this.gCloak.append("rect").attr("fill","white");this.gCloakWord=this.gCloak.append("text").attr("id","loadinggCloak").text("Loading ...").attr("fill",X).attr("fill-opacity",0).attr("font-weight","bold").attr("font-size","18px").attr("text-anchor","middle").attr("dominant-baseline","middle");this.pica={g:this.svg.append("g")};this.hlregion={g:this.gbase.append("g"),lst:[]};Ns(this);this.leftheadw=t.leftheadw||100;this.rightheadw=t.rightheadw||100;this.rulerheight=20;this.rulerfontsize=13;this.rulerticksize=6;this.lpad=3;this.rpad=10;this.coordyp1=3;this.coordyp2=3;this.coord.g0=this.gbase.append("g").attr("transform","translate("+(this.leftheadw+this.lpad)+","+(this.coordyp1+this.rulerheight)+")");this.coord.g=this.coord.g0.append("g");this.coord.gcoordsubpanels=this.coord.g0.append("g");this.coord.name=this.coord.g.append("text").attr("text-anchor","end").attr("x",-this.lpad+this.tkleftlabel_xshift).attr("y",-this.rulerheight/2).attr("dominant-baseline","central").attr("font-size",13).attr("font-family",u);if(this.hidegenecontrol){this.coord.name.text("Zoom out").classed("sja_clbtext",true).on("click",(()=>{if(this.busy)return;if(this.nozoomout()){return}this.zoomblock(2,true)}))}this.coord.axesg=this.coord.g.append("g");this.coord.grab=this.coord.g.append("rect").attr("fill","white").attr("fill-opacity",0).attr("x",0).attr("y",-this.coordyp1-this.rulerheight).attr("width",this.width).on("mousedown",(t=>{this.rulermousedown(t,this).then((t=>{const[e,s,i]=t;if(this.toselecthlregion){this.busy=false;delete this.toselecthlregion;const[t,e]=this.pxoff2region(s);const[o,n]=this.pxoff2region(s+i);const a=this.rglst[t].chr;if(a==this.rglst[o].chr){this.addhlregion(a,Math.min(e,n),Math.max(e,n))}return}if(e){this.busy=false;return}this.zoomedin=true;this.zoom2px(s,s+i)})).catch((t=>{if(t=="busy")return;this.error(t.message);console.log(t.stack)}))}));this.subpanels=[];if(t.subpanels){this.subpanels=t.subpanels;for(const[t,e]of this.subpanels.entries()){e.exonsf=e.width/(e.stop-e.start);this.init_coord_subpanel(e)}}this.updateruler();if(t.hlregions){for(const e of t.hlregions){this.addhlregion(e.chr,e.start,e.stop,e.color)}}if(t.tklst){for(const e of t.tklst){if(!e.type){this.error("missing type in a track");continue}let t=e;const s=t.hidden;delete t.hidden;if(t.type=="vcf"){const[s,i]=H(t);if(s){this.error("VCF track error: "+s);continue}t=i;t.iscustom=e.iscustom}if(t.iscustom){if(!Y(t,this.genome.tracks)){t.tkid=Math.random().toString();this.genome.tracks.push(t)}}if(!s){this.block_addtk_template(t)}}}if(t.nativetracks){const e=new Map;if(this.genome.tracks){for(const t of this.genome.tracks){if(t.iscustom)continue;e.set(t.name.toLowerCase(),t)}}let s=[];if(Array.isArray(t.nativetracks)){for(const i of t.nativetracks){if(typeof i=="string"){const t=e.get(i.toLowerCase());if(t){s.push(t)}}else{if(!i.name)continue;if(typeof i.name!="string")continue;const t=e.get(i.name.toLowerCase());if(t){for(const e in i){if(e=="name")continue;t[e]=i[e]}s.push(t)}}}}else if(typeof t.nativetracks=="string"){for(const i of t.nativetracks.split(",")){const t=e.get(i.toLowerCase());if(t){s.push(t)}}}else{this.error("invalid value for nativetracks")}for(const t of s){if(!Y(t,this.tklst)){this.block_addtk_template(t)}}}if(this.tklst.find((t=>t.type==C.bam))){const t=this.tklst.findIndex((t=>t.type==C.bedj));if(t!=-1){const e=this.tklst[t];this.tklst.splice(t,1);this.tklst.unshift(e)}}this.tk_load_all();if(t.mset){for(const e of t.mset){const t={iscustom:true,mlst:e.mlst,label:e.name};this.ownds[e.name]=t;const s=this.block_addtk_template({type:C.ds,ds:t});xt(s,this)}}if(t.datasetlst){for(const e of t.datasetlst){let s=null;for(const t in this.genome.datasets){if(t.toUpperCase()==e.toUpperCase()){s=this.genome.datasets[t];break}}if(!s){this.error("Invalid dataset to load: "+e);continue}if(s.isMds3){const t=this.block_addtk_template({type:C.mds3,dslabel:e});this.tk_load(t);continue}const i=this.block_addtk_template({type:C.ds,ds:s});if(t.hlaachange){i.hlaachange=t.hlaachange}if(t.hlvariants){i.hlvariants=t.hlvariants}i.legacyDsFilter=t.legacyDsFilter;xt(i,this)}}let s=false;if(t.datasetqueries){if(!Array.isArray(t.datasetqueries)){this.error("datasetqueries should be array")}else{t.datasetqueries.forEach((t=>{if(!t.dataset)return this.error("datasetqueries error: .dataset missing from a query");if(!t.querykey)return this.error("datasetqueries error: .querykey missing from a query");const e=this.genome.datasets[t.dataset];if(!e)return this.error("invalid dataset name: "+t.dataset);if(!e.isMds)return this.error("query not supported in dataset: "+t.dataset);this.mds_load_query_bykey(e,t);s=true}))}}this.ifbusy();if(this.tklst.length==0&&!s){this.error('No tracks specified. If you don\'t expect to see this, delete the "block:true" from runproteinpaint() argument.')}}async make_legend_img(t,e){const s=await $("img?file="+t.file);if(s.error){e.text(s.error);return}let i=true;const o=e.append("img").attr("class","sja_clbb").attr("src",s.src).style("height","80px");o.on("click",(()=>{if(i){i=false;o.transition().style("height",t.height?t.height+"px":"auto")}else{i=true;o.transition().style("height","80px")}}))}regioncumlen(t,e){let s=0;if(!e){const e=this.rglst[t];s=e.reverse?e.bstop-e.stop:e.start-e.bstart}for(let e=0;e<t;e++){const t=this.rglst[e];s+=t.bstop-t.bstart}return s}blocksetw(){const t=this.leftheadw+this.lpad+this.width+this.subpanels.reduce(((t,e)=>t+e.width+e.leftpad),0)+this.rpad+this.rightheadw;this.svg.attr("width",t);this.coord.gcoordsubpanels.transition().attr("transform","translate("+this.width+",0)");let e=0;for(const t of this.subpanels){t.coord.g0.transition().attr("transform","translate("+(e+t.leftpad)+",0)");e+=t.leftpad+t.width;t.coord.grab.attr("width",t.width);t.subpanelbgrect.attr("width",t.width)}for(const e of this.tklst){if(e.hidden)continue;e.gtksubpanels.transition().attr("transform","translate("+(this.leftheadw+this.lpad+this.width)+",0)");let s=0;for(const t of e.subpanels){t.gtksubpanel.transition().attr("transform","translate("+(s+t.leftpad)+",0)");s+=t.leftpad+t.width}e.gright.transition().attr("transform","translate("+(t-this.rightheadw)+",0)")}if(this.resizewidthbutton){this.resizewidthbutton.style("right",this.rpad+this.rightheadw+"px")}}updateruler(){this.coord.g.attr("transform","translate(0,0)");this.coord.grab.attr("width",this.width);this.blocksetw();if(this.coord.input&&this.startidx==this.stopidx){const t=this.rglst[this.startidx];this.coord.input.node().value=t.chr+":"+t.start+"-"+t.stop;this.coordwidthsays.text(f(t.stop-t.start))}for(let t=this.startidx;t<=this.stopidx;t++){const e=this.rglst[t];if(t!=this.startidx){if(e.reverse){e.stop=e.bstop}else{e.start=e.bstart}}if(t!=this.stopidx){if(e.reverse){e.start=e.bstart}else{e.stop=e.bstop}}}let t=0;for(let e=this.startidx;e<=this.stopidx;e++){t+=this.rglst[e].stop-this.rglst[e].start}this.exonsf=(this.width-this.regionspace*(this.stopidx-this.startidx))/t;for(let t=this.startidx;t<=this.stopidx;t++){const e=this.rglst[t];e.width=(e.stop-e.start)*this.exonsf}this.update_ruler_height();this.coord.grab.attr("height",this.coord.height);this.coord.axesg.selectAll("*").remove();if(!this.gmmode||this.gmmode==m.genomic){{const t=this.coord.axesg.append("g").attr("transform","translate(0,0)");this.region_makeruler(t)}for(let t=this.startidx;t<=this.stopidx;t++){let e=0;for(let s=this.startidx;s<t;s++){e+=this.rglst[s].width+this.regionspace}const s=this.rglst[t];if(s.stop-s.start<=s.width){if(this.usegm&&this.gmmode!=m.genomic){continue}const t=this.coord.axesg.append("g").attr("transform","translate("+e+","+this.coordyp2+")");this.getntsequence4ruler(s,t)}}}else{if(this.gmmode==m.exononly||this.gmmode==m.protein){const i=this.gmmode==m.exononly;if(!this.hidegenecontrol){this.coord.name.text(i?"RNA bp len":"Protein length")}this.rglst[this.startidx];const o=this.regioncumlen(this.startidx);const n=e().domain(i?[o,o+t]:[Math.floor(o/3)+1,Math.floor((o+t)/3)+1]).range([0,this.width]);const r=Ft().scale(n).tickFormat(a("d"));const l=this.coord.axesg.append("g").attr("transform","translate(0,0)");s({axis:l.call(r),color:"black",showline:true})}else{const t=[],i=[];let o;if(this.gmmode==m.splicingrna){if(!this.hidegenecontrol){this.coord.name.text("RNA bp len")}let e=this.regioncumlen(this.startidx);let s=0;for(let o=this.startidx;o<=this.stopidx;o++){const n=this.rglst[o];t.push(e);i.push(s);e+=n.stop-n.start;t.push(e);i.push(s+n.width);s+=n.width+this.regionspace}o=a(",d")}else if(this.gmmode==m.gmsum){if(!this.hidegenecontrol){this.coord.name.text("Genomic")}let e=0;for(let s=this.startidx;s<=this.stopidx;s++){const o=this.rglst[s];t.push(o.reverse?o.stop:o.start);i.push(e);t.push(o.reverse?o.start:o.stop);i.push(e+o.width);e+=o.width+this.regionspace}o=a(",d")}else{this.error("unknown gmmode for making single ruler: "+this.gmmode);return}const n=e().domain(t).range(i);const r=Ft().scale(n).tickFormat(o);const l=this.coord.axesg.append("g").attr("transform","translate(0,0)");s({axis:l.call(r),color:"black",showline:true})}}const i=this.nozoomout();this.ctrl.zobutt1.attr("disabled",i?"true":null);this.ctrl.zobutt2.attr("disabled",i?"true":null);this.ctrl.zobutt3.attr("disabled",i?"true":null);this.ctrl.zinbutt.attr("disabled",this.exonsf>=bs?1:null)}update_ruler_height(){let t=false;if(this.gmmode&&this.gmmode!=m.genomic);else{for(let e=this.startidx;e<=this.stopidx;e++){const s=this.rglst[e];if(s.stop-s.start<=s.width)t=true}}for(const e of this.subpanels){if(e.stop-e.start<=e.width)t=true}this.coord.height=this.coordyp1+this.rulerheight+this.coordyp2+(t?us+2:0)}async getntsequence4ruler(t,e){t.busy=true;try{const s=await $("ntseq",{method:"POST",body:JSON.stringify({genome:this.genome.name,coord:t.chr+":"+(t.start+1)+"-"+t.stop})});e.selectAll("*").remove();if(s.error)throw s.error;const o=t.width/s.seq.length;let n=Math.min(this.rulerheight,o/G);if(n>6){for(let i=0;i<s.seq.length;i++){let a=s.seq[t.reverse?s.seq.length-1-i:i];if(t.reverse){a=_(a)}e.append("text").text(a).attr("font-family","Courier").attr("font-size",n).attr("dominant-baseline","hanging").attr("x",o*i+o/2).attr("text-anchor","middle")}}else{n=0}for(let a=0;a<s.seq.length;a++){let r=s.seq[t.reverse?s.seq.length-1-a:a];if(t.reverse){r=_(r)}e.append("rect").attr("x",a*o).attr("y",Math.min(us-2,n)).attr("width",o).attr("height",Math.max(2,us-n)).attr("fill",i[r.toUpperCase()]||gs)}}catch(t){e.append("text").text(t.message||t);if(t.stack)console.log(t.stack)}t.busy=false;this.ifbusy()}nozoomout(){let t=false;this.rglst[this.startidx];this.rglst[this.stopidx];if(this.startidx==0&&this.stopidx==this.rglst.length-1){const e=this.rglst[this.startidx];if(e.reverse?e.stop>=e.bstop:e.start<=e.bstart){const e=this.rglst[this.stopidx];if(e.reverse?e.start<=e.bstart:e.stop>=e.bstop){t=true}}}return t}region_makeruler(t){if(this.usegm&&this.gmmode!=m.genomic)return;const i=t.append("g");if(!this.hidegenecontrol){this.coord.name.text("Genomic")}const o=[],n=[];let r=0;for(let t=this.startidx;t<=this.stopidx;t++){const e=this.rglst[t];if(e.reverse){o.push(e.stop);o.push(e.start+1)}else{o.push(e.start+1);o.push(e.stop)}n.push(r+this.exonsf/2);n.push(r+e.width-this.exonsf/2);r+=e.width+this.exonsf/2}let l;{const t=Math.max(this.rglst[this.startidx].stop,this.rglst[this.stopidx].stop);const e=i.append("text").text(t>1e6?a("s")(t):a(",d")(t)).attr("font-size",this.rulerfontsize).attr("font-family",u);l=Math.floor(this.width/(e.node().getBBox().width+60));e.remove()}const d=this.rglst[this.startidx];const c=e().domain(o).range(n);const h=Ft().scale(c).tickSize(this.rulerticksize).ticks(l);if(d.stop-d.start>1e6){h.tickFormat(a("s"))}else{h.tickFormat(a(",d"))}s({axis:i.call(h),color:"black",showline:true,fontsize:this.rulerfontsize})}rulermousedown(t,e){return new Promise(((s,i)=>{if(e.busy)i("busy");e.busy=true;e.pannedpx=undefined;e.resized=false;const o=1;const n=t=>t/e.exonsf<e.width/bs;const r=n(o)?"#ccc":"#ff6633";const l=b(document.body);const d=l.append("svg").style("display","block").style("position","absolute").style("z-index",xs);const c=d.append("rect").attr("fill",r).attr("fill-opacity",.2).attr("stroke",r);const h=d.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size","18px").attr("fill","none").attr("stroke","white").attr("stroke-width",3);const p=d.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",18).attr("fill","black");const f=t=>{if(t<=0){p.text("");h.text("");return}const s=Math.ceil(t/e.exonsf);const i=a(".2s")(e.gmmode==m.protein?Math.ceil(s/3):s);h.text(i);p.text(i)};let g,u,k,x;let y,w,v;if(e.rotated){const s=e.coord.g0.node().getBoundingClientRect();y=s.left;w=t.target.getBoundingClientRect().top;k=this.totalheight();v=t.clientY}else{g=t.target.getBoundingClientRect().left;const s=e.coord.g0.node().getBoundingClientRect();u=s.top;k=this.totalheight();x=t.clientX}if(e.rotated){d.attr("width",k).attr("height",o).style("left",window.pageXOffset+y+"px").style("top",window.pageYOffset+v+"px");c.attr("width",k).attr("height",o);h.attr("y",0).attr("x",k/2);p.attr("y",0).attr("x",k/2)}else{d.attr("width",o).attr("height",k).style("left",window.pageXOffset+x+"px").style("top",window.pageYOffset+u+"px");c.attr("width",o).attr("height",k);h.attr("x",0).attr("y",k/2);p.attr("x",0).attr("y",k/2)}l.on("mousemove",(t=>{t.preventDefault();if(e.rotated){const s=t.clientY;let i=0;if(s>v){i=o+Math.min(w+e.width,s)-v}else if(s<v){i=o+v-Math.max(w,s);d.style("top",window.pageYOffset+v+Math.max(w,s)-v+"px")}d.attr("height",i);c.attr("height",i);const a=n(i)?"#ccc":"#ff6633";h.attr("y",i/2);p.attr("y",i/2);c.attr("fill",a).attr("stroke",a);f(i)}else{const s=t.clientX;let i=0;if(s>x){i=o+Math.min(g+e.width,s)-x}else if(s<x){i=o+x-Math.max(g,s);d.style("left",window.pageXOffset+x+Math.max(g,s)-x+"px")}d.attr("width",i);c.attr("width",i);const a=n(i)?"#ccc":"#ff6633";h.attr("x",i/2);p.attr("x",i/2);c.attr("fill",a).attr("stroke",a);f(i)}})).on("mouseup",(()=>{let t,i;if(e.rotated){const s=Number.parseInt(d.attr("height"));t=e.width-(s+Number.parseInt(d.style("top"))-w-window.pageYOffset);i=s}else{i=Number.parseInt(d.attr("width"));t=Number.parseInt(d.style("left"))-g-window.pageXOffset}d.remove();l.on("mousemove",null).on("mouseup",null);s([n(i),t,i])}))}))}highlight_1basedcoordinate(t){const e=t.split(/[:-]/);if(e.length!=3)return;const s=Number.parseInt(e[1]);const i=Number.parseInt(e[2]);if(Number.isNaN(s)||Number.isNaN(i)){return}this.addhlregion(e[0],s-1,i-1)}addhlregion(t,e,s,i){const o=this.seekcoord(t,e)[0];if(!o){return}const n=this.seekcoord(t,s)[0];if(!n){return}let a,r;if(o.x>n.x){a=n.x-this.exonsf/2;r=o.x+this.exonsf/2}else{a=o.x-this.exonsf/2;r=n.x+this.exonsf/2}const l={chr:t,start:e,stop:s,x:a,color:i||ks,rect:this.hlregion.g.append("rect").attr("x",a).attr("y",0).attr("width",r-a).attr("fill",i||ks)};this.hlregion.lst.push(l);this.block_setheight()}pxoff2region(t){let e=this.startidx;let s=this.rglst[e];if(t==0)return[e,s.reverse?s.stop:s.start];if(t>0){while(1){if(e>=this.rglst.length){const t=this.rglst[this.rglst.length-1];return[this.rglst.length-1,t.reverse?t.bstart:t.bstop]}const s=this.rglst[e];let i;if(s.reverse){const o=e>=this.startidx&&e<=this.stopidx?s.stop:s.bstop;i=(o-s.bstart)*this.exonsf;if(i+this.regionspace>=t){return[e,o-Math.floor(t/this.exonsf)]}}else{const o=e>=this.startidx&&e<=this.stopidx?s.start:s.bstart;i=(s.bstop-o)*this.exonsf;if(i+this.regionspace>=t){return[e,o+Math.floor(t/this.exonsf)]}}t-=i+this.regionspace;e++}}t=-t;s=this.rglst[this.startidx];if(s.reverse){const i=(s.bstop-s.stop)*this.exonsf;if(i+this.regionspace>=t){return[e,s.stop+Math.floor(t/this.exonsf)]}}else{const i=(s.start-s.bstart)*this.exonsf;if(i+this.regionspace>=t){return[e,s.start-Math.floor(t/this.exonsf)]}}e--;while(1){if(e<0){const t=this.rglst[0];return[0,t.reverse?t.bstop:t.bstart]}const s=this.rglst[e];const i=(s.bstop-s.bstart)*this.exonsf;if(i+this.regionspace>=t){if(s.reverse)return[e,s.bstart+Math.floor(t/this.exonsf)];return[e,s.bstop-Math.floor(t/this.exonsf)]}t-=i+this.regionspace;e--}}zoomblock(t,e){if(this.busy)return;this.pannedpx=undefined;this.resized=false;let s,i;if(e){this.zoomedin=false;const e=Math.floor(this.width*(t-1)/2);s=-e;i=this.width+e}else{this.zoomedin=true;const e=Math.max(this.width/bs*this.exonsf,this.width/t);s=Math.floor(this.width/2-e/2);i=Math.floor(this.width/2+e/2)}this.zoom2px(s,i)}zoom2px(t,e){const[s,i]=this.pxoff2region(t);const[o,n]=this.pxoff2region(e);this.startidx=s;this.stopidx=o;const a=this.rglst[s];if(a.reverse){a.stop=i}else{a.start=i}const r=this.rglst[o];if(r.reverse){r.start=n}else{r.stop=n}this.block_coord_updated()}block_coord_updated(t){this.busy=true;this.updateruler();this.tk_load_all();if(this.tklst.length==0){this.busy=false}let e=this.coord.height;for(const t of this.tklst){if(t.hidden)continue;e+=t.height}for(const t of this.hlregion.lst){const s=this.seekcoord(t.chr,t.start)[0];const i=this.seekcoord(t.chr,t.stop)[0];if(!s||!i){t.rect.attr("width",0);continue}const o=Math.min(s.x,i.x)-this.exonsf/2;const n=Math.max(s.x,i.x)+this.exonsf/2;if(o>=this.width||n<=0){t.rect.attr("width",0);continue}t.x=o;t.rect.attr("x",Math.max(0,o)).attr("width",Math.max(2,Math.min(this.width,n)-Math.max(0,o))).attr("height",e)}if(this.onCoordinateChange){this.onCoordinateChange(this.rglst)}}async jump_1basedcoordinate(t){if(this.busy)return;this.zoomedin=false;this.pannedpx=undefined;this.resized=false;if(typeof t=="string"){const e=J(t,this.genome);if(e){this.rglst=[{chr:e.chr,bstart:0,bstop:e.chrlen,start:Math.max(0,e.start-1),stop:e.stop-1,reverse:this.showreverse}];if(e.actualposition&&e.actualposition.len<=40){this.addhlregion(e.chr,e.actualposition.position-1,e.actualposition.position-1+e.actualposition.len-1)}this.startidx=this.stopidx=0;this.block_coord_updated();return}}else if(typeof t=="object"&&t.chr&&Number.isInteger(t.start)){const e=this.genome.chrlookup[t.chr.toUpperCase()];if(e){let s=t.start,i=Number.isInteger(t.stop)?t.stop:t.start;const o=s,n=i;const a=Math.ceil(this.width/bs);if(i-s<a){const t=Math.ceil(a/2);const e=Math.floor((s+i)/2);s=e-t;i=e+t}this.rglst=[{chr:e.name,bstart:0,bstop:e.len,start:s-1,stop:i-1,reverse:this.showreverse}];this.startidx=this.stopidx=0;if(n-o<40){this.addhlregion(t.chr,o-1,n-1)}this.block_coord_updated();return}else{this.error("Invalid chr: "+t.chr);return}}await this.block_jump_gene(t)}async block_jump_gene(t){try{const e=await $("genelookup",{body:{genome:this.genome.name,input:t,deep:1}});if(e.error)throw e.error;if(!e.gmlst||e.gmlst.length==0){if(this.genome.hasSNP){if(t.toLowerCase().startsWith("rs")){this.block_jump_snp(t)}else{this.inputerr("Not a gene or SNP: "+t)}}else{this.inputerr("Unknown gene name: "+t)}return}for(const e of this.tklst){if(e.type==C.pgv){e.genename=t}}const s=V(e.gmlst);if(s.length==1){const t=s[0];const e=T(this.genome,t.chr,t.start,t.stop);if(e){this.inputerr("this should not happen: gene error: "+e);return}this.rglst=[{chr:t.chr,bstart:0,bstop:this.genome.chrlookup[t.chr.toUpperCase()].len,start:t.start,stop:t.stop,reverse:this.showreverse}];this.startidx=this.stopidx=0;this.block_coord_updated();return}this.coord.inputtipshow();for(const t of s){this.coord.inputtip.d.append("div").attr("class","sja_menuoption").text(t.name+" "+t.chr+":"+t.start+"-"+t.stop).on("click",(()=>{this.coord.inputtip.hide();this.rglst=[{chr:t.chr,bstart:0,bstop:this.genome.chrlookup[t.chr.toUpperCase()].len,start:t.start,stop:t.stop,reverse:this.showreverse}];this.startidx=this.stopidx=0;this.block_coord_updated()}))}}catch(t){this.inputerr(t.message||t)}}block_jump_snp(t){W(this.genome,t).then((t=>{const e=Math.ceil(this.width/bs);this.rglst=[{chr:t.chr,bstart:0,bstop:this.genome.chrlookup[t.chr.toUpperCase()].len,start:Math.max(0,t.start-Math.ceil(e/2)),stop:t.start+e,reverse:this.showreverse}];this.startidx=this.stopidx=0;this.addhlregion(t.chr,t.start,t.stop-1);this.block_coord_updated()})).catch((e=>{this.inputerr(t+": not a gene or SNP");if(e.stack)console.log(e.stack)}))}inputerr(t){this.coord.inputtipshow();this.coord.inputtip.d.append("div").text(t).style("border","solid 1px red").style("padding","10px 20px")}genemenu(){for(const t of this.tklst){if(t.type==C.usegm){if(t.controller){t.controller.paneoff()}break}}const t=this.usegm;if(!t){console.log("usegm missing!!");return}this.usegmtip.clear();const e=this.usegmtip.d;const s=e.append("div").style("padding","20px").style("background-color","#E6EEF5").style("margin-bottom","20px");const i=s.append("div").style("width","580px");if(!t.description){i.html(`${t.name}: No description`)}else if(t.description.length>=120){const e=t.description.substring(0,100);let o=false;i.html(`${t.name}: <strong>${e}</strong> ...`);const n=s.append("a");n.text("Show More").style("display","inline-block").on("click",(()=>{o=!o;i.html(o==true?`${t.name}: <strong>${t.description}</strong>`:`${t.name}: <strong>${e}</strong> ...`);n.text(o==true?"Hide":"Show More")}))}else{i.html(`${t.name}: <strong>${t.description}</strong>`)}const o=s.append("div").style("margin-top","10px");o.append("span").text(t.isoform).style("padding-right","10px");o.append("a").attr("target","_blank").attr("href","https://www.ncbi.nlm.nih.gov/gene/?term="+t.isoform).style("padding-right","10px").text("NCBI");o.append("a").attr("target","_blank").attr("href","https://genome.ucsc.edu/cgi-bin/hgTracks?db="+this.genome.name+"&position="+t.isoform).text("UCSC");o.append("span").style("padding-left","30px").html(t.chr+":"+(t.start+1)+"-"+t.stop+'&nbsp;&nbsp;<span style="font-size:.7em">'+(t.strand=="+"?"FORWARD":"REVERSE")+"</span>"+'&nbsp;&nbsp;<span style="color:#555">'+f(t.stop-t.start)+"</span>");const n=e.append("div").style("margin","20px 30px 40px 30px");n.append("div").text("Switch display").style("font-size","1.5em").style("color","#555").style("margin-bottom","20px");this.showgmmode4switch(n,true);if(this.allgm.length>1){const t=e.append("div").style("padding","20px 30px 40px 30px");t.append("div").style("color","#555").style("font-size","1.5em").style("margin-bottom","20px").text("Switch isoform");this.showisoform4switch(t,true)}this.usegmtip.showunder(this.ctrl.namebutt.node())}old_dshandle_new(t){let e=this.genome.datasets[t];if(!e){e=this.ownds[t]}if(!e){this.error("unknown dsname "+t);return}const s=this.ctrl.dshandleholder.append("div").attr("class","sjpp-dshandleholder").style("font-family",u);const i=s.append("div").attr("class","sja_opaque8 sjpp-dslabel").text(e.label).on("click",(async()=>{this.pannedpx=undefined;this.resized=false;let t=this.tklst.find((t=>{if(e.isMds3){if(t.type==C.mds3&&t.mds&&t.mds.label==e.label)return t}else if(t.type==C.ds&&t.ds&&t.ds.label==e.label){return t}}));if(t){if(t.hidden){t.hidden=false;this.tk_load(t);this.setllabel()}else{this.tk_hide(t)}this.tkchangeaffectlegend(t);return}if(e.busy)return;if(e.isMds3){t=this.block_addtk_template({type:C.mds3,dslabel:e.label});this.tk_load(t);return}if(e.legacyDsIsUninitiated){const t=await $(`getDataset?genome=${this.genome.name}&dsname=${e.label}`);if(t.error)throw"invalid name";if(!t.ds)throw".ds missing";Object.assign(e,t.ds);const s=await import("./legacyDataset-e0e201ab.js");s.validate_oldds(e);delete e.legacyDsIsUninitiated}t=this.block_addtk_template({ds:e,type:C.ds});xt(t,this)})).on("mouseover",(t=>{if(e.iscustom){return}if(!e.dsinfo){return}this.blocktip.showunder(t.target).clear().d.append("div").style("font-size","80%").style("padding","10px").style("color","#858585").attr("class","sja_clb").text("ABOUT").on("click",(()=>{this.blocktip.clear();Z(this.blocktip.d,e.dsinfo).style("padding","10px")}))}));this.ds2handle[t]={handle:s,handlesays:i}}viewrangeabovelimit(t){if(t==undefined){return false}let e=0;for(let t=this.startidx;t<=this.stopidx;t++){const s=this.rglst[t];e+=s.stop-s.start}return e>=t}seekcoord(t,e){e+=.5;const s=[];const i=this.usegm&&t==this.usegm.chr&&this.gmmode!=m.genomic;for(let o=0;o<this.rglst.length;o++){const n=this.rglst[o];if(n.chr!=t)continue;if(e>=n.bstart&&e<n.bstop){s.push({ridx:o,x:(this.regioncumlen(o,true)+(n.reverse?n.bstop-e:e-n.bstart))*this.exonsf+o*this.regionspace});break}else if(o>0&&i){const i=this.rglst[o-1];if(i.chr!=t)continue;if(n.reverse){if(e<i.bstart&&e>=n.bstop){s.push({ridx:o,x:this.regioncumlen(o,true)*this.exonsf+o*this.regionspace-this.regionspace/2});break}}else{if(e<n.bstart&&e>=i.bstop){s.push({ridx:o,x:this.regioncumlen(o,true)*this.exonsf+o*this.regionspace-this.regionspace/2});break}}}}if(s.length==0&&i){let i=null,o=0;for(let t=0;t<this.rglst.length;t++){if(i==null){i=t}o=t}if(i==null){console.error("seekcoord: null startidx")}else{const n=this.rglst[i];const a=this.rglst[o];if(this.usegm.strand=="+"){if(e<n.bstart){s.push({ridx:i,x:this.regioncumlen(i,true)*this.exonsf+i*this.regionspace})}else if(e>=a.bstop){s.push({ridx:o,x:this.exonsf*(this.regioncumlen(o,true)+a.bstop-a.bstart)+o*this.regionspace})}else{console.error(t+":"+e+" not mapped to gene")}}else{if(e<a.bstart){s.push({ridx:o,x:this.exonsf*(this.regioncumlen(o,true)+a.bstop-a.bstart)+o*this.regionspace})}else if(e>=n.bstop){s.push({ridx:i,x:this.regioncumlen(i,true)*this.exonsf+i*this.regionspace})}else{console.error(t+":"+e+" not mapped to gene")}}}}const o=this.regioncumlen(this.startidx)*this.exonsf+this.startidx*this.regionspace;for(const t of s){t.x-=o}if(this.subpanels.length){let i=this.width;for(const[o,n]of this.subpanels.entries()){i+=n.leftpad;if(t==n.chr&&e>=n.start&&e<=n.stop){s.push({subpanelidx:o,x:i+n.exonsf*(e-n.start)})}i+=n.width}}return s}setllabel(){let t=10;for(const e of this.tklst){if(e.hidden){continue}t=Math.max(t,100,e.leftLabelMaxwidth+20)}this.leftheadw=t;this.hlregion.g.transition().attr("transform","translate("+(this.leftheadw+this.lpad)+",0)");this.coord.g0.transition().attr("transform","translate("+(this.leftheadw+this.lpad)+","+(this.coordyp1+this.rulerheight)+")");const e=this.leftheadw+this.lpad+this.width+this.subpanels.reduce(((t,e)=>t+e.leftpad+e.width),0)+this.rpad;for(const t of this.tklst){t.gleft.transition().attr("transform","translate("+this.leftheadw+",0)");t.gmiddle.transition().attr("transform","translate("+(this.leftheadw+this.lpad)+",0)");t.gright.transition().attr("transform","translate("+e+",0)")}this.blocksetw()}tk_remove(t){const e=this.tklst[t];if(e.type==C.ds&&e.ds&&e.ds.iscustom){delete this.genome.datasets[e.ds.label];const t=this.ownds[e.ds.label];if(t){delete this.ownds[t.label];if(t.parentname){const e=this.ds2handle[t.parentname];if(e&&e.childicon){const t=Number.parseInt(e.childicon.text());if(t==1){e.childicon.remove();delete e.childicon}else{e.childicon.text(t-1)}}}}}this.tklst[t].g.remove();this.tklst.splice(t,1);this.setllabel();this.block_setheight();if(e.type==C.ds){const t=this.ds2handle[e.name];if(t){t.handlesays.style("background-color","white").style("color","black")}if(e.eplst){for(const t of e.eplst){if(t.handle){t.handle.remove()}if(t.pane){t.pane.pane.remove()}}}}if(e.tr_legend){E(e.tr_legend,true)}}deletecustomdsbyname(t){for(let e=0;e<this.tklst.length;e++){const s=this.tklst[e];if(s.type==C.ds&&s.ds.label==t){this.tk_remove(e);break}}}addchilddsnoload(t){const e=t.parentname;const s=this.ds2handle[e];if(s){const t=s.childicon;if(t){t.text(Number.parseInt(t.text())+1)}else{s.childicon=s.handle.append("div").style("display","inline-block").style("margin-left","1px").style("padding","2px 5px").style("background-color","#ccc").classed("sja_opaque8",true).text(1).on("click",(t=>{const s=this.tip.clear().showunder(t.target).d.append("div").style("padding","20px");s.append("div").text("Click to remove").style("font-size",".9em").style("color","#858585").style("margin-bottom","10px");for(const t of this.tklst){if(!t.ds||t.ds.parentname!=e)continue;const i=s.append("div").classed("sja_menuoption",true).text(t.ds.label);i.on("click",(()=>{i.remove();this.deletecustomdsbyname(t.ds.label)}))}}))}}this.ownds[t.label]=t}block_addtk_template(t){const e={height_main:25,height:30,tkid:Math.random().toString(),toppad:5,bottompad:5,yoff:0,axisfontsize:12,busy:false,leftLabelMaxwidth:0,rightheadw_tk:this.rightheadw,subpanels:[]};for(const s in t){e[s]=t[s]}switch(t.type){case C.bampile:Gt(e);break;case C.ds:if(!e.ds){this.error("dstk template missing .ds");return}if(!e.ds.label){this.error("dstk template missing .ds.label");return}e.name=e.ds.label;e.dsuninitiated=true;break;case C.pgv:const s=Dt(e,t);if(s){this.error(s);return}break;case C.ld:const i=Et(e,t);if(i){this.error(i);return}break;case C.bam:const o=Rt(e,t);if(o){this.error(o);return}break;case C.usegm:xe(e);break;case C.bedj:const n=pe(e,t);if(n){this.error(n)}break;case C.junction:const a=Xt(e,t);if(a){this.error(a);return}break;case C.aicheck:ie(e,t);break;case C.bigwig:Kt(e,t);break;case C.bigwigstranded:re(e,t);break;case C.bam:e.stackheight=e.stackheight||10;e.barheight=e.barheight||80;e.fcolor=e.fcolor||"#005EBD";e.rcolor=e.rcolor||"#D66B00";e.mmcolor=e.mmcolor||"#FF3D3D";break;case C.mdsjunction:const r=Le(e,t);if(r){this.error(r);return}break;case C.mdscnv:Pe(e,t);break;case C.mdssvcnv:const l=He(e,t);if(l){this.error(l);return}break;case C.mds2:break;case C.mds3:break;case C.bedgraphdot:break;case C.mdsexpressionrank:break;case C.hicstraw:const d=Fe(e,t);if(d){this.error(d);return}break;case C.ase:const c=Re(e,t);if(c){this.error(c);return}break;default:this.error("addtk: unknown template tk type "+t.type)}this.tklst.push(e);this.block_maketk(e);this.blocksetw();return e}block_maketk(t){t.tktip=new z({padding:"15px"});t.tkconfigtip=new z({padding:"15px"});t.g=this.gbase.append("g").attr("data-testid","sja_sample_menu_opener").attr("transform","translate(0,0)");t.gtksubpanels=t.g.append("g");t.gmiddle=t.g.append("g").attr("transform","translate("+(this.leftheadw+this.lpad)+",0)");t.tkbodybgrect=t.gmiddle.append("rect").attr("fill","white").attr("fill-opacity",0);t.glider=t.gmiddle.append("g").attr("transform","translate(0,0)").style("cursor","default");t.gleft=t.g.append("g").attr("transform","translate("+this.leftheadw+",0)");t.gright=t.g.append("g").attr("transform","translate("+(this.leftheadw+this.lpad+this.width+this.rpad)+",0)");t.tklabel=this.maketklefthandle(t).attr("class",null).attr("font-weight","bold");if(t.name){const s=t.name.length>=25;if(s){t.tklabel.text(t.name.substring(0,20)+" ...")}else{t.tklabel.text(t.name)}if(s||t.list_description){let i=false;t.tktip.onHide=()=>{i=false};t.tklabel.on("mouseover",(o=>{if(i==true)return;e(o,t,s);i=false}));t.tklabel.on("mouseout",(()=>{if(i==true)return;t.tktip.hide()}));t.tklabel.on("click",(o=>{i=!i;if(i==true){e(o,t,s)}}))}t.leftLabelMaxwidth=t.tklabel.node().getBBox().width}function e(t,e,s){e.tktip.clear().show(t.clientX,t.clientY-30);if(s){const t=e.tktip.d.append("div").text(e.name);if(e.list_description)t.style("margin-bottom","5px")}if(e.list_description){Z(e.tktip.d.append("div"),e.list_description).style("margin","0px")}}t.pica={g:t.gmiddle.append("g")};t.cloak=t.gmiddle.append("g").attr("transform","scale(0)");t.cloakbox=t.cloak.append("rect").attr("fill","white").attr("fill-opacity",0);t.cloaktext=t.cloak.append("text").attr("data-testid","loading_message").text("Loading ...").attr("fill",X).attr("fill-opacity",0).attr("font-weight","bold").attr("font-size","18px").attr("text-anchor","middle").attr("dominant-baseline","middle");t.cloakline=t.cloak.append("line").attr("stroke",X).attr("stroke-width","2px");switch(t.type){case C.bampile:Jt(t,this);break;case C.ds:is(t,this);break;case C.pgv:Lt(t);break;case C.ld:Pt(t);break;case C.bam:Ot(t);break;case C.usegm:ye(t,this);break;case C.bedj:fe(t,this);break;case C.junction:Ht(t);break;case C.aicheck:oe(t);break;case C.bigwig:Qt(t,this);break;case C.bigwigstranded:le(t,this);break;case C.mdsjunction:Te(t);break;case C.mdscnv:$e(t);break;case C.mdssvcnv:Ye(t);break;case C.mds2:We(t);break;case C.mds3:Ke(t);break;case C.bedgraphdot:ts(t);break;case C.mdsexpressionrank:Je(t);break;case C.hicstraw:Ae(t);break;case C.ase:Oe(t);break;default:this.error("maketk: unknown template tk type "+t.type)}this.setllabel();t.gmiddle.on("mousedown",(t=>{if(this.busy)return;if(t.which==3){return}this.busy=true;this.resized=false;t.preventDefault();const e=b(document.body);const s=this.rotated?t.clientY:t.clientX;e.on("mousemove",(t=>{const e=(this.rotated?t.clientY:t.clientX)-s;this.panning(e)}));e.on("mouseup",(t=>{e.on("mousemove",null).on("mouseup",null);const i=(this.rotated?t.clientY:t.clientX)-s;this.pannedby(i)}))}));t.gleft.on("mousedown",(e=>{e.preventDefault();const s=b(document.body);let i=e.clientY;s.on("mousemove",(e=>{const s=e.clientY-i;t.g.attr("transform","translate(0,"+(t.yoff+s)+")");let o=0;for(let e=0;e<this.tklst.length;e++){if(this.tklst[e].tkid==t.tkid){o=e;break}}if(s<0&&o>0){let n=o-1,a=this.tklst[n];while(a.hidden){n--;if(n<0){return}a=this.tklst[n]}if(!a){return}if(-s>=a.height){this.tklst[n]=t;this.tklst[o]=a;t.yoff=a.yoff-a.toppad+t.toppad;a.yoff+=t.height;a.g.transition().attr("transform","translate(0,"+a.yoff+")");i=e.clientY;if(t.type==C.usegm&&a.type==C.ds&&a.aboveprotein){Mt(a)}else if(a.type==C.usegm&&t.type==C.ds&&!t.aboveprotein){Mt(t)}}}else if(s>0&&o<this.tklst.length-1){let n=o+1,a=this.tklst[n];while(a.hidden){n++;if(n>=this.tklst.length){return}a=this.tklst[n]}if(!a){return}if(s>=a.height){this.tklst[n]=t;this.tklst[o]=a;a.yoff=t.yoff-t.toppad+a.toppad;t.yoff+=a.height;a.g.transition().attr("transform","translate(0,"+a.yoff+")");i=e.clientY;if(t.type==C.usegm&&a.type==C.ds&&!a.aboveprotein){Mt(a)}else if(a.type==C.usegm&&t.type==C.ds&&t.aboveprotein){Mt(t)}}}}));s.on("mouseup",(()=>{t.g.transition().attr("transform","translate(0,"+t.yoff+")");s.on("mousemove",null).on("mouseup",null)}))}))}panning(t){if(this.showreverse){t*=-1}this.coord.g.attr("transform","translate("+t+",0)");for(const e of this.tklst){e.glider.attr("transform","translate("+t+",0)");if(e.type==C.pgv){for(const s of e.tracks){s.immobileg.attr("transform","translate("+-t+",0)")}}}for(const e of this.hlregion.lst){e.rect.attr("x",e.x+t)}if(this.onpanning){this.onpanning(t)}}pannedby(t){if(t==0){this.busy=false;this.pannedpx=undefined;return}if(this.showreverse){t*=-1}let e=false;if(t<0){if(this.stopidx==this.rglst.length-1){const t=this.rglst[this.stopidx];if(t.reverse){if(t.start<=t.bstart)e=true}else{if(t.stop>=t.bstop)e=true}}}else{if(this.startidx==0){const t=this.rglst[0];if(t.reverse){if(t.stop>=t.bstop)e=true}else{if(t.start<=t.bstart)e=true}}}if(e){this.coord.g.transition().attr("transform","translate(0,0)");for(const t of this.tklst){t.glider.transition().attr("transform","translate(0,0)")}this.busy=false;this.pannedpx=undefined;for(const t of this.hlregion.lst){t.rect.transition().attr("x",t.x)}if(this.onpanning){this.onpanning(0)}return}this.pannedpx=t;this.zoomedin=false;this.zoom2px(-t,this.width-t)}tk_hide(t){t.hidden=true;t.g.remove();if(t.eplst){for(const e of t.eplst){if(e.pane&&e.pane.pane&&e.pane.pane.style("display")!="none"){e.epaintfold(this)}}}this.setllabel();this.block_setheight();if(t.type==C.ds){const e=this.ds2handle[t.name];if(e){e.handlesays.style("background-color","#999").style("color","white")}}if(t.tr_legend){E(t.tr_legend)}}tkchangeaffectlegend(t){if(!this.legend)return;if(t.type==C.ds){let t=false;for(const e of this.tklst){if(!e.hidden&&e.type==C.ds){t=true;break}}if(t){this.legend.tr_mclass.style("display","table-row");Nt(this);this.legend.tr_morigin.style("display","table-row");Ct(this)}else{this.legend.tr_mclass.style("display","none");this.legend.tr_morigin.style("display","none")}}}tk_load_all(){for(const t of this.tklst){t.busy=true}for(const t of this.tklst){this.tk_load(t)}}tk_load(t){if(t.hidden){if(t.g){t.g.remove()}return}if(!t.g.node().parentNode){this.gbase.node().appendChild(t.g.node())}if(t.tr_legend&&t.tr_legend.style("display")=="none"){P(t.tr_legend,"table-row")}t.busy=true;switch(t.type){case C.bampile:Vt(t,this);break;case C.pgv:Tt(t,this);break;case C.ld:$t(t,this);break;case C.bam:Ut(t,this);break;case C.ds:const e=this.ds2handle[t.name];if(e){e.handlesays.style("background-color","#ddd").style("color","black")}if(t.dsuninitiated||!this.usegm||this.gmmode==m.genomic||this.gmmodepast==m.genomic){xt(t,this);return}yt(t,this);break;case C.usegm:_e(t,this);break;case C.bigwig:te(t,this);break;case C.aicheck:ne(t,this);break;case C.bigwigstranded:de(t,this);break;case C.junction:Yt(t,this);break;case C.bam:this.loadtk_bam(t);break;case C.vafs1:this.loadtk_vafs1(t);break;case C.bedj:me(t,this);break;case C.mdsjunction:Ee(t,this);break;case C.mdscnv:Xe(t,this);break;case C.mdssvcnv:Ge(t,this);break;case C.mds2:Ze(t,this);break;case C.mds3:Qe(t,this);break;case C.bedgraphdot:es(t,this);break;case C.mdsexpressionrank:Ve(t,this);break;case C.hicstraw:Se(t,this);break;case C.ase:Ue(t,this);break;default:this.error("tk_load: unknown tk type")}}cloakOn(){const t=Number(this.svg.attr("width")),e=Number(this.svg.attr("height"));this.gCloak.attr("transform","scale(1)");this.gCloakRect.attr("width",t).attr("height",e).transition().duration(600).attr("fill-opacity",.5);this.gCloakWord.attr("x",t/2).attr("y",e/2).transition().duration(600).attr("fill-opacity",1)}cloakOff(){this.gCloak.attr("transform","scale(0)")}tkcloakon(t){t.busy=true;this.busy=true;t.cloak.attr("transform","scale(1)");t.cloakbox.attr("width",this.width).attr("height",t.height).transition().duration(600).attr("fill-opacity",.5);t.cloaktext.attr("x",this.width/2).attr("y",t.height/2).transition().duration(600).attr("fill-opacity",1);t.cloakline.attr("y1",t.height).attr("y2",t.height).attr("x2",0);if(t.gerror){t.gerror.remove()}}tkcloakoff(t,e){t.busy=false;this.ifbusy();t.cloak.attr("transform","scale(0)");t.cloakbox.attr("fill-opacity",0).attr("height",0);t.cloaktext.attr("fill-opacity",0);t.cloakline.attr("x2",0);t.glider.attr("transform","translate(0,0)");if(t.gerror){t.gerror.remove()}if(!e){this.tkerror(t,"Server error ...")}else if(e.error){this.tkerror(t,e.error)}}ifbusy(){let t=true;for(const e of this.tklst){if(!e.hidden&&e.busy)t=false}for(const e of this.rglst){if(e.busy)t=false}if(t){this.busy=false;this.add_subpanel();while(this.onloadalltk.length>0){const t=this.onloadalltk.pop();t()}if(this.onloadalltk_always){this.onloadalltk_always(this)}}}tkprogress(t,e){t.cloakline.attr("x2",this.width*e)}tkerror(t,e,s){t.gerror=t.glider.append("text").text(e.length>this.width/10?e.substring(0,this.width/10-20)+"...":e).attr("x",this.width/2).attr("text-anchor","middle").attr("y",s?s:(t.height_main-t.toppad-t.bottompad)/2).attr("dominant-baseline","central").attr("font-size","14px").attr("font-family",u)}block_setheight(){let t=this.coord.height;for(const e of this.tklst){if(e.hidden)continue;e.yoff=t+e.toppad;e.g.transition().attr("transform","translate(0,"+e.yoff+")");if(!Number.isFinite(e.height_main)){if(this.debugmode){console.log("block_setheight: invalid height_main for "+e.name)}continue}{const t=e.subpanels.map((t=>t.height));t.push(e.height_main);e.height=Math.max(...t)}t+=e.height;e.tkbodybgrect.attr("width",this.width).attr("height",e.height);for(const[t,s]of e.subpanels.entries()){s.subpaneltkbgrect.attr("width",this.subpanels[t].width).attr("height",e.height)}}for(const e of this.subpanels){e.subpanelbgrect.attr("height",t);e.subpanelleftborder.attr("height",t)}this.svg.transition().attr("height",t);for(const e of this.hlregion.lst){e.rect.attr("height",t)}if(this.onsetheight){this.onsetheight(t)}}tkarg_bedj(t){const e={name:t.name,genome:this.genome.name,rglst:this.tkarg_rglst(),stackheight:t.stackheight,stackspace:t.stackspace,regionspace:this.regionspace,width:this.width,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1};if(t.file){e.file=t.file}else{e.url=t.url;if(t.indexURL)e.indexURL=t.indexURL}if(t.color)e.color=t.color;if(t.categories)e.categories=t.categories;if(t.translatecoding)e.translatecoding=1;if(t.onerow)e.onerow=1;if(t.usevalue)e.usevalue=t.usevalue;if(t.bplengthUpperLimit)e.bplengthUpperLimit=t.bplengthUpperLimit;if(t.hideItemNames)e.hideItemNames=t.hideItemNames;if(t.filterByName)e.filterByName=t.filterByName;if(this.usegm&&this.gmmode!=m.genomic){e.gmregion=this.tkarg_maygm(t)[0];e.isoform=this.usegm.isoform}return e}bedj_tooltip(t,e,s){let i=0;if(e.mapisoform)i+=e.mapisoform.length;if(e.mapexon)i+=e.mapexon.length;if(e.mapaa)i+=e.mapaa.length;const o=(s||t).img;if(i){o.on("mousemove",(s=>{if(this.busy)return;const i=[];const n=St(s,o.node());let a;if(e.mapisoform){for(const s of e.mapisoform){const e=(s.y-1)*(t.stackheight+t.stackspace);if(s.x1<n[0]&&s.x2>n[0]&&e<n[1]&&e+t.stackheight>n[1]){a=s.y;i.push(s.name+' <span style="opacity:.5;font-size:.7em">'+s.chr+":"+(s.start+1)+"-"+(s.stop+1)+" "+f(s.stop-s.start)+"</span>")}}}if(e.mapexon){for(const s of e.mapexon){const e=(s.y-1)*(t.stackheight+t.stackspace);if(s.x1<n[0]&&s.x2>n[0]&&e<n[1]&&e+t.stackheight>n[1]){a=s.y;i.push(s.name+' <span style="opacity:.5;font-size:.7em">'+s.chr+":"+(s.start+1)+"-"+(s.stop+1)+" "+f(s.stop-s.start)+"</span>")}}}if(e.mapaa){for(const s of e.mapaa){const e=(s.y-1)*(t.stackheight+t.stackspace);if(s.x1<n[0]&&s.x2>n[0]&&e<n[1]&&e+t.stackheight>n[1]){a=s.y;i.push(s.name);break}}}if(i.length){t.tktip.clear();for(const e of i){t.tktip.d.append("div").html(e)}t.tktip.show(s.clientX,o.node().getBoundingClientRect().top+a*(t.stackheight+t.stackspace)-10)}else{t.tktip.hide()}})).on("mouseout",(()=>{t.tktip.hide()}));if(e.mapisoform){if(t.itemurl_appendname){o.on("click",(s=>{const i=St(s,o.node());for(const s of e.mapisoform){const e=(s.y-1)*(t.stackheight+t.stackspace);if(s.x1<i[0]&&s.x2>i[0]&&e<i[1]&&e+t.stackheight>i[1]&&s.name){window.open(t.itemurl_appendname+s.name);return}}}))}else if(e.mapisoform.find((t=>t.isoform))){if(t.__isgene){if(this.tklst.find((t=>t.type=="bam")));else{o.on("click",(s=>{const i=St(s,o.node());for(const o of e.mapisoform){const e=(o.y-1)*(t.stackheight+t.stackspace);if(o.x1<i[0]&&o.x2>i[0]&&e<i[1]&&e+t.stackheight>i[1]&&o.isoform){t.tkconfigtip.clear().show(s.clientX-40,s.clientY).d.append("div").attr("class","sja_menuoption").text("Gene/protein view for "+o.isoform).on("click",(()=>{t.tkconfigtip.hide();this.to_proteinview(o.isoform,t)}));return}}}))}}}else{o.on("click",null)}}else{o.on("click",null)}}else{o.on("mouseover",null).on("click",null)}}to_proteinview(t,e){let s;const i=K(".sja_root_holder").nodes();const o=K(".sja_root_holder > div").nodes();const n=o.length==1||i.length>1;if(n)s=Q({x:100,y:100});else{const t=b(o[2]);s=tt(t)}s.header.text(t);const a={genome:this.genome,debugmode:this.debugmode,holder:s.body,jwt:this.jwt,hostURL:this.hostURL,tklst:[],query:t};for(const t of this.tklst){if(e&&t.tkid==e.tkid){continue}if(t.type==et.mdsexpressionrank){continue}a.tklst.push(t)}st(a)}tkarg_rglst(){const t=[];for(let e=this.startidx;e<=this.stopidx;e++){const s=this.rglst[e];t.push({chr:s.chr,start:s.start,stop:s.stop,width:s.width,reverse:s.reverse})}return t}tkarg_maygm(t){if(!this.usegm||this.gmmode==m.genomic){return this.tkarg_rglst()}const e=this.rglst[this.startidx];const s=e.reverse;if(t.type==C.ds||t.mds){return[{chr:this.usegm.chr,start:this.usegm.start,stop:this.usegm.stop,width:this.width,reverse:s}]}let i=Math.min(e.start,e.stop);let o=Math.max(e.start,e.stop);for(let t=this.startidx+1;t<=this.stopidx;t++){const e=this.rglst[t];i=Math.min(i,e.start,e.stop);o=Math.max(o,e.start,e.stop)}return[{chr:this.usegm.chr,start:i,stop:o,width:this.width,reverse:s}]}tkarg_q(t){const e={jwt:this.jwt,name:t.name,rglst:this.tkarg_rglst(),regionspace:this.regionspace,width:this.width,file:t.file,url:t.url,indexURL:t.indexURL,barheight:t.barheight,minv:t.scale.min,maxv:t.scale.max,percentile:t.scale.percentile,autoscale:t.scale.auto,pcolor:t.pcolor,pcolor2:t.pcolor2,ncolor:t.ncolor,ncolor2:t.ncolor2,devicePixelRatio:window.devicePixelRatio>1?window.devicePixelRatio:1};if(t.normalize&&!t.normalize.disable){e.dividefactor=t.normalize.dividefactor}return e}maketkconfighandle(t){return t.gright.append("text").text("CONFIG").attr("fill","#555").attr("font-family",u).attr("font-size",this.labelfontsize).attr("y",this.labelfontsize).attr("class","sja_clbtext2")}maketklefthandle(t,e){return t.gleft.append("text").attr("font-size",this.labelfontsize).attr("font-family",u).attr("y",this.labelfontsize/2+(e||0)).attr("text-anchor","end").attr("dominant-baseline","central").attr("class","sja_clbtext2").attr("fill","black").attr("x",this.tkleftlabel_xshift)}setgmmode(t,e){if(!t)return this.error("setgmmode: no given mode");if(typeof t!="string")return this.error("setgmmode: mode value is not string");if(!this.usegm)return this.error("setgmmode: this.usegm missing");this.rglst=[];const s=this.genome.chrlookup[this.usegm.chr.toUpperCase()];if(!s){this.error("invalid chr of usegm: "+this.usegm.chr);return true}if(this.gmmode==t){return}if(this.gmmode){this.gmmodepast=this.gmmode}this.gmmode=t;let i=false;switch(this.gmmode){case m.genomic:this.rglst=[{chr:this.usegm.chr,bstart:0,bstop:s.len,start:this.usegm.start,stop:this.usegm.stop,reverse:this.usegm.strand=="-"}];this.regionspace=0;i=true;break;case m.splicingrna:for(const t of this.usegm.exon){this.rglst.push({chr:this.usegm.chr,bstart:t[0],bstop:t[1],start:t[0],stop:t[1],reverse:this.usegm.strand=="-"})}this.regionspace=10;break;case m.exononly:for(const t of this.usegm.exon){this.rglst.push({chr:this.usegm.chr,bstart:t[0],bstop:t[1],start:t[0],stop:t[1],reverse:this.usegm.strand=="-"})}this.regionspace=0;break;case m.protein:for(const t of this.usegm.coding){this.rglst.push({chr:this.usegm.chr,bstart:t[0],bstop:t[1],start:t[0],stop:t[1],reverse:this.usegm.strand=="-"})}this.regionspace=0;break;case m.gmsum:this.rglst=zs(this.allgm)[0];this.regionspace=10;break;default:this.error("setgmmode: unknown mode "+this.gmmode);this.gmmode=this.gmmodepast;return}this.startidx=0;this.stopidx=this.rglst.length-1;if(this.rglst.length>1&&this.regionspace>0){if(this.regionspace*(this.rglst.length-1)>this.width*.3){this.regionspace=Math.max(2,this.width*.3/(this.rglst.length-1))}const t=this.regionspace*(this.rglst.length-1);const e=this.rglst.reduce(((t,e)=>t+e.stop-e.start),0);this.exonsf=(this.width-(t>this.width*.4?0:t))/e;this.width=e*this.exonsf+t}if(this.gbase){let t=false;for(const e of this.tklst){if(e.__isgene)t=true}if(i){if(!t){for(const t of this.genome.tracks){if(t.__isgene){this.block_addtk_template(t);break}}}}else{if(t){while(t){for(let t=0;t<this.tklst.length;t++){if(this.tklst[t].__isgene){this.tk_remove(t);break}}t=false}}}if(e){delete this.pannedpx;this.block_coord_updated()}}}showgmmode4switch(t,e){let s,i,o,n,a;const r=400;if(this.allowGenomeMode()){s=t.append("div").style("margin","1px").attr("class",this.gmmode==m.genomic?"sja_inset_a":"sja_menuoption").on("click",(()=>{this.setgmmode(m.genomic,true);if(e){this.usegmtip.fadeout()}else{s.attr("class","sja_inset_a");if(i)i.attr("class","sja_menuoption");if(o)o.attr("class","sja_menuoption");if(n)n.attr("class","sja_menuoption");if(a)a.attr("class","sja_menuoption")}}));it(s.append("div").style("vertical-align","middle").style("display","inline-block"),this.usegm,r,20,this.usegm.start,this.usegm.stop,ot,true,this.usegm.strand=="-");s.append("div").style("display","inline-block").style("padding","13px").text(m.genomic)}if(this.usegm.exon.length>1){i=t.append("div").style("margin","1px").attr("class",this.gmmode==m.splicingrna?"sja_inset_a":"sja_menuoption").on("click",(()=>{this.setgmmode(m.splicingrna,true);if(e){this.usegmtip.fadeout()}else{i.attr("class","sja_inset_a");if(s)s.attr("class","sja_menuoption");if(o)o.attr("class","sja_menuoption");if(n)n.attr("class","sja_menuoption");if(a)a.attr("class","sja_menuoption")}}));nt(i.append("div").style("vertical-align","middle").style("display","inline-block").style("padding","0px"),this.usegm,r,ot);i.append("div").style("display","inline-block").style("padding","13px").text(m.splicingrna)}o=t.append("div").style("margin","1px").attr("class",this.gmmode==m.exononly?"sja_inset_a":"sja_menuoption").on("click",(()=>{if(e){this.usegmtip.fadeout()}else{o.attr("class","sja_inset_a");if(s)s.attr("class","sja_menuoption");if(i)i.attr("class","sja_menuoption");if(n)n.attr("class","sja_menuoption");if(a)a.attr("class","sja_menuoption")}this.setgmmode(m.exononly,true)}));at(o.append("div").style("vertical-align","middle").style("display","inline-block").style("padding","0px"),this.usegm,r,ot);o.append("div").style("display","inline-block").style("padding","13px").text(this.usegm.exon.length==1?"RNA":m.exononly);if(this.usegm.coding){n=t.append("div").style("margin","1px").attr("class",this.gmmode==m.protein?"sja_inset_a":"sja_menuoption").on("click",(()=>{if(e){this.usegmtip.fadeout()}else{n.attr("class","sja_inset_a");if(s)s.attr("class","sja_menuoption");if(i)i.attr("class","sja_menuoption");if(o)o.attr("class","sja_menuoption");if(a)a.attr("class","sja_menuoption")}this.setgmmode(m.protein,true)}));rt(n.append("div").style("vertical-align","middle").style("display","inline-block").style("padding","0px"),this.usegm,r);n.append("div").style("display","inline-block").style("padding","13px").text(m.protein)}if(this.allgm.length>1){a=t.append("div").style("margin","1px").attr("class",this.gmmode==m.gmsum?"sja_inset_a":"sja_menuoption").on("click",(()=>{if(e){this.usegmtip.fadeout()}else{a.attr("class","sja_inset_a");if(s)s.attr("class","sja_menuoption");if(i)i.attr("class","sja_menuoption");if(o)o.attr("class","sja_menuoption");if(n)n.attr("class","sja_menuoption")}this.setgmmode(m.gmsum,true)}));a.append("div").style("padding","13px").style("text-align","center").text("Aggregation of "+this.allgm.length+" isoforms")}}allowGenomeMode(){for(const t of this.tklst){if(t.type=="mds3"&&t.mds?.noGenomicMode4lollipopTk)return false}return true}showisoform4switch(t,e){if(!this.allgm){this.error("this.allgm[] missing");return}if(!this.usegm){this.error("this.usegm missing");return}const[s,i]=zs(this.allgm);let o=370;let n=10;if(n*(s.length-1)>o*.3){n=Math.max(2,o*.3/(s.length-1))}const a=n*(s.length-1);const r=s.reduce(((t,e)=>t+e.stop-e.start),0);const l=(o-(a>o*.4?0:a))/r;o=r*l+a;for(const t of s){t.width=Math.ceil((t.stop-t.start)*l)}let d=t;if(this.allgm.length>10){d=t.append("div").attr("tabindex",0).style("height","200px").style("overflow-y","scroll").style("resize","vertical")}const c=d.append("table").style("color","#555");const h=[];for(const t of this.allgm){const a=c.append("tr").attr("class","sja_clb").on("click",(async()=>{if(e){this.usegmtip.fadeout()}else{for(const e of h){e.label.style("color",e.isoform==t.isoform&&e.chr==t.chr&&e.start==t.start?"#cc0000":"#545454")}}this.holder0.selectAll("*").remove();if(!t.genomicseq){const e=await $("ntseq",{method:"POST",body:JSON.stringify({genome:this.genome.name,coord:t.chr+":"+(t.start+1)+"-"+t.stop})});if(e.error){this.error(e.error);return}t.genomicseq=e.seq;t.aaseq=lt(t)}const s=[];for(const t of this.tklst){if(t.type==C.usegm)continue;if(t.type==C.mds3)delete t.mds;s.push(t)}new ws({holder:this.holder0,genome:this.genome,hostURL:this.hostURL,nobox:true,gmstackheight:37,usegm:t,allgm:this.allgm,tklst:s,gmmode:t.cdslen?m.protein:m.exononly,hidedatasetexpression:this.hidedatasetexpression,hidegenecontrol:this.hidegenecontrol,hidegenelegend:this.hidegenelegend,variantPageCall_snv:this.variantPageCall_snv,samplecart:this.samplecart,debugmode:this.debugmode})}));a.append("td").text(t.isdefault?"DEFAULT":"").style("font-size",".6em");const r=a.append("td").text(t.isoform).style("color",t.isoform==this.usegm.isoform&&t.chr==this.usegm.chr&&t.start==this.usegm.start?"#cc0000":"#545454");h.push({isoform:t.isoform,chr:t.chr,start:t.start,label:r});if(i>1){a.append("td").text(t.chr)}dt(a.append("td"),s,t,l,n,o,16,ot);ct(a.append("td"),t)}}add_subpanel(){if(this.subpanels.length==0){this.clean_subpanel();return}for(let t=0;t<this.subpanels.length;t++){const e=this.subpanels[t];for(const s of this.tklst){if(s.hidden)continue;if(!s.subpanels[t]){s.subpanels[t]=this.new_tk_subpanel(s,e)}const i=s.subpanels[t];{let s=e.leftpad;for(let e=0;e<t;e++){s+=this.subpanels[e].leftpad+this.subpanels[e].width}i.gtksubpanel.transition().attr("transform","translate("+s+",0)")}if(i.chr==e.chr&&i.start==e.start&&i.stop==e.stop&&i.width==e.width){continue}i.chr=e.chr;i.start=e.start;i.stop=e.stop;i.width=e.width;i.leftpad=e.leftpad;this.updateruler_subpanel(e);switch(s.type){case C.bam:Ut(s,this);break;case C.bedj:ge(s,this,i);break;case C.bigwig:ee(s,this,i);break;case C.bigwigstranded:ce(s,this,i);break;case C.hicstraw:Se(s,this);break;case C.ase:Ue(s,this);break;case C.mdsjunction:Ee(s,this);break;case C.mdssvcnv:Ge(s,this);break;case C.mds2:Ze(s,this);break;case C.mds3:Qe(s,this);break;case C.bedgraphdot:es(s,this);break;case C.mdsexpressionrank:Ve(s,this);break;case C.aicheck:ae(s,this,i);break}}}this.clean_subpanel()}new_tk_subpanel(t,e){const s={height:30};s.gtksubpanel=t.gtksubpanels.append("g").on("mousedown",(t=>{t.preventDefault();const s=b(document.body);const i=t.clientX;s.on("mousemove",(t=>{e.coord.g.attr("transform","translate("+(t.clientX-i)+",0)");for(const s of this.tklst){if(s.hidden)continue;const o=s.subpanels.find((t=>t.chr==e.chr&&t.start==e.start&&t.stop==e.stop));if(o){o.glider.attr("transform","translate("+(t.clientX-i)+",0)")}else{console.log(e.chr,e.start,e.stop)}}})).on("mouseup",(t=>{s.on("mousemove",null).on("mouseup",null);const o=t.clientX-i;if(o==0)return;const n=e.stop-e.start;const a=Math.ceil(Math.abs(o)*n/e.width);let r=false;if(o>0){if(e.start<=0){r=true}else{if(e.start<a){e.start=0;e.stop=a}else{e.start-=a;e.stop-=a}}}else{const t=this.genome.chrlookup[e.chr.toUpperCase()].len;if(e.stop>=t){r=true}else{if(e.stop+a>t){e.stop=t;e.start=e.stop-n}else{e.start+=a;e.stop+=a}}}if(r){e.coord.g.transition().attr("transform","translate(0,0)");for(const t of this.tklst){if(t.hidden)continue;const s=t.subpanels.find((t=>t.chr==e.chr&&t.start==e.start&&t.stop==e.stop));if(s){s.glider.transition().attr("transform","translate(0,0)")}}return}delete this.pannedpx;this.add_subpanel()}))}));s.subpaneltkbgrect=s.gtksubpanel.append("rect").attr("fill","white").attr("fill-opacity",0);s.glider=s.gtksubpanel.append("g");if(t.type==C.bedj){s.img=s.glider.append("image")}else if(t.type==C.bigwig){s.img=s.glider.append("image")}else if(t.type==C.bigwigstranded){s.strand1={img:s.glider.append("image")};s.strand2={img:s.glider.append("image")}}else if(t.type==C.aicheck){s.img=s.glider.append("image")}s.cloak=s.gtksubpanel.append("g").attr("transform","scale(0)");s.cloakbox=s.cloak.append("rect").attr("fill","white").attr("fill-opacity",0);s.cloaktext=s.cloak.append("text").attr("id","loadingCloak2").text("Loading ...").attr("fill",X).attr("fill-opacity",0).attr("font-weight","bold").attr("font-size","18px").attr("text-anchor","middle").attr("dominant-baseline","middle");return s}clean_subpanel(){let t=false;for(const e of this.tklst){if(e.hidden)continue;while(e.subpanels.length>this.subpanels.length){const s=e.subpanels.pop();s.gtksubpanel.remove();t=true}}if(t){this.blocksetw()}}tkcloakon_subpanel(t){t.cloak.attr("transform","scale(1)");t.cloakbox.attr("width",t.width).attr("height",t.height).transition().duration(600).attr("fill-opacity",.5);t.cloaktext.attr("x",t.width/2).attr("y",t.height/2).transition().duration(600).attr("fill-opacity",1);if(t.gerror){t.gerror.remove()}}tkcloakoff_subpanel(t,e){t.cloak.attr("transform","scale(0)");t.cloakbox.attr("fill-opacity",0);t.cloaktext.attr("fill-opacity",0);t.glider.attr("transform","translate(0,0)");if(!e){this.tkerror_subpanel(t,"Server error ...")}else if(e.error){this.tkerror_subpanel(t,e.error)}}tkerror_subpanel(t,e){t.gerror=t.glider.append("text").text(e).attr("x",t.width/2).attr("text-anchor","middle").attr("y",t.height/2).attr("dominant-baseline","central").attr("font-size","14px").attr("font-family",u)}zoombutton_mouseover(t,e,s){if(this.subpanels.length==0)return;{const t=s.getBoundingClientRect();this.blocktip.clear().showunder(s).d.style("top",null).style("bottom",window.innerHeight-t.top-window.pageYOffset+3+"px")}this.blocktip.d.append("div").html("ZOOM "+(e?"OUT":"IN")+" "+t+" FOLDS ON A SUB PANEL").style("font-size",".7em").style("color","#858585").style("margin","5px");const i=this.blocktip.d.append("table");for(const[s,o]of this.subpanels.entries()){const s=i.append("tr");s.append("td").attr("class","sja_menuoption").text(o.chr+":"+o.start+"-"+o.stop).on("click",(()=>{const s=Math.ceil((o.start+o.stop)/2);const i=Math.ceil(Math.max((o.stop-o.start)*(e?t:1/t),o.width/bs));const n=this.genome.chrlookup[o.chr.toUpperCase()].len;if(s<i/2){o.start=0;o.stop=i}else if(s+i/2>n){o.stop=n;o.start=n-i}else{o.start=s-Math.ceil(i/2);o.stop=o.start+i}o.start=Math.max(0,o.start);o.stop=Math.min(o.stop,n);o.exonsf=o.width/(o.stop-o.start);this.blocktip.hide();this.add_subpanel()}))}}init_coord_subpanel(t){t.coord={};t.coord.g0=this.coord.gcoordsubpanels.append("g");t.subpanelbgrect=t.coord.g0.append("rect").attr("y",-this.coordyp1-this.rulerheight);if(t.background){t.subpanelbgrect.attr("fill",t.background)}else{t.subpanelbgrect.attr("fill","white").attr("fill-opacity",0)}t.subpanelleftborder=t.coord.g0.append("rect").attr("y",-this.coordyp1-this.rulerheight).attr("x",-t.leftpad).attr("width",t.leftpad);if(t.leftborder){t.subpanelleftborder.attr("fill",t.leftborder)}else{t.subpanelleftborder.attr("fill","white").attr("fill-opacity",0)}t.coord.g=t.coord.g0.append("g");t.coord.axesg=t.coord.g.append("g");t.coord.grab=t.coord.g.append("rect").attr("fill","white").attr("fill-opacity",0).attr("y",-this.coordyp1-this.rulerheight).on("mousedown",(e=>{this.rulermousedown(e,t).then((e=>{t.busy=false;const[s,i,o]=e;if(s){return}t.zoomedin=true;t.start+=Math.ceil(i/t.exonsf);t.stop=t.start+Math.ceil(o/t.exonsf);t.exonsf=t.width/(t.stop-t.start);delete this.pannedpx;this.add_subpanel()})).catch((t=>{if(t=="busy")return;this.error(t.message);console.log(t.stack)}))}))}updateruler_subpanel(t){t.coord.g.attr("transform","translate(0,0)");t.coord.height=this.coordyp1+this.rulerheight+this.coordyp2+(t.stop-t.start<=t.width?us+2:0);this.update_ruler_height();t.coord.grab.attr("height",t.coord.height);t.coord.axesg.selectAll("*").remove();const i=t.width/(t.stop-t.start);{const o=t.coord.axesg.append("g");const n=[t.start+1,t.stop+1];const r=[i/2,t.width-i/2];let l;{let e;const s=t.stop;o.append("text").text(s>1e6?a("s")(s):a(",d")(s)).attr("font-size",this.rulerfontsize).attr("font-family",u).each((function(){e=this.getBBox().width})).remove();l=Math.floor(t.width/(e+60))}const d=e().domain(n).range(r);const c=Ft().scale(d).tickSize(this.rulerticksize).ticks(l);if(t.stop-t.start>1e6){c.tickFormat(a("s"))}else{c.tickFormat(a(",d"))}s({axis:o.call(c),color:"black",showline:true,fontsize:this.rulerfontsize})}if(t.stop-t.start<=t.width){const e=t.coord.axesg.append("g").attr("transform","translate(0,"+this.coordyp2+")");this.getntsequence4ruler(t,e)}}error(t){ht(this.errdiv,t)}moremenu(t){{const e=t.d.append("div").style("margin-bottom","10px");e.append("button").text("Export SVG").on("click",(()=>{t.hide();import("./block.svg-9b916fa6.js").then((t=>{t.default(this)}))}));e.append("button").text("Reference DNA sequence").on("click",(()=>{Ms(this,t)}));if(this.genome.hasIdeogram){e.append("button").text((this.ideogram.visible?"Hide":"Show")+" ideogram").on("click",(()=>{this.toggleIdeogram();t.hide()}))}}{const e=t.d.append("div").style("border","solid 1px #eee").style("padding","10px").style("margin","20px 0px 20px 0px");const s=e.append("div");s.append("span").text("Highlight").style("opacity",.5).style("padding-right","10px");s.append("button").text("Select a region").on("click",(()=>{t.clear();t.d.append("div").html("&#9660; drag on the ruler");t.d.transition().style("top",Number.parseInt(t.d.style("top"))-60+"px");this.toselecthlregion=true}));s.append("button").text("Enter regions").on("click",(()=>{t.clear();const e=t.d.append("textarea").attr("rows",5).attr("cols",30);const s=t.d.append("div").style("margin-top","3px");s.append("button").text("Submit").on("click",(()=>{const s=e.property("value").trim();if(!s)return;for(const t of s.split("\n")){const e=t.split(" ");if(!e[0])continue;const s=J(e[0],this.genome,true);if(!s)continue;this.addhlregion(s.chr,s.start,s.stop,e[1]||ks)}this.moremenu(t.clear())}));s.append("button").text("Clear").on("click",(()=>{e.property("value","")}));t.d.append("div").html('<ul><li>Limited to adding regions to the current chromosome</li><li>One row per region</li><li>Example row: "chr1:123-456 #96FAF8"</li><li>Color is optional, must be hex format</li><li>If provided, separate coordinate and color by space</ul>')}));if(this.hlregion.lst.length){const t=e.append("div").style("margin-top","10px");for(const e of this.hlregion.lst){const s=t.append("div");s.append("div").html("&#10005;").style("display","inline-block").attr("class","sja_menuoption").on("click",(()=>{for(let t=0;t<this.hlregion.lst.length;t++){const s=this.hlregion.lst[t];if(s.chr==e.chr&&s.start==e.start&&s.stop==e.stop){this.hlregion.lst.splice(t,1);s.rect.remove();break}}s.remove()}));s.append("span").style("color","#858585").html("&nbsp;&nbsp;"+e.chr+":"+e.start+"-"+e.stop+"&nbsp;&nbsp;");s.append("input").attr("type","color").property("value",e.color).on("change",(t=>{e.color=t.target.value;e.rect.transition().attr("fill",e.color)}))}}}if(!JSON.parse(sessionStorage.getItem("optionalFeatures")).disableBlockExperimentFeatures){t.d.append("div").text("EXPERIMENTAL").style("font-size",".7em").style("margin","10px 0px 2px 0px").style("opacity",.5);t.d.append("button").text("Customize mutation class color").on("click",(()=>{t.clear();pt(t)}))}}initIdeogram(t){const e=5;this.ideogram={width:800,height:20,visible:t.showIdeogram,chr:null};this.ideogram.div=this.holder.append("div").style("position","relative").style("width",this.ideogram.width+"px").style("margin","5px");this.ideogram.canvas=this.ideogram.div.append("canvas").attr("width",this.ideogram.width).attr("height",this.ideogram.height).style("margin-top",e+"px");this.ideogram.ctx=this.ideogram.canvas.node().getContext("2d");this.ideogram.blueBox=this.ideogram.div.append("div").style("border","solid 1px blue").style("position","absolute").style("height",this.ideogram.height+e*2+"px").style("top","0px")}toggleIdeogram(){if(!this.ideogram)return;this.ideogram.visible=!this.ideogram.visible;if(!this.ideogram.visible){E(this.ideogram.div);return}P(this.ideogram.div);this.updateIdeogram()}async updateIdeogram(){if(!this.ideogram)return;const t=this.rglst[0].chr;if(t!=this.ideogram.chr)await this.plotIdeogram(t)}async plotIdeogram(t){if(!this.ideogram)return;try{if(!t)throw"unknonw chr to show ideogram";this.ideogram.chr=t;const e=await $("ideogram?genome="+this.genome.name+"&chr="+t);if(e.error)throw e.error;if(!Array.isArray(e))throw"data is not array";console.log(e)}catch(t){this.error(t.message||t)}}mds_handle_make(t){const e=this.genome.datasets[t];if(!e)return;const s=this.ctrl.mdsHandleHolder.append("div").style("display","inline-block").style("margin-right","2px").style("border","solid 1px black");e.handle={holder:s};e.handle.labelButton=s.append("div").text(e.label).attr("class","sja_handle_green").on("click",(async s=>{this.blocktip.clear().showunder(s.target);if(e.mdsIsUninitiated){const t=await $(`getDataset?genome=${this.genome.name}&dsname=${e.label}`);if(t.error)throw t.error;if(!t.ds)throw"ds missing";Object.assign(e,t.ds);delete e.mdsIsUninitiated}if(e.queries){const s=this.blocktip.d.append("table");for(const i in e.queries){if(e.queries[i].hideforthemoment)continue;const o=this.tklst.findIndex((e=>e.mds&&e.mds.label==t&&e.querykey==i));const n=s.append("tr");const a=n.append("td");if(o!=-1){a.html("&nbsp;&nbsp;SHOWN").style("color","#858585").style("font-size",".8em")}n.append("td").append("div").style("padding","10px 15px").attr("class","sja_menuoption").text(e.queries[i].name).on("click",(()=>{this.blocktip.hide();if(o!=-1){this.tk_remove(o);return}this.mds_load_query_bykey(e,{querykey:i})}))}}if(e.about){this.blocktip.d.append("div").style("margin","10px").append("span").attr("class","sja_clbtext").style("color","#858585").text("About this dataset").on("click",(()=>{this.blocktip.clear();Z(this.blocktip.d,e.about)}))}}))}async mds_load_query_bykey(t,e){if(t.mdsIsUninitiated){const e=await $(`getDataset?genome=${this.genome.name}&dsname=${t.label}`);if(e.error)throw e.error;if(!e.ds)throw"ds missing";Object.assign(t,e.ds);delete t.mdsIsUninitiated}if(!t.queries)return console.log("ds.queries{} missing");const s=t.queries[e.querykey];if(!s)return console.log("querykey not found in ds.queries: "+e.querykey);if(s.isgenenumeric){return}if(this.tklst.find((s=>s.mds&&s.mds.label==t.label&&s.querykey==e.querykey))){return}if(e.singlesample&&e.getsampletrackquickfix){const s=await $("mdssvcnv",{method:"POST",body:JSON.stringify({genome:this.genome.name,dslabel:t.label,querykey:e.querykey,gettrack4singlesample:e.singlesample.name})});if(s.error)throw s.error;if(s.tracks){for(const t of s.tracks){const e=this.block_addtk_template(t);this.tk_load(e)}}}const i=this.block_addtk_template(s);i.mds=t;i.querykey=e.querykey;if(e.singlesample){i.bplengthUpperLimit=0}i.customization=e;this.tk_load(i)}totalheight(){let t=this.coord.height;for(const e of this.tklst){if(e.hidden)continue;t+=e.height}return t}newblock(t){if(!t.holder)return this.error("holder missing");t.genome=this.genome;t.hostURL=this.hostURL;t.jwt=this.jwt;t.nobox=true;return new ws(t)}turnOnTrack(t){const e=Array.isArray(t)?t:[t];const s=[];for(const t of e){{const[e,s]=vs(this.tklst,t);if(s){continue}}const[e,i]=vs(this.genome.tracks,t);if(i){s.push(i)}else{s.push(t)}}for(const t of s){delete t.hidden;const e=this.block_addtk_template(t);this.tk_load(e)}}turnOffTrack(t){const e=Array.isArray(t)?t:[t];for(const t of e){const[e,s]=vs(this.tklst,t);if(e!=-1)this.tk_remove(e)}}showTrackByFile(t){if(!Array.isArray(t)){this.error("showTrackByFile() argument must be array");return}const e=new Map;for(const s of t){if(!s.type){this.error(".type missing from a file");return}if(!s.file){this.error(".file missing from a file");return}if(!e.has(s.type))e.set(s.type,new Set);e.get(s.type).add(s.file)}const s=this.tklst.filter((t=>e.has(t.type)&&!e.get(t.type).has(t.file)));const i=[];for(const[t,s]of e){for(const e of s){const s=this.genome.tracks.find((s=>s.type==t&&s.file==e));if(s&&!this.tklst.find((s=>s.type==t&&s.file==e))){i.push(s)}}}for(const t of s){this.tk_remove(this.tklst.findIndex((e=>e.type==t.type&&e.file==t.file)))}for(const t of i){const e=this.block_addtk_template(t);this.tk_load(e)}}}function vs(t,e){for(const[s,i]of t.entries()){if(i.type!=e.type)continue;if(e.type==C.junction){if(e.file||e.url){if(i.tracks.length==1){if(i.tracks[0].file?i.tracks[0].file==e.file:i.tracks[0].url==e.url){return[s,i]}}}else if(e.tracks){if(e.tracks.length==1&&i.tracks.length==1){if(i.tracks[0].file?i.tracks[0].file==e.tracks[0].file:i.tracks[0].url==e.tracks[0].url){return[s,i]}}}else;continue}if(i.type==e.type&&(i.file?i.file==e.file:i.url==e.url)){return[s,i]}}return[-1,null]}function _s(t,e){t.coord.inputtip=new z({padding:"0px",offsetX:0,offsetY:0});t.coord.input=e.append("input").attr("type","text").attr("size",20).style("margin-left","10px").style("padding-right","20px").attr("aria-label","Gene coordinates");t.coord.inputtipshow=()=>{t.coord.inputtip.clear();const e=t.coord.input.node().getBoundingClientRect();t.coord.inputtip.show(e.left,e.top+e.height+5)};t.coord.input.on("focus",(t=>{t.target.select()})).on("keyup",(e=>{t.zoomedin=false;t.pannedpx=undefined;t.resized=false;const s=e.target;const n=s.value.trim();if(n.length<=1){t.coord.inputtip.hide();return}if(o(e)){t.coord.inputtip.hide();s.blur();t.jump_1basedcoordinate(n);return}if(e.code=="Escape"){t.coord.inputtip.hide();if(t.rglst.length==1){const e=t.rglst[0];s.value=e.chr+":"+e.start+"-"+e.stop}s.blur();return}if(n.length>6)return;i()}));async function s(){const e=t.coord.input.property("value");if(!e)return;t.coord.inputtipshow();try{const s=await $("genelookup",{body:{genome:t.genome.name,input:e}});if(s.error)throw s.error;if(!s.hits||s.hits.length==0)return t.coord.inputtip.hide();for(const e of s.hits){t.coord.inputtip.d.append("div").attr("class","sja_menuoption").text(e).on("click",(()=>{t.coord.inputtip.hide();t.block_jump_gene(e)}))}}catch(e){t.inputerr(e.message||e)}}const i=ft.debounce(s,300)}function zs(t){const e=new Map;for(const s of t){if(s.hidden){continue}if(!e.has(s.chr)){e.set(s.chr,[])}e.get(s.chr).push(s)}const s=[];for(let[t,i]of e.entries()){const e=[];for(const t of i){for(const s of t.exon){e.push([s[0],s[1]])}}const o=i[0].strand=="-";e.sort(((t,e)=>t[0]-e[0]));let n=e[0];const a=[];for(let s=1;s<e.length;s++){const i=e[s];if(i[0]>n[1]){const e={chr:t,bstart:n[0],bstop:n[1],start:n[0],stop:n[1],reverse:o};if(o){a.unshift(e)}else{a.push(e)}n=i}else{n[1]=Math.max(n[1],i[1])}}const r={chr:t,bstart:n[0],bstop:n[1],start:n[0],stop:n[1],reverse:o};if(o){a.unshift(r)}else{a.push(r)}s.push(...a)}return[s,e.size]}const js=1e5;async function Ms(t,e){e.clear();const s=[];for(let e=t.startidx;e<=t.stopidx;e++){const i=t.rglst[e];s.push({chr:i.chr,start:i.start,stop:i.stop})}const i=s.reduce(((t,e)=>t+e.stop-e.start),0);if(i>js){e.d.append("div").text("Please zoom in under "+f(js)+" to get DNA sequence.");return}const o=[];for(const e of s){const s=e.chr+":"+(e.start+1)+"-"+e.stop;const i=await $("ntseq",{method:"POST",body:JSON.stringify({genome:t.genome.name,coord:s})});o.push(">"+s+"\n"+i.seq)}D("Reference DNA from "+t.genome.name,[{text:o.join("\n")}],1,1,10,100,e.d.style("left","100px"))}function Ns(t){t.cursorhlbarFillColor="#FFFF99";t.cursorhlbar=t.gbase.append("rect").attr("fill",t.cursorhlbarFillColor);t.gbase.on("mousemove",(e=>{const s=St(e,t.gbase.node())[0];let i=t.leftheadw+t.lpad;if(s<i){t.cursorhlbar.attr("width",0);return}let o,n;if(s<i+t.width){n=Math.max(2,t.exonsf);o=s;if(t.exonsf>=2){o-=(s-i)%t.exonsf}}else{i+=t.width;for(const e of t.subpanels){i+=e.leftpad;if(s<i+e.leftpad){break}if(s<i+e.leftpad+e.width){n=Math.max(2,e.exonsf);o=s;if(e.exonsf>=2){o-=(s-i-e.leftpad)%e.exonsf}break}i+=e.leftpad+e.width}}if(o){t.cursorhlbar.attr("x",o).attr("width",n).attr("height",t.totalheight())}})).on("mouseout",(()=>{t.cursorhlbar.attr("width",0)}))}var Cs=Object.freeze({__proto__:null,Block:ws});export{se as a,Kt as b,Cs as c,Zt as m};
@@ -0,0 +1 @@
1
+ let n;async function t(t){if(!n){const t=await import("./block-6aedd569.js").then((function(n){return n.c}));n=t.Block}return new n(t)}export{t as b};