@sjcrh/proteinpaint-client 2.76.2 → 2.77.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (232) hide show
  1. package/dist/{2dmaf-f240211f.js → 2dmaf-dbeff225.js} +1 -1
  2. package/dist/{AppHeader-c9432a24.js → AppHeader-1fc7f7bd.js} +1 -1
  3. package/dist/{ColorScale-b991fc9e.js → ColorScale-23c17654.js} +1 -1
  4. package/dist/{DEanalysis-bbfad00d.js → DEanalysis-a3cf1900.js} +1 -1
  5. package/dist/{Disco-b7c9bf72.js → Disco-b26a0556.js} +1 -1
  6. package/dist/{Disco.UI-a5296c36.js → Disco.UI-891c4c35.js} +1 -1
  7. package/dist/{DragControls-ca3fa0cf.js → DragControls-2fabac26.js} +1 -1
  8. package/dist/{DziViewer-28915c11.js → DziViewer-5b830c31.js} +1 -1
  9. package/dist/FilterRxComp-fb608459.js +1 -0
  10. package/dist/FilterStateless-fc4e4e1b.js +1 -0
  11. package/dist/{HicApp-e713aa40.js → HicApp-5ed85d49.js} +1 -1
  12. package/dist/{OrbitControls-2466d420.js → OrbitControls-604f40af.js} +1 -1
  13. package/dist/{WSIViewer-957695a8.js → WSIViewer-dcce2a10.js} +1 -1
  14. package/dist/{adSandbox-27d93bc0.js → adSandbox-5fa90964.js} +1 -1
  15. package/dist/app-0de0ae35.js +1 -0
  16. package/dist/{app-d215327f.js → app-7f695ce7.js} +1 -1
  17. package/dist/app-977b083f.js +1 -0
  18. package/dist/app.js +1 -1
  19. package/dist/{bam-d67e5315.js → bam-06a5a6a2.js} +1 -1
  20. package/dist/{barchart-2898d229.js → barchart-978fb21a.js} +1 -1
  21. package/dist/{barchart.events-426d737a.js → barchart.events-9b482604.js} +1 -1
  22. package/dist/{bars.renderer-71935d34.js → bars.renderer-d7461d5d.js} +1 -1
  23. package/dist/{block-75d4ff92.js → block-3db9c74c.js} +1 -1
  24. package/dist/block.lazyload-19a55cac.js +1 -0
  25. package/dist/{block.legend-93d85a6e.js → block.legend-97401467.js} +1 -1
  26. package/dist/{block.mds-84b9d1c1.js → block.mds-dc409568.js} +1 -1
  27. package/dist/{block.mds.cnv-a991ed79.js → block.mds.cnv-cdabd3f6.js} +1 -1
  28. package/dist/{block.mds.expressionrank-33b858de.js → block.mds.expressionrank-d768640f.js} +1 -1
  29. package/dist/{block.mds.expressionstat-3093599f.js → block.mds.expressionstat-7e40426f.js} +1 -1
  30. package/dist/{block.mds.geneboxplot-b8391d18.js → block.mds.geneboxplot-dae9cfa3.js} +1 -1
  31. package/dist/{block.mds.junction-69708c7f.js → block.mds.junction-3bc8baea.js} +1 -1
  32. package/dist/{block.mds.svcnv-322baea6.js → block.mds.svcnv-456dc845.js} +1 -1
  33. package/dist/{block.mds.svcnv.share-c5c38237.js → block.mds.svcnv.share-4776459b.js} +1 -1
  34. package/dist/{block.mds2-de4811dd.js → block.mds2-cc586d9d.js} +1 -1
  35. package/dist/{block.svg-ac9fec2d.js → block.svg-adf47e3a.js} +1 -1
  36. package/dist/{block.tk.aicheck-ac4b8d4d.js → block.tk.aicheck-f284f080.js} +1 -1
  37. package/dist/{block.tk.ase-6dc0f9f1.js → block.tk.ase-0477c9f4.js} +1 -1
  38. package/dist/{block.tk.bam-8f68b41d.js → block.tk.bam-d4c998d4.js} +1 -1
  39. package/dist/{block.tk.bedgraphdot-d8878860.js → block.tk.bedgraphdot-0177d836.js} +1 -1
  40. package/dist/{block.tk.bigwig.ui-f6ed051c.js → block.tk.bigwig.ui-95531269.js} +1 -1
  41. package/dist/{block.tk.hicstraw-725bdc8a.js → block.tk.hicstraw-06e97317.js} +1 -1
  42. package/dist/{block.tk.junction-f8b0b51d.js → block.tk.junction-18b6b825.js} +1 -1
  43. package/dist/{block.tk.junction.textmatrixui-252e7d7e.js → block.tk.junction.textmatrixui-ffdbdf81.js} +1 -1
  44. package/dist/{block.tk.ld-11acf730.js → block.tk.ld-2b56500f.js} +1 -1
  45. package/dist/{block.tk.menu-5e04436d.js → block.tk.menu-707a4226.js} +1 -1
  46. package/dist/{block.tk.pgv-fef17dc4.js → block.tk.pgv-63c956c4.js} +1 -1
  47. package/dist/{boxplot-4c9a5479.js → boxplot-1f229616.js} +1 -1
  48. package/dist/{brainImaging-7716bc66.js → brainImaging-a0c72fad.js} +1 -1
  49. package/dist/{brush-9faa7ae7.js → brush-4c775f74.js} +1 -1
  50. package/dist/{categorical-1dea48ba.js → categorical-25b06bc5.js} +1 -1
  51. package/dist/{condition-ebac4f75.js → condition-70084a85.js} +1 -1
  52. package/dist/{controls-268e40e6.js → controls-1f3ac9d0.js} +1 -1
  53. package/dist/controls.btns-5b44e5d0.js +1 -0
  54. package/dist/{controls.config-2f0fa061.js → controls.config-b0339f96.js} +1 -1
  55. package/dist/{cuminc-8dffb765.js → cuminc-6d1de932.js} +1 -1
  56. package/dist/{customdata.inputui-b229d3a0.js → customdata.inputui-5ad0f25c.js} +1 -1
  57. package/dist/{dataDownload-452ae3cd.js → dataDownload-a60d80e4.js} +1 -1
  58. package/dist/databrowser.ui-a5c8194c.js +1 -0
  59. package/dist/{density-09feb0c9.js → density-30dbad8b.js} +1 -1
  60. package/dist/{dictionary-a132a3cc.js → dictionary-d8435ddc.js} +1 -1
  61. package/dist/{drag-2e9c80bb.js → drag-ad04f964.js} +1 -1
  62. package/dist/{e2pca-4f1648e3.js → e2pca-02adebbd.js} +1 -1
  63. package/dist/{ep-1d4c58b4.js → ep-b2e464fe.js} +1 -1
  64. package/dist/{facet-fa4fe49c.js → facet-e7612200.js} +1 -1
  65. package/dist/{filter-b3d3964e.js → filter-67d51c09.js} +1 -1
  66. package/dist/{fusion.parse-7dfd6988.js → fusion.parse-68670e99.js} +1 -1
  67. package/dist/{geneExpClustering-ed9121b8.js → geneExpClustering-d96c27ef.js} +1 -1
  68. package/dist/geneExpression-072e0be1.js +1 -0
  69. package/dist/{geneExpression-394672ff.js → geneExpression-4901955e.js} +1 -1
  70. package/dist/{geneExpression-66208299.js → geneExpression-65346c08.js} +1 -1
  71. package/dist/{geneORA-9456872c.js → geneORA-e3d6619e.js} +1 -1
  72. package/dist/geneVariant-9fc29f37.js +1 -0
  73. package/dist/{geneVariant-beaf9adb.js → geneVariant-f6bbc247.js} +1 -1
  74. package/dist/{genefusion.ui-9238ec7f.js → genefusion.ui-a5a08183.js} +1 -1
  75. package/dist/{genesearch-ffd88bf2.js → genesearch-5fa13afa.js} +1 -1
  76. package/dist/{geneset-0315daf8.js → geneset-c36036bd.js} +1 -1
  77. package/dist/genomeBrowser-d4515002.js +1 -0
  78. package/dist/{genomeBrowser.controls-2601cab5.js → genomeBrowser.controls-b89629b0.js} +1 -1
  79. package/dist/{groupsetting-e3a4ecd5.js → groupsetting-a3de9ec7.js} +1 -1
  80. package/dist/{gsea-0c0cf8de.js → gsea-af1a7cec.js} +1 -1
  81. package/dist/{hierCluster-7ab62ca5.js → hierCluster-8aa2265a.js} +1 -1
  82. package/dist/hierCluster.config-11a176e2.js +1 -0
  83. package/dist/{hierCluster.interactivity-7f475259.js → hierCluster.interactivity-103b2f0f.js} +1 -1
  84. package/dist/{hierCluster.renderers-19b79639.js → hierCluster.renderers-48bdf7a6.js} +1 -1
  85. package/dist/{html.legend-80b2b3ec.js → html.legend-455f7881.js} +1 -1
  86. package/dist/{imagePlot-1ef24562.js → imagePlot-862c7baf.js} +1 -1
  87. package/dist/{lasso-1a02a545.js → lasso-e12204af.js} +1 -1
  88. package/dist/launch.adhoc-b8af0ace.js +1 -0
  89. package/dist/leftlabel.sample-784c5aeb.js +1 -0
  90. package/dist/{legacyDataset-fbaa5ebb.js → legacyDataset-501a0298.js} +1 -1
  91. package/dist/{log-c26b6cfd.js → log-d560d2a5.js} +1 -1
  92. package/dist/{lollipop-3aebe5d3.js → lollipop-aa25084e.js} +1 -1
  93. package/dist/{maf-c439c851.js → maf-13befc91.js} +1 -1
  94. package/dist/{maftimeline-0da64e54.js → maftimeline-f9ee156e.js} +1 -1
  95. package/dist/{matrix-38cd47c3.js → matrix-971b44da.js} +1 -1
  96. package/dist/{matrix.cells-a018d731.js → matrix.cells-92037b17.js} +1 -1
  97. package/dist/{matrix.cluster-a6e713e8.js → matrix.cluster-0bca59fd.js} +1 -1
  98. package/dist/{matrix.config-2c550b5d.js → matrix.config-b8d8faef.js} +1 -1
  99. package/dist/matrix.controls-07c6128c.js +1 -0
  100. package/dist/{matrix.data-2b814c9f.js → matrix.data-1090f6c7.js} +1 -1
  101. package/dist/{matrix.dom-1e0da5b3.js → matrix.dom-1154156c.js} +1 -1
  102. package/dist/{matrix.groups-824a7244.js → matrix.groups-f10a8c05.js} +1 -1
  103. package/dist/{matrix.interactivity-1cb56534.js → matrix.interactivity-99de0399.js} +1 -1
  104. package/dist/{matrix.layout-47e44357.js → matrix.layout-405db70f.js} +1 -1
  105. package/dist/{matrix.legend-9af0c757.js → matrix.legend-d06de359.js} +1 -1
  106. package/dist/{matrix.renderers-337ce240.js → matrix.renderers-2211c4b2.js} +1 -1
  107. package/dist/{matrix.serieses-7b7184c9.js → matrix.serieses-f0803a76.js} +1 -1
  108. package/dist/{matrix.sort-1ac05842.js → matrix.sort-3d376f1a.js} +1 -1
  109. package/dist/{matrix.sorterUi-1c60c145.js → matrix.sorterUi-469ed804.js} +1 -1
  110. package/dist/{mavb-da8d1a0a.js → mavb-e5cbd894.js} +1 -1
  111. package/dist/{mds.fimo-8604c3f8.js → mds.fimo-f9215ef6.js} +1 -1
  112. package/dist/{mds.samplescatterplot-3f09ae0e.js → mds.samplescatterplot-6fce6594.js} +1 -1
  113. package/dist/{mds.survivalplot-1d8f2b7e.js → mds.survivalplot-16e9e8c5.js} +1 -1
  114. package/dist/{metaboliteIntensity-bbb23c76.js → metaboliteIntensity-b47fb792.js} +1 -1
  115. package/dist/{niceNumLabels-29a7c6ca.js → niceNumLabels-1bd7a93b.js} +1 -1
  116. package/dist/{nodrag-b2737073.js → nodrag-0fa60f70.js} +1 -1
  117. package/dist/{notify-0cb8904f.js → notify-42149e65.js} +1 -1
  118. package/dist/{numeric-24dacbee.js → numeric-5b626171.js} +1 -1
  119. package/dist/{numeric.binary-f382cc98.js → numeric.binary-07e15211.js} +1 -1
  120. package/dist/numeric.continuous-76dd29ba.js +1 -0
  121. package/dist/numeric.discrete-6d697c68.js +1 -0
  122. package/dist/{numeric.spline-a35cfbf0.js → numeric.spline-cf331bad.js} +1 -1
  123. package/dist/{numeric.toggle-2f98d6e5.js → numeric.toggle-332c2578.js} +1 -1
  124. package/dist/oncomatrix-7c84c94b.js +1 -0
  125. package/dist/{parseData-292648dd.js → parseData-05ab5f81.js} +1 -1
  126. package/dist/{plot.2dvaf-6ae22dc1.js → plot.2dvaf-1debbf12.js} +1 -1
  127. package/dist/plot.app-0b02df66.js +1 -0
  128. package/dist/{plot.barplot-34841e70.js → plot.barplot-45b57df9.js} +1 -1
  129. package/dist/{plot.boxplot-87ac2ce9.js → plot.boxplot-06cef6e2.js} +1 -1
  130. package/dist/{plot.brainImaging-32a484b6.js → plot.brainImaging-07795744.js} +1 -1
  131. package/dist/{plot.disco-1fdfee3c.js → plot.disco-9c631d77.js} +1 -1
  132. package/dist/{plot.dzi-e3d0f610.js → plot.dzi-a9a81de5.js} +1 -1
  133. package/dist/{plot.ssgq-d33113d5.js → plot.ssgq-02ffde06.js} +1 -1
  134. package/dist/{plot.vaf2cov-9f4f1776.js → plot.vaf2cov-c111c5fb.js} +1 -1
  135. package/dist/{plot.wsi-dea124a7.js → plot.wsi-6ccc7bb2.js} +1 -1
  136. package/dist/{profileBarchart-58f0a8c0.js → profileBarchart-0c97e8c9.js} +1 -1
  137. package/dist/{profileHome-7f404152.js → profileHome-2255d66d.js} +1 -1
  138. package/dist/profilePlot-ba7e03ab.js +1 -0
  139. package/dist/{profilePolar-50b8e40e.js → profilePolar-d38d502f.js} +1 -1
  140. package/dist/{profileRadar-fff0b004.js → profileRadar-f95cfa87.js} +1 -1
  141. package/dist/{profileRadarFacility-d6d34c15.js → profileRadarFacility-7e200a91.js} +1 -1
  142. package/dist/profileSummary-8c41a731.js +1 -0
  143. package/dist/{recover-299ffdb3.js → recover-6f2f3379.js} +1 -1
  144. package/dist/{regression.inputs-14df7c31.js → regression.inputs-b515101d.js} +1 -1
  145. package/dist/{regression.inputs.values.table-d79efa9e.js → regression.inputs.values.table-f8a0cad9.js} +1 -1
  146. package/dist/{regression.results-4767144e.js → regression.results-91a486f0.js} +1 -1
  147. package/dist/{renderPvalueTable-002cc8ff.js → renderPvalueTable-d4d2624c.js} +1 -1
  148. package/dist/sampleScatter-7c2773de.js +1 -0
  149. package/dist/{sampleScatter.rendererThree-ef289434.js → sampleScatter.rendererThree-b6db5a09.js} +2 -2
  150. package/dist/{sampleView-1dff3fca.js → sampleView-8885e86b.js} +1 -1
  151. package/dist/{samplelst-d2db0f24.js → samplelst-83e593da.js} +1 -1
  152. package/dist/{samplematrix-0841387f.js → samplematrix-a8b3f845.js} +1 -1
  153. package/dist/{scatter-f8285107.js → scatter-34d52e2d.js} +1 -1
  154. package/dist/{select2Terms-d48d037e.js → select2Terms-d9320d21.js} +1 -1
  155. package/dist/{selectGenomeWithTklst-9af86d31.js → selectGenomeWithTklst-fed6a2ea.js} +1 -1
  156. package/dist/shapes-21ebfec4.js +1 -0
  157. package/dist/singleCellCellType-e6848f45.js +1 -0
  158. package/dist/{singleCellGeneExpression-537f1157.js → singleCellGeneExpression-d3a5394e.js} +1 -1
  159. package/dist/singleCellPlot-3cad6bd8.js +1 -0
  160. package/dist/{singlecell-38336cbc.js → singlecell-0754aab0.js} +1 -1
  161. package/dist/{singlecell-87b4b9a9.js → singlecell-7c57cd77.js} +1 -1
  162. package/dist/{snp-b81ef740.js → snp-6b23e7a6.js} +1 -1
  163. package/dist/snp-a0cdd2a5.js +1 -0
  164. package/dist/snplocus-c60eab56.js +1 -0
  165. package/dist/{spliceevent.a53ss.diagram-5f8352eb.js → spliceevent.a53ss.diagram-8714f740.js} +1 -1
  166. package/dist/{spliceevent.exonskip.diagram-0d30a735.js → spliceevent.exonskip.diagram-40c1e363.js} +1 -1
  167. package/dist/spliceevent.exonskip.getdefault-4bb6f19f.js +1 -0
  168. package/dist/{spliceevent.noeventdiagram-df9ce4bc.js → spliceevent.noeventdiagram-41a56db9.js} +1 -1
  169. package/dist/{spliceevent.phrase-a8401d53.js → spliceevent.phrase-7f34e3b1.js} +1 -1
  170. package/dist/{stattable-46cde32c.js → stattable-78dc5c34.js} +1 -1
  171. package/dist/{style.gdc-72d730f2.js → style.gdc-cd49882c.js} +1 -1
  172. package/dist/summary-45c56298.js +1 -0
  173. package/dist/{sunburst-fe95832e.js → sunburst-2140e468.js} +1 -1
  174. package/dist/{survival-57ff3c03.js → survival-db972025.js} +1 -1
  175. package/dist/{survival-52714cd3.js → survival-ed4bdad2.js} +1 -1
  176. package/dist/{svg.download-f4aa48e4.js → svg.download-a5e20a92.js} +1 -1
  177. package/dist/{svg.legend-749348e0.js → svg.legend-8d21872d.js} +1 -1
  178. package/dist/{svgraph-b46f1f92.js → svgraph-f6a28b78.js} +1 -1
  179. package/dist/{svmr-9a76c6d4.js → svmr-8b4b4c59.js} +1 -1
  180. package/dist/{table-bf40249b.js → table-1cbe3a36.js} +1 -1
  181. package/dist/{table-0daf2b89.js → table-e2a307e6.js} +1 -1
  182. package/dist/{termInfo-491b10af.js → termInfo-5477ba96.js} +1 -1
  183. package/dist/termdb.bins-7ecc48db.js +1 -0
  184. package/dist/{termsetting-492eefa7.js → termsetting-2e75e729.js} +1 -1
  185. package/dist/tk-a8a4481a.js +1 -0
  186. package/dist/{toggleButtons-c4d6f260.js → toggleButtons-7ce58d97.js} +1 -1
  187. package/dist/{tp.ui-0a476325.js → tp.ui-be14f635.js} +1 -1
  188. package/dist/{tvs.density-034b506d.js → tvs.density-8b953cef.js} +1 -1
  189. package/dist/{tvs.geneVariant-c59c8b54.js → tvs.geneVariant-ecad287d.js} +1 -1
  190. package/dist/{tvs.numeric-aa1f892f.js → tvs.numeric-b56a5aba.js} +1 -1
  191. package/dist/{tvs.samplelst-515f27b9.js → tvs.samplelst-3150e0b7.js} +1 -1
  192. package/dist/{uiUtils-ea7dfea2.js → uiUtils-71cc22de.js} +1 -1
  193. package/dist/{variantBrowser-14d5c3f6.js → variantBrowser-df2f9c22.js} +1 -1
  194. package/dist/{vcf-d357ce08.js → vcf-3e370c9b.js} +1 -1
  195. package/dist/{violin-74d26b75.js → violin-4595cef4.js} +1 -1
  196. package/dist/{violin.interactivity-bf40ddde.js → violin.interactivity-8b63e000.js} +1 -1
  197. package/dist/{violin.renderer-469fa0ff.js → violin.renderer-0b7431a2.js} +1 -1
  198. package/dist/{violinRenderer-14fa200d.js → violinRenderer-7b0a4e98.js} +1 -1
  199. package/dist/{viridis-cc59f478.js → viridis-725f66e0.js} +1 -1
  200. package/dist/{y-59cbff5e.js → y-300bac24.js} +1 -1
  201. package/dist/{zoom-f445cfef.js → zoom-d3d38b3b.js} +1 -1
  202. package/package.json +2 -4
  203. package/dist/FilterRxComp-02e68f1b.js +0 -1
  204. package/dist/FilterStateless-16a33070.js +0 -1
  205. package/dist/app-42f69951.js +0 -1
  206. package/dist/app-6fb77603.js +0 -1
  207. package/dist/block.lazyload-d2951c91.js +0 -1
  208. package/dist/controls.btns-5bf9e7d7.js +0 -1
  209. package/dist/databrowser.ui-2197fc73.js +0 -1
  210. package/dist/downloadTextfile-5723af95.js +0 -1
  211. package/dist/geneExpression-c61e8f1c.js +0 -1
  212. package/dist/geneVariant-f17cda85.js +0 -1
  213. package/dist/genomeBrowser-608b924e.js +0 -1
  214. package/dist/hierCluster.config-f4daaf92.js +0 -1
  215. package/dist/launch.adhoc-e124c993.js +0 -1
  216. package/dist/leftlabel.sample-59f99ef5.js +0 -1
  217. package/dist/matrix.controls-42ad4912.js +0 -1
  218. package/dist/numeric.continuous-6feb34a7.js +0 -1
  219. package/dist/numeric.discrete-ed10bbc1.js +0 -1
  220. package/dist/oncomatrix-c0b2d635.js +0 -1
  221. package/dist/plot.app-2a805759.js +0 -1
  222. package/dist/profilePlot-4db8ca78.js +0 -1
  223. package/dist/profileSummary-04b8b15b.js +0 -1
  224. package/dist/sampleScatter-55d9eb74.js +0 -1
  225. package/dist/singleCellCellType-fd1606b8.js +0 -1
  226. package/dist/singleCellPlot-eff5760b.js +0 -1
  227. package/dist/snp-f6123244.js +0 -1
  228. package/dist/snplocus-acafb1ba.js +0 -1
  229. package/dist/spliceevent.exonskip.getdefault-237c481c.js +0 -1
  230. package/dist/summary-a6c15c9e.js +0 -1
  231. package/dist/termdb.bins-39d11f24.js +0 -1
  232. package/dist/tk-ac524564.js +0 -1
@@ -1 +1 @@
1
- import{_ as t}from"./tslib.es6-c3c2d88f.js";import{d as i}from"./app-6fb77603.js";class e{constructor(t){this.opts=this.validateOpts(t);this.tabs=t.tabs;this.dom={holder:t.holder};this.defaultTabWidth=90;o(this)}validateOpts(t){if(!t.holder)throw`missing opts.holder for Tabs()`;if(!Array.isArray(t.tabs))throw`invalid opts.tabs array for Tabs()`;if(!t.linePosition)t.linePosition="bottom";if(t.linePosition!="bottom"&&t.linePosition!="top"&&t.linePosition!="right"&&t.linePosition!="left")throw`Invalid .linePosition arg. Must be either bottom, top, right, or left`;if(!t.tabsPosition)t.tabsPosition="horizontal";if(t.tabsPosition!="horizontal"&&t.tabsPosition!="vertical")throw`Invalid .tabsPosition arg. Must be either vertical or horizontal`;return t}main(){return t(this,void 0,void 0,(function*(){try{yield this.render()}catch(t){if(t.stack)console.log(t.stack);else throw t}}))}}function o(e){e.render=()=>t(this,void 0,void 0,(function*(){const o=e.tabs.find((t=>t.active));if(!o)e.tabs[0].active=true;const s=e.opts.linePosition=="bottom"||e.opts.linePosition=="top"?"center":e.opts.linePosition;e.dom.tabsHolder=e.dom.holder.append("div").style(`border-${e.opts.linePosition}`,"0.5px solid #1575ad");if(!e.opts.contentHolder&&!e.opts.noContent){e.dom.contentHolder=e.dom.holder.append("div")}else e.dom.contentHolder=e.opts.contentHolder;if(e.opts.tabsPosition=="vertical"){e.dom.tabsHolder.style("display","inline-grid").style("align-items","start").style("gap",e.opts.gap||"");e.dom.contentHolder.style("display","inline-block").style("vertical-align","top").style("position","relative")}else e.dom.tabsHolder.style("display","inline-block");yield e.dom.tabsHolder.selectAll("button").data(e.tabs).enter().append("button").attr("data-testid","sja_toggle_button").attr("class","sj-toggle-button").classed("sjpp-active",(t=>t.active)).style("padding","0px").style("width",(t=>t.width?`${t.width}px`:"fit-content")).style("min-width",(t=>t.width?null:Math.max(e.defaultTabWidth))).style("border","none").style("background-color","transparent").style("display",e.opts.tabsPosition=="vertical"?"flex":"inline-grid").property("disabled",(t=>t.disabled?t.disabled():false)).each((function(o){return t(this,void 0,void 0,(function*(){o.wrapper=i(this);if(e.opts.linePosition=="right")o.wrapper.style("justify-self","end");if(e.opts.linePosition=="left")o.wrapper.style("justify-self","start");if(e.opts.linePosition=="top"||e.opts.linePosition=="left"){o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-flex":"flex");o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-block":"block")}else{o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-block":"block");o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-flex":"flex")}if(o.disabled&&o.isVisible){o.wrapper.style("cursor",o.disabled()==true&&o.isVisible()==true?"not-allowed":"pointer")}o.tab.style("color",o.active?"#1575ad":"#757373").style("text-align",s).style("padding","5px").html(o.label);o.line.style("background-color","#1575ad").style("visibility",o.active?"visible":"hidden");if(e.opts.linePosition=="top"||e.opts.linePosition=="bottom"){o.line.style("height","8px").style("padding","0px 5px")}else{o.line.style("align-self","stretch").style("padding","5px 0px").html('<span style="width: 8px";>&nbsp</span>')}if(e.dom.contentHolder){o.contentHolder=e.dom.contentHolder.append("div").style("display",o.active?"block":"none");if(e.opts.tabsPosition=="horizontal"&&!e.opts.noTopContentStyle){o.contentHolder.style("padding-top","10px").style("margin-top","10px")}}if(o.active&&o.callback)yield o.callback(event,o);o.wrapper.on("mouseenter",(()=>{o.tab.style("color",o.active?"#757373":"#1575ad")})).on("mouseleave",(()=>{o.tab.style("color",o.active?"#1575ad":"#757373")}))}))})).on("click",((i,o)=>t(this,void 0,void 0,(function*(){for(const t of e.tabs){t.active=t===o}const t=e.tabs.findIndex((t=>t.active));e.update(t);if(o.callback)yield o.callback(i,o)}))));const l=e.tabs.findIndex((t=>t.active));e.update(l)}));e.update=(t=0,i={})=>{e.tabs.forEach(((i,e)=>{i.active=t===e}));e.dom.tabsHolder.selectAll("button").data(e.tabs).classed("sjpp-active",(t=>t.active)).each((t=>{t.wrapper.classed("sjpp-active",t.active);if(t.isVisible)t.wrapper.style("display",(t=>i&&t.isVisible()?"":"none"));if(t.contentHolder)t.contentHolder.style("display",t.active?"block":"none");t.tab.style("color",t.active?"#1575ad":"#757373");t.line.style("visibility",t.active?"visible":"hidden")}))}}export{e as T};
1
+ import{_ as t}from"./tslib.es6-c3c2d88f.js";import{d as i}from"./app-0de0ae35.js";class e{constructor(t){this.opts=this.validateOpts(t);this.tabs=t.tabs;this.dom={holder:t.holder};this.defaultTabWidth=90;o(this)}validateOpts(t){if(!t.holder)throw`missing opts.holder for Tabs()`;if(!Array.isArray(t.tabs))throw`invalid opts.tabs array for Tabs()`;if(!t.linePosition)t.linePosition="bottom";if(t.linePosition!="bottom"&&t.linePosition!="top"&&t.linePosition!="right"&&t.linePosition!="left")throw`Invalid .linePosition arg. Must be either bottom, top, right, or left`;if(!t.tabsPosition)t.tabsPosition="horizontal";if(t.tabsPosition!="horizontal"&&t.tabsPosition!="vertical")throw`Invalid .tabsPosition arg. Must be either vertical or horizontal`;return t}main(){return t(this,void 0,void 0,(function*(){try{yield this.render()}catch(t){if(t.stack)console.log(t.stack);else throw t}}))}}function o(e){e.render=()=>t(this,void 0,void 0,(function*(){const o=e.tabs.find((t=>t.active));if(!o)e.tabs[0].active=true;const s=e.opts.linePosition=="bottom"||e.opts.linePosition=="top"?"center":e.opts.linePosition;e.dom.tabsHolder=e.dom.holder.append("div").style(`border-${e.opts.linePosition}`,"0.5px solid #1575ad");if(!e.opts.contentHolder&&!e.opts.noContent){e.dom.contentHolder=e.dom.holder.append("div")}else e.dom.contentHolder=e.opts.contentHolder;if(e.opts.tabsPosition=="vertical"){e.dom.tabsHolder.style("display","inline-grid").style("align-items","start").style("gap",e.opts.gap||"");e.dom.contentHolder.style("display","inline-block").style("vertical-align","top").style("position","relative")}else e.dom.tabsHolder.style("display","inline-block");yield e.dom.tabsHolder.selectAll("button").data(e.tabs).enter().append("button").attr("data-testid","sja_toggle_button").attr("class","sj-toggle-button").classed("sjpp-active",(t=>t.active)).style("padding","0px").style("width",(t=>t.width?`${t.width}px`:"fit-content")).style("min-width",(t=>t.width?null:Math.max(e.defaultTabWidth))).style("border","none").style("background-color","transparent").style("display",e.opts.tabsPosition=="vertical"?"flex":"inline-grid").property("disabled",(t=>t.disabled?t.disabled():false)).each((function(o){return t(this,void 0,void 0,(function*(){o.wrapper=i(this);if(e.opts.linePosition=="right")o.wrapper.style("justify-self","end");if(e.opts.linePosition=="left")o.wrapper.style("justify-self","start");if(e.opts.linePosition=="top"||e.opts.linePosition=="left"){o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-flex":"flex");o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="left"?"inline-block":"block")}else{o.tab=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-block":"block");o.line=o.wrapper.append("div").style("display",e.opts.linePosition=="right"?"inline-flex":"flex")}if(o.disabled&&o.isVisible){o.wrapper.style("cursor",o.disabled()==true&&o.isVisible()==true?"not-allowed":"pointer")}o.tab.style("color",o.active?"#1575ad":"#757373").style("text-align",s).style("padding","5px").html(o.label);o.line.style("background-color","#1575ad").style("visibility",o.active?"visible":"hidden");if(e.opts.linePosition=="top"||e.opts.linePosition=="bottom"){o.line.style("height","8px").style("padding","0px 5px")}else{o.line.style("align-self","stretch").style("padding","5px 0px").html('<span style="width: 8px";>&nbsp</span>')}if(e.dom.contentHolder){o.contentHolder=e.dom.contentHolder.append("div").style("display",o.active?"block":"none");if(e.opts.tabsPosition=="horizontal"&&!e.opts.noTopContentStyle){o.contentHolder.style("padding-top","10px").style("margin-top","10px")}}if(o.active&&o.callback)yield o.callback(event,o);o.wrapper.on("mouseenter",(()=>{o.tab.style("color",o.active?"#757373":"#1575ad")})).on("mouseleave",(()=>{o.tab.style("color",o.active?"#1575ad":"#757373")}))}))})).on("click",((i,o)=>t(this,void 0,void 0,(function*(){for(const t of e.tabs){t.active=t===o}const t=e.tabs.findIndex((t=>t.active));e.update(t);if(o.callback)yield o.callback(i,o)}))));const l=e.tabs.findIndex((t=>t.active));e.update(l)}));e.update=(t=0,i={})=>{e.tabs.forEach(((i,e)=>{i.active=t===e}));e.dom.tabsHolder.selectAll("button").data(e.tabs).classed("sjpp-active",(t=>t.active)).each((t=>{t.wrapper.classed("sjpp-active",t.active);if(t.isVisible)t.wrapper.style("display",(t=>i&&t.isVisible()?"":"none"));if(t.contentHolder)t.contentHolder.style("display",t.active?"block":"none");t.tab.style("color",t.active?"#1575ad":"#757373");t.line.style("visibility",t.active?"visible":"hidden")}))}}export{e as T};
@@ -1 +1 @@
1
- import{bC as t,bi as e,z as s,ak as n,ar as o,aP as a,aR as l,aQ as r,bD as i,bE as c,Z as p,ac as d,p as f,ab as m,e as u,M as h,bF as g,bG as y,j as b,ah as x,aa as w,bH as k,bI as v,bJ as j,bK as _}from"./app-6fb77603.js";import{b as z}from"./block.lazyload-d2951c91.js";function E(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(t.status===204||t.status===205)return;return t.json()}function R(t,e){return fetch(t,e).then(E)}function S(p,d,f){let m=true;for(const t in p.dsset){m=false}if(m){d.remove();f.remove();return null}const u=new Map;let h=0;for(const s in p.dsset){const n=p.dsset[s].bulkdata;if(!n)continue;const o=new Map;const a=new Set;const l=new Set;for(const s in n){for(const r of n[s]){const s=r.class;if(s==t){a.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}if(s==e){l.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}h++;if(!o.has(s)){o.set(s,0)}o.set(s,o.get(s)+1)}}if(a.size){o.set(t,a.size);h+=a.size}if(l.size){o.set(e,l.size);h+=l.size}u.set(s,o)}d.html(h+' <span style="font-size:.8em">VARIANTS</span>').attr("aria-label","A summary of variant hits from all genes, in descending order.");const g=f.append("table").style("margin-right","20px");const y=g.append("tr");const b=g.append("tr");const x=(t,e,s)=>{e.selectAll("*").remove();for(const n of t){const t=e.append("div").style("margin","10px");t.append("span").attr("class","sja_mcdot").style("background-color",n.color).style("padding","2px 5px").style("margin-right","5px").html(s?n.count:"&nbsp;&nbsp;");t.append("span").style("color",n.color).text(n.label)}};const w={};for(const[d,f]of u){const m=[];for(const[t,e]of f){const i=s[t];if(i.dt==n||i.dt==o||i.dt==a||i.dt==l||i.dt==r){m.push({key:t,label:i.label,color:i.color,count:e})}}m.sort(((t,e)=>e.count-t.count));for(const n of[i,c,t,e]){if(f.has(n)){const t=s[n];m.push({key:n,label:t.label,color:t.color,count:f.get(n)})}}w[d]=m;const u=b.append("td").attr("valign","top").attr("shownumber",0);x(m,u,true);const h=y.append("td").style("border-bottom","solid 1px #ccc").style("padding","5px 10px").style("color","#858585").style("font-size",".8em").text(p.dsset[d].label);h.append("button").style("margin","5px").text("Hide number").on("click",(t=>{const e=u.attr("shownumber")=="1";x(m,u,e);u.attr("shownumber",e?"0":"1");t.target.innerHTML=e?"Hide number":"Show number"}))}return h?w:null}function U(t){Promise.resolve().then((()=>{if(!t.gene)throw{message:"gene name missing"};if(!t.genome)throw{message:"genome name missing"};if(t.hostURL==undefined)throw{message:"no hostURL"};if(!t.loadgeneexpressionfromofficialds)throw{message:"loadgeneexpressionfromofficialds missing"};if(!t.loadgeneexpressionfromofficialds.dataset)throw{message:"dataset missing from loadgeneexpressionfromofficialds"};const e={genome:t.genome,dsname:t.loadgeneexpressionfromofficialds.dataset,expressiononly:1,genename:t.gene,jwt:t.jwt};return fetch(new Request(t.hostURL+"/dsdata",{method:"POST",body:JSON.stringify(e)})).then((t=>t.json())).then((t=>{if(t.error)throw{message:t.error};if(!t.data)throw{message:"cannot get data"};return t.data}))})).then((e=>{for(let s=0;s<e.length;s++){const n={data:e[s].lst,expp:e[s].config,genename:t.gene,presize:{x:t.x+40*s,y:t.y+40*s,width:350,height:650}};import("./ep-1d4c58b4.js").then((t=>{new t.default(n)}))}})).catch((e=>{const s=p({x:t.x||600,y:t.y||80});s.body.append("p").text("Error getting gene expression: "+e)}))}const M=new h;function L(t,e,n,o,a,l){if(!e)return null;const r=l||"";const i={};let c=[];for(const e in t.dsset){for(const s in t.dsset[e].bulkdata){if(!(s in i)){i[s]={mcount:0,isoform:{}};c.push(s)}i[s].mcount+=t.dsset[e].bulkdata[s].length;for(const n of t.dsset[e].bulkdata[s]){const t=n.isoform;if(!t)continue;i[s].isoform[t]=1}}}let h=Math.min(100,c.length);const x=new Set(["Intron","P","S","E",g,y]);const w={};const k={};let v=true;n.html(c.length+' <span style="font-size:.8em">GENES</span>').attr("aria-label","A summary table of gene by variant type, order by number of hits in descending order.");const j=o.append("div");const _=t=>{b(j,t)};const z=o.append("div").style("margin-bottom","8px");z.append("button").style("margin-right","10px").text("Configure").on("click",(()=>{if(R.style("display")=="block"){d(R)}else{f(R)}}));z.append("button").style("margin-right","10px").text("Download").on("click",(()=>{const t=G();m("Gene summary",[{text:t}])}));z.append("input").attr("type","text").attr("size",10).attr("placeholder","Find gene").style("margin","0px 20px 0px 5px").on("keyup",(e=>{let s=e.target.value;if(s==""){M.hide();return}if(t.geneToUpper){s=s.toUpperCase()}if(e.code=="Enter"){M.hide();e.target.value="";if(s in i){W(s)}return}const n=[];for(const t in i){if(t.indexOf(s)==0){n.push({name:t,count:i[t].mcount})}}if(n.length==0){M.hide();return}n.sort(((t,e)=>e.count-t.count));M.clear().showunder(e.target);for(let t=0;t<Math.min(30,n.length);t++){const e=n[t].name;const s=M.d.append("div").attr("class","sja_menuoption_y").on("click",(()=>{W(e)}));s.append("span").text(e);s.append("span").style("font-size",".7em").text(n[t].count)}}));z.append("a").attr("href","https://docs.google.com/document/d/1NrH1H-FUWJtEKLk69V-k8uaYHOr9YO2obM9ZLZslEQ0/edit?usp=sharing").attr("target","_blank").text("Help");const E=o.append("div").style("border","solid 1px #ccc").style("margin","10px 0px");const R=E.append("div").style("display","none").style("background-color","#f1f1f1");const S=140;const L=E.append("div").style("padding-top",S+"px").style("position","relative");const T=L.append("div").style("overflow-y","scroll").style("height","400px").style("resize","vertical");const N=T.append("table").style("border-spacing","1px").style("border-collapse","separate");const C=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const O=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const B=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const H=C.append("span").style("padding-right","10px").text("Showing "+(h<c.length?"top "+h+" genes":"all genes"));C.append("button").text("more").on("click",(()=>{h=Math.min(c.length,h+10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));C.append("button").text("less").on("click",(()=>{h=Math.max(1,h-10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));O.append("span").text("Show subset").style("padding-right","10px");const I=O.append("textarea").attr("rows",1).attr("cols",20).attr("placeholder","enter gene names").style("margin-right","10px");O.append("button").text("Submit").on("click",(()=>{const e=I.property("value").trim();if(e=="")return;const s=e.split(/[\s\t\n]+/),n=[],o=[];for(const e of s){if(e=="")continue;const s=t.geneToUpper?e.trim().toUpperCase():e.trim();if(s in i){n.push(s)}else{o.push(e)}}if(o.length){_("No match found for "+o.join(", "))}if(n.length==0)return;c=n;h=n.length;G()}));O.append("button").text("Use default").on("click",(()=>{c=[];for(const t in i){c.push(t)}h=Math.min(100,c.length);G()}));B.append("span").html("Noncoding mutation visibility:&nbsp;");const J=B.append("select").on("change",(()=>{v=!v;for(const t of F){if(!t.atlst){continue}for(const e of t.atlst){if(!e.ismclass)continue;if(v){e.hide=false;continue}e.hide=x.has(e.key)}}G()}));J.append("option").text("show").attr("value","y");J.append("option").text("hide").attr("value","n");B.append("p").style("font-size",".8em").style("color","#858585").text("Including: silent, splice_region, exon, UTR, and intron.");const P=[];for(const e in t.dsset){const s=t.dsset[e];if(s.hassample){P.push(s)}}if(P.length){const t=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");t.append("span").html("Gene recurrence (# of samples for each gene):&nbsp;");for(const e of P){t.append("button").text(P.length==1?"show":e.label).on("click",(t=>{const s=[];for(const t of c){const n={};let o=0;if(t in e.bulkdata){for(const s of e.bulkdata[t]){if(!v&&x.has(s.class))return;if(!(s.sample in n)){n[s.sample]=1;o++}}}s.push({name:t,size:o})}const n=t.target.getBoundingClientRect();A(s,"#76B38C","Number of samples"+(v?"":", excluding noncoding mutations"),n)}))}const e=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");e.append("span").html("Mutation burden (# mutations for each sample):&nbsp;");for(const t of P){e.append("button").text(P.length==1?"show":t.label).on("click",(e=>{const s={};for(const e in t.bulkdata){for(const n of t.bulkdata[e]){const t=n.sample;if(t){if(!v&&x.has(n.class))continue;if(!(t in s)){s[t]=0}s[t]++}}}const n=[];for(const t in s){n.push({name:t,size:s[t]})}const o=e.target.getBoundingClientRect();A(n,"#76B38C","Mutation burden"+(v?"":", excluding noncoding mutations"),o)}))}}R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc").text("Click on a column header to rank genes.");const F=[{label:"Name",isgenename:true}];let V=true;let q=0;for(const s in t.dsset){q++;const n={name:t.dsset[s].label,atlst:[{label:"# mutation",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;if(v){return t.dsset[s].bulkdata[e].length}let n=0;for(const o of t.dsset[s].bulkdata[e]){if(!x.has(o.class))n++}return n},rotate:true,descend:true,sort:V}]};V=false;if(t.dsset[s].hassample){n.atlst.push({label:"# sample",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;const n=new Set;for(const o of t.dsset[s].bulkdata[e]){if(!v&&x.has(o.class))continue;if(!o.sample)continue;n.add(o.sample)}return n.size},rotate:true,descend:true})}for(const o of e[s]){o.ismclass=true;o.get=e=>{if(!(e in t.dsset[s].bulkdata))return 0;let n=0;for(const a of t.dsset[s].bulkdata[e]){if(a.class==o.key)n++}return n};o.rotate=true;o.descend=true;n.atlst.push(o)}F.push(n)}const G=()=>{let e=null,n=null;for(const t of F){if(t.hide)continue;if(t.atlst){for(const s of t.atlst){if(s.hide)continue;if(s.sort){e=s;continue}if(s.secondsort){n=s;continue}}continue}if(t.sort){e=t;continue}if(t.secondsort){n=t}}if(e){c.sort(((t,s)=>{if(e.isgenename){if(t<s){return e.descend?1:-1}return e.descend?-1:1}const o=e.get(t),a=e.get(s);if(typeof o=="string"){if(o<a){return e.descend?1:-1}return e.descend?-1:1}if(o==a){if(n){const e=n.get(t),o=n.get(s);if(e==o){if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}else{return o-e}}else{if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}return t<s?-1:1}return e.descend?a-o:o-a}))}const o={};for(const t in k){const e={};for(let s=0;s<h;s++){const n=c[s];if(n in w&&t in w[n]){for(const s in w[n][t].class){if(!(s in e)){e[s]=0}e[s]+=w[n][t].class[s]}}}const s=[];for(const t in e){s.push({class:t,n:e[t]})}s.sort(((t,e)=>e.n-t.n));o[t]=s}const a="solid 10px white";N.selectAll("*").remove();const l=N.append("tr");l.append("td").style("height","0px").style("padding","0px");l.append("td").style("height","0px").style("padding","0px");for(const t of F){if(!t.atlst)continue;let e=0;for(const s of t.atlst){if(!s.hide)e++}l.append("td").attr("colspan",e).style("text-align","center").style("border-right",a).append("div").style("position","absolute").style("top","1px").style("border-bottom",q>1?"solid 1px black":"").text(q>1?t.name:"")}for(const e in k){const s=l.append("td").attr("colspan",2+o[e].length).style("border-right",a).append("div").style("top","2px").style("position","absolute").style("color",t.genome.datasets[e].color).style("border-bottom","solid 1px "+t.genome.datasets[e].color);s.append("span").text(t.genome.datasets[e].label+(k[e].totalsample?", "+k[e].totalsample+" total samples":""));s.append("div").style("position","absolute").style("right","0px").style("top","-5px").attr("class","sja_clb").html("&#10005;").on("click",(()=>{delete k[e];for(const t in w){delete w[t][e]}G()}))}const r=[];const i=[];const p=N.append("tr");p.append("td").style("height","0px").style("padding","0px");for(const t of F){if(t.hide)continue;let e=[];if(t.atlst){e=t.atlst}else{e=[t]}let s;for(const n of e){if(n.hide)continue;s=p.append("td").attr("class","sja_clbtext").style("font-size",".8em").style("height","0px").style("padding","0px").style("color",n.color?n.color:"black").style("white-space","nowrap");s.append("div").html(n.rotate?n.sort?(n.descend?"&#9664;":"&#9654;")+" "+n.label:n.label:n.label+(n.sort?" "+(n.descend?"&#9662;":"&#9652;"):"")).style("position","absolute").style("top",S-25+"px").style("transform",n.rotate?"translate(-3px,0px) rotate(-90deg)":"").style("width",n.rotate?"25px":"auto").on("click",(()=>{const t=n.sort;for(const t of F){if(t.atlst){for(const e of t.atlst){e.sort=false}}else{t.sort=false}}n.sort=true;if(t){n.descend=!n.descend}G()}));i.push(n.label+(t.name?"."+t.name:""))}s.style("border-right",a)}for(const t in k){p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# mutation").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#mutation");p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# sample").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#sample");let e;for(const n of o[t]){e=p.append("td").style("font-size","80%").style("overflow-y","hidden").style("height","0px").style("padding","0px").style("color",s[n.class].color).style("white-space","nowrap");e.append("div").html(s[n.class].label).style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+"."+s[n.class].label)}if(e){e.style("border-right",a)}}r.push(i.join("\t"));for(let t=0;t<h;t++){const e=c[t];const n=[e];const l=N.append("tr");l.append("td").text(t+1).style("font-size",".7em").style("text-align","right");for(const s of F){if(s.hide)continue;if(s.isgenename){l.append("td").text(c[t]).attr("class","sja_menuoption_y").style("color","black").style("display","table-cell").on("click",(()=>{W(c[t])}));continue}let o;for(const t of s.atlst){if(t.hide)continue;o=l.append("td").style("color","black").style("background-color","#f1f1f1");const s=t.get(e);if(typeof s=="number"){if(t.color){if(s>0){o.style("text-align","center").append("span").attr("class","sja_mcdot").style("background-color",t.color).html(s>1?s:"&nbsp;")}else{o.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html("&nbsp;")}}else{o.text(s)}}else{o.text(s)}n.push(s)}o.style("border-right",a)}for(const t in k){let r=0,i=0,c={},p=true,d=false;if(e in w){const s=w[e][t];if(!s)continue;p=false;if(s.pending){d=true;continue}r+=s.sample;i+=s.total;for(const t in s.class){if(!(t in c)){c[t]=0}c[t]+=s.class[t]}}if(p){l.append("td").attr("colspan",2+o[t].length);continue}if(d){l.append("td").attr("colspan",2+o[t].length).text("loading ...");continue}l.append("td").text(i).style("background-color","#f1f1f1");n.push(i);l.append("td").text(r).style("background-color","#f1f1f1");n.push(r);let f;for(const e of o[t]){f=l.append("td").style("text-align","center").style("background-color","#f1f1f1");const t=c[e.class];if(t){f.append("span").attr("class","sja_mcdot").style("background-color",s[e.class].color).html(t>1?t:"&nbsp;")}else{f.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html("&nbsp;")}n.push(t)}f.style("border-right",a)}r.push(n.join("\t"))}return r.join("\n")};G();function W(e){if(!(e in i))return;M.hide();const s=[];for(const e in t.dsset){s.push(e)}let n;for(const o in i[e].isoform){if(!n){n=p({x:100,y:100})}u({hostURL:r,jwt:t.jwt,holder:n.body,genome:t.genome,query:o,nopopup:true,dataset:s})}if(t.loadgeneexpressionfromofficialds){U({gene:e,genome:t.genome.name,loadgeneexpressionfromofficialds:t.loadgeneexpressionfromofficialds,hostURL:t.hostURL,jwt:t.jwt,x:1e3,y:80})}}}async function A(t,e,s,n){const o=await import("./plot.barplot-34841e70.js");return o.default(t,e,s,n)}new h;function T(t,e){const s=t=>{b(e,t)};if(!t.metadata)return s("no metadata");const n=t.metadata;const o=e.append("div").style("display","inline-block").style("border","solid 1px #ccc").style("margin","20px").style("padding","20px");const a=e.append("svg");if(!t.text)return s("text missing");const l=t.text.trim().split("\n");t.samples=[];const r=l[0].split("\t");for(let e=2;e<r.length;e++){t.samples.push(r[e])}if(t.samples.length==0)return s("no column names");t.items=[];for(let e=1;e<l.length;e++){const o=l[e].split("\t");const a=o[0];const r=n[a];if(!r)return s("invalid data type "+a);const i=o[1];const c=[];for(let e=2;e<o.length;e++){const n=o[e].split(";");const a=[];for(const o of n){if(!r[o]){return s("invalid value "+o+" at "+i+" and "+t.samples[e-2])}a.push(r[o].color)}c.push(a)}t.items.push({name:i,type:a,lst:c})}t.geneonrow=true;if(!t.rowh){t.rowh=20}if(!t.colw){t.colw=20}if(!t.rowspace){t.rowspace=2}if(!t.colspace){t.colspace=2}if(!t.rowlabtickspace){t.rowlabtickspace=4}if(!t.collabtickspace){t.collabtickspace=4}if(!t.rowtick){t.rowtick=5}if(!t.coltick){t.coltick=5}N(t,a,o,s)}function N(t,e,s,n){const o=t.metadata;for(const t in o){for(const e in o[t]){const s=o[t][e];if(!s.label)return n(".label missing for metadata "+t+"["+e+"]");if(!s.color)return n(".color missing for metadata "+t+"["+e+"]")}}for(const t in o){const e=s.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");e.append("div").text(t).style("margin","5px 3px").style("font-weight","bold");const n=e.append("div").style("margin","3px");for(const e in o[t]){const s=o[t][e];const a=n.append("div").style("margin","3px");a.append("div").style("display","inline-block").style("background-color",s.color).style("width","14px").style("height","14px").style("margin-right","10px");a.append("span").text(s.label)}}const a=t.rowh-3,l=t.colw-3;let r=[];for(const e of t.items){r.push(e.name)}let i=0;for(const s of r){e.append("text").text(s).attr("font-size",t.geneonrow?a:l).attr("font-family",x).each((function(){i=Math.max(i,this.getBBox().width)})).remove()}let c=0;for(const s of t.samples){e.append("text").text(s).attr("font-size",t.geneonrow?l:a).attr("font-family",x).each((function(){c=Math.max(c,this.getBBox().width)})).remove()}const p=t.geneonrow?i:c;const d=t.geneonrow?c:i;const f=t.samples.length*(t.colw+t.colspace)-t.colspace;const m=t.items.length*(t.rowh+t.rowspace)-t.rowspace;e.attr("width",p+t.rowlabtickspace+t.rowtick+f+100).attr("height",d+t.collabtickspace+t.coltick+m);const u=p+t.rowlabtickspace+t.rowtick;const h=d+t.collabtickspace+t.coltick;let g=h;for(const s of t.items){const n=e.append("g").attr("transform","translate("+(u-t.rowlabtickspace-t.rowtick)+","+(g+t.rowh/2)+")");n.append("text").text(s.name).attr("font-size",a).attr("font-family",x).attr("fill","black").attr("text-anchor","end").attr("dominant-baseline","central");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("x1",t.rowlabtickspace).attr("x2",t.rowlabtickspace+t.rowtick);g+=t.rowh+t.rowspace}let y=u;for(const s of t.samples){const n=e.append("g").attr("transform","translate("+(y+t.colw/2)+","+d+")");n.append("text").text(s).attr("font-size",l).attr("font-family",x).attr("fill","black").attr("dominant-baseline","central").attr("transform","rotate(-90)");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("y1",t.collabtickspace).attr("y2",t.collabtickspace+t.coltick);y+=t.colw+t.colspace}g=h;for(const s of t.items){let n=u;for(let o=0;o<t.samples.length;o++){t.samples[o];const a=e.append("g").attr("transform","translate("+(n+t.colw/2)+","+(g+t.rowh/2)+")");const l=t.rowh/s.lst[o].length;const r=s.lst[o];for(let e=0;e<r.length;e++){const s=r[e];a.append("rect").attr("x",-t.colw/2).attr("y",-t.rowh/2+e*l).attr("width",t.colw).attr("height",l).attr("fill",s).attr("shape-rendering","crispEdges")}n+=t.colw+t.colspace}g+=t.rowh+t.rowspace}e.append("rect").attr("x",u).attr("y",h).attr("width",t.samples.length*(t.colw+t.colspace)-t.colspace).attr("height",t.items.length*(t.rowh+t.rowspace)-t.rowspace).attr("stroke","black").attr("fill","none").attr("shape-rendering","crispEdges")}function C(t,e){for(const s of t.e2pca.list){const n=e.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");if(t.e2pca.list.length>1){n.style("border","solid 1px #ededed")}if(s.name){n.append("div").text(s.name).style("background-color","#f1f1f1").style("padding","5px 10px")}const o=n.append("div").style("margin","20px");R(t.hostURL+"/textfile").post(JSON.stringify({file:s.vectorfile,jwt:t.jwt}),(e=>{if(e.error){b(n,"Error getting vector file: "+e.error);return}import("./e2pca-4f1648e3.js").then((a=>{const[l,r]=a.e2pca_plot({holder:n,toprow:o,text:e.text,mdanno:t.patientannotation,obj:s});if(l){b(n,"Error: "+l);return}a.e2pca_genesearchui({holder:o,numdata2plot:r,hostURL:t.hostURL,jwt:t.jwt,obj:s,callback:()=>{O(t,s)}});if(t.patientannotation){s.boxplotdiv=n.append("div");const e=o.append("div").style("display","inline-block").style("margin-left","10px");B(t,s,e)}}))}))}}function O(t,e){if(!t.patientannotation){return}if(!e.expressiondata){return}if(!e.usetermkey){e.usetermkey=t.patientannotation.metadata[0].key}let s=null;for(const n of t.patientannotation.metadata){if(n.key==e.usetermkey){s=n;break}}if(!s){b(e.boxplotdiv,"invalid term key "+e.usetermkey);return}const n=[];for(const t of s.values){n.push({valuekey:t.key,label:t.label,color:t.color,samples:[]})}let o=e.expressiondata[0].value;let a=e.expressiondata[0].value;const l=[];for(const s of e.expressiondata){o=Math.min(o,s.value);a=Math.max(a,s.value);if(!t.patientannotation.annotation[s.sample]){l.push(s);continue}const r=t.patientannotation.annotation[s.sample][e.usetermkey];if(r==undefined){l.push(s);continue}for(const t of n){if(t.valuekey==r){t.samples.push(s);break}}}if(l.length){n.push({label:"unannotated",color:"#858585",samples:l})}e.boxplotdiv.selectAll("*").remove();import("./plot.boxplot-87ac2ce9.js").then((t=>{const s=t.default({list:n,holder:e.boxplotdiv,axislabel:e.searchedgene});if(s){b(e.boxplotdiv,"Boxplot: "+s)}}))}function B(t,e,s){const n=new h({border:"",padding:""});const o="#858585";s.append("span").text("Choose metadata").attr("class","sja_clbtext").on("click",(s=>{n.clear();n.showunder(s.target);for(const s of t.patientannotation.metadata){n.d.append("div").attr("class","sja_menuoption").text(s.label).on("click",(()=>{e.usetermkey=s.key;n.hide();e.circles.attr("fill",(e=>{const n=t.patientannotation.annotation[e.sample];if(!n)return o;const a=n[s.key];if(!a)return o;const l=t.patientannotation.mdh[s.key].values[a];if(!l){console.error("invalid value key: "+a+" at term: "+s.key);return o}return l.color}));e.legendholder.selectAll("*").remove();e.legendholder.append("div").style("margin-bottom","5px").text(s.label).style("font-weight","bold");for(const t of s.values){const s=e.legendholder.append("div").style("margin-bottom","3px");s.append("span").attr("class","sja_mcdot").style("background-color",t.color).style("margin-right","5px").html("&nbsp;");s.append("span").text(t.label)}if(e.expressiondata){O(t,e)}}))}}))}async function H(t,e,s,n={callbacks:{sjcharts:{}}}){const o=n.debugmode;if(o){window.cohort=t}if(!("hostURL"in t))t.hostURL=s;if(t.headerhtml){e.append("div").html(t.headerhtml)}let a=0;for(const e in t.p2st){a++;for(const s in t.p2st[e]){const n=t.p2st[e][s];n.sampletype=s;n.patientname=e;n.cohort=t}}const l=e.append("table").style("margin-top","20px");const r=l.append("tr");t.__tdleft=r.append("td").style("vertical-align","top").style("padding-right","20px");t.__tdright=r.append("td").style("vertical-align","top");if(t.hide_navigation){t.__tdleft.style("display","none")}if(!t.hide_addnewfile){const[n,o]=I(t);o.style("background-color","#f4f4f4").style("margin","0px 20px 20px 0px").style("padding","20px");n.html('&#43; <span style="font-size:.8em">NEW FILE</span>');const a=o.append("p");const l=o.append("div");const r=()=>{l.selectAll("*").remove();l.append("span").html("Select data type&nbsp;");const n=k(l).style("margin-right","20px");l.append("input").attr("type","file").on("change",(o=>{a.text("");const l=o.target.files[0];if(!l){r();return}if(l.size==0){a.text("Wrong file: "+l.name);r();return}const i=new FileReader;i.onload=o=>{a.text(l.name+" loaded.");const i=v(t.genome.name);if(!i){a.text("should not happen");r();return}const c=j(o.target.result,n.node().selectedIndex,i);if(c){a.text("Error with "+l.name+": "+c);r();return}let p=null;for(const e in t.dsset){p=t.dsset[e];break}if(!p){a.text("no dataset in cohort, this should not happen");r();return}const d=_({flag:i,cohort:t,flag2thisds:p});if(d){a.text("Error with "+l.name+": "+d);r();return}if(i.good==0){a.text(l.name+": no data loaded");r();return}a.text("");r();e.selectAll("*").remove();H(t,e,s)};i.onerror=function(){a.text("Error reading file "+l.name);r();return};a.text("Parsing file "+l.name+" ...");i.readAsText(l,"utf8")}))};r()}const[i,c]=I(t);const p=S(t,i,c);const m=[];for(const e in t.dsset){const s=t.genome.datasets[e];if(s.hassample){m.push(e)}if(s.hasdisease);}if(p){const[e,n]=I(t,t.show_genetable);L(t,p,e,n,a>0,s)}let h=false;if(m.length||a>0){t.patientset={};for(const e in t.p2st){t.patientset[e]={trlst:[],samples:t.p2st[e]}}if(m.length>0&&!t.hardcodemap){h=true}}if(t.show_heatmap){h=true}if(h){const[e,s]=I(t);e.text("HEATMAP").style("font-size",".8em");const a=await w();const l=(t.name?t.name+".":"")+"hm";a.heatmap({cohort:t,hassamplelst:m,blockinit:u,debugmode:o,dom:{butt:e.node(),holder:s.node()},tp_getgeneexpression:U,show_heatmap:t.show_heatmap,instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&(n.callbacks.sjcharts[l]||n.callbacks.sjcharts.hm)})}if(t.hardcodemap){const[e,s]=I(t,t.show_hardcodemap);e.text("HEATMAP").style("font-size",".8em");for(const e of t.hardcodemap){const t=s.append("div").style("display","inline-block").style("margin-bottom","20px");if(e.name){t.append("h3").text(e.name)}T(e,t)}}if(t.survivalJSON){const[e,s]=I(t,t.show_hardcodemap);e.text("SURVIVAL CURVE").style("font-size",".8em").style("border-color","transparent");const o=await w();o.survival({cohort:t,dom:{butt:e.node(),holder:s.node()},instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&n.callbacks.sjcharts.sv})}if(t.browserview){const[n,a]=I(t);n.style("font-size",".8em").text("BROWSER");let l=false;n.on("click",(()=>{if(a.style("display")=="none"){n.style("border-color","black");f(a)}else{n.style("border-color","transparent");d(a)}if(l)return;l=true;const r={holder:a,genome:t.genome,debugmode:o,dogtag:t.genome.name,hostURL:s,jwt:t.jwt,cohort:t,nobox:t.browserview.nobox,datasetqueries:t.browserview.datasetqueries,tklst:[]};if(t.browserview.position){r.chr=t.browserview.position.chr;r.start=t.browserview.position.start;r.stop=t.browserview.position.stop}if(t.browserview.nativetracks){r.nativetracks=t.browserview.nativetracks}if(t.browserview.tracks){for(const e of t.browserview.tracks){r.tklst.push(e)}}if(t.browserview.assays){if(!t.assaylst){console.error("assaylst not set!");t.assaylst=[]}for(const e in t.browserview.assays){const s=t.browserview.assays[e];if(!s.assayobj){continue}if(s.combined){if(s.combinetk){r.tklst.push(s.combinetk)}}else{for(const e in t.patientset){for(const n in t.patientset[e].samples){for(const o of t.patientset[e].samples[n].tktemplate){if(o.id==s.assayobj.id){r.tklst.push(o)}}}}}}}if(t.browserview.defaultassaytracks){const[s,n]=J(t);if(s){b(e,"error with .defaultassaytracks: "+s)}else{for(const t of n)r.tklst.push(t)}}for(const t of r.tklst){t.iscustom=true}z(r)}));if(t.show_browser){n.node().click()}}if(t.e2pca){const[e,s]=I(t);e.text(t.e2pca.label).style("font-size",".8em");let n=false;e.on("click",(()=>{if(s.style("display")=="none"){e.style("border-color","black");f(s)}else{e.style("border-color","transparent");d(s)}if(n)return;n=true;C(t,s)}));if(t.show_e2pca){e.node().click()}}}function I(t,e){const s=t.__tdleft.append("div").attr("class","sja_menuoption").style("margin-top","10px").style("white-space","nowrap");const n=t.__tdright.append("div").style("padding-bottom","20px");s.on("click",(()=>{if(n.style("display")=="block"){d(n);s.style("border","solid 1px transparent")}else{s.style("border","solid 1px #545454");f(n)}}));if(e){s.style("border","solid 1px #545454");n.style("display","block")}else{s.style("border","solid 1px transparent");n.style("display","none")}return[s,n]}function J(t){if(!t.browserview)return[null,[]];if(!t.browserview.defaultassaytracks)return[null,[]];const e=[];for(const s of t.browserview.defaultassaytracks){const n=t.p2st[s.level1];if(!n)continue;if(s.level2){const t=n[s.level2];if(!t)continue;if(!t.tktemplate)continue;for(const n of t.tktemplate){if(n.assayname==s.assay){e.push(n);if(s.justone){break}}}}else{for(const t in n){const o=n[t];if(o.tktemplate){for(const t of o.tktemplate){if(t.assayname==s.assay){e.push(t)}}}}}}return[null,e]}var P=Object.freeze({__proto__:null,default:H});export{R as d,P as t};
1
+ import{bC as t,bi as e,z as s,ak as n,ar as o,aP as a,aR as l,aQ as r,bD as i,bE as c,Z as p,ac as d,p as f,ab as m,e as u,M as h,bF as g,bG as y,j as b,ah as x,aa as w,bH as k,bI as v,bJ as j,bK as _}from"./app-0de0ae35.js";import{b as z}from"./block.lazyload-19a55cac.js";function E(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(t.status===204||t.status===205)return;return t.json()}function R(t,e){return fetch(t,e).then(E)}function S(p,d,f){let m=true;for(const t in p.dsset){m=false}if(m){d.remove();f.remove();return null}const u=new Map;let h=0;for(const s in p.dsset){const n=p.dsset[s].bulkdata;if(!n)continue;const o=new Map;const a=new Set;const l=new Set;for(const s in n){for(const r of n[s]){const s=r.class;if(s==t){a.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}if(s==e){l.add((r.sample?r.sample:"")+"."+(r.sampletype?r.sampletype:"")+JSON.stringify(r.pairlst));continue}h++;if(!o.has(s)){o.set(s,0)}o.set(s,o.get(s)+1)}}if(a.size){o.set(t,a.size);h+=a.size}if(l.size){o.set(e,l.size);h+=l.size}u.set(s,o)}d.html(h+' <span style="font-size:.8em">VARIANTS</span>').attr("aria-label","A summary of variant hits from all genes, in descending order.");const g=f.append("table").style("margin-right","20px");const y=g.append("tr");const b=g.append("tr");const x=(t,e,s)=>{e.selectAll("*").remove();for(const n of t){const t=e.append("div").style("margin","10px");t.append("span").attr("class","sja_mcdot").style("background-color",n.color).style("padding","2px 5px").style("margin-right","5px").html(s?n.count:"&nbsp;&nbsp;");t.append("span").style("color",n.color).text(n.label)}};const w={};for(const[d,f]of u){const m=[];for(const[t,e]of f){const i=s[t];if(i.dt==n||i.dt==o||i.dt==a||i.dt==l||i.dt==r){m.push({key:t,label:i.label,color:i.color,count:e})}}m.sort(((t,e)=>e.count-t.count));for(const n of[i,c,t,e]){if(f.has(n)){const t=s[n];m.push({key:n,label:t.label,color:t.color,count:f.get(n)})}}w[d]=m;const u=b.append("td").attr("valign","top").attr("shownumber",0);x(m,u,true);const h=y.append("td").style("border-bottom","solid 1px #ccc").style("padding","5px 10px").style("color","#858585").style("font-size",".8em").text(p.dsset[d].label);h.append("button").style("margin","5px").text("Hide number").on("click",(t=>{const e=u.attr("shownumber")=="1";x(m,u,e);u.attr("shownumber",e?"0":"1");t.target.innerHTML=e?"Hide number":"Show number"}))}return h?w:null}function U(t){Promise.resolve().then((()=>{if(!t.gene)throw{message:"gene name missing"};if(!t.genome)throw{message:"genome name missing"};if(t.hostURL==undefined)throw{message:"no hostURL"};if(!t.loadgeneexpressionfromofficialds)throw{message:"loadgeneexpressionfromofficialds missing"};if(!t.loadgeneexpressionfromofficialds.dataset)throw{message:"dataset missing from loadgeneexpressionfromofficialds"};const e={genome:t.genome,dsname:t.loadgeneexpressionfromofficialds.dataset,expressiononly:1,genename:t.gene,jwt:t.jwt};return fetch(new Request(t.hostURL+"/dsdata",{method:"POST",body:JSON.stringify(e)})).then((t=>t.json())).then((t=>{if(t.error)throw{message:t.error};if(!t.data)throw{message:"cannot get data"};return t.data}))})).then((e=>{for(let s=0;s<e.length;s++){const n={data:e[s].lst,expp:e[s].config,genename:t.gene,presize:{x:t.x+40*s,y:t.y+40*s,width:350,height:650}};import("./ep-b2e464fe.js").then((t=>{new t.default(n)}))}})).catch((e=>{const s=p({x:t.x||600,y:t.y||80});s.body.append("p").text("Error getting gene expression: "+e)}))}const M=new h;function L(t,e,n,o,a,l){if(!e)return null;const r=l||"";const i={};let c=[];for(const e in t.dsset){for(const s in t.dsset[e].bulkdata){if(!(s in i)){i[s]={mcount:0,isoform:{}};c.push(s)}i[s].mcount+=t.dsset[e].bulkdata[s].length;for(const n of t.dsset[e].bulkdata[s]){const t=n.isoform;if(!t)continue;i[s].isoform[t]=1}}}let h=Math.min(100,c.length);const x=new Set(["Intron","P","S","E",g,y]);const w={};const k={};let v=true;n.html(c.length+' <span style="font-size:.8em">GENES</span>').attr("aria-label","A summary table of gene by variant type, order by number of hits in descending order.");const j=o.append("div");const _=t=>{b(j,t)};const z=o.append("div").style("margin-bottom","8px");z.append("button").style("margin-right","10px").text("Configure").on("click",(()=>{if(R.style("display")=="block"){d(R)}else{f(R)}}));z.append("button").style("margin-right","10px").text("Download").on("click",(()=>{const t=G();m("Gene summary",[{text:t}])}));z.append("input").attr("type","text").attr("size",10).attr("placeholder","Find gene").style("margin","0px 20px 0px 5px").on("keyup",(e=>{let s=e.target.value;if(s==""){M.hide();return}if(t.geneToUpper){s=s.toUpperCase()}if(e.code=="Enter"){M.hide();e.target.value="";if(s in i){W(s)}return}const n=[];for(const t in i){if(t.indexOf(s)==0){n.push({name:t,count:i[t].mcount})}}if(n.length==0){M.hide();return}n.sort(((t,e)=>e.count-t.count));M.clear().showunder(e.target);for(let t=0;t<Math.min(30,n.length);t++){const e=n[t].name;const s=M.d.append("div").attr("class","sja_menuoption_y").on("click",(()=>{W(e)}));s.append("span").text(e);s.append("span").style("font-size",".7em").text(n[t].count)}}));z.append("a").attr("href","https://docs.google.com/document/d/1NrH1H-FUWJtEKLk69V-k8uaYHOr9YO2obM9ZLZslEQ0/edit?usp=sharing").attr("target","_blank").text("Help");const E=o.append("div").style("border","solid 1px #ccc").style("margin","10px 0px");const R=E.append("div").style("display","none").style("background-color","#f1f1f1");const S=140;const L=E.append("div").style("padding-top",S+"px").style("position","relative");const T=L.append("div").style("overflow-y","scroll").style("height","400px").style("resize","vertical");const N=T.append("table").style("border-spacing","1px").style("border-collapse","separate");const C=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const O=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const B=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");const H=C.append("span").style("padding-right","10px").text("Showing "+(h<c.length?"top "+h+" genes":"all genes"));C.append("button").text("more").on("click",(()=>{h=Math.min(c.length,h+10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));C.append("button").text("less").on("click",(()=>{h=Math.max(1,h-10);H.text("Showing "+(h<c.length?"top "+h:"all genes"));G()}));O.append("span").text("Show subset").style("padding-right","10px");const I=O.append("textarea").attr("rows",1).attr("cols",20).attr("placeholder","enter gene names").style("margin-right","10px");O.append("button").text("Submit").on("click",(()=>{const e=I.property("value").trim();if(e=="")return;const s=e.split(/[\s\t\n]+/),n=[],o=[];for(const e of s){if(e=="")continue;const s=t.geneToUpper?e.trim().toUpperCase():e.trim();if(s in i){n.push(s)}else{o.push(e)}}if(o.length){_("No match found for "+o.join(", "))}if(n.length==0)return;c=n;h=n.length;G()}));O.append("button").text("Use default").on("click",(()=>{c=[];for(const t in i){c.push(t)}h=Math.min(100,c.length);G()}));B.append("span").html("Noncoding mutation visibility:&nbsp;");const J=B.append("select").on("change",(()=>{v=!v;for(const t of F){if(!t.atlst){continue}for(const e of t.atlst){if(!e.ismclass)continue;if(v){e.hide=false;continue}e.hide=x.has(e.key)}}G()}));J.append("option").text("show").attr("value","y");J.append("option").text("hide").attr("value","n");B.append("p").style("font-size",".8em").style("color","#858585").text("Including: silent, splice_region, exon, UTR, and intron.");const P=[];for(const e in t.dsset){const s=t.dsset[e];if(s.hassample){P.push(s)}}if(P.length){const t=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");t.append("span").html("Gene recurrence (# of samples for each gene):&nbsp;");for(const e of P){t.append("button").text(P.length==1?"show":e.label).on("click",(t=>{const s=[];for(const t of c){const n={};let o=0;if(t in e.bulkdata){for(const s of e.bulkdata[t]){if(!v&&x.has(s.class))return;if(!(s.sample in n)){n[s.sample]=1;o++}}}s.push({name:t,size:o})}const n=t.target.getBoundingClientRect();A(s,"#76B38C","Number of samples"+(v?"":", excluding noncoding mutations"),n)}))}const e=R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc");e.append("span").html("Mutation burden (# mutations for each sample):&nbsp;");for(const t of P){e.append("button").text(P.length==1?"show":t.label).on("click",(e=>{const s={};for(const e in t.bulkdata){for(const n of t.bulkdata[e]){const t=n.sample;if(t){if(!v&&x.has(n.class))continue;if(!(t in s)){s[t]=0}s[t]++}}}const n=[];for(const t in s){n.push({name:t,size:s[t]})}const o=e.target.getBoundingClientRect();A(n,"#76B38C","Mutation burden"+(v?"":", excluding noncoding mutations"),o)}))}}R.append("div").style("padding","10px").style("border-bottom","dashed 1px #ccc").text("Click on a column header to rank genes.");const F=[{label:"Name",isgenename:true}];let V=true;let q=0;for(const s in t.dsset){q++;const n={name:t.dsset[s].label,atlst:[{label:"# mutation",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;if(v){return t.dsset[s].bulkdata[e].length}let n=0;for(const o of t.dsset[s].bulkdata[e]){if(!x.has(o.class))n++}return n},rotate:true,descend:true,sort:V}]};V=false;if(t.dsset[s].hassample){n.atlst.push({label:"# sample",get:e=>{if(!(e in t.dsset[s].bulkdata))return 0;const n=new Set;for(const o of t.dsset[s].bulkdata[e]){if(!v&&x.has(o.class))continue;if(!o.sample)continue;n.add(o.sample)}return n.size},rotate:true,descend:true})}for(const o of e[s]){o.ismclass=true;o.get=e=>{if(!(e in t.dsset[s].bulkdata))return 0;let n=0;for(const a of t.dsset[s].bulkdata[e]){if(a.class==o.key)n++}return n};o.rotate=true;o.descend=true;n.atlst.push(o)}F.push(n)}const G=()=>{let e=null,n=null;for(const t of F){if(t.hide)continue;if(t.atlst){for(const s of t.atlst){if(s.hide)continue;if(s.sort){e=s;continue}if(s.secondsort){n=s;continue}}continue}if(t.sort){e=t;continue}if(t.secondsort){n=t}}if(e){c.sort(((t,s)=>{if(e.isgenename){if(t<s){return e.descend?1:-1}return e.descend?-1:1}const o=e.get(t),a=e.get(s);if(typeof o=="string"){if(o<a){return e.descend?1:-1}return e.descend?-1:1}if(o==a){if(n){const e=n.get(t),o=n.get(s);if(e==o){if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}else{return o-e}}else{if(t in w){if(!(s in w))return-1}else if(s in w){return 1}}return t<s?-1:1}return e.descend?a-o:o-a}))}const o={};for(const t in k){const e={};for(let s=0;s<h;s++){const n=c[s];if(n in w&&t in w[n]){for(const s in w[n][t].class){if(!(s in e)){e[s]=0}e[s]+=w[n][t].class[s]}}}const s=[];for(const t in e){s.push({class:t,n:e[t]})}s.sort(((t,e)=>e.n-t.n));o[t]=s}const a="solid 10px white";N.selectAll("*").remove();const l=N.append("tr");l.append("td").style("height","0px").style("padding","0px");l.append("td").style("height","0px").style("padding","0px");for(const t of F){if(!t.atlst)continue;let e=0;for(const s of t.atlst){if(!s.hide)e++}l.append("td").attr("colspan",e).style("text-align","center").style("border-right",a).append("div").style("position","absolute").style("top","1px").style("border-bottom",q>1?"solid 1px black":"").text(q>1?t.name:"")}for(const e in k){const s=l.append("td").attr("colspan",2+o[e].length).style("border-right",a).append("div").style("top","2px").style("position","absolute").style("color",t.genome.datasets[e].color).style("border-bottom","solid 1px "+t.genome.datasets[e].color);s.append("span").text(t.genome.datasets[e].label+(k[e].totalsample?", "+k[e].totalsample+" total samples":""));s.append("div").style("position","absolute").style("right","0px").style("top","-5px").attr("class","sja_clb").html("&#10005;").on("click",(()=>{delete k[e];for(const t in w){delete w[t][e]}G()}))}const r=[];const i=[];const p=N.append("tr");p.append("td").style("height","0px").style("padding","0px");for(const t of F){if(t.hide)continue;let e=[];if(t.atlst){e=t.atlst}else{e=[t]}let s;for(const n of e){if(n.hide)continue;s=p.append("td").attr("class","sja_clbtext").style("font-size",".8em").style("height","0px").style("padding","0px").style("color",n.color?n.color:"black").style("white-space","nowrap");s.append("div").html(n.rotate?n.sort?(n.descend?"&#9664;":"&#9654;")+" "+n.label:n.label:n.label+(n.sort?" "+(n.descend?"&#9662;":"&#9652;"):"")).style("position","absolute").style("top",S-25+"px").style("transform",n.rotate?"translate(-3px,0px) rotate(-90deg)":"").style("width",n.rotate?"25px":"auto").on("click",(()=>{const t=n.sort;for(const t of F){if(t.atlst){for(const e of t.atlst){e.sort=false}}else{t.sort=false}}n.sort=true;if(t){n.descend=!n.descend}G()}));i.push(n.label+(t.name?"."+t.name:""))}s.style("border-right",a)}for(const t in k){p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# mutation").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#mutation");p.append("td").style("font-size",".8em").style("height","0px").style("padding","0px").style("white-space","nowrap").append("div").html("# sample").style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+".#sample");let e;for(const n of o[t]){e=p.append("td").style("font-size","80%").style("overflow-y","hidden").style("height","0px").style("padding","0px").style("color",s[n.class].color).style("white-space","nowrap");e.append("div").html(s[n.class].label).style("position","absolute").style("top",S-25+"px").style("transform","translate(-3px,0px) rotate(-90deg)").style("width","25px");i.push(t+"."+s[n.class].label)}if(e){e.style("border-right",a)}}r.push(i.join("\t"));for(let t=0;t<h;t++){const e=c[t];const n=[e];const l=N.append("tr");l.append("td").text(t+1).style("font-size",".7em").style("text-align","right");for(const s of F){if(s.hide)continue;if(s.isgenename){l.append("td").text(c[t]).attr("class","sja_menuoption_y").style("color","black").style("display","table-cell").on("click",(()=>{W(c[t])}));continue}let o;for(const t of s.atlst){if(t.hide)continue;o=l.append("td").style("color","black").style("background-color","#f1f1f1");const s=t.get(e);if(typeof s=="number"){if(t.color){if(s>0){o.style("text-align","center").append("span").attr("class","sja_mcdot").style("background-color",t.color).html(s>1?s:"&nbsp;")}else{o.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html("&nbsp;")}}else{o.text(s)}}else{o.text(s)}n.push(s)}o.style("border-right",a)}for(const t in k){let r=0,i=0,c={},p=true,d=false;if(e in w){const s=w[e][t];if(!s)continue;p=false;if(s.pending){d=true;continue}r+=s.sample;i+=s.total;for(const t in s.class){if(!(t in c)){c[t]=0}c[t]+=s.class[t]}}if(p){l.append("td").attr("colspan",2+o[t].length);continue}if(d){l.append("td").attr("colspan",2+o[t].length).text("loading ...");continue}l.append("td").text(i).style("background-color","#f1f1f1");n.push(i);l.append("td").text(r).style("background-color","#f1f1f1");n.push(r);let f;for(const e of o[t]){f=l.append("td").style("text-align","center").style("background-color","#f1f1f1");const t=c[e.class];if(t){f.append("span").attr("class","sja_mcdot").style("background-color",s[e.class].color).html(t>1?t:"&nbsp;")}else{f.append("span").attr("class","sja_mcdot").style("margin","0px 4px").html("&nbsp;")}n.push(t)}f.style("border-right",a)}r.push(n.join("\t"))}return r.join("\n")};G();function W(e){if(!(e in i))return;M.hide();const s=[];for(const e in t.dsset){s.push(e)}let n;for(const o in i[e].isoform){if(!n){n=p({x:100,y:100})}u({hostURL:r,jwt:t.jwt,holder:n.body,genome:t.genome,query:o,nopopup:true,dataset:s})}if(t.loadgeneexpressionfromofficialds){U({gene:e,genome:t.genome.name,loadgeneexpressionfromofficialds:t.loadgeneexpressionfromofficialds,hostURL:t.hostURL,jwt:t.jwt,x:1e3,y:80})}}}async function A(t,e,s,n){const o=await import("./plot.barplot-45b57df9.js");return o.default(t,e,s,n)}new h;function T(t,e){const s=t=>{b(e,t)};if(!t.metadata)return s("no metadata");const n=t.metadata;const o=e.append("div").style("display","inline-block").style("border","solid 1px #ccc").style("margin","20px").style("padding","20px");const a=e.append("svg");if(!t.text)return s("text missing");const l=t.text.trim().split("\n");t.samples=[];const r=l[0].split("\t");for(let e=2;e<r.length;e++){t.samples.push(r[e])}if(t.samples.length==0)return s("no column names");t.items=[];for(let e=1;e<l.length;e++){const o=l[e].split("\t");const a=o[0];const r=n[a];if(!r)return s("invalid data type "+a);const i=o[1];const c=[];for(let e=2;e<o.length;e++){const n=o[e].split(";");const a=[];for(const o of n){if(!r[o]){return s("invalid value "+o+" at "+i+" and "+t.samples[e-2])}a.push(r[o].color)}c.push(a)}t.items.push({name:i,type:a,lst:c})}t.geneonrow=true;if(!t.rowh){t.rowh=20}if(!t.colw){t.colw=20}if(!t.rowspace){t.rowspace=2}if(!t.colspace){t.colspace=2}if(!t.rowlabtickspace){t.rowlabtickspace=4}if(!t.collabtickspace){t.collabtickspace=4}if(!t.rowtick){t.rowtick=5}if(!t.coltick){t.coltick=5}N(t,a,o,s)}function N(t,e,s,n){const o=t.metadata;for(const t in o){for(const e in o[t]){const s=o[t][e];if(!s.label)return n(".label missing for metadata "+t+"["+e+"]");if(!s.color)return n(".color missing for metadata "+t+"["+e+"]")}}for(const t in o){const e=s.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");e.append("div").text(t).style("margin","5px 3px").style("font-weight","bold");const n=e.append("div").style("margin","3px");for(const e in o[t]){const s=o[t][e];const a=n.append("div").style("margin","3px");a.append("div").style("display","inline-block").style("background-color",s.color).style("width","14px").style("height","14px").style("margin-right","10px");a.append("span").text(s.label)}}const a=t.rowh-3,l=t.colw-3;let r=[];for(const e of t.items){r.push(e.name)}let i=0;for(const s of r){e.append("text").text(s).attr("font-size",t.geneonrow?a:l).attr("font-family",x).each((function(){i=Math.max(i,this.getBBox().width)})).remove()}let c=0;for(const s of t.samples){e.append("text").text(s).attr("font-size",t.geneonrow?l:a).attr("font-family",x).each((function(){c=Math.max(c,this.getBBox().width)})).remove()}const p=t.geneonrow?i:c;const d=t.geneonrow?c:i;const f=t.samples.length*(t.colw+t.colspace)-t.colspace;const m=t.items.length*(t.rowh+t.rowspace)-t.rowspace;e.attr("width",p+t.rowlabtickspace+t.rowtick+f+100).attr("height",d+t.collabtickspace+t.coltick+m);const u=p+t.rowlabtickspace+t.rowtick;const h=d+t.collabtickspace+t.coltick;let g=h;for(const s of t.items){const n=e.append("g").attr("transform","translate("+(u-t.rowlabtickspace-t.rowtick)+","+(g+t.rowh/2)+")");n.append("text").text(s.name).attr("font-size",a).attr("font-family",x).attr("fill","black").attr("text-anchor","end").attr("dominant-baseline","central");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("x1",t.rowlabtickspace).attr("x2",t.rowlabtickspace+t.rowtick);g+=t.rowh+t.rowspace}let y=u;for(const s of t.samples){const n=e.append("g").attr("transform","translate("+(y+t.colw/2)+","+d+")");n.append("text").text(s).attr("font-size",l).attr("font-family",x).attr("fill","black").attr("dominant-baseline","central").attr("transform","rotate(-90)");n.append("line").attr("stroke","black").attr("shape-rendering","crispEdges").attr("y1",t.collabtickspace).attr("y2",t.collabtickspace+t.coltick);y+=t.colw+t.colspace}g=h;for(const s of t.items){let n=u;for(let o=0;o<t.samples.length;o++){t.samples[o];const a=e.append("g").attr("transform","translate("+(n+t.colw/2)+","+(g+t.rowh/2)+")");const l=t.rowh/s.lst[o].length;const r=s.lst[o];for(let e=0;e<r.length;e++){const s=r[e];a.append("rect").attr("x",-t.colw/2).attr("y",-t.rowh/2+e*l).attr("width",t.colw).attr("height",l).attr("fill",s).attr("shape-rendering","crispEdges")}n+=t.colw+t.colspace}g+=t.rowh+t.rowspace}e.append("rect").attr("x",u).attr("y",h).attr("width",t.samples.length*(t.colw+t.colspace)-t.colspace).attr("height",t.items.length*(t.rowh+t.rowspace)-t.rowspace).attr("stroke","black").attr("fill","none").attr("shape-rendering","crispEdges")}function C(t,e){for(const s of t.e2pca.list){const n=e.append("div").style("display","inline-block").style("margin","20px").style("vertical-align","top");if(t.e2pca.list.length>1){n.style("border","solid 1px #ededed")}if(s.name){n.append("div").text(s.name).style("background-color","#f1f1f1").style("padding","5px 10px")}const o=n.append("div").style("margin","20px");R(t.hostURL+"/textfile").post(JSON.stringify({file:s.vectorfile,jwt:t.jwt}),(e=>{if(e.error){b(n,"Error getting vector file: "+e.error);return}import("./e2pca-02adebbd.js").then((a=>{const[l,r]=a.e2pca_plot({holder:n,toprow:o,text:e.text,mdanno:t.patientannotation,obj:s});if(l){b(n,"Error: "+l);return}a.e2pca_genesearchui({holder:o,numdata2plot:r,hostURL:t.hostURL,jwt:t.jwt,obj:s,callback:()=>{O(t,s)}});if(t.patientannotation){s.boxplotdiv=n.append("div");const e=o.append("div").style("display","inline-block").style("margin-left","10px");B(t,s,e)}}))}))}}function O(t,e){if(!t.patientannotation){return}if(!e.expressiondata){return}if(!e.usetermkey){e.usetermkey=t.patientannotation.metadata[0].key}let s=null;for(const n of t.patientannotation.metadata){if(n.key==e.usetermkey){s=n;break}}if(!s){b(e.boxplotdiv,"invalid term key "+e.usetermkey);return}const n=[];for(const t of s.values){n.push({valuekey:t.key,label:t.label,color:t.color,samples:[]})}let o=e.expressiondata[0].value;let a=e.expressiondata[0].value;const l=[];for(const s of e.expressiondata){o=Math.min(o,s.value);a=Math.max(a,s.value);if(!t.patientannotation.annotation[s.sample]){l.push(s);continue}const r=t.patientannotation.annotation[s.sample][e.usetermkey];if(r==undefined){l.push(s);continue}for(const t of n){if(t.valuekey==r){t.samples.push(s);break}}}if(l.length){n.push({label:"unannotated",color:"#858585",samples:l})}e.boxplotdiv.selectAll("*").remove();import("./plot.boxplot-06cef6e2.js").then((t=>{const s=t.default({list:n,holder:e.boxplotdiv,axislabel:e.searchedgene});if(s){b(e.boxplotdiv,"Boxplot: "+s)}}))}function B(t,e,s){const n=new h({border:"",padding:""});const o="#858585";s.append("span").text("Choose metadata").attr("class","sja_clbtext").on("click",(s=>{n.clear();n.showunder(s.target);for(const s of t.patientannotation.metadata){n.d.append("div").attr("class","sja_menuoption").text(s.label).on("click",(()=>{e.usetermkey=s.key;n.hide();e.circles.attr("fill",(e=>{const n=t.patientannotation.annotation[e.sample];if(!n)return o;const a=n[s.key];if(!a)return o;const l=t.patientannotation.mdh[s.key].values[a];if(!l){console.error("invalid value key: "+a+" at term: "+s.key);return o}return l.color}));e.legendholder.selectAll("*").remove();e.legendholder.append("div").style("margin-bottom","5px").text(s.label).style("font-weight","bold");for(const t of s.values){const s=e.legendholder.append("div").style("margin-bottom","3px");s.append("span").attr("class","sja_mcdot").style("background-color",t.color).style("margin-right","5px").html("&nbsp;");s.append("span").text(t.label)}if(e.expressiondata){O(t,e)}}))}}))}async function H(t,e,s,n={callbacks:{sjcharts:{}}}){const o=n.debugmode;if(o){window.cohort=t}if(!("hostURL"in t))t.hostURL=s;if(t.headerhtml){e.append("div").html(t.headerhtml)}let a=0;for(const e in t.p2st){a++;for(const s in t.p2st[e]){const n=t.p2st[e][s];n.sampletype=s;n.patientname=e;n.cohort=t}}const l=e.append("table").style("margin-top","20px");const r=l.append("tr");t.__tdleft=r.append("td").style("vertical-align","top").style("padding-right","20px");t.__tdright=r.append("td").style("vertical-align","top");if(t.hide_navigation){t.__tdleft.style("display","none")}if(!t.hide_addnewfile){const[n,o]=I(t);o.style("background-color","#f4f4f4").style("margin","0px 20px 20px 0px").style("padding","20px");n.html('&#43; <span style="font-size:.8em">NEW FILE</span>');const a=o.append("p");const l=o.append("div");const r=()=>{l.selectAll("*").remove();l.append("span").html("Select data type&nbsp;");const n=k(l).style("margin-right","20px");l.append("input").attr("type","file").on("change",(o=>{a.text("");const l=o.target.files[0];if(!l){r();return}if(l.size==0){a.text("Wrong file: "+l.name);r();return}const i=new FileReader;i.onload=o=>{a.text(l.name+" loaded.");const i=v(t.genome.name);if(!i){a.text("should not happen");r();return}const c=j(o.target.result,n.node().selectedIndex,i);if(c){a.text("Error with "+l.name+": "+c);r();return}let p=null;for(const e in t.dsset){p=t.dsset[e];break}if(!p){a.text("no dataset in cohort, this should not happen");r();return}const d=_({flag:i,cohort:t,flag2thisds:p});if(d){a.text("Error with "+l.name+": "+d);r();return}if(i.good==0){a.text(l.name+": no data loaded");r();return}a.text("");r();e.selectAll("*").remove();H(t,e,s)};i.onerror=function(){a.text("Error reading file "+l.name);r();return};a.text("Parsing file "+l.name+" ...");i.readAsText(l,"utf8")}))};r()}const[i,c]=I(t);const p=S(t,i,c);const m=[];for(const e in t.dsset){const s=t.genome.datasets[e];if(s.hassample){m.push(e)}if(s.hasdisease);}if(p){const[e,n]=I(t,t.show_genetable);L(t,p,e,n,a>0,s)}let h=false;if(m.length||a>0){t.patientset={};for(const e in t.p2st){t.patientset[e]={trlst:[],samples:t.p2st[e]}}if(m.length>0&&!t.hardcodemap){h=true}}if(t.show_heatmap){h=true}if(h){const[e,s]=I(t);e.text("HEATMAP").style("font-size",".8em");const a=await w();const l=(t.name?t.name+".":"")+"hm";a.heatmap({cohort:t,hassamplelst:m,blockinit:u,debugmode:o,dom:{butt:e.node(),holder:s.node()},tp_getgeneexpression:U,show_heatmap:t.show_heatmap,instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&(n.callbacks.sjcharts[l]||n.callbacks.sjcharts.hm)})}if(t.hardcodemap){const[e,s]=I(t,t.show_hardcodemap);e.text("HEATMAP").style("font-size",".8em");for(const e of t.hardcodemap){const t=s.append("div").style("display","inline-block").style("margin-bottom","20px");if(e.name){t.append("h3").text(e.name)}T(e,t)}}if(t.survivalJSON){const[e,s]=I(t,t.show_hardcodemap);e.text("SURVIVAL CURVE").style("font-size",".8em").style("border-color","transparent");const o=await w();o.survival({cohort:t,dom:{butt:e.node(),holder:s.node()},instanceTracker:n.instanceTracker&&n.instanceTracker.sjcharts,callbacks:n.callbacks&&n.callbacks.sjcharts&&n.callbacks.sjcharts.sv})}if(t.browserview){const[n,a]=I(t);n.style("font-size",".8em").text("BROWSER");let l=false;n.on("click",(()=>{if(a.style("display")=="none"){n.style("border-color","black");f(a)}else{n.style("border-color","transparent");d(a)}if(l)return;l=true;const r={holder:a,genome:t.genome,debugmode:o,dogtag:t.genome.name,hostURL:s,jwt:t.jwt,cohort:t,nobox:t.browserview.nobox,datasetqueries:t.browserview.datasetqueries,tklst:[]};if(t.browserview.position){r.chr=t.browserview.position.chr;r.start=t.browserview.position.start;r.stop=t.browserview.position.stop}if(t.browserview.nativetracks){r.nativetracks=t.browserview.nativetracks}if(t.browserview.tracks){for(const e of t.browserview.tracks){r.tklst.push(e)}}if(t.browserview.assays){if(!t.assaylst){console.error("assaylst not set!");t.assaylst=[]}for(const e in t.browserview.assays){const s=t.browserview.assays[e];if(!s.assayobj){continue}if(s.combined){if(s.combinetk){r.tklst.push(s.combinetk)}}else{for(const e in t.patientset){for(const n in t.patientset[e].samples){for(const o of t.patientset[e].samples[n].tktemplate){if(o.id==s.assayobj.id){r.tklst.push(o)}}}}}}}if(t.browserview.defaultassaytracks){const[s,n]=J(t);if(s){b(e,"error with .defaultassaytracks: "+s)}else{for(const t of n)r.tklst.push(t)}}for(const t of r.tklst){t.iscustom=true}z(r)}));if(t.show_browser){n.node().click()}}if(t.e2pca){const[e,s]=I(t);e.text(t.e2pca.label).style("font-size",".8em");let n=false;e.on("click",(()=>{if(s.style("display")=="none"){e.style("border-color","black");f(s)}else{e.style("border-color","transparent");d(s)}if(n)return;n=true;C(t,s)}));if(t.show_e2pca){e.node().click()}}}function I(t,e){const s=t.__tdleft.append("div").attr("class","sja_menuoption").style("margin-top","10px").style("white-space","nowrap");const n=t.__tdright.append("div").style("padding-bottom","20px");s.on("click",(()=>{if(n.style("display")=="block"){d(n);s.style("border","solid 1px transparent")}else{s.style("border","solid 1px #545454");f(n)}}));if(e){s.style("border","solid 1px #545454");n.style("display","block")}else{s.style("border","solid 1px transparent");n.style("display","none")}return[s,n]}function J(t){if(!t.browserview)return[null,[]];if(!t.browserview.defaultassaytracks)return[null,[]];const e=[];for(const s of t.browserview.defaultassaytracks){const n=t.p2st[s.level1];if(!n)continue;if(s.level2){const t=n[s.level2];if(!t)continue;if(!t.tktemplate)continue;for(const n of t.tktemplate){if(n.assayname==s.assay){e.push(n);if(s.justone){break}}}}else{for(const t in n){const o=n[t];if(o.tktemplate){for(const t of o.tktemplate){if(t.assayname==s.assay){e.push(t)}}}}}}return[null,e]}var P=Object.freeze({__proto__:null,default:H});export{R as d,P as t};
@@ -1 +1 @@
1
- import{b as t}from"./brush-9faa7ae7.js";import{c as e}from"./termsetting-492eefa7.js";import{d as n}from"./app-6fb77603.js";import"./pointer-c7475677.js";import"./nodrag-b2737073.js";import"./tslib.es6-c3c2d88f.js";import"path";function s(t,e){const s=t.num_obj.brushes;const r=t.num_obj.density_data.maxvalue;const a=t.num_obj.density_data.minvalue;const i=(r-a)/10;const u=t.tvs.term.type=="integer"?Math.floor(i):i;for(const[n,o]of t.num_obj.ranges.entries()){const t=s.find((t=>t.orig===o));let n;if(!t){n={orig:o,range:JSON.parse(JSON.stringify(o))};s.push(n)}else{n=t}if(o.start===""){if(e=="center")n.range.start=a+u*4;else n.range.start=a+u*8}if(o.stop===""){if(e=="center")n.range.stop=a+u*6;else n.range.stop=Math.floor(r)}}const d=t.num_obj.brush_g.selectAll(".range_brush").data(s,(t=>s.indexOf(t)));d.exit().remove();d.each((function(t,e){n(this).selectAll(".overlay").style("pointer-events","all")}));d.enter().append("g").attr("class","range_brush").each((function(e,n){o(t,this,e)}))}function o(e,s,o){if(!o.elem)o.elem=n(s);const a=o.range;const i=e.num_obj.plot_size;const u=e.num_obj.xscale;const d=e.num_obj.density_data.maxvalue;const l=e.num_obj.density_data.minvalue;o.d3brush=t().extent([[0,0],[i.width,i.height]]).on("brush",(function(t,n){const s=t.selection;if(!s)return;const i=o.rangeInput.getRange();if(i.value!=undefined){o.range=i;return}r(u,s,a,i,l,d,e.tvs.term.type);const c=a.startunbounded?"":i.startinclusive?`${a.start} <=`:`${a.start} <`;const p=a.stopunbounded?"":i.stopinclusive?`<= ${a.stop}`:`< ${a.stop}`;o.rangeInput.getInput().node().value=`${c} x ${p}`})).on("end",(function(){o.elem.selectAll(".overlay").style("pointer-events","none")}));const c=a.startunbounded?l:a.start;const p=a.stopunbounded?d:a.stop;o.init=()=>{if(a.value==undefined)o.elem.call(o.d3brush).call(o.d3brush.move,[c,p].map(u))};if(a.startunbounded)delete a.start;if(a.stopunbounded)delete a.stop;o.elem.selectAll(".selection").style("fill",o.orig.start===""&&o.orig.stop===""||JSON.stringify(a)!=JSON.stringify(o.orig)?"#23cba7":"#777777")}function r(t,n,s,o,r,i,u){s.start=a(t,n[0]);s.stop=a(t,n[1]);const d=e(Number(r));const l=e(Number(i));s.startunbounded=d==s.start&&o.startunbounded;s.stopunbounded=l==s.stop&&o.stopunbounded;if(u=="integer"){s.start=s.startunbounded?"":Math.round(s.start);s.stop=s.stopunbounded?"":Math.round(s.stop)}}function a(t,n){let s=Number(t.invert(n));return e(s)}function i(t,e="end",n){const o={start:"",stop:"",index:t.tvs.ranges.length};t.num_obj.ranges.push(o);const r={orig:o,range:JSON.parse(JSON.stringify(o))};t.num_obj.brushes.push(r);s(t,e);if(n)n();r.init()}export{s as addBrushes,i as addNewBrush,r as updateTempRanges};
1
+ import{b as t}from"./brush-4c775f74.js";import{c as e}from"./termsetting-2e75e729.js";import{d as n}from"./app-0de0ae35.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./tslib.es6-c3c2d88f.js";import"path";function s(t,e){const s=t.num_obj.brushes;const r=t.num_obj.density_data.maxvalue;const a=t.num_obj.density_data.minvalue;const i=(r-a)/10;const u=t.tvs.term.type=="integer"?Math.floor(i):i;for(const[n,o]of t.num_obj.ranges.entries()){const t=s.find((t=>t.orig===o));let n;if(!t){n={orig:o,range:JSON.parse(JSON.stringify(o))};s.push(n)}else{n=t}if(o.start===""){if(e=="center")n.range.start=a+u*4;else n.range.start=a+u*8}if(o.stop===""){if(e=="center")n.range.stop=a+u*6;else n.range.stop=Math.floor(r)}}const d=t.num_obj.brush_g.selectAll(".range_brush").data(s,(t=>s.indexOf(t)));d.exit().remove();d.each((function(t,e){n(this).selectAll(".overlay").style("pointer-events","all")}));d.enter().append("g").attr("class","range_brush").each((function(e,n){o(t,this,e)}))}function o(e,s,o){if(!o.elem)o.elem=n(s);const a=o.range;const i=e.num_obj.plot_size;const u=e.num_obj.xscale;const d=e.num_obj.density_data.maxvalue;const l=e.num_obj.density_data.minvalue;o.d3brush=t().extent([[0,0],[i.width,i.height]]).on("brush",(function(t,n){const s=t.selection;if(!s)return;const i=o.rangeInput.getRange();if(i.value!=undefined){o.range=i;return}r(u,s,a,i,l,d,e.tvs.term.type);const c=a.startunbounded?"":i.startinclusive?`${a.start} <=`:`${a.start} <`;const p=a.stopunbounded?"":i.stopinclusive?`<= ${a.stop}`:`< ${a.stop}`;o.rangeInput.getInput().node().value=`${c} x ${p}`})).on("end",(function(){o.elem.selectAll(".overlay").style("pointer-events","none")}));const c=a.startunbounded?l:a.start;const p=a.stopunbounded?d:a.stop;o.init=()=>{if(a.value==undefined)o.elem.call(o.d3brush).call(o.d3brush.move,[c,p].map(u))};if(a.startunbounded)delete a.start;if(a.stopunbounded)delete a.stop;o.elem.selectAll(".selection").style("fill",o.orig.start===""&&o.orig.stop===""||JSON.stringify(a)!=JSON.stringify(o.orig)?"#23cba7":"#777777")}function r(t,n,s,o,r,i,u){s.start=a(t,n[0]);s.stop=a(t,n[1]);const d=e(Number(r));const l=e(Number(i));s.startunbounded=d==s.start&&o.startunbounded;s.stopunbounded=l==s.stop&&o.stopunbounded;if(u=="integer"){s.start=s.startunbounded?"":Math.round(s.start);s.stop=s.stopunbounded?"":Math.round(s.stop)}}function a(t,n){let s=Number(t.invert(n));return e(s)}function i(t,e="end",n){const o={start:"",stop:"",index:t.tvs.ranges.length};t.num_obj.ranges.push(o);const r={orig:o,range:JSON.parse(JSON.stringify(o))};t.num_obj.brushes.push(r);s(t,e);if(n)n();r.init()}export{s as addBrushes,i as addNewBrush,r as updateTempRanges};
@@ -1 +1 @@
1
- import{z as t,B as e,d as n}from"./app-6fb77603.js";const s={type:"geneVariant",term_name_gen:o,get_pill_label:l,getSelectRemovePos:r,fillMenu:i,setTvsDefaults:c};async function i(s,i,o){const l=await s.opts.vocabApi.getCategories(o.term,s.filter,{});const r=new Map;for(const h of l.lst){r.set(h.dt,h.classes)}const c=i.append("div").style("padding","5px").style("cursor","pointer");c.append("div").style("font-size","1.2rem").text(s.tvs.term.name);const p=c.append("div").style("display","flex").style("align-items","center");const a=p.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const t=[];for(const e of d){const n=e.items;for(const e of n){if(!t.some((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))){const n={dt:e.dt,mclassLst:[],mclassExcludeLst:[]};if(e.origin)n.origin=e.origin;t.push(n)}const n=t.filter((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))[0];const s=n.mclassLst;const i=n.mclassExcludeLst;if(g.some((t=>t.dt==e.dt&&t.key==e.key&&(e.origin?e.origin==t.origin:true)))){i.push(e.key)}else{s.push(e.key)}}}const e={term:s.tvs.term,values:t,isnot:o.isnot};s.opts.callback(e)}));c.append("div").style("font-weight","bold").style("margin","10px 5px 5px 10px").text("Filter by only one group within which select 1 or more categories for INCLUSION");const d=[];for(const[x,b]of r){if(b.byOrigin){for(const[v,$]of Object.entries(b.byOrigin)){k($,x,v)}}else{k(b,x)}function k(n,s,i){const o=[];for(const[e,l]of Object.entries(n)){const n={...t[e]};n.dt=s;n.num=l;if(i)n.origin=i;o.push(n)}o.sort(((t,e)=>e.num-t.num));if(o.length){d.push({name:i?`${i.charAt(0).toUpperCase()+i.slice(1)} ${e[s]}`:e[s],items:o})}}}const g=[];if(o.values.length){for(const w of d){for(const L of w.items){const A=o.values.filter((t=>t.dt==L.dt&&(L.origin?L.origin==t.origin:true)))[0].mclassExcludeLst;if(A.includes(L.key))g.push(L)}}}const y=JSON.stringify(g);const f=g.length?null:d.reduce(((t,e)=>{if(e.items.length>t.items.length)return e;return t}),d[0]);const u=Math.random().toString();const m=c.append("div").selectAll(":scope>div").data(d,(t=>t.name)).enter().append("div").style("max-width","500px").style("margin","10px").style("padding-left","10px").style("text-align","left").style("opacity",.5).each((function(t){const e=n(this);const s=e.append("label").style("display","flex");const i=g.some((e=>t.items.some((t=>t.dt==e.dt&&(t.origin?t.origin==e.origin:true)))));const o=s.append("input").attr("type","radio").attr("name",u).property("checked",i||f==t).on("click",(()=>{m.style("opacity",.5);e.style("opacity",1);m.selectAll('input[type="checkbox"]').property("disabled",true);r.selectAll('input[type="checkbox"]').property("disabled",false);m.selectAll(".sjpp_row_wrapper").style("display","none");r.style("display","inline-block");m.selectAll('input[type="checkbox"]').property("checked",true);g.splice(0,g.length);a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.style("opacity",i||f==t?1:.5);s.append("span").style("font-weight",600).html(t.name);const l=Math.random().toString();const r=e.selectAll(":scope>div").data(t.items,(t=>t.label)).enter().append("label").style("margin","5px").style("margin-left","20px").style("display",o.property("checked")?"inline-block":"none").each((function(t){const e=n(this);e.attr("class","sjpp_row_wrapper");e.append("input").attr("type","checkbox").attr("name",l).property("disabled",o.property("checked")?false:true).property("checked",g.some((e=>e.key==t.key&&e.dt==t.dt&&(t.origin?t.origin==e.origin:true)))?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(t,e){const n=g.findIndex((t=>t.key==e.key&&t.dt==e.dt&&(e.origin?e.origin==t.origin:true)));if(n==-1)g.push(e);else g.splice(n,1);if(g.length>1){const t=g[0].origin?`${g[0].origin} ${g[0].dt}`:g[0].dt;for(const e of g.slice(1)){const n=e.origin?`${e.origin} ${e.dt}`:e.dt;if(n!==t){break}}}a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.append("span").style("margin-left","3px").html(`${t.label} (n=${t.num})`)}))}))}function o(t){const e=t.term.name;return e.length<21?e:'<label title="'+e+'">'+e.substring(0,18)+"..."+"</label>"}function l(t){const n=t.values.filter((t=>t.mclassExcludeLst.length>0))[0];const s=e[n.dt];if(n.mclassLst.length==1){const t=n.mclassLst[0];return{txt:`${s}:${t}`}}return{txt:`${s}:${n.mclassLst.length} groups`}}function r(t){return t}function c(t){if(!t.values)t.values=[]}export{s as handler};
1
+ import{z as t,B as e,d as n}from"./app-0de0ae35.js";const s={type:"geneVariant",term_name_gen:o,get_pill_label:l,getSelectRemovePos:r,fillMenu:i,setTvsDefaults:c};async function i(s,i,o){const l=await s.opts.vocabApi.getCategories(o.term,s.filter,{});const r=new Map;for(const h of l.lst){r.set(h.dt,h.classes)}const c=i.append("div").style("padding","5px").style("cursor","pointer");c.append("div").style("font-size","1.2rem").text(s.tvs.term.name);const p=c.append("div").style("display","flex").style("align-items","center");const a=p.append("button").property("disabled",true).style("margin-top","3px").text("Apply").on("click",(()=>{const t=[];for(const e of d){const n=e.items;for(const e of n){if(!t.some((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))){const n={dt:e.dt,mclassLst:[],mclassExcludeLst:[]};if(e.origin)n.origin=e.origin;t.push(n)}const n=t.filter((t=>t.dt==e.dt&&(e.origin?e.origin==t.origin:true)))[0];const s=n.mclassLst;const i=n.mclassExcludeLst;if(g.some((t=>t.dt==e.dt&&t.key==e.key&&(e.origin?e.origin==t.origin:true)))){i.push(e.key)}else{s.push(e.key)}}}const e={term:s.tvs.term,values:t,isnot:o.isnot};s.opts.callback(e)}));c.append("div").style("font-weight","bold").style("margin","10px 5px 5px 10px").text("Filter by only one group within which select 1 or more categories for INCLUSION");const d=[];for(const[x,b]of r){if(b.byOrigin){for(const[v,$]of Object.entries(b.byOrigin)){k($,x,v)}}else{k(b,x)}function k(n,s,i){const o=[];for(const[e,l]of Object.entries(n)){const n={...t[e]};n.dt=s;n.num=l;if(i)n.origin=i;o.push(n)}o.sort(((t,e)=>e.num-t.num));if(o.length){d.push({name:i?`${i.charAt(0).toUpperCase()+i.slice(1)} ${e[s]}`:e[s],items:o})}}}const g=[];if(o.values.length){for(const w of d){for(const L of w.items){const A=o.values.filter((t=>t.dt==L.dt&&(L.origin?L.origin==t.origin:true)))[0].mclassExcludeLst;if(A.includes(L.key))g.push(L)}}}const y=JSON.stringify(g);const f=g.length?null:d.reduce(((t,e)=>{if(e.items.length>t.items.length)return e;return t}),d[0]);const u=Math.random().toString();const m=c.append("div").selectAll(":scope>div").data(d,(t=>t.name)).enter().append("div").style("max-width","500px").style("margin","10px").style("padding-left","10px").style("text-align","left").style("opacity",.5).each((function(t){const e=n(this);const s=e.append("label").style("display","flex");const i=g.some((e=>t.items.some((t=>t.dt==e.dt&&(t.origin?t.origin==e.origin:true)))));const o=s.append("input").attr("type","radio").attr("name",u).property("checked",i||f==t).on("click",(()=>{m.style("opacity",.5);e.style("opacity",1);m.selectAll('input[type="checkbox"]').property("disabled",true);r.selectAll('input[type="checkbox"]').property("disabled",false);m.selectAll(".sjpp_row_wrapper").style("display","none");r.style("display","inline-block");m.selectAll('input[type="checkbox"]').property("checked",true);g.splice(0,g.length);a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.style("opacity",i||f==t?1:.5);s.append("span").style("font-weight",600).html(t.name);const l=Math.random().toString();const r=e.selectAll(":scope>div").data(t.items,(t=>t.label)).enter().append("label").style("margin","5px").style("margin-left","20px").style("display",o.property("checked")?"inline-block":"none").each((function(t){const e=n(this);e.attr("class","sjpp_row_wrapper");e.append("input").attr("type","checkbox").attr("name",l).property("disabled",o.property("checked")?false:true).property("checked",g.some((e=>e.key==t.key&&e.dt==t.dt&&(t.origin?t.origin==e.origin:true)))?false:true).style("vertical-align","top").style("margin-right","3px").on("change",(function(t,e){const n=g.findIndex((t=>t.key==e.key&&t.dt==e.dt&&(e.origin?e.origin==t.origin:true)));if(n==-1)g.push(e);else g.splice(n,1);if(g.length>1){const t=g[0].origin?`${g[0].origin} ${g[0].dt}`:g[0].dt;for(const e of g.slice(1)){const n=e.origin?`${e.origin} ${e.dt}`:e.dt;if(n!==t){break}}}a.property("disabled",JSON.stringify(g)===y||g.length==0)}));e.append("span").style("margin-left","3px").html(`${t.label} (n=${t.num})`)}))}))}function o(t){const e=t.term.name;return e.length<21?e:'<label title="'+e+'">'+e.substring(0,18)+"..."+"</label>"}function l(t){const n=t.values.filter((t=>t.mclassExcludeLst.length>0))[0];const s=e[n.dt];if(n.mclassLst.length==1){const t=n.mclassLst[0];return{txt:`${s}:${t}`}}return{txt:`${s}:${n.mclassLst.length} groups`}}function r(t){return t}function c(t){if(!t.values)t.values=[]}export{s as handler};
@@ -1 +1 @@
1
- import{V as t,I as e,d as n}from"./app-6fb77603.js";import{addBrushes as s,addNewBrush as a}from"./tvs.density-034b506d.js";import{v as r}from"./violinRenderer-14fa200d.js";import{n as i}from"./niceNumLabels-29a7c6ca.js";import"./brush-9faa7ae7.js";import"./pointer-c7475677.js";import"./nodrag-b2737073.js";import"./termsetting-492eefa7.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";class o{constructor(t,e,n){this.input=t.append("input").attr("name","rangeInput").attr("aria-label","Leave blank for the allowed minimum value").style("width","250px").style("margin","3px 5px").on("change",(()=>{try{this.parseRange()}catch(t){alert(t);this.setRange()}}));this.setRange(e);this.callback=n}getInput(){return this.input}parseRange(){const t=this.input.node().value;const e=l(t);if(this.range?.min!=undefined){if(!e.startunbounded&&this.range?.min>e.start)throw"Invalid start value < minimum allowed";if(!e.stopunbounded&&this.range?.min>=e.stop)throw"Invalid stop value >= minimum allowed"}if(this.range?.max!=undefined){if(!e.stopunbounded&&this.range?.max<e.stop)throw"Invalid stop value > maximum allowed";if(!e.startunbounded&&e.start>=this.range?.max)throw"Invalid start value >= maximum allowed"}this.range=e;this.callback(e);return e}getRange(){return this.range}setRange(t){if(!t)t=this.range;else this.range=t;const e=t.start!=undefined?`${t.start} <=`:"";const n=t.stop!=undefined?`<= ${t.stop}`:"";this.input.node().value=t.value!=undefined?` x=${t.value} `:`${e} x ${n}`}}function l(t){if(!t)throw"Empty range";const e=t.replace(/\s/g,"").split("x");let n,s,a,r,i;if(e[0])p(e[0]);if(e[1])p(e[1]);if(i!=undefined)return{value:i,label:`x = ${i}`};const o=n===undefined;const l=s===undefined;if(!o&&!l&&n>s)throw"start must be lower than stop";return{start:n,stop:s,value:i,startinclusive:a,stopinclusive:r,startunbounded:o,stopunbounded:l};function p(t){const e="[+-]?\\d+(\\.\\d+)?";if(new RegExp(`^${e}<$`).test(t)||new RegExp(`^>${e}$`).test(t)){n=parseFloat(t.match(e));a=false}else if(new RegExp(`^${e}<=$`).test(t)||new RegExp(`^>=${e}$`).test(t)){n=parseFloat(t.match(e));a=true}else if(new RegExp(`^${e}>$`).test(t)||new RegExp(`^<${e}$`).test(t)){s=parseFloat(t.match(e));r=false}else if(new RegExp(`^${e}>=$`).test(t)||new RegExp(`^<=${e}$`).test(t)){s=parseFloat(t.match(e));r=true}else if(new RegExp(`^${e}=$`).test(t)||new RegExp(`^=${e}$`).test(t)){i=parseFloat(t.match(e));r=true;a=true}else throw`Could not parse expression '${t}'`}}const p={type:"numeric",term_name_gen:u,get_pill_label:d,getSelectRemovePos:c,fillMenu:f,setTvsDefaults:b};function u(t){const e=t.term.name;return e.length<26?e:'<label title="'+e+'">'+e.substring(0,24)+"..."+"</label>"}function d(t){if(t.ranges.length==1){const e=t.ranges[0];if("value"in e){if(e.label)return{txt:e.label};if(t.term.values&&t.term.values[e.value]&&t.term.values[e.value].label)return{txt:t.term.values[e.value].label};console.error(`key "${e.value}" not found in values{} of ${t.term.name}`);return{txt:e.value}}return{txt:m(e,t.term)}}return{txt:t.ranges.length+" intervals"}}function m(e,n){const s='<span style="font-family:Times;font-style:italic;font-size:1em; vertical-align:top">x</span>';if(e.startunbounded&&e.stopunbounded){const t=(t="")=>`<span style='vertical-align: middle; font-size:1.1em; line-height: 0.9em'>${t}∞</span>`;const e=`<span style='vertical-align: top; font-size: 0.9em'>&lt;</span>`;return`<span>${t("﹣")} ${e} ${s} ${e} ${t("﹢")}</span>`}const a=n.valueConversion;if(e.startunbounded)return`${s} ${e.stopinclusive?"&le;":"&lt;"} ${a?t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor):e.stop}`;if(e.stopunbounded)return`${s} ${e.startinclusive?"&ge;":"&gt;"} ${a?t(e.start,a.fromUnit,a.toUnit,a.scaleFactor):e.start}`;let r,o;if(a){r=t(e.start,a.fromUnit,a.toUnit,a.scaleFactor);o=t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor)}else{[r,o]=i([e.start,e.stop])}return`${r} \n\t\t\t${e.startinclusive?"&le;":"&lt;"}\n\t\t\t${s}\n\t\t\t${e.stopinclusive?"&le;":"&lt;"}\n\t\t\t${o}`}function c(t,e){return t-e.ranges.slice(0,t).filter((t=>t.start||t.stop)).length}async function f(t,n,i){const o=n.append("div");t.num_obj={};t.num_obj.num_div=o.append("div").attr("class","num_div").style("padding","5px").style("color","#000");t.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};if(typeof t.opts.vocabApi.getViolinPlotData=="function"){try{const e=await t.opts.vocabApi.getViolinPlotData({tw:{term:i.term,q:{mode:"continuous"}},filter:t.filter,svgw:t.num_obj.plot_size.width/window.devicePixelRatio},t.opts.getCategoriesArguments);if(e.error)throw e.error;t.num_obj.density_data=g(e)}catch(t){throw t}}else{t.num_obj.density_data={}}if(t.num_obj.density_data.error)throw t.num_obj.density_data.error;if(!t.num_obj.density_data.density||!t.num_obj.density_data.density.length){y(t,i);return}t.vr=new r(t.num_obj.num_div,t.num_obj.density_data,t.num_obj.xpad,t.num_obj.ypad);t.vr.render();t.num_obj.svg=t.vr.svg;t.num_obj.range_table=t.num_obj.num_div.append("table").style("table-layout","fixed").style("border-collapse","collapse");const l=[];for(const[t,e]of i.ranges.entries()){e.index=t;l.push(e)}t.num_obj.brush_g=t.num_obj.svg.append("g").attr("transform",`translate(${t.num_obj.plot_size.xpad}, ${t.num_obj.plot_size.ypad})`).attr("class","brush_g");const p=t.num_obj.density_data.maxvalue;const u=t.num_obj.density_data.minvalue;t.num_obj.xscale=e().domain([u,p]).range([t.num_obj.plot_size.xpad,t.num_obj.plot_size.width+t.num_obj.plot_size.xpad]);t.num_obj.ranges=l;t.num_obj.brushes=[];s(t);_(t);t.num_obj.num_div.append("div").style("width","100px").attr("class","add_range_btn sja_menuoption").style("border-radius","13px").style("padding","7px 6px").style("margin","5px").style("margin-left","20px").style("text-align","center").style("font-size",".8em").text("Add a Range").on("click",(()=>{const e=()=>_(t);a(t,l.length?"end":"center",e)}));if(!l.length){const e=()=>_(t);a(t,"center",e)}t.num_obj.brushes.forEach((t=>t.init()));await x(t,i,n)}function g(t){const e=t.plots[0]||{plotValueCount:0,biggestBin:0};const n={minvalue:t.min,maxvalue:t.max,samplecount:e.plotValueCount,densityMax:e.density.densityMax,densityMin:e.density.densityMin,density:e.density.bins,valuesImg:e.src};return n}function b(t){if(!t.ranges)t.ranges=[]}function y(t,e){const n=e.term.range||{};const s=e.ranges&&e.ranges[0]?e.ranges[0]:n;const a=t.num_obj.num_div;a.selectAll("*").remove();a.append("div").style("padding","5px").style("font-weight",600).html(e.term.name);const r={};const i=a.append("table");const l=i.append("tr");l.append("td").html("Range");r.equation_td=l.append("td");s.min="min"in e.term?e.term.min:null;s.max="max"in e.term?e.term.max:null;r.rangeInput=new o(r.equation_td,s,p);r.apply_btn=l.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{r.rangeInput.parseRange()}));function p(){t.dom.tip.hide();t.opts.callback({term:e.term,ranges:[r.rangeInput.getRange()]})}}function _(t){const e=t.num_obj.brushes;const s=t.num_obj.range_table.selectAll(".range_div").data(e);s.exit().each((function(){n(this).style("opacity",1).transition().duration(100).style("opacity",0).remove()}));s.enter().append("tr").attr("class","range_div").style("white-space","nowrap").style("padding","2px").transition().duration(200).each((function(e,n){h(t,this,e,n)}))}function h(t,e,a,r){if(!a.range_tr)a.range_tr=n(e);const i=a.range_tr;const l=t.num_obj.xscale;i.append("td").append("td").style("display","inline-block").style("margin-left","10px").style("padding","3px 10px").style("font-size",".9em").text("Range "+(r+1)+": ");a.equation_td=i.append("td").style("width","150px");a.rangeInput=new o(a.equation_td,a.range,p);u(t,a);if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html("Option 1: Drag the rectangle to select a range. Overlapping ranges will be merged")}if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html(`Option 2: Type in values to select a range. ${t.tvs.term.valueConversion?`Values are in the unit of ${t.tvs.term.valueConversion.fromUnit}`:""}.`)}async function p(e){try{a.range=e;const n=t.num_obj.density_data.minvalue;const s=t.num_obj.density_data.maxvalue;const r=e.value!=undefined?e.value:e.start!=undefined?e.start:n;const i=e.value!=undefined?e.value:e.stop!=undefined?e.stop:s;a.elem.call(a.d3brush).call(a.d3brush.move,[r,i].map(l))}catch(t){window.alert(t)}}function u(t,e){const n=e.range_tr.append("td");const a=e.range;e.apply_btn=n.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{t.dom.tip.hide();const n=e.rangeInput.parseRange();const s=JSON.parse(JSON.stringify(t.tvs));delete s.groupset_label;if(t.num_obj.ranges.length>1)s.ranges=v(t,n);else s.ranges[a.index]=n;try{w(s);t.opts.callback(s)}catch(t){alert(t)}}));n.append("td").attr("class","sja_filter_tag_btn sjpp_delete_btn").style("border-radius","13px").style("display",t.num_obj.ranges.length>1?"inline-block":"none").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("Delete").on("click",(async()=>{const e=JSON.parse(JSON.stringify(t.tvs));e.ranges.splice(a.index,1);t.num_obj.ranges.pop();t.num_obj.brushes.pop();t.num_obj.num_div.select(".note_tr").remove();s(t);_(t);if(e.ranges.length)t.opts.callback(e)}))}}function v(t,e){let n=JSON.parse(JSON.stringify(t.tvs.ranges));let s=false;for(const[t,a]of n.entries()){if(!a.value&&e.index!=t){if(e.start<=a.start&&e.stop>=a.stop){a.start=e.start;a.stop=e.stop;s=true}else if(e.start<=a.stop&&e.stop>=a.stop){a.stop=e.stop;s=true}else if(e.stop>=a.start&&e.start<=a.start){a.start=e.start;s=true}else if(e.start>=a.start&&e.stop<=a.stop){s=true}else if(e.startunbounded){if(e.stop>a.stop){a.stop=e.stop}delete a.start;a.startunbounded=true;s=true}else if(e.stopunbounded){if(e.start<a.start){a.start=e.start}delete a.stop;a.stopunbounded=true;s=true}}}if(s){if(e.index<=n.length-1)n.splice(e.index,1)}else{n=JSON.parse(JSON.stringify(t.tvs.ranges));if(e.index)n[e.index]=e;else n.push(e)}return n}async function x(t,e,n){if(!e.term.values){return}const s=await t.opts.vocabApi.getNumericUncomputableCategories(e.term,t.filter);const a=[];const r=s.lst?s.lst:s;for(const t of r){const n="key"in t?t.key:t.value;if(!("key"in t))t.key=n;if(!("value"in t))t.value=n;if(n in e.term.values){t.label=e.term.values[n].label;a.push(t)}}const i=a.sort(((t,e)=>e.samplecount-t.samplecount));const o=n.append("div").style("padding","5px").style("color","#000");const l=n=>{try{const s=JSON.parse(JSON.stringify(e));delete s.groupset_label;s.ranges=[...s.ranges.filter((t=>!("value"in t))),...n.map((t=>({value:i[t].value,label:i[t].label})))];t.dom.tip.hide();if(s.ranges.length==0)throw"select at least one range or category";if(JSON.parse(JSON.stringify(e)!=s)){try{w(s)}catch(t){window.alert(t);return}t.opts.callback(s)}}catch(t){window.alert(t)}};t.makeValueTable(o,e,i,l).node()}function w(t){if(!t.term)throw"tvs.term is not defined";if(!t.ranges)throw`.values[] missing for a term ${t.term.name}`;if(!Array.isArray(t.ranges))throw`.values[] is not an array for a term ${t.term.name}`;if(!t.ranges.length)throw`no categories selected for ${t.term.name}`;for(const e of t.ranges){if(e.value!=undefined){if(!e.label)throw`.label missing for special category for a term ${t.term.name}`}else{if(e.startunbounded){if(e.stopunbounded)throw`both start & stop are unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when start is unbounded for a term ${t.term.name}`}else if(e.stopunbounded){if(!Number.isFinite(e.start))throw`.start undefined when stop is unbounded for a term ${t.term.name}`}else{if(!Number.isFinite(e.start))throw`.start undefined when start is not unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when stop is not unbounded for a term ${t.term.name}`;if(e.start>=e.stop)throw`.start is not lower than stop for a term ${t.term.name}`}}}}export{g as convertViolinData,p as handler};
1
+ import{V as t,I as e,d as n}from"./app-0de0ae35.js";import{addBrushes as s,addNewBrush as a}from"./tvs.density-8b953cef.js";import{v as r}from"./violinRenderer-7b0a4e98.js";import{n as i}from"./niceNumLabels-1bd7a93b.js";import"./brush-4c775f74.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./termsetting-2e75e729.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";class o{constructor(t,e,n){this.input=t.append("input").attr("name","rangeInput").attr("aria-label","Leave blank for the allowed minimum value").style("width","250px").style("margin","3px 5px").on("change",(()=>{try{this.parseRange()}catch(t){alert(t);this.setRange()}}));this.setRange(e);this.callback=n}getInput(){return this.input}parseRange(){const t=this.input.node().value;const e=l(t);if(this.range?.min!=undefined){if(!e.startunbounded&&this.range?.min>e.start)throw"Invalid start value < minimum allowed";if(!e.stopunbounded&&this.range?.min>=e.stop)throw"Invalid stop value >= minimum allowed"}if(this.range?.max!=undefined){if(!e.stopunbounded&&this.range?.max<e.stop)throw"Invalid stop value > maximum allowed";if(!e.startunbounded&&e.start>=this.range?.max)throw"Invalid start value >= maximum allowed"}this.range=e;this.callback(e);return e}getRange(){return this.range}setRange(t){if(!t)t=this.range;else this.range=t;const e=t.start!=undefined?`${t.start} <=`:"";const n=t.stop!=undefined?`<= ${t.stop}`:"";this.input.node().value=t.value!=undefined?` x=${t.value} `:`${e} x ${n}`}}function l(t){if(!t)throw"Empty range";const e=t.replace(/\s/g,"").split("x");let n,s,a,r,i;if(e[0])p(e[0]);if(e[1])p(e[1]);if(i!=undefined)return{value:i,label:`x = ${i}`};const o=n===undefined;const l=s===undefined;if(!o&&!l&&n>s)throw"start must be lower than stop";return{start:n,stop:s,value:i,startinclusive:a,stopinclusive:r,startunbounded:o,stopunbounded:l};function p(t){const e="[+-]?\\d+(\\.\\d+)?";if(new RegExp(`^${e}<$`).test(t)||new RegExp(`^>${e}$`).test(t)){n=parseFloat(t.match(e));a=false}else if(new RegExp(`^${e}<=$`).test(t)||new RegExp(`^>=${e}$`).test(t)){n=parseFloat(t.match(e));a=true}else if(new RegExp(`^${e}>$`).test(t)||new RegExp(`^<${e}$`).test(t)){s=parseFloat(t.match(e));r=false}else if(new RegExp(`^${e}>=$`).test(t)||new RegExp(`^<=${e}$`).test(t)){s=parseFloat(t.match(e));r=true}else if(new RegExp(`^${e}=$`).test(t)||new RegExp(`^=${e}$`).test(t)){i=parseFloat(t.match(e));r=true;a=true}else throw`Could not parse expression '${t}'`}}const p={type:"numeric",term_name_gen:u,get_pill_label:d,getSelectRemovePos:c,fillMenu:f,setTvsDefaults:b};function u(t){const e=t.term.name;return e.length<26?e:'<label title="'+e+'">'+e.substring(0,24)+"..."+"</label>"}function d(t){if(t.ranges.length==1){const e=t.ranges[0];if("value"in e){if(e.label)return{txt:e.label};if(t.term.values&&t.term.values[e.value]&&t.term.values[e.value].label)return{txt:t.term.values[e.value].label};console.error(`key "${e.value}" not found in values{} of ${t.term.name}`);return{txt:e.value}}return{txt:m(e,t.term)}}return{txt:t.ranges.length+" intervals"}}function m(e,n){const s='<span style="font-family:Times;font-style:italic;font-size:1em; vertical-align:top">x</span>';if(e.startunbounded&&e.stopunbounded){const t=(t="")=>`<span style='vertical-align: middle; font-size:1.1em; line-height: 0.9em'>${t}∞</span>`;const e=`<span style='vertical-align: top; font-size: 0.9em'>&lt;</span>`;return`<span>${t("﹣")} ${e} ${s} ${e} ${t("﹢")}</span>`}const a=n.valueConversion;if(e.startunbounded)return`${s} ${e.stopinclusive?"&le;":"&lt;"} ${a?t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor):e.stop}`;if(e.stopunbounded)return`${s} ${e.startinclusive?"&ge;":"&gt;"} ${a?t(e.start,a.fromUnit,a.toUnit,a.scaleFactor):e.start}`;let r,o;if(a){r=t(e.start,a.fromUnit,a.toUnit,a.scaleFactor);o=t(e.stop,a.fromUnit,a.toUnit,a.scaleFactor)}else{[r,o]=i([e.start,e.stop])}return`${r} \n\t\t\t${e.startinclusive?"&le;":"&lt;"}\n\t\t\t${s}\n\t\t\t${e.stopinclusive?"&le;":"&lt;"}\n\t\t\t${o}`}function c(t,e){return t-e.ranges.slice(0,t).filter((t=>t.start||t.stop)).length}async function f(t,n,i){const o=n.append("div");t.num_obj={};t.num_obj.num_div=o.append("div").attr("class","num_div").style("padding","5px").style("color","#000");t.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};if(typeof t.opts.vocabApi.getViolinPlotData=="function"){try{const e=await t.opts.vocabApi.getViolinPlotData({tw:{term:i.term,q:{mode:"continuous"}},filter:t.filter,svgw:t.num_obj.plot_size.width/window.devicePixelRatio},t.opts.getCategoriesArguments);if(e.error)throw e.error;t.num_obj.density_data=g(e)}catch(t){throw t}}else{t.num_obj.density_data={}}if(t.num_obj.density_data.error)throw t.num_obj.density_data.error;if(!t.num_obj.density_data.density||!t.num_obj.density_data.density.length){y(t,i);return}t.vr=new r(t.num_obj.num_div,t.num_obj.density_data,t.num_obj.xpad,t.num_obj.ypad);t.vr.render();t.num_obj.svg=t.vr.svg;t.num_obj.range_table=t.num_obj.num_div.append("table").style("table-layout","fixed").style("border-collapse","collapse");const l=[];for(const[t,e]of i.ranges.entries()){e.index=t;l.push(e)}t.num_obj.brush_g=t.num_obj.svg.append("g").attr("transform",`translate(${t.num_obj.plot_size.xpad}, ${t.num_obj.plot_size.ypad})`).attr("class","brush_g");const p=t.num_obj.density_data.maxvalue;const u=t.num_obj.density_data.minvalue;t.num_obj.xscale=e().domain([u,p]).range([t.num_obj.plot_size.xpad,t.num_obj.plot_size.width+t.num_obj.plot_size.xpad]);t.num_obj.ranges=l;t.num_obj.brushes=[];s(t);_(t);t.num_obj.num_div.append("div").style("width","100px").attr("class","add_range_btn sja_menuoption").style("border-radius","13px").style("padding","7px 6px").style("margin","5px").style("margin-left","20px").style("text-align","center").style("font-size",".8em").text("Add a Range").on("click",(()=>{const e=()=>_(t);a(t,l.length?"end":"center",e)}));if(!l.length){const e=()=>_(t);a(t,"center",e)}t.num_obj.brushes.forEach((t=>t.init()));await x(t,i,n)}function g(t){const e=t.plots[0]||{plotValueCount:0,biggestBin:0};const n={minvalue:t.min,maxvalue:t.max,samplecount:e.plotValueCount,densityMax:e.density.densityMax,densityMin:e.density.densityMin,density:e.density.bins,valuesImg:e.src};return n}function b(t){if(!t.ranges)t.ranges=[]}function y(t,e){const n=e.term.range||{};const s=e.ranges&&e.ranges[0]?e.ranges[0]:n;const a=t.num_obj.num_div;a.selectAll("*").remove();a.append("div").style("padding","5px").style("font-weight",600).html(e.term.name);const r={};const i=a.append("table");const l=i.append("tr");l.append("td").html("Range");r.equation_td=l.append("td");s.min="min"in e.term?e.term.min:null;s.max="max"in e.term?e.term.max:null;r.rangeInput=new o(r.equation_td,s,p);r.apply_btn=l.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{r.rangeInput.parseRange()}));function p(){t.dom.tip.hide();t.opts.callback({term:e.term,ranges:[r.rangeInput.getRange()]})}}function _(t){const e=t.num_obj.brushes;const s=t.num_obj.range_table.selectAll(".range_div").data(e);s.exit().each((function(){n(this).style("opacity",1).transition().duration(100).style("opacity",0).remove()}));s.enter().append("tr").attr("class","range_div").style("white-space","nowrap").style("padding","2px").transition().duration(200).each((function(e,n){h(t,this,e,n)}))}function h(t,e,a,r){if(!a.range_tr)a.range_tr=n(e);const i=a.range_tr;const l=t.num_obj.xscale;i.append("td").append("td").style("display","inline-block").style("margin-left","10px").style("padding","3px 10px").style("font-size",".9em").text("Range "+(r+1)+": ");a.equation_td=i.append("td").style("width","150px");a.rangeInput=new o(a.equation_td,a.range,p);u(t,a);if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html("Option 1: Drag the rectangle to select a range. Overlapping ranges will be merged")}if(r==0){t.num_obj.range_table.append("tr").attr("class","note_tr").append("td").attr("colspan","3").append("div").style("font-size",".8em").style("margin-left","20px").style("font-style","italic").style("color","#888").html(`Option 2: Type in values to select a range. ${t.tvs.term.valueConversion?`Values are in the unit of ${t.tvs.term.valueConversion.fromUnit}`:""}.`)}async function p(e){try{a.range=e;const n=t.num_obj.density_data.minvalue;const s=t.num_obj.density_data.maxvalue;const r=e.value!=undefined?e.value:e.start!=undefined?e.start:n;const i=e.value!=undefined?e.value:e.stop!=undefined?e.stop:s;a.elem.call(a.d3brush).call(a.d3brush.move,[r,i].map(l))}catch(t){window.alert(t)}}function u(t,e){const n=e.range_tr.append("td");const a=e.range;e.apply_btn=n.append("td").attr("class","sja_filter_tag_btn sjpp_apply_btn").style("border-radius","13px").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("apply").on("click",(async()=>{t.dom.tip.hide();const n=e.rangeInput.parseRange();const s=JSON.parse(JSON.stringify(t.tvs));delete s.groupset_label;if(t.num_obj.ranges.length>1)s.ranges=v(t,n);else s.ranges[a.index]=n;try{w(s);t.opts.callback(s)}catch(t){alert(t)}}));n.append("td").attr("class","sja_filter_tag_btn sjpp_delete_btn").style("border-radius","13px").style("display",t.num_obj.ranges.length>1?"inline-block":"none").style("margin","5px").style("margin-left","10px").style("text-align","center").style("font-size",".8em").style("text-transform","uppercase").text("Delete").on("click",(async()=>{const e=JSON.parse(JSON.stringify(t.tvs));e.ranges.splice(a.index,1);t.num_obj.ranges.pop();t.num_obj.brushes.pop();t.num_obj.num_div.select(".note_tr").remove();s(t);_(t);if(e.ranges.length)t.opts.callback(e)}))}}function v(t,e){let n=JSON.parse(JSON.stringify(t.tvs.ranges));let s=false;for(const[t,a]of n.entries()){if(!a.value&&e.index!=t){if(e.start<=a.start&&e.stop>=a.stop){a.start=e.start;a.stop=e.stop;s=true}else if(e.start<=a.stop&&e.stop>=a.stop){a.stop=e.stop;s=true}else if(e.stop>=a.start&&e.start<=a.start){a.start=e.start;s=true}else if(e.start>=a.start&&e.stop<=a.stop){s=true}else if(e.startunbounded){if(e.stop>a.stop){a.stop=e.stop}delete a.start;a.startunbounded=true;s=true}else if(e.stopunbounded){if(e.start<a.start){a.start=e.start}delete a.stop;a.stopunbounded=true;s=true}}}if(s){if(e.index<=n.length-1)n.splice(e.index,1)}else{n=JSON.parse(JSON.stringify(t.tvs.ranges));if(e.index)n[e.index]=e;else n.push(e)}return n}async function x(t,e,n){if(!e.term.values){return}const s=await t.opts.vocabApi.getNumericUncomputableCategories(e.term,t.filter);const a=[];const r=s.lst?s.lst:s;for(const t of r){const n="key"in t?t.key:t.value;if(!("key"in t))t.key=n;if(!("value"in t))t.value=n;if(n in e.term.values){t.label=e.term.values[n].label;a.push(t)}}const i=a.sort(((t,e)=>e.samplecount-t.samplecount));const o=n.append("div").style("padding","5px").style("color","#000");const l=n=>{try{const s=JSON.parse(JSON.stringify(e));delete s.groupset_label;s.ranges=[...s.ranges.filter((t=>!("value"in t))),...n.map((t=>({value:i[t].value,label:i[t].label})))];t.dom.tip.hide();if(s.ranges.length==0)throw"select at least one range or category";if(JSON.parse(JSON.stringify(e)!=s)){try{w(s)}catch(t){window.alert(t);return}t.opts.callback(s)}}catch(t){window.alert(t)}};t.makeValueTable(o,e,i,l).node()}function w(t){if(!t.term)throw"tvs.term is not defined";if(!t.ranges)throw`.values[] missing for a term ${t.term.name}`;if(!Array.isArray(t.ranges))throw`.values[] is not an array for a term ${t.term.name}`;if(!t.ranges.length)throw`no categories selected for ${t.term.name}`;for(const e of t.ranges){if(e.value!=undefined){if(!e.label)throw`.label missing for special category for a term ${t.term.name}`}else{if(e.startunbounded){if(e.stopunbounded)throw`both start & stop are unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when start is unbounded for a term ${t.term.name}`}else if(e.stopunbounded){if(!Number.isFinite(e.start))throw`.start undefined when stop is unbounded for a term ${t.term.name}`}else{if(!Number.isFinite(e.start))throw`.start undefined when start is not unbounded for a term ${t.term.name}`;if(!Number.isFinite(e.stop))throw`.stop undefined when stop is not unbounded for a term ${t.term.name}`;if(e.start>=e.stop)throw`.start is not lower than stop for a term ${t.term.name}`}}}}export{g as convertViolinData,p as handler};
@@ -1 +1 @@
1
- import{r as e}from"./table-0daf2b89.js";import"./tslib.es6-c3c2d88f.js";import"./app-6fb77603.js";const t={term_name_gen:a,get_pill_label:i,fillMenu:l,getSelectRemovePos:n,getNegateText(e){return e.tvs.isnot?"NOT IN":"IN"}};async function l(e,t,l){l=JSON.parse(JSON.stringify(l));t.selectAll("*").remove();t=t.append("div");t.style("font-size","0.8em");for(const e in l.term.values){l.term.values[e].list;s(t,l,e);break}t.append("div").append("div").style("display","inline-block").style("float","right").style("padding","6px 20px").append("button").attr("class","sjpp_apply_btn sja_filter_tag_btn").text("Apply").on("click",(()=>{let t;for(const e in l.term.values){const s=l.term.values[e];if(!t){t=e;s.list=s.list.filter((e=>!("checked"in e)||e.checked))}else s.list=l.term.values[t].list}e.opts.callback(l)}))}function s(t,l,s){t.style("padding","6px").append("div").style("margin","10px").style("font-size","0.8rem").html(`<b> ${s}</b>.`);const n=l.term.values[s];const a=[];for(const e of n.list)a.push([{value:e.sample}]);const i=[{label:"Sample"}];e({rows:a,columns:i,div:t,maxWidth:"30vw",maxHeight:"40vh",noButtonCallback:(e,t)=>{n.list[e].checked=t.checked},striped:false,showHeader:false,selectAll:true})}function n(e){return e}function a(){return"Samples"}function i(e){return{txt:r(e.term)}}function r(e){let t,l;for(const s in e.values){t=e.values[s].list.length;l=s;break}return`${l} n=${t}`}export{s as addTable,t as handler};
1
+ import{r as e}from"./table-e2a307e6.js";import"./tslib.es6-c3c2d88f.js";import"./app-0de0ae35.js";const t={term_name_gen:a,get_pill_label:i,fillMenu:l,getSelectRemovePos:n,getNegateText(e){return e.tvs.isnot?"NOT IN":"IN"}};async function l(e,t,l){l=JSON.parse(JSON.stringify(l));t.selectAll("*").remove();t=t.append("div");t.style("font-size","0.8em");for(const e in l.term.values){l.term.values[e].list;s(t,l,e);break}t.append("div").append("div").style("display","inline-block").style("float","right").style("padding","6px 20px").append("button").attr("class","sjpp_apply_btn sja_filter_tag_btn").text("Apply").on("click",(()=>{let t;for(const e in l.term.values){const s=l.term.values[e];if(!t){t=e;s.list=s.list.filter((e=>!("checked"in e)||e.checked))}else s.list=l.term.values[t].list}e.opts.callback(l)}))}function s(t,l,s){t.style("padding","6px").append("div").style("margin","10px").style("font-size","0.8rem").html(`<b> ${s}</b>.`);const n=l.term.values[s];const a=[];for(const e of n.list)a.push([{value:e.sample}]);const i=[{label:"Sample"}];e({rows:a,columns:i,div:t,maxWidth:"30vw",maxHeight:"40vh",noButtonCallback:(e,t)=>{n.list[e].checked=t.checked},striped:false,showHeader:false,selectAll:true})}function n(e){return e}function a(){return"Samples"}function i(e){return{txt:r(e.term)}}function r(e){let t,l;for(const s in e.values){t=e.values[s].list.length;l=s;break}return`${l} n=${t}`}export{s as addTable,t as handler};
@@ -1 +1 @@
1
- import{aY as t}from"./app-6fb77603.js";function e(t){const e=t.toLowerCase();if(e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ftp://"))return true}function r(t,e){const r=t.append("div");const p=r.append("select").style("border-radius","5px").style("padding","5px 10px").style("margin","1px 20px 1px 10px");for(const t in e){p.append("option").text(t)}return p}function p(t,e,r){const p=t.append("input").attr("type","text").attr("size",r||50).style("border-radius","5px").style("padding","5px 20px").style("margin","1px 20px 1px 10px");if(e){p.attr("placeholder",e)}return p}function n(t){const e=t.div.append("textarea").attr("rows",t.rows||"5").attr("cols",t.cols||"70").style("border-radius","5px").attr("placeholder",t.placeholder||"");return e}function a(t){const e=t.append("input").attr("type","file").property("position","relative").style("margin","1px 20px 1px 10px").style("justify-content","left");return e}function s(t){const e=t.div.append("button").html(t.text).style("color",t.color||"black").style("background-color",t.backgroundColor||"#F2F2F2").style("border",t.border||"2px solid #999").style("padding",t.padding||"5px 10px").style("cursor","pointer");return e}function o(t,e){const r=t.append("div").style("display","inline-block").style("margin","15px").style("place-items","center left").html(e);return r}function i(e,r,p){const n=s({div:e,text:"&#8634;",backgroundColor:"white",color:"grey",padding:"0px 6px 1px 6px"});n.style("font-size","1.5em").style("display","inline-block").attr("type","reset").on("click",(async()=>{t(p).property("value","");if(r.data){r.data=typeof r.data=="string"?"":Array.isArray(r.data)?[]:{}}}));return n}export{i as a,r as b,s as c,p as d,n as e,a as f,e as i,o as m};
1
+ import{aY as t}from"./app-0de0ae35.js";function e(t){const e=t.toLowerCase();if(e.startsWith("https://")||e.startsWith("http://")||e.startsWith("ftp://"))return true}function r(t,e){const r=t.append("div");const p=r.append("select").style("border-radius","5px").style("padding","5px 10px").style("margin","1px 20px 1px 10px");for(const t in e){p.append("option").text(t)}return p}function p(t,e,r){const p=t.append("input").attr("type","text").attr("size",r||50).style("border-radius","5px").style("padding","5px 20px").style("margin","1px 20px 1px 10px");if(e){p.attr("placeholder",e)}return p}function n(t){const e=t.div.append("textarea").attr("rows",t.rows||"5").attr("cols",t.cols||"70").style("border-radius","5px").attr("placeholder",t.placeholder||"");return e}function a(t){const e=t.append("input").attr("type","file").property("position","relative").style("margin","1px 20px 1px 10px").style("justify-content","left");return e}function s(t){const e=t.div.append("button").html(t.text).style("color",t.color||"black").style("background-color",t.backgroundColor||"#F2F2F2").style("border",t.border||"2px solid #999").style("padding",t.padding||"5px 10px").style("cursor","pointer");return e}function o(t,e){const r=t.append("div").style("display","inline-block").style("margin","15px").style("place-items","center left").html(e);return r}function i(e,r,p){const n=s({div:e,text:"&#8634;",backgroundColor:"white",color:"grey",padding:"0px 6px 1px 6px"});n.style("font-size","1.5em").style("display","inline-block").attr("type","reset").on("click",(async()=>{t(p).property("value","");if(r.data){r.data=typeof r.data=="string"?"":Array.isArray(r.data)?[]:{}}}));return n}export{i as a,r as b,s as c,p as d,n as e,a as f,e as i,o as m};
@@ -1 +1 @@
1
- import{h as e,P as t}from"./app-6fb77603.js";class s{constructor(e){this.type="variantBrowser";this.dom={holder:e.holder.style("padding","20px"),header:e.header};this.rendered=false}getState(e){const t=e.plots.find((e=>e.id===this.id));return{config:t}}main(){this.config=JSON.parse(JSON.stringify(this.state.config));if(this.dom.header){this.dom.header.html(`${this.config.term.term.name}: variants in matrix samples`)}if(!this.rendered){this.dom.holder.selectAll("*").remove();const e=this.config.term.term.name;const t={holder:this.dom.holder.node(),noheader:1,nobox:1,genome:this.app.vocabApi.vocab.genome,gene:e,geneName:e,tracks:[{type:"mds3",name:e,custom_variants:this.config.custom_variants}]};runproteinpaint(t);this.rendered=true}}}const r=e(s);const i=r;function n(e,s){const r={};return t(r,e)}export{i as componentInit,n as getPlotConfig,r as variantBrowserInit};
1
+ import{h as e,P as t}from"./app-0de0ae35.js";class s{constructor(e){this.type="variantBrowser";this.dom={holder:e.holder.style("padding","20px"),header:e.header};this.rendered=false}getState(e){const t=e.plots.find((e=>e.id===this.id));return{config:t}}main(){this.config=JSON.parse(JSON.stringify(this.state.config));if(this.dom.header){this.dom.header.html(`${this.config.term.term.name}: variants in matrix samples`)}if(!this.rendered){this.dom.holder.selectAll("*").remove();const e=this.config.term.term.name;const t={holder:this.dom.holder.node(),noheader:1,nobox:1,genome:this.app.vocabApi.vocab.genome,gene:e,geneName:e,tracks:[{type:"mds3",name:e,custom_variants:this.config.custom_variants}]};runproteinpaint(t);this.rendered=true}}}const r=e(s);const i=r;function n(e,s){const r={};return t(r,e)}export{i as componentInit,n as getPlotConfig,r as variantBrowserInit};
@@ -1 +1 @@
1
- import{au as e,av as n,aw as l,ax as t,ay as s,az as o,z as a}from"./app-6fb77603.js";function f(e){let n=false;let l=true;let t=0;let s=0;const o={};let i;while(t<e.length){const a=e[t];if(l){if(a=="="){n=true;l=false;i=e.substring(s,t);s=t+1}else if(a==";"){o[e.substring(s,t)]=1;s=t+1}}else if(n&&a==";"){l=true;n=false;o[i]=e.substring(s,t);i=null;s=t+1}t++}const a=e.substr(s,t);if(i){o[i]=a}else{o[a]=1}return o}function r(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.mlst||t.alleles){if(e.allele_original==o.Allele){i=e;break}}if(!i){if(o.Allele=="-"){if(t.mlst){if(t.mlst.length==1){i=t.mlst[0]}}else if(t.alleles){if(t.alleles.length==1){i=t.alleles[0]}}}else{for(const e of t.mlst||t.alleles){if(e.allele_original.substr(1)==o.Allele){i=e;break}}}if(!i){continue}}if(!i.csq){i.csq=[]}i.csq.push(o);o._gene=o.SYMBOL||o.Gene;if(o.Feature_type&&o.Feature_type=="Transcript"){o._isoform=o.Feature.split(".")[0]}else{o._isoform=o._gene}if(o.Consequence){const[n,l,t]=e(o.Consequence);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o.HGVSp){o._mname=decodeURIComponent(o.HGVSp.substr(o.HGVSp.indexOf(":")+1))}else if(o.Protein_position&&o.Amino_acids){o._mname=decodeURIComponent(o.Protein_position+o.Amino_acids)}else if(o.HGVSc){o._mname=o.HGVSc.substr(o.HGVSc.indexOf(":")+1)}else if(o.Existing_variation){o._name=o.Existing_variation}else;}return true}function u(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.alleles){if(e.allele==o.Allele){i=e;break}}if(!i){continue}if(!i.ann){i.ann=[]}i.ann.push(o);o._gene=o.Gene_Name;if(o.Feature_Type&&o.Feature_Type=="transcript"&&o.Feature_ID){o._isoform=o.Feature_ID.split(".")[0]}if(o.Annotation){const[n,l,t]=e(o.Annotation);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o["HGVS.p"]){o._mname=o["HGVS.p"]}else if(o["HGVS.c"]){o._mname=o["HGVS.c"]}else;}return true}function c(e,i){if(e.length==1&&i.length==1){if(i=="."){return n}return l}if(e.length==i.length)return t;if(e.length<i.length)return s;if(e.length>i.length)return n;return o}const p=new RegExp(/<(.+)>/);const m={};for(const e in a){m[a[e].label.toUpperCase()]=e}function h(e){let n=[],l=[],t={},s=false,o={},i=false;for(const a of e){if(!a.startsWith("#")){continue}if(a.startsWith("#C")){n=a.split("\t").slice(9);continue}if(a.startsWith("##INFO")){const e=_(a.substring(8,a.length-1),t);if(e){l.push("INFO error: "+e)}else{s=true}continue}if(a.startsWith("##FORMAT")){const e=_(a.substring(10,a.length-1),o);if(e){l.push("FORMAT error: "+e)}else{i=true}}}const a=[];for(const e of n){const n={name:e};a.push(n)}if(t.CSQ){const e=t.CSQ.Description.split(" Format: ");if(e[1]){const n=e[1].split("|");if(n.length>1){t.CSQ.csqheader=[];for(const e of n){const n={name:e};t.CSQ.csqheader.push(n)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}if(t.ANN){const e=t.ANN.Description.split("'");if(e[1]){const n=e[1].split(" | ");if(n.length){t.ANN.annheader=[];for(const e of n){const n={name:e};t.ANN.annheader.push(n)}}else{l.push('no " | " joined annotation fields for ANN (snpEff annotation): '+t.ANN.Description)}}else{l.push("no single-quote enclosed annotation fields for ANN (snpEff annotation): "+t.ANN.Description)}}return[s?t:null,i?o:null,a,l.length?l:null]}function g(e,n){const l=e.split("\t");if(l.length<8){return["line has less than 8 fields",null,null]}const t=Number.parseInt(l[2-1]);if(!Number.isInteger(t)){return["invalid value for genomic position",null,null]}const s=l[4-1];const o={vcf_ID:l[3-1],chr:(n.nochr?"chr":"")+l[1-1],pos:t-1,ref:s,altstr:l[5-1],alleles:[{allele:s,sampledata:[]}],info:{},name:l[3-1]=="."?null:l[3-1]};const i=[];for(const e of l[5-1].split(",")){const n={ref:o.ref,allele:e,allele_original:e,sampledata:[],_m:o,info:{}};o.alleles.push(n);if(e[0]=="<"){const l=e.match(p);if(!l){i.push(e);continue}n.type=l[1];n.allele=l[1];n.issymbolicallele=true}else{const[e,l,t]=d(o.pos,o.ref,n.allele);n.pos=e;n.ref=l;n.allele=t}}if(l[9-1]&&l[10-1]){b(l,o,n)}o.alleles.shift();const a=l[8-1]=="."?[]:f(l[8-1]);let r=[];if(n.info){r=N(a,o,n)}else{o.info=a}const u=[];for(const e of o.alleles){const n={};for(const e in o){if(e!="alleles"){n[e]=o[e]}}for(const l in e){if(l=="allele"){n.alt=e[l]}else if(l=="info"){n.altinfo=e[l]}else{n[l]=e[l]}}if(!n.issymbolicallele&&n.alt!="NON_REF"){n.type=c(n.ref,n.alt)}u.push(n)}return[r.length?"unknown info keys: "+r.join(","):null,u,i.length>0?i:null]}function d(e,n,l){while(n.length>1&&l.length>1&&n[n.length-1]==l[l.length-1]){n=n.substr(0,n.length-1);l=l.substr(0,l.length-1)}while(n.length>1&&l.length>1&&n[0]==l[0]){n=n.substr(1);l=l.substr(1);e++}return[e,n,l]}function b(e,n,l){const t=e[9-1].split(":");for(let s=9;s<e.length;s++){const o=e[s].split(":");{let e=true;for(const n of o){if(n!="."){e=false;break}}if(e){continue}}const i=s-9;for(let e=1;e<n.alleles.length;e++){const t={};if(l.samples&&l.samples[i]){for(const e in l.samples[i]){t[e]=l.samples[i][e]}}else{t.name="missing_samplename_from_vcf_header"}n.alleles[e].sampledata.push({sampleobj:t})}for(let e=0;e<t.length;e++){const s=t[e];const i=o[e];if(i=="."){continue}if(s=="GT"){const e=i.indexOf("/")!=-1?"/":"|";let l=0;let t=false;const s=[];for(const o of i.split(e)){if(o=="."){t=true;continue}const e=Number.parseInt(o);if(Number.isNaN(e)){t=true;continue}l+=e;const i=n.alleles[e];if(i){s.push(i.allele)}}let o=false;if(!t){o=l==0}const a=s.join(e);for(let e=1;e<n.alleles.length;e++){const l=n.alleles[e].sampledata[n.alleles[e].sampledata.length-1];l.GT=i;l.genotype=a;if(o){l.gtallref=true}l.__gtalleles=s}continue}const a=l.format?l.format[s]:null;if(!a){for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}continue}const f=a.Type=="Integer";const r=a.Type=="Float";if(a.Number&&a.Number=="R"||s=="AD"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.ref]=e[0];o[s][t.allele]=e[l]}}continue}if(a.Number&&a.Number=="A"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l-1]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.allele]=e[l-1]}}continue}for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}}}for(const e of n.alleles){for(const n of e.sampledata){if(n.AD){n.allele2readcount={};for(const e in n.AD){n.allele2readcount[e]=n.AD[e]}}}}}function _(e,n){const l={},t=[];let s=0,o=false,a=null;for(let n=0;n<e.length;n++){if(e[n]=='"'){n++;const s=n;while(e[n]!='"'){n++}if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined before double quotes")}o=true;continue}if(e[n]=="="){a=e.substring(s,n);s=n+1;continue}if(e[n]==","){if(o){o=false}else{if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined")}}s=n+1;continue}}if(a){l[a]=e.substring(s,i)}if(l.ID){n[l.ID]=l}else{return"no ID"}if(t.length)return t.join("\n")}function N(e,n,l){const t=[];for(const s in e){if(l.info[s]==undefined){t.push(s);continue}const o=e[s];if(s=="CSQ"){const e=r(o,l.info.CSQ.csqheader,n);if(!e){n.info[s]=o}continue}if(s=="ANN"){const e=u(o,l.info.ANN.annheader,n);if(!e){n.info[s]=o}continue}if(l.info[s].Type=="Flag"){n.info[s]=s;continue}const i=l.info[s].Number;const a=l.info[s].Type=="Integer";const f=l.info[s].Type=="Float";if(i=="0"){n.info[s]=s;continue}if(i=="A"){const e=o.split(",");for(let l=0;l<e.length;l++){if(n.alleles[l]){n.alleles[l].info[s]=a?Number.parseInt(e[l]):f?Number.parseFloat(e[l]):e[l]}}continue}if(i=="1"){n.info[s]=a?Number.parseInt(o):f?Number.parseFloat(o):o;continue}if(!o.split){continue}const c=o.split(",");if(a){n.info[s]=c.map(Number.parseInt)}else if(f){n.info[s]=c.map(Number.parseFloat)}else{n.info[s]=c}}return t}export{g as a,h as v};
1
+ import{au as e,av as n,aw as l,ax as t,ay as s,az as o,z as a}from"./app-0de0ae35.js";function f(e){let n=false;let l=true;let t=0;let s=0;const o={};let i;while(t<e.length){const a=e[t];if(l){if(a=="="){n=true;l=false;i=e.substring(s,t);s=t+1}else if(a==";"){o[e.substring(s,t)]=1;s=t+1}}else if(n&&a==";"){l=true;n=false;o[i]=e.substring(s,t);i=null;s=t+1}t++}const a=e.substr(s,t);if(i){o[i]=a}else{o[a]=1}return o}function r(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.mlst||t.alleles){if(e.allele_original==o.Allele){i=e;break}}if(!i){if(o.Allele=="-"){if(t.mlst){if(t.mlst.length==1){i=t.mlst[0]}}else if(t.alleles){if(t.alleles.length==1){i=t.alleles[0]}}}else{for(const e of t.mlst||t.alleles){if(e.allele_original.substr(1)==o.Allele){i=e;break}}}if(!i){continue}}if(!i.csq){i.csq=[]}i.csq.push(o);o._gene=o.SYMBOL||o.Gene;if(o.Feature_type&&o.Feature_type=="Transcript"){o._isoform=o.Feature.split(".")[0]}else{o._isoform=o._gene}if(o.Consequence){const[n,l,t]=e(o.Consequence);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o.HGVSp){o._mname=decodeURIComponent(o.HGVSp.substr(o.HGVSp.indexOf(":")+1))}else if(o.Protein_position&&o.Amino_acids){o._mname=decodeURIComponent(o.Protein_position+o.Amino_acids)}else if(o.HGVSc){o._mname=o.HGVSc.substr(o.HGVSc.indexOf(":")+1)}else if(o.Existing_variation){o._name=o.Existing_variation}else;}return true}function u(n,l,t){if(!l){return null}for(const s of n.split(",")){const n=s.replace(/&/g,",").split("|");const o={};for(let e=0;e<l.length;e++){if(n[e]){o[l[e].name]=n[e]}}if(!o.Allele){continue}let i=null;for(const e of t.alleles){if(e.allele==o.Allele){i=e;break}}if(!i){continue}if(!i.ann){i.ann=[]}i.ann.push(o);o._gene=o.Gene_Name;if(o.Feature_Type&&o.Feature_Type=="transcript"&&o.Feature_ID){o._isoform=o.Feature_ID.split(".")[0]}if(o.Annotation){const[n,l,t]=e(o.Annotation);o._dt=n;o._class=l;o._csqrank=t}else{o._dt=dtsnvindel;o._class=mclassnonstandard}if(o["HGVS.p"]){o._mname=o["HGVS.p"]}else if(o["HGVS.c"]){o._mname=o["HGVS.c"]}else;}return true}function c(e,i){if(e.length==1&&i.length==1){if(i=="."){return n}return l}if(e.length==i.length)return t;if(e.length<i.length)return s;if(e.length>i.length)return n;return o}const p=new RegExp(/<(.+)>/);const m={};for(const e in a){m[a[e].label.toUpperCase()]=e}function h(e){let n=[],l=[],t={},s=false,o={},i=false;for(const a of e){if(!a.startsWith("#")){continue}if(a.startsWith("#C")){n=a.split("\t").slice(9);continue}if(a.startsWith("##INFO")){const e=b(a.substring(8,a.length-1),t);if(e){l.push("INFO error: "+e)}else{s=true}continue}if(a.startsWith("##FORMAT")){const e=b(a.substring(10,a.length-1),o);if(e){l.push("FORMAT error: "+e)}else{i=true}}}const a=[];for(const e of n){const n={name:e};a.push(n)}if(t.CSQ){const e=t.CSQ.Description.split(" Format: ");if(e[1]){const n=e[1].split("|");if(n.length>1){t.CSQ.csqheader=[];for(const e of n){const n={name:e};t.CSQ.csqheader.push(n)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}else{l.push("unknown format for CSQ header: "+t.CSQ.Description)}}if(t.ANN){const e=t.ANN.Description.split("'");if(e[1]){const n=e[1].split(" | ");if(n.length){t.ANN.annheader=[];for(const e of n){const n={name:e};t.ANN.annheader.push(n)}}else{l.push('no " | " joined annotation fields for ANN (snpEff annotation): '+t.ANN.Description)}}else{l.push("no single-quote enclosed annotation fields for ANN (snpEff annotation): "+t.ANN.Description)}}return[s?t:null,i?o:null,a,l.length?l:null]}function g(e,n){const l=e.split("\t");if(l.length<8){return["line has less than 8 fields",null,null]}const t=Number.parseInt(l[2-1]);if(!Number.isInteger(t)){return["invalid value for genomic position",null,null]}const s=l[4-1];const o={vcf_ID:l[3-1],chr:(n.nochr?"chr":"")+l[1-1],pos:t-1,ref:s,altstr:l[5-1],alleles:[{allele:s,sampledata:[]}],info:{},name:l[3-1]=="."?null:l[3-1]};const i=[];for(const e of l[5-1].split(",")){const n={ref:o.ref,allele:e,allele_original:e,sampledata:[],_m:o,info:{}};o.alleles.push(n);if(e[0]=="<"){const l=e.match(p);if(!l){i.push(e);continue}n.type=l[1];n.allele=l[1];n.issymbolicallele=true}else{const[e,l,t]=d(o.pos,o.ref,n.allele);n.pos=e;n.ref=l;n.allele=t}}if(l[9-1]&&l[10-1]){_(l,o,n)}o.alleles.shift();const a=l[8-1]=="."?[]:f(l[8-1]);let r=[];if(n.info){r=N(a,o,n)}else{o.info=a}const u=[];for(const e of o.alleles){const n={};for(const e in o){if(e!="alleles"){n[e]=o[e]}}for(const l in e){if(l=="allele"){n.alt=e[l]}else if(l=="info"){n.altinfo=e[l]}else{n[l]=e[l]}}if(!n.issymbolicallele&&n.alt!="NON_REF"){n.type=c(n.ref,n.alt)}u.push(n)}return[r.length?"unknown info keys: "+r.join(","):null,u,i.length>0?i:null]}function d(e,n,l){while(n.length>1&&l.length>1&&n[n.length-1]==l[l.length-1]){n=n.substr(0,n.length-1);l=l.substr(0,l.length-1)}while(n.length>1&&l.length>1&&n[0]==l[0]){n=n.substr(1);l=l.substr(1);e++}return[e,n,l]}function _(e,n,l){const t=e[9-1].split(":");for(let s=9;s<e.length;s++){const o=e[s].split(":");{let e=true;for(const n of o){if(n!="."){e=false;break}}if(e){continue}}const i=s-9;for(let e=1;e<n.alleles.length;e++){const t={};if(l.samples&&l.samples[i]){for(const e in l.samples[i]){t[e]=l.samples[i][e]}}else{t.name="missing_samplename_from_vcf_header"}n.alleles[e].sampledata.push({sampleobj:t})}for(let e=0;e<t.length;e++){const s=t[e];const i=o[e];if(i=="."){continue}if(s=="GT"){const e=i.indexOf("/")!=-1?"/":"|";let l=0;let t=false;const s=[];for(const o of i.split(e)){if(o=="."){t=true;continue}const e=Number.parseInt(o);if(Number.isNaN(e)){t=true;continue}l+=e;const i=n.alleles[e];if(i){s.push(i.allele)}}let o=false;if(!t){o=l==0}const a=s.join(e);for(let e=1;e<n.alleles.length;e++){const l=n.alleles[e].sampledata[n.alleles[e].sampledata.length-1];l.GT=i;l.genotype=a;if(o){l.gtallref=true}l.__gtalleles=s}continue}const a=l.format?l.format[s]:null;if(!a){for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}continue}const f=a.Type=="Integer";const r=a.Type=="Float";if(a.Number&&a.Number=="R"||s=="AD"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.ref]=e[0];o[s][t.allele]=e[l]}}continue}if(a.Number&&a.Number=="A"){const e=i.split(",").map((e=>{if(f)return Number.parseInt(e);if(r)return Number.parseFloat(e);return e}));for(let l=1;l<n.alleles.length;l++){if(e[l-1]!=undefined){const t=n.alleles[l];const o=t.sampledata[t.sampledata.length-1];o[s]={};o[s][t.allele]=e[l-1]}}continue}for(let e=1;e<n.alleles.length;e++){n.alleles[e].sampledata[n.alleles[e].sampledata.length-1][s]=i}}}for(const e of n.alleles){for(const n of e.sampledata){if(n.AD){n.allele2readcount={};for(const e in n.AD){n.allele2readcount[e]=n.AD[e]}}}}}function b(e,n){const l={},t=[];let s=0,o=false,a=null;for(let n=0;n<e.length;n++){if(e[n]=='"'){n++;const s=n;while(e[n]!='"'){n++}if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined before double quotes")}o=true;continue}if(e[n]=="="){a=e.substring(s,n);s=n+1;continue}if(e[n]==","){if(o){o=false}else{if(a){l[a]=e.substring(s,n);a=null}else{t.push("k undefined")}}s=n+1;continue}}if(a){l[a]=e.substring(s,i)}if(l.ID){n[l.ID]=l}else{return"no ID"}if(t.length)return t.join("\n")}function N(e,n,l){const t=[];for(const s in e){if(l.info[s]==undefined){t.push(s);continue}const o=e[s];if(s=="CSQ"){const e=r(o,l.info.CSQ.csqheader,n);if(!e){n.info[s]=o}continue}if(s=="ANN"){const e=u(o,l.info.ANN.annheader,n);if(!e){n.info[s]=o}continue}if(l.info[s].Type=="Flag"){n.info[s]=s;continue}const i=l.info[s].Number;const a=l.info[s].Type=="Integer";const f=l.info[s].Type=="Float";if(i=="0"){n.info[s]=s;continue}if(i=="A"){const e=o.split(",");for(let l=0;l<e.length;l++){if(n.alleles[l]){n.alleles[l].info[s]=a?Number.parseInt(e[l]):f?Number.parseFloat(e[l]):e[l]}}continue}if(i=="1"){n.info[s]=a?Number.parseInt(o):f?Number.parseFloat(o):o;continue}if(!o.split){continue}const c=o.split(",");if(a){n.info[s]=c.map(Number.parseInt)}else if(f){n.info[s]=c.map(Number.parseFloat)}else{n.info[s]=c}}return t}export{g as a,h as v};
@@ -1 +1 @@
1
- import{h as t,P as i,Q as e}from"./app-6fb77603.js";import{renderTerm1Label as s,term0_term2_defaultQ as o,controlsInit as n}from"./controls-268e40e6.js";import a from"./violin.renderer-469fa0ff.js";import{h as l}from"./html.legend-80b2b3ec.js";import{f as r,i as p}from"./termsetting-492eefa7.js";import{setInteractivity as d}from"./violin.interactivity-bf40ddde.js";import"./controls.btns-5bf9e7d7.js";import"./controls.config-2f0fa061.js";import"./brush-9faa7ae7.js";import"./pointer-c7475677.js";import"./nodrag-b2737073.js";import"./table-0daf2b89.js";import"./tslib.es6-c3c2d88f.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-c26b6cfd.js";import"path";import"./FilterRxComp-02e68f1b.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";import"./niceNumLabels-29a7c6ca.js";class m{constructor(t){this.type="violin"}async init(t){const i=this.opts.holder.append("div").attr("class","sjpp-plot-controls").style("display","inline-block");t.plots.find((t=>t.id===this.id));const e=this.opts.holder.append("div").style("display","inline-block").style("padding",this.opts.mode!="minimal"?"5px":"0px").style("padding-left",this.opts.mode!="minimal"?"45px":"0px").attr("id","sjpp-vp-holder");this.dom={header:this.opts.header,loadingDiv:this.opts.holder.append("div").style("position","absolute").style("display",this.opts.mode!="minimal"?"inline-block":"none").style("padding-left","10px").style("padding-top","20px").text("Loading ..."),controls:i,violinDiv:e.append("div").attr("class","sjpp-vp-violinDiv").style("padding-left",this.opts.mode!="minimal"?"10px":"0px"),legendDiv:e.append("div").classed("sjpp-vp-legend",true).style("padding-left","5px"),tableHolder:this.opts.holder.append("div").classed("sjpp-tableHolder",true).style("display","inline-block").style("padding","10px").style("vertical-align","top").style("margin-left","0px").style("margin-top","30px").style("margin-right","30px")};a(this);d(this);if(this.opts.mode!="minimal"){this.legendRenderer=l(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{}})}await this.setControls()}async setControls(){this.components={};if(this.opts.mode=="minimal")return;const t=[{type:"term",configKey:"term",chartType:"violin",usecase:{target:"violin",detail:"term"},label:s,vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"violin",usecase:{target:"violin",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:o},{label:"Orientation",title:"Orientation of the chart",type:"radio",chartType:"violin",settingsKey:"orientation",options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]},{label:"Method",title:`If selected uses the KDE method, otherwise uses a histogram`,type:"radio",chartType:"violin",settingsKey:"method",options:[{label:"KDE",value:0},{label:"Histogram",value:1}]},{label:"Data symbol",title:"Symbol type",type:"radio",chartType:"violin",settingsKey:"datasymbol",options:[{label:"Ticks",value:"rug"},{label:"Circles",value:"bean"},{label:"Off",value:"none"}]},{label:"Scale",title:"Axis scale",type:"radio",chartType:"violin",settingsKey:"unit",options:[{label:"Linear",value:"abs"},{label:"Log",value:"log"}]},{label:"Symbol size",type:"number",chartType:"violin",settingsKey:"radius",step:1,max:15,min:3},{label:"Stroke width",title:"Size of Symbol stroke",type:"number",chartType:"violin",settingsKey:"strokeWidth",step:.1,max:2,min:.1},{label:"Bins",type:"number",chartType:"violin",settingsKey:"ticks",title:"Number of bins used to build the plot",min:1,max:50},{label:"Plot length",title:"Length of the plot",type:"number",chartType:"violin",settingsKey:"svgw",step:10,max:1e3,min:500,debounceInterval:1e3},{label:"Plot thickness",title:"Thickness of plots, can be between 40 and 200",type:"number",chartType:"violin",settingsKey:"plotThickness",step:10,max:500,min:40,debounceInterval:1e3},{label:"Median length",title:"Length of median",type:"number",chartType:"violin",settingsKey:"medianLength",step:1,max:15,min:3,debounceInterval:1e3},{label:"Median thickness",title:"Width of median",type:"number",chartType:"violin",settingsKey:"medianThickness",step:1,max:10,min:3,debounceInterval:100},{label:"Default color",type:"color",chartType:"violin",settingsKey:"defaultColor"}];this.components.controls=await n({app:this.app,id:this.id,holder:this.dom.controls,inputs:t});this.components.controls.on("downloadClick.violin",this.download)}reactsTo(t){if(t.type.startsWith("plot_")){return t.id===this.id&&(!t.config.childType||t.config.childType==this.type)}return true}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{termfilter:t.termfilter,config:i,displaySampleIds:t.termdbConfig.displaySampleIds,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken()}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.violin;if(this.config.chartType!=this.type&&this.config.childType!=this.type)return;if(this.dom.header)this.dom.header.html(this.config.term.term.name+` <span style="opacity:.6;font-size:1em;margin-left:10px;">Violin Plot</span>`);await this.getDescrStats();const t=this.validateArgs();this.data=await this.app.vocabApi.getViolinPlotData(t);if(this.settings.plotThickness==undefined){const t=this.data.plots.length==1?200:150;this.settings.plotThickness=Math.min(1400/this.data.plots.length,t)}if(this.data.error)throw this.data.error;this.toggleLoadingDiv(this.opts.mode=="minimal"?"none":"");setTimeout((()=>{this.render();this.renderPvalueTable()}),this.opts.mode=="minimal"?0:500);this.toggleLoadingDiv("none")}async getDescrStats(){const t=[this.config.term];if(this.config.term2)t.push(this.config.term2);if(this.config.term0)t.push(this.config.term0);for(const i of t){if(p(i.term)){const t=await this.app.vocabApi.getDescrStats(i,this.state.termfilter,this.config.settings?.violin?.unit=="log");if(t.error)throw t.error;i.q.descrStats=t.values}}}validateArgs(){const{term:t,term2:i,settings:e}=this.config;const s=this.settings;const o={filter:this.state.termfilter.filter,filter0:this.state.termfilter.filter0,svgw:s.svgw/window.devicePixelRatio,orientation:s.orientation,devicePixelRatio:window.devicePixelRatio,datasymbol:s.datasymbol,radius:s.radius,strokeWidth:s.strokeWidth,axisHeight:s.axisHeight,rightMargin:s.rightMargin,unit:s.unit,isKDE:s.method==0,ticks:s.ticks};if(this.opts.mode=="minimal"){o.tw=t;if(i)throw"only a single term allowed for minimal plot";if(t.q.mode=="spline"){s.lines=t.q.knots.map((t=>Number(t.value)))}else{s.lines=[]}if(t.q.scale){o.scale=t.q.scale}}else if(p(t.term)&&t.q.mode==="continuous"){o.tw=t;if(i)o.divideTw=i}else if(p(i?.term)&&i.q.mode==="continuous"){o.tw=i;o.divideTw=t}else{throw"both term1 and term2 are not numeric/continuous"}return o}}const h=t(m);const c=h;function g(t,i={}){const s={orientation:"horizontal",rowlabelw:250,brushRange:null,svgw:500,datasymbol:"rug",radius:3,strokeWidth:.2,axisHeight:60,rightMargin:50,lines:[],unit:"abs",plotThickness:undefined,medianLength:7,medianThickness:3,ticks:20,defaultColor:e,method:0};return Object.assign(s,i)}async function f(t,e){if(!t.term)throw"violin getPlotConfig: opts.term{} missing";try{await r(t.term,e.vocabApi);if(t.term2)await r(t.term2,e.vocabApi);if(t.term0)await r(t.term0,e.vocabApi)}catch(t){throw`${t} [violin getPlotConfig()]`}const s={id:t.term.term.id,settings:{controls:{term2:null,term0:null},violin:g()}};return i(s,t)}export{c as componentInit,g as getDefaultViolinSettings,f as getPlotConfig,h as violinInit};
1
+ import{h as t,P as i,Q as e}from"./app-0de0ae35.js";import{renderTerm1Label as s,term0_term2_defaultQ as o,controlsInit as n}from"./controls-1f3ac9d0.js";import a from"./violin.renderer-0b7431a2.js";import{h as l}from"./html.legend-455f7881.js";import{f as r,i as p}from"./termsetting-2e75e729.js";import{setInteractivity as d}from"./violin.interactivity-8b63e000.js";import"./controls.btns-5b44e5d0.js";import"./controls.config-b0339f96.js";import"./brush-4c775f74.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./table-e2a307e6.js";import"./tslib.es6-c3c2d88f.js";import"./axis-747c801e.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-d560d2a5.js";import"path";import"./FilterRxComp-fb608459.js";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-7ecc48db.js";import"./niceNumLabels-1bd7a93b.js";class m{constructor(t){this.type="violin"}async init(t){const i=this.opts.holder.append("div").attr("class","sjpp-plot-controls").style("display","inline-block");t.plots.find((t=>t.id===this.id));const e=this.opts.holder.append("div").style("display","inline-block").style("padding",this.opts.mode!="minimal"?"5px":"0px").style("padding-left",this.opts.mode!="minimal"?"45px":"0px").attr("id","sjpp-vp-holder");this.dom={header:this.opts.header,loadingDiv:this.opts.holder.append("div").style("position","absolute").style("display",this.opts.mode!="minimal"?"inline-block":"none").style("padding-left","10px").style("padding-top","20px").text("Loading ..."),controls:i,violinDiv:e.append("div").attr("class","sjpp-vp-violinDiv").style("padding-left",this.opts.mode!="minimal"?"10px":"0px"),legendDiv:e.append("div").classed("sjpp-vp-legend",true).style("padding-left","5px"),tableHolder:this.opts.holder.append("div").classed("sjpp-tableHolder",true).style("display","inline-block").style("padding","10px").style("vertical-align","top").style("margin-left","0px").style("margin-top","30px").style("margin-right","30px")};a(this);d(this);if(this.opts.mode!="minimal"){this.legendRenderer=l(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{}})}await this.setControls()}async setControls(){this.components={};if(this.opts.mode=="minimal")return;const t=[{type:"term",configKey:"term",chartType:"violin",usecase:{target:"violin",detail:"term"},label:s,vocabApi:this.app.vocabApi,menuOptions:"edit"},{type:"term",configKey:"term2",chartType:"violin",usecase:{target:"violin",detail:"term2"},title:"Overlay data",label:"Overlay",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.opts.numericEditMenuVersion,defaultQ4fillTW:o},{label:"Orientation",title:"Orientation of the chart",type:"radio",chartType:"violin",settingsKey:"orientation",options:[{label:"Vertical",value:"vertical"},{label:"Horizontal",value:"horizontal"}]},{label:"Method",title:`If selected uses the KDE method, otherwise uses a histogram`,type:"radio",chartType:"violin",settingsKey:"method",options:[{label:"KDE",value:0},{label:"Histogram",value:1}]},{label:"Data symbol",title:"Symbol type",type:"radio",chartType:"violin",settingsKey:"datasymbol",options:[{label:"Ticks",value:"rug"},{label:"Circles",value:"bean"},{label:"Off",value:"none"}]},{label:"Scale",title:"Axis scale",type:"radio",chartType:"violin",settingsKey:"unit",options:[{label:"Linear",value:"abs"},{label:"Log",value:"log"}]},{label:"Symbol size",type:"number",chartType:"violin",settingsKey:"radius",step:1,max:15,min:3},{label:"Stroke width",title:"Size of Symbol stroke",type:"number",chartType:"violin",settingsKey:"strokeWidth",step:.1,max:2,min:.1},{label:"Bins",type:"number",chartType:"violin",settingsKey:"ticks",title:"Number of bins used to build the plot",min:1,max:50},{label:"Plot length",title:"Length of the plot",type:"number",chartType:"violin",settingsKey:"svgw",step:10,max:1e3,min:500,debounceInterval:1e3},{label:"Plot thickness",title:"Thickness of plots, can be between 40 and 200",type:"number",chartType:"violin",settingsKey:"plotThickness",step:10,max:500,min:40,debounceInterval:1e3},{label:"Median length",title:"Length of median",type:"number",chartType:"violin",settingsKey:"medianLength",step:1,max:15,min:3,debounceInterval:1e3},{label:"Median thickness",title:"Width of median",type:"number",chartType:"violin",settingsKey:"medianThickness",step:1,max:10,min:3,debounceInterval:100},{label:"Default color",type:"color",chartType:"violin",settingsKey:"defaultColor"}];this.components.controls=await n({app:this.app,id:this.id,holder:this.dom.controls,inputs:t});this.components.controls.on("downloadClick.violin",this.download)}reactsTo(t){if(t.type.startsWith("plot_")){return t.id===this.id&&(!t.config.childType||t.config.childType==this.type)}return true}getState(t){const i=t.plots.find((t=>t.id===this.id));if(!i){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{termfilter:t.termfilter,config:i,displaySampleIds:t.termdbConfig.displaySampleIds,hasVerifiedToken:this.app.vocabApi.hasVerifiedToken()}}async main(){this.config=structuredClone(this.state.config);this.settings=this.config.settings.violin;if(this.config.chartType!=this.type&&this.config.childType!=this.type)return;if(this.dom.header)this.dom.header.html(this.config.term.term.name+` <span style="opacity:.6;font-size:1em;margin-left:10px;">Violin Plot</span>`);await this.getDescrStats();const t=this.validateArgs();this.data=await this.app.vocabApi.getViolinPlotData(t);if(this.settings.plotThickness==undefined){const t=this.data.plots.length==1?200:150;this.settings.plotThickness=Math.min(1400/this.data.plots.length,t)}if(this.data.error)throw this.data.error;this.toggleLoadingDiv(this.opts.mode=="minimal"?"none":"");setTimeout((()=>{this.render();this.renderPvalueTable()}),this.opts.mode=="minimal"?0:500);this.toggleLoadingDiv("none")}async getDescrStats(){const t=[this.config.term];if(this.config.term2)t.push(this.config.term2);if(this.config.term0)t.push(this.config.term0);for(const i of t){if(p(i.term)){const t=await this.app.vocabApi.getDescrStats(i,this.state.termfilter,this.config.settings?.violin?.unit=="log");if(t.error)throw t.error;i.q.descrStats=t.values}}}validateArgs(){const{term:t,term2:i,settings:e}=this.config;const s=this.settings;const o={filter:this.state.termfilter.filter,filter0:this.state.termfilter.filter0,svgw:s.svgw/window.devicePixelRatio,orientation:s.orientation,devicePixelRatio:window.devicePixelRatio,datasymbol:s.datasymbol,radius:s.radius,strokeWidth:s.strokeWidth,axisHeight:s.axisHeight,rightMargin:s.rightMargin,unit:s.unit,isKDE:s.method==0,ticks:s.ticks};if(this.opts.mode=="minimal"){o.tw=t;if(i)throw"only a single term allowed for minimal plot";if(t.q.mode=="spline"){s.lines=t.q.knots.map((t=>Number(t.value)))}else{s.lines=[]}if(t.q.scale){o.scale=t.q.scale}}else if(p(t.term)&&t.q.mode==="continuous"){o.tw=t;if(i)o.divideTw=i}else if(p(i?.term)&&i.q.mode==="continuous"){o.tw=i;o.divideTw=t}else{throw"both term1 and term2 are not numeric/continuous"}return o}}const h=t(m);const c=h;function g(t,i={}){const s={orientation:"horizontal",rowlabelw:250,brushRange:null,svgw:500,datasymbol:"rug",radius:3,strokeWidth:.2,axisHeight:60,rightMargin:50,lines:[],unit:"abs",plotThickness:undefined,medianLength:7,medianThickness:3,ticks:20,defaultColor:e,method:0};return Object.assign(s,i)}async function f(t,e){if(!t.term)throw"violin getPlotConfig: opts.term{} missing";try{await r(t.term,e.vocabApi);if(t.term2)await r(t.term2,e.vocabApi);if(t.term0)await r(t.term0,e.vocabApi)}catch(t){throw`${t} [violin getPlotConfig()]`}const s={id:t.term.term.id,settings:{controls:{term2:null,term0:null},violin:g()}};return i(s,t)}export{c as componentInit,g as getDefaultViolinSettings,f as getPlotConfig,h as violinInit};
@@ -1 +1 @@
1
- import{r as t}from"./table-0daf2b89.js";import{c as e}from"./termsetting-492eefa7.js";import{a as s,c as i}from"./FilterRxComp-02e68f1b.js";import{U as n,r as a}from"./app-6fb77603.js";import{n as l}from"./niceNumLabels-29a7c6ca.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-39d11f24.js";function o(s){s.download=()=>{if(!s.state)return;s.dom.violinDiv.selectAll(".sjpp-violin-plot").each((function(){n(this,"violin",{apply_dom_styles:true})}))};s.displayLabelClickMenu=function(t,e,i,n){if(!e||s.data.plots.length===1){return}const a=t.q.mode==="continuous"?"term2":"term";const l=[{label:`Add filter: ${i.label.split(",")[0]}`,callback:d(t,e,s,i,a,false)},{label:`Hide: ${i.label}`,callback:()=>{const t=s.config[a];const e=true;s.app.dispatch({type:"plot_edit",id:s.id,config:{[a]:{isAtomic:true,term:t.term,q:r(i,t,e)}}})}}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){l.push({label:`List samples`,callback:async()=>{const[a,l]=[s.data.min,s.data.max*2];await s.listSamples(n,t,e,i,a,l)}})}s.displayMenu(n,l,i)};s.displayBrushMenu=function(t,e,s,i,n,a,l){const[o,r]=l?[a.invert(n[0]),a.invert(n[1])]:[a.invert(n[1]),a.invert(n[0])];const p=[{label:`Add filter`,callback:d(t,e,s,i,o,r,true)}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){p.push({label:`List samples`,callback:async()=>s.listSamples(event,t,e,i,o,r)})}s.displayMenu(event,p,i,o,r)};s.displayMenu=function(t,e,i,n,a){s.app.tip.d.selectAll("*").remove();s.app.tip.d.classed("sjpp-violin-brush-tip",true);const o=n!=null&&a!=null;if(o){const[t,e]=s.config.term.term.type=="integer"?[Math.round(n),Math.round(a)]:l([n,a]);s.app.tip.d.append("div").text(`From ${t} to ${e}`)}s.app.tip.d.append("div").selectAll("div").data(e).enter().append("div").attr("class","sja_menuoption").text((t=>t.label)).on("click",((t,e)=>{s.app.tip.hide();e.callback();s.dom.tableHolder.style("display","none")}));s.app.tip.show(t.clientX,t.clientY)};s.addEditColorToMenu=function(t){const e=a(t.color).formatHex();const i=s.app.tip.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Color:").append("input").attr("type","color").attr("value",e).on("change",(()=>{const e=i.node().value;const n=s.config.term2;let a;for(const s in n.term.values)if(n.term.values[s].label==t.label){n.term.values[s].color=e;a=s}if(!a)n.term.values={[t.label]:{label:t.label,color:e}};s.app.dispatch({type:"plot_edit",id:s.id,config:{term2:{isAtomic:true,term:s.config.term2.term,q:r(t,s.config.term2,false)}}});s.app.tip.hide()}))};s.listSamples=async function(t,e,i,n,a,l){const o=s.getTvsLst(e,i,n,a,l);const d=e.q?.mode==="continuous"?e:i;const r={type:"tvslst",join:"and",lst:[s.state.termfilter.filter,o],in:true};const p={terms:[d],filter:r};const c=await s.app.vocabApi.getAnnotatedSampleData(p);s.displaySampleIds(t,d,c)};s.displaySampleIds=function(i,n,a){s.app.tip.clear();if(!a?.samples)return;const l=[];for(const[t,s]of Object.entries(a.samples))l.push([{value:a.refs.bySampleId[t].label},{value:e(s[n.$id].value)}]);const o=s.app.tip.d.append("div");const d=[{label:"Sample"},{label:"Value"}];const r=l;t({rows:r,columns:d,div:o,maxWidth:"30vw",maxHeight:"25vh",resize:true,showLines:true});s.app.tip.show(i.clientX,i.clientY)};s.labelHideLegendClicking=function(t,e){s.dom.legendDiv.selectAll(".sjpp-htmlLegend").on("click",(i=>{i.stopPropagation();const n=i.target.__data__;const a=t?.term.type==="condition"||t?.term.type==="samplelst"||t?.term.type==="categorical"||(t?.term.type==="float"||t?.term.type==="integer")&&s.config.term?.q.mode==="continuous"?"term2":"term";const l=s.config[a];if(t){for(const t of Object.keys(l?.q?.hiddenValues)){if(n.text===t){delete l.q.hiddenValues[t]}}const t=false;s.app.dispatch({type:"plot_edit",id:s.id,config:{[a]:{isAtomic:true,term:l.term,q:r(e,l,t)}}})}})).on("mouseover",(t=>{const e=t.target.__data__;if(e===undefined)return;if(e.isHidden===true){s.dom.tip.d.html("Click to unhide plot");s.dom.tip.show(t.clientX,t.clientY)}})).on("mouseout",(function(){s.dom.tip.hide()}))};s.createTvsLstRanges=function(t,e,s,i,n){c(t,e);e.lst[n].tvs.ranges=[{start:t.term.type=="integer"?Math.round(s):s,stop:t.term.type=="integer"?Math.round(i):i,startinclusive:true,stopinclusive:true,startunbounded:false,stopunbounded:false}]};s.getTvsLst=function(t,e,i,n,a){const l={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,i,l,0);s.createTvsLstRanges(e,l,n,a,1)}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&i.divideTwBins!=null){c(e,l);l.lst[0].tvs.ranges=[{start:i.divideTwBins?.start||null,stop:i.divideTwBins?.stop||null,startinclusive:i.divideTwBins?.startinclusive||true,stopinclusive:i.divideTwBins?.stopinclusive||false,startunbounded:i.divideTwBins?.startunbounded?i.divideTwBins?.startunbounded:null,stopunbounded:i.divideTwBins?.stopunbounded?i.divideTwBins?.stopunbounded:null}];s.createTvsLstRanges(t,l,n,a,1)}else{p(e,i,l,0);s.createTvsLstRanges(t,l,n,a,1)}}else s.createTvsLstRanges(t,l,n,a,0);return l}}function d(t,e,n,a,l,o,d){const r={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,a,r,0);if(d){n.createTvsLstRanges(e,r,l,o,1)}}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&a.divideTwBins!=null){c(e,r);r.lst[0].tvs.ranges=[{start:a.divideTwBins?.start||null,stop:a.divideTwBins?.stop||null,startinclusive:a.divideTwBins?.startinclusive||true,stopinclusive:a.divideTwBins?.stopinclusive||false,startunbounded:a.divideTwBins?.startunbounded?a.divideTwBins?.startunbounded:null,stopunbounded:a.divideTwBins?.stopunbounded?a.divideTwBins?.stopunbounded:null}];if(d){n.createTvsLstRanges(t,r,l,o,1)}}else{p(e,a,r,0);if(d){n.createTvsLstRanges(t,r,l,o,1)}}}else{if(d){n.createTvsLstRanges(t,r,l,o,0)}}return()=>{const t=s(n.state.termfilter.filter,"filterUiRoot");const e=i([t,r]);e.tag="filterUiRoot";n.app.dispatch({type:"filter_replace",filter:e})}}function r(t,e,s=false){const i=t.label;const n=e?.term?.values?e?.term?.values?.[i]?.label:i;const a=!n?i:n;const l=e.q;if(!l.hiddenValues)l.hiddenValues={};if(s)l.hiddenValues[a]=1;else delete l.hiddenValues[a];return l}function p(t,e,s,i){c(t,s);s.lst[i].tvs.values=[{key:e.seriesId,label:e.label}];if(t.term.type==="condition"){s.lst[i].tvs.bar_by_grade=t.q.bar_by_grade;s.lst[i].tvs.value_by_max_grade=t.q.value_by_max_grade}if(t.term.type==="samplelst"){s.lst[i].tvs.values=t.term.values[e.label].list}}function c(t,e){e.lst.push({type:"tvs",tvs:{term:t.term}})}export{o as setInteractivity};
1
+ import{r as t}from"./table-e2a307e6.js";import{c as e}from"./termsetting-2e75e729.js";import{a as s,c as i}from"./FilterRxComp-fb608459.js";import{U as n,r as a}from"./app-0de0ae35.js";import{n as l}from"./niceNumLabels-1bd7a93b.js";import"./tslib.es6-c3c2d88f.js";import"path";import"./partjson.esm-b3f1fc21.js";import"./termdb.bins-7ecc48db.js";function o(s){s.download=()=>{if(!s.state)return;s.dom.violinDiv.selectAll(".sjpp-violin-plot").each((function(){n(this,"violin",{apply_dom_styles:true})}))};s.displayLabelClickMenu=function(t,e,i,n){if(!e||s.data.plots.length===1){return}const a=t.q.mode==="continuous"?"term2":"term";const l=[{label:`Add filter: ${i.label.split(",")[0]}`,callback:d(t,e,s,i,a,false)},{label:`Hide: ${i.label}`,callback:()=>{const t=s.config[a];const e=true;s.app.dispatch({type:"plot_edit",id:s.id,config:{[a]:{isAtomic:true,term:t.term,q:r(i,t,e)}}})}}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){l.push({label:`List samples`,callback:async()=>{const[a,l]=[s.data.min,s.data.max*2];await s.listSamples(n,t,e,i,a,l)}})}s.displayMenu(n,l,i)};s.displayBrushMenu=function(t,e,s,i,n,a,l){const[o,r]=l?[a.invert(n[0]),a.invert(n[1])]:[a.invert(n[1]),a.invert(n[0])];const p=[{label:`Add filter`,callback:d(t,e,s,i,o,r,true)}];if(s.state.displaySampleIds&&s.state.hasVerifiedToken){p.push({label:`List samples`,callback:async()=>s.listSamples(event,t,e,i,o,r)})}s.displayMenu(event,p,i,o,r)};s.displayMenu=function(t,e,i,n,a){s.app.tip.d.selectAll("*").remove();s.app.tip.d.classed("sjpp-violin-brush-tip",true);const o=n!=null&&a!=null;if(o){const[t,e]=s.config.term.term.type=="integer"?[Math.round(n),Math.round(a)]:l([n,a]);s.app.tip.d.append("div").text(`From ${t} to ${e}`)}s.app.tip.d.append("div").selectAll("div").data(e).enter().append("div").attr("class","sja_menuoption").text((t=>t.label)).on("click",((t,e)=>{s.app.tip.hide();e.callback();s.dom.tableHolder.style("display","none")}));s.app.tip.show(t.clientX,t.clientY)};s.addEditColorToMenu=function(t){const e=a(t.color).formatHex();const i=s.app.tip.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Color:").append("input").attr("type","color").attr("value",e).on("change",(()=>{const e=i.node().value;const n=s.config.term2;let a;for(const s in n.term.values)if(n.term.values[s].label==t.label){n.term.values[s].color=e;a=s}if(!a)n.term.values={[t.label]:{label:t.label,color:e}};s.app.dispatch({type:"plot_edit",id:s.id,config:{term2:{isAtomic:true,term:s.config.term2.term,q:r(t,s.config.term2,false)}}});s.app.tip.hide()}))};s.listSamples=async function(t,e,i,n,a,l){const o=s.getTvsLst(e,i,n,a,l);const d=e.q?.mode==="continuous"?e:i;const r={type:"tvslst",join:"and",lst:[s.state.termfilter.filter,o],in:true};const p={terms:[d],filter:r};const c=await s.app.vocabApi.getAnnotatedSampleData(p);s.displaySampleIds(t,d,c)};s.displaySampleIds=function(i,n,a){s.app.tip.clear();if(!a?.samples)return;const l=[];for(const[t,s]of Object.entries(a.samples))l.push([{value:a.refs.bySampleId[t].label},{value:e(s[n.$id].value)}]);const o=s.app.tip.d.append("div");const d=[{label:"Sample"},{label:"Value"}];const r=l;t({rows:r,columns:d,div:o,maxWidth:"30vw",maxHeight:"25vh",resize:true,showLines:true});s.app.tip.show(i.clientX,i.clientY)};s.labelHideLegendClicking=function(t,e){s.dom.legendDiv.selectAll(".sjpp-htmlLegend").on("click",(i=>{i.stopPropagation();const n=i.target.__data__;const a=t?.term.type==="condition"||t?.term.type==="samplelst"||t?.term.type==="categorical"||(t?.term.type==="float"||t?.term.type==="integer")&&s.config.term?.q.mode==="continuous"?"term2":"term";const l=s.config[a];if(t){for(const t of Object.keys(l?.q?.hiddenValues)){if(n.text===t){delete l.q.hiddenValues[t]}}const t=false;s.app.dispatch({type:"plot_edit",id:s.id,config:{[a]:{isAtomic:true,term:l.term,q:r(e,l,t)}}})}})).on("mouseover",(t=>{const e=t.target.__data__;if(e===undefined)return;if(e.isHidden===true){s.dom.tip.d.html("Click to unhide plot");s.dom.tip.show(t.clientX,t.clientY)}})).on("mouseout",(function(){s.dom.tip.hide()}))};s.createTvsLstRanges=function(t,e,s,i,n){c(t,e);e.lst[n].tvs.ranges=[{start:t.term.type=="integer"?Math.round(s):s,stop:t.term.type=="integer"?Math.round(i):i,startinclusive:true,stopinclusive:true,startunbounded:false,stopunbounded:false}]};s.getTvsLst=function(t,e,i,n,a){const l={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,i,l,0);s.createTvsLstRanges(e,l,n,a,1)}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&i.divideTwBins!=null){c(e,l);l.lst[0].tvs.ranges=[{start:i.divideTwBins?.start||null,stop:i.divideTwBins?.stop||null,startinclusive:i.divideTwBins?.startinclusive||true,stopinclusive:i.divideTwBins?.stopinclusive||false,startunbounded:i.divideTwBins?.startunbounded?i.divideTwBins?.startunbounded:null,stopunbounded:i.divideTwBins?.stopunbounded?i.divideTwBins?.stopunbounded:null}];s.createTvsLstRanges(t,l,n,a,1)}else{p(e,i,l,0);s.createTvsLstRanges(t,l,n,a,1)}}else s.createTvsLstRanges(t,l,n,a,0);return l}}function d(t,e,n,a,l,o,d){const r={type:"tvslst",in:true,join:"and",lst:[]};if(e){if(t.term.type==="categorical"||t.term.type==="condition"){p(t,a,r,0);if(d){n.createTvsLstRanges(e,r,l,o,1)}}else if(e.q?.mode==="continuous"||(e.term?.type==="float"||e.term?.type==="integer")&&a.divideTwBins!=null){c(e,r);r.lst[0].tvs.ranges=[{start:a.divideTwBins?.start||null,stop:a.divideTwBins?.stop||null,startinclusive:a.divideTwBins?.startinclusive||true,stopinclusive:a.divideTwBins?.stopinclusive||false,startunbounded:a.divideTwBins?.startunbounded?a.divideTwBins?.startunbounded:null,stopunbounded:a.divideTwBins?.stopunbounded?a.divideTwBins?.stopunbounded:null}];if(d){n.createTvsLstRanges(t,r,l,o,1)}}else{p(e,a,r,0);if(d){n.createTvsLstRanges(t,r,l,o,1)}}}else{if(d){n.createTvsLstRanges(t,r,l,o,0)}}return()=>{const t=s(n.state.termfilter.filter,"filterUiRoot");const e=i([t,r]);e.tag="filterUiRoot";n.app.dispatch({type:"filter_replace",filter:e})}}function r(t,e,s=false){const i=t.label;const n=e?.term?.values?e?.term?.values?.[i]?.label:i;const a=!n?i:n;const l=e.q;if(!l.hiddenValues)l.hiddenValues={};if(s)l.hiddenValues[a]=1;else delete l.hiddenValues[a];return l}function p(t,e,s,i){c(t,s);s.lst[i].tvs.values=[{key:e.seriesId,label:e.label}];if(t.term.type==="condition"){s.lst[i].tvs.bar_by_grade=t.q.bar_by_grade;s.lst[i].tvs.value_by_max_grade=t.q.value_by_max_grade}if(t.term.type==="samplelst"){s.lst[i].tvs.values=t.term.values[e.label].list}}function c(t,e){e.lst.push({type:"tvs",tvs:{term:t.term}})}export{o as setInteractivity};
@@ -1 +1 @@
1
- import{M as t,C as e,W as n,I as a,r as s}from"./app-6fb77603.js";import{b as i,a as o}from"./brush-9faa7ae7.js";import{r as l}from"./table-0daf2b89.js";import{c as r,b as c}from"./axis-747c801e.js";import{l as d}from"./line-264f8f9e.js";import{c as p}from"./basis-3870f5ba.js";import{l as m}from"./log-c26b6cfd.js";import"./pointer-c7475677.js";import"./nodrag-b2737073.js";import"./tslib.es6-c3c2d88f.js";import"./constant-426a1483.js";function u(m){m.render=function(){const n=m.config.settings.violin;const a=n.orientation==="horizontal";const s=n.datasymbol==="bean"?n.radius*window.devicePixelRatio:n.radius;const i=m.config.term;const o=m.config.term2;const l=new t({padding:"5px"});m.dom.tip=l;const r=o?.term.type==="condition"||o?.term.type==="samplelst"||o?.term.type==="categorical"||(o?.term.type==="float"||o?.term.type==="integer")&&i.q.mode==="continuous"?o:i;if(r&&r.term?.values){for(const[t,e]of Object.entries(r.term.values)){if(e.uncomputable){if(r.q.hiddenValues[t]){r.q.hiddenValues[e.label]=1;delete r.q.hiddenValues[t]}}}}m.data.plots=m.data.plots.filter((t=>!r?.q?.hiddenValues?.[t.label||t.seriesId]));this.k2c=e(m.data.plots.length);if(m.legendRenderer)m.legendRenderer(f(r,m));if(m.data.plots.length===0){m.dom.violinDiv.html(` <span style="opacity:.6;font-size:1em;margin-left:90px;">No data to render Violin Plot</span>`);m.dom.legendDiv.selectAll("*").remove();m.dom.tableHolder.selectAll(".sjpp-tableHolder")._parents[0].remove();return}else m.dom.violinDiv.select("*").remove();m.dom.violinDiv.select(".sjpp-violin-plot").remove();const c=h(i,m,a,n);v(i,o,n,a,c,m);for(const[t,e]of m.data.plots.entries()){const r=b(c,e,t,a);if(m.opts.mode!="minimal")x(i,o,r,e,a,n,l);j(e,m,a,c,t,r,s);if(m.opts.mode!="minimal")q(i,o,r,n,e,a,c);m.labelHideLegendClicking(o,e)}};m.displaySummaryStats=function(t,e,n){let a=[];if(t.summaryStats){const e=t.summaryStats.values;a=[`<tr><td colspan=2 style='padding:3px; text-align:center'>${t.label.split(",")[0]}</td></tr>`,...e.map((({id:t,label:e,value:n})=>`<tr>\n\t\t\t\t\t<td style='padding:3px; color:#aaa'>${e}</td>\n\t\t\t\t\t<td style='padding:3px; text-align:center'>${n}</td>\n\t\t\t\t</tr>`))]}const s=`<table class='sja_simpletable'>${a.join("")}</table>`;n.show(e.clientX,e.clientY).d.html(s)};m.getPlotThickness=function(){return m.settings.plotThickness||150};m.renderPvalueTable=function(){m.dom.tableHolder.selectAll("*").remove();if(m.data.plots.length===1)return;const t=m.config.term;const e=m.config.term2;if(!e){m.dom.tableHolder.style("display","none");return}const n=e?.term.type==="condition"||e?.term.type==="samplelst"||e?.term.type==="categorical"||(e?.term.type==="float"||e?.term.type==="integer")&&t.q.mode==="continuous"?e:t;m.data.pvalues=m.data.pvalues.filter((t=>{for(let e=0;e<t.length;e++){if(typeof t[e].value==="string"){if(n.q?.hiddenValues&&t[e].value in n.q.hiddenValues){return false}}}return true}));m.dom.tableHolder.style("display","inline-block").style("vertical-align","top").append("div").style("font-weight","bold").text(m.data.pvalues.length>0?"Group comparisons (Wilcoxon's rank sum test)":"");const a=[{label:"Group 1"},{label:"Group 2"},{label:"P-value"}];const s=m.data.pvalues;const i=this.settings.orientation==="horizontal";const o=i?m.getPlotThickness()*this.data.plots.length:this.settings.svgw+this.config.term.term.name.length;l({rows:s,columns:a,div:m.dom.tableHolder,showLines:false,maxWidth:"27vw",maxHeight:`${o}px`,resize:true})};function u(t,e){let n=0;for(const a of t.data.plots){const t=e.append("text").text(`${a.label}, n=${a.plotValueCount}`);n=Math.max(n,t.node().getBBox().width);t.remove()}return n}function y(t,e,n,a){let s;if(a){s=n?{left:5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:30,right:e.rightMargin,bottom:10}}else{s=n?{left:t+5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:50,right:e.rightMargin,bottom:t}}return s}function h(t,e,n,a){const s=e.dom.violinDiv.append("div").style("display","inline-block").style("padding",e.opts.mode!="minimal"?"5px":"0px").style("overflow","auto").style("scrollbar-width","none");const i=s.append("svg");const o=u(e,i);const l=y(o,a,n,e.opts.mode=="minimal");const r=e.getPlotThickness();i.attr("width",l.left+l.top+(n?a.svgw:r*e.data.plots.length+t.term.name.length)).attr("height",l.bottom+l.top+(n?r*e.data.plots.length:a.svgw+t.term.name.length)).classed("sjpp-violin-plot",true).attr("data-testid","sja_violin_plot");const c=i.append("g").attr("transform","translate("+l.left+","+l.top+")");return{margin:l,svgG:c,axisScale:g(e,a,n),violinSvg:i}}function v(t,e,a,s,i,o){const l=i.svgG.append("g").style("font-size","12").classed(a.unit==="log"?"sjpp-logscale":"sjpp-linearscale",true);const d=a.unit==="log"?i.axisScale.ticks(15):i.axisScale.ticks();l.call((s?r:c)().scale(i.axisScale).tickFormat(((t,e)=>{if(a.unit==="log"){if(o.app.vocabApi.termdbConfig.logscaleBase2){if(d.length>10&&e%2!==0)return"";if(t<.1)return n(".3f")(t);return n(".1f")(t)}else{if(d.length>=12&&e%5!==0)return"";if(t<50)return t;return n(".1s")(t)}}if(d.length>=12&&e%2!==0)return"";return t})).tickValues(d));if(o.opts.mode!="minimal"){i.svgG.append("text").text(e?.q?.mode==="continuous"?e.term.name:t.term.name).classed("sjpp-numeric-term-label",true).style("font-weight",600).attr("text-anchor","middle").attr("x",s?a.svgw/2:-a.svgw/2).attr("y",s?-30:-45).style("opacity",0).attr("transform",s?null:"rotate(-90)").style("opacity",1)}}function b(t,e,n,a){const s=t.svgG.append("g").datum(e).attr("transform",a?"translate(0,"+m.getPlotThickness()*(n+.5)+")":"translate("+m.getPlotThickness()*(n+.5)+",0)").attr("class","sjpp-violinG");return s}function x(t,e,n,a,s,i,o){n.append("text").classed("sjpp-axislabel",true).text(`${a.label}, n=${a.plotValueCount}`).style("cursor","pointer").on("click",(function(n){if(!n)return;m.displayLabelClickMenu(t,e,a,n)})).on("mouseover",(function(t,e){t.stopPropagation();if(!t)return;m.displaySummaryStats(e,t,o)})).on("mouseout",(function(){o.hide()})).style("opacity",0).style("opacity",1).attr("x",s?-5:0-i.svgw-5).attr("y",0).attr("text-anchor","end").attr("dominant-baseline","central").attr("transform",s?null:"rotate(-90)")}function j(t,e,n,s,i,o,l){const r=e.getPlotThickness();const c=a().domain([t.density.densityMax,t.density.densityMin]).range([r*.45,0]);let m;if(n){m=d().curve(p).x((t=>s.axisScale(t.x0))).y((t=>c(t.density)))}else{m=d().curve(p).x((t=>c(t.density))).y((t=>s.axisScale(t.x0)))}const u=t.label?.split(",")[0];const g=e.config.term.q.mode=="discrete"?e.config.term:e.config.term2;const f=g?.term.values?Object.values(g.term.values).find((t=>t.label==u)):null;const y=f?.color?f.color:e.config.settings.violin.defaultColor;if(!t.color)t.color=y;if(f&&!f.color)f.color=y;k(o,t,m);k(o,t,n?m.y((t=>-c(t.density))):m.x((t=>-c(t.density))));S(e,o,t,n,l);if(e.opts.mode!="minimal")w(o,n,t,s,e);$(o,n,e.config.settings.violin.lines,s);if(e.state.config.value){const t=s.axisScale(e.state.config.value);const a=e.config.settings.violin;o.append("line").style("stroke","black").style("stroke-width",a.medianThickness).attr("x1",200).attr("x2",200).attr("x1",n?t:-a.medianLength).attr("x2",n?t:a.medianLength).attr("y1",n?-a.medianLength:t).attr("y2",n?a.medianLength:t)}}function k(t,e,n){if(e.density.densityMax==0)return;t.append("path").attr("class","sjpp-vp-path").style("fill",m.opts.mode==="minimal"?s(221,221,221):e.color).style("opacity",0).attr("stroke",s(e.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",n(e.density.bins))}function S(t,e,n,a,s){e.append("image").style("opacity",0).classed(t.config.settings.violin.datasymbol==="rug"?"sjpp-rug-img":"sjpp-beans-img",true).style("opacity",1).attr("xlink:href",n.src).attr("transform",a?`translate(0, -${s})`:`translate(-${s}, 0)`)}function w(t,e,n,a,s){const i=s.config.settings.violin;if(n.plotValueCount>=2){t.append("line").style("opacity",1).attr("class","sjpp-median-line").style("stroke-width",i.medianThickness).style("stroke","red").style("opacity","1").attr("y1",e?-i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("y2",e?i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("x1",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):-i.medianLength).attr("x2",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):i.medianLength)}else return}function $(t,e,n,a){const s=m.settings.plotThickness||150;t.selectAll(".sjpp-vp-line").remove();if(!n?.length)return;for(const i of n){t.append("line").attr("class","sjpp-vp-line").style("stroke",m.opts.mode=="minimal"?"red":"black").attr("y1",e?-(s/2):a.axisScale(i)).attr("y2",e?s/2:a.axisScale(i)).attr("x1",e?a.axisScale(i):-(s/2)).attr("x2",e?a.axisScale(i):s/2)}}function q(t,e,n,a,s,l,r){if(a.datasymbol==="rug"||a.datasymbol==="bean"){n.append("g").classed("sjpp-brush",true).call(l?i().extent([[0,-20],[a.svgw,20]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})):o().extent([[-20,0],[20,a.svgw]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})))}else return}m.toggleLoadingDiv=function(t=""){if(t!="none"){m.dom.loadingDiv.style("opacity",0).style("display",t).transition().duration("loadingWait"in m?m.loadingWait:1e5).style("opacity",1)}else{m.dom.loadingDiv.style("display",t)}m.loadingWait=1e3}}function g(t,e,n){let s;e.unit=="log"?s=m().base(t.app.vocabApi.termdbConfig.logscaleBase2?2:10).domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]):s=a().domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]);return s}function f(t,e){const n=[],a=e.config.term,s=e.config.term2,i="color: #aaa; font-weight: 400";y(a,n,i,e);if(s?.term.type==="float"||s?.q.mode==="continuous"||s?.term.type==="integer")y(s,n,i,e);h(a?.q.mode==="continuous"&&a?.q.hiddenValues&&Object.keys(a?.q.hiddenValues).length>0?a:s?.q.mode==="continuous"&&s?.q.hiddenValues&&Object.keys(s?.q.hiddenValues).length>0?s:null,n,i,e);if(s){if(t.q.hiddenValues&&Object.entries(t.q.hiddenValues).length!=0){v(t,n,i)}}return n}function y(t,e,n,a){if(t?.q.descrStats){const s=t.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`Descriptive statistics: ${t.term.name}`:`Descriptive statistics`;const o=`<span style="${n}">${i}</span>`;e.push({name:o,items:s})}}function h(t,e,n,a){if(t?.term.values){const s=[];for(const e in t.term.values){if(a.data.uncomputableValueObj?.[t.term.values[e]?.label]){s.push({text:`${t.term.values[e].label}, n = ${a.data.uncomputableValueObj[t.term.values[e].label]}`,noIcon:true,isHidden:true,hiddenOpacity:1})}}if(s.length){const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`<span style="${n}">${t.term.name}</span>`:`<span style="${n}">Other categories</span>`;e.push({name:i,items:s})}}}function v(t,e,n){const a=[];for(const e of Object.keys(t.q.hiddenValues)){a.push({text:`${e}`,noIcon:true,isHidden:true,hiddenOpacity:1})}const s=`${t.term.name}`;const i=`<span style="${n}">${s}</span>`;e.push({name:i,items:a})}export{g as createNumericScale,u as default};
1
+ import{M as t,C as e,W as n,I as a,r as s}from"./app-0de0ae35.js";import{b as i,a as o}from"./brush-4c775f74.js";import{r as l}from"./table-e2a307e6.js";import{c as r,b as c}from"./axis-747c801e.js";import{l as d}from"./line-264f8f9e.js";import{c as p}from"./basis-3870f5ba.js";import{l as m}from"./log-d560d2a5.js";import"./pointer-c7475677.js";import"./nodrag-0fa60f70.js";import"./tslib.es6-c3c2d88f.js";import"./constant-426a1483.js";function u(m){m.render=function(){const n=m.config.settings.violin;const a=n.orientation==="horizontal";const s=n.datasymbol==="bean"?n.radius*window.devicePixelRatio:n.radius;const i=m.config.term;const o=m.config.term2;const l=new t({padding:"5px"});m.dom.tip=l;const r=o?.term.type==="condition"||o?.term.type==="samplelst"||o?.term.type==="categorical"||(o?.term.type==="float"||o?.term.type==="integer")&&i.q.mode==="continuous"?o:i;if(r&&r.term?.values){for(const[t,e]of Object.entries(r.term.values)){if(e.uncomputable){if(r.q.hiddenValues[t]){r.q.hiddenValues[e.label]=1;delete r.q.hiddenValues[t]}}}}m.data.plots=m.data.plots.filter((t=>!r?.q?.hiddenValues?.[t.label||t.seriesId]));this.k2c=e(m.data.plots.length);if(m.legendRenderer)m.legendRenderer(f(r,m));if(m.data.plots.length===0){m.dom.violinDiv.html(` <span style="opacity:.6;font-size:1em;margin-left:90px;">No data to render Violin Plot</span>`);m.dom.legendDiv.selectAll("*").remove();m.dom.tableHolder.selectAll(".sjpp-tableHolder")._parents[0].remove();return}else m.dom.violinDiv.select("*").remove();m.dom.violinDiv.select(".sjpp-violin-plot").remove();const c=h(i,m,a,n);v(i,o,n,a,c,m);for(const[t,e]of m.data.plots.entries()){const r=x(c,e,t,a);if(m.opts.mode!="minimal")b(i,o,r,e,a,n,l);j(e,m,a,c,t,r,s);if(m.opts.mode!="minimal")q(i,o,r,n,e,a,c);m.labelHideLegendClicking(o,e)}};m.displaySummaryStats=function(t,e,n){let a=[];if(t.summaryStats){const e=t.summaryStats.values;a=[`<tr><td colspan=2 style='padding:3px; text-align:center'>${t.label.split(",")[0]}</td></tr>`,...e.map((({id:t,label:e,value:n})=>`<tr>\n\t\t\t\t\t<td style='padding:3px; color:#aaa'>${e}</td>\n\t\t\t\t\t<td style='padding:3px; text-align:center'>${n}</td>\n\t\t\t\t</tr>`))]}const s=`<table class='sja_simpletable'>${a.join("")}</table>`;n.show(e.clientX,e.clientY).d.html(s)};m.getPlotThickness=function(){return m.settings.plotThickness||150};m.renderPvalueTable=function(){m.dom.tableHolder.selectAll("*").remove();if(m.data.plots.length===1)return;const t=m.config.term;const e=m.config.term2;if(!e){m.dom.tableHolder.style("display","none");return}const n=e?.term.type==="condition"||e?.term.type==="samplelst"||e?.term.type==="categorical"||(e?.term.type==="float"||e?.term.type==="integer")&&t.q.mode==="continuous"?e:t;m.data.pvalues=m.data.pvalues.filter((t=>{for(let e=0;e<t.length;e++){if(typeof t[e].value==="string"){if(n.q?.hiddenValues&&t[e].value in n.q.hiddenValues){return false}}}return true}));m.dom.tableHolder.style("display","inline-block").style("vertical-align","top").append("div").style("font-weight","bold").text(m.data.pvalues.length>0?"Group comparisons (Wilcoxon's rank sum test)":"");const a=[{label:"Group 1"},{label:"Group 2"},{label:"P-value"}];const s=m.data.pvalues;const i=this.settings.orientation==="horizontal";const o=i?m.getPlotThickness()*this.data.plots.length:this.settings.svgw+this.config.term.term.name.length;l({rows:s,columns:a,div:m.dom.tableHolder,showLines:false,maxWidth:"27vw",maxHeight:`${o}px`,resize:true})};function u(t,e){let n=0;for(const a of t.data.plots){const t=e.append("text").text(`${a.label}, n=${a.plotValueCount}`);n=Math.max(n,t.node().getBBox().width);t.remove()}return n}function y(t,e,n,a){let s;if(a){s=n?{left:5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:30,right:e.rightMargin,bottom:10}}else{s=n?{left:t+5,top:e.axisHeight,right:e.rightMargin,bottom:10}:{left:e.axisHeight,top:50,right:e.rightMargin,bottom:t}}return s}function h(t,e,n,a){const s=e.dom.violinDiv.append("div").style("display","inline-block").style("padding",e.opts.mode!="minimal"?"5px":"0px").style("overflow","auto").style("scrollbar-width","none");const i=s.append("svg");const o=u(e,i);const l=y(o,a,n,e.opts.mode=="minimal");const r=e.getPlotThickness();i.attr("width",l.left+l.top+(n?a.svgw:r*e.data.plots.length+t.term.name.length)).attr("height",l.bottom+l.top+(n?r*e.data.plots.length:a.svgw+t.term.name.length)).classed("sjpp-violin-plot",true).attr("data-testid","sja_violin_plot");const c=i.append("g").attr("transform","translate("+l.left+","+l.top+")");return{margin:l,svgG:c,axisScale:g(e,a,n),violinSvg:i}}function v(t,e,a,s,i,o){const l=i.svgG.append("g").style("font-size","12").classed(a.unit==="log"?"sjpp-logscale":"sjpp-linearscale",true);const d=a.unit==="log"?i.axisScale.ticks(15):i.axisScale.ticks();l.call((s?r:c)().scale(i.axisScale).tickFormat(((t,e)=>{if(a.unit==="log"){if(o.app.vocabApi.termdbConfig.logscaleBase2){if(d.length>10&&e%2!==0)return"";if(t<.1)return n(".3f")(t);return n(".1f")(t)}else{if(d.length>=12&&e%5!==0)return"";if(t<50)return t;return n(".1s")(t)}}if(d.length>=12&&e%2!==0)return"";return t})).tickValues(d));if(o.opts.mode!="minimal"){i.svgG.append("text").text(e?.q?.mode==="continuous"?e.term.name:t.term.name).classed("sjpp-numeric-term-label",true).style("font-weight",600).attr("text-anchor","middle").attr("x",s?a.svgw/2:-a.svgw/2).attr("y",s?-30:-45).style("opacity",0).attr("transform",s?null:"rotate(-90)").style("opacity",1)}}function x(t,e,n,a){const s=t.svgG.append("g").datum(e).attr("transform",a?"translate(0,"+m.getPlotThickness()*(n+.5)+")":"translate("+m.getPlotThickness()*(n+.5)+",0)").attr("class","sjpp-violinG");return s}function b(t,e,n,a,s,i,o){n.append("text").classed("sjpp-axislabel",true).text(`${a.label}, n=${a.plotValueCount}`).style("cursor","pointer").on("click",(function(n){if(!n)return;m.displayLabelClickMenu(t,e,a,n)})).on("mouseover",(function(t,e){t.stopPropagation();if(!t)return;m.displaySummaryStats(e,t,o)})).on("mouseout",(function(){o.hide()})).style("opacity",0).style("opacity",1).attr("x",s?-5:0-i.svgw-5).attr("y",0).attr("text-anchor","end").attr("dominant-baseline","central").attr("transform",s?null:"rotate(-90)")}function j(t,e,n,s,i,o,l){const r=e.getPlotThickness();const c=a().domain([t.density.densityMax,t.density.densityMin]).range([r*.45,0]);let m;if(n){m=d().curve(p).x((t=>s.axisScale(t.x0))).y((t=>c(t.density)))}else{m=d().curve(p).x((t=>c(t.density))).y((t=>s.axisScale(t.x0)))}const u=t.label?.split(",")[0];const g=e.config.term.q.mode=="discrete"?e.config.term:e.config.term2;const f=g?.term.values?Object.values(g.term.values).find((t=>t.label==u)):null;const y=f?.color?f.color:e.config.settings.violin.defaultColor;if(!t.color)t.color=y;if(f&&!f.color)f.color=y;k(o,t,m);k(o,t,n?m.y((t=>-c(t.density))):m.x((t=>-c(t.density))));S(e,o,t,n,l);if(e.opts.mode!="minimal")w(o,n,t,s,e);$(o,n,e.config.settings.violin.lines,s);if(e.state.config.value){const t=s.axisScale(e.state.config.value);const a=e.config.settings.violin;o.append("line").style("stroke","black").style("stroke-width",a.medianThickness).attr("x1",200).attr("x2",200).attr("x1",n?t:-a.medianLength).attr("x2",n?t:a.medianLength).attr("y1",n?-a.medianLength:t).attr("y2",n?a.medianLength:t)}}function k(t,e,n){if(e.density.densityMax==0)return;t.append("path").attr("class","sjpp-vp-path").style("fill",m.opts.mode==="minimal"?s(221,221,221):e.color).style("opacity",0).attr("stroke",s(e.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",n(e.density.bins))}function S(t,e,n,a,s){e.append("image").style("opacity",0).classed(t.config.settings.violin.datasymbol==="rug"?"sjpp-rug-img":"sjpp-beans-img",true).style("opacity",1).attr("xlink:href",n.src).attr("transform",a?`translate(0, -${s})`:`translate(-${s}, 0)`)}function w(t,e,n,a,s){const i=s.config.settings.violin;if(n.plotValueCount>=2){t.append("line").style("opacity",1).attr("class","sjpp-median-line").style("stroke-width",i.medianThickness).style("stroke","red").style("opacity","1").attr("y1",e?-i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("y2",e?i.medianLength:a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value)).attr("x1",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):-i.medianLength).attr("x2",e?a.axisScale(n.summaryStats.values.find((t=>t.id==="median")).value):i.medianLength)}else return}function $(t,e,n,a){const s=m.settings.plotThickness||150;t.selectAll(".sjpp-vp-line").remove();if(!n?.length)return;for(const i of n){t.append("line").attr("class","sjpp-vp-line").style("stroke",m.opts.mode=="minimal"?"red":"black").attr("y1",e?-(s/2):a.axisScale(i)).attr("y2",e?s/2:a.axisScale(i)).attr("x1",e?a.axisScale(i):-(s/2)).attr("x2",e?a.axisScale(i):s/2)}}function q(t,e,n,a,s,l,r){if(a.datasymbol==="rug"||a.datasymbol==="bean"){n.append("g").classed("sjpp-brush",true).call(l?i().extent([[0,-20],[a.svgw,20]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})):o().extent([[-20,0],[20,a.svgw]]).on("end",(async n=>{const a=n.selection;if(!a)return;m.displayBrushMenu(t,e,m,s,a,r.axisScale,l)})))}else return}m.toggleLoadingDiv=function(t=""){if(t!="none"){m.dom.loadingDiv.style("opacity",0).style("display",t).transition().duration("loadingWait"in m?m.loadingWait:1e5).style("opacity",1)}else{m.dom.loadingDiv.style("display",t)}m.loadingWait=1e3}}function g(t,e,n){let s;e.unit=="log"?s=m().base(t.app.vocabApi.termdbConfig.logscaleBase2?2:10).domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]):s=a().domain([t.data.min,t.data.max]).range(n?[0,e.svgw]:[e.svgw,0]);return s}function f(t,e){const n=[],a=e.config.term,s=e.config.term2,i="color: #aaa; font-weight: 400";y(a,n,i,e);if(s?.term.type==="float"||s?.q.mode==="continuous"||s?.term.type==="integer")y(s,n,i,e);h(a?.q.mode==="continuous"&&a?.q.hiddenValues&&Object.keys(a?.q.hiddenValues).length>0?a:s?.q.mode==="continuous"&&s?.q.hiddenValues&&Object.keys(s?.q.hiddenValues).length>0?s:null,n,i,e);if(s){if(t.q.hiddenValues&&Object.entries(t.q.hiddenValues).length!=0){v(t,n,i)}}return n}function y(t,e,n,a){if(t?.q.descrStats){const s=t.q.descrStats.map((t=>({text:`${t.label}: ${t.value}`,noIcon:true})));const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`Descriptive statistics: ${t.term.name}`:`Descriptive statistics`;const o=`<span style="${n}">${i}</span>`;e.push({name:o,items:s})}}function h(t,e,n,a){if(t?.term.values){const s=[];for(const e in t.term.values){if(a.data.uncomputableValueObj?.[t.term.values[e]?.label]){s.push({text:`${t.term.values[e].label}, n = ${a.data.uncomputableValueObj[t.term.values[e].label]}`,noIcon:true,isHidden:true,hiddenOpacity:1})}}if(s.length){const i=a.config.term2?.term.type==="float"||a.config.term2?.term.type==="integer"?`<span style="${n}">${t.term.name}</span>`:`<span style="${n}">Other categories</span>`;e.push({name:i,items:s})}}}function v(t,e,n){const a=[];for(const e of Object.keys(t.q.hiddenValues)){a.push({text:`${e}`,noIcon:true,isHidden:true,hiddenOpacity:1})}const s=`${t.term.name}`;const i=`<span style="${n}">${s}</span>`;e.push({name:i,items:a})}export{g as createNumericScale,u as default};
@@ -1 +1 @@
1
- import{b as t}from"./brush-9faa7ae7.js";import{I as s,r as i}from"./app-6fb77603.js";import{c as a}from"./axis-747c801e.js";import{l as e}from"./line-264f8f9e.js";import{c as h}from"./basis-3870f5ba.js";class r{constructor(t,i,a=500,e=100,h=20,r=20,l=null,n=1){this.holder=t;this.plot=i;this.width=a;this.height=e;this.callback=l;this.shiftx=h;this.shifty=r;this.svg=t.append("svg").attr("width",`${a+50}px`).attr("height",`${e+50}px`);this.axisScale=s().domain([i.minvalue,i.maxvalue]).range([0,a]);this.axisScaleUI=s().domain([i.minvalue*n,i.maxvalue*n]).range([0,a]);this.wScale=s().domain([i.densityMax,i.densityMin]).range([e*.45,0])}render(){this.svg.selectAll("*").remove();this.violinG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.height/2+this.shifty})`);this.scaleG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.shifty})`);this.scaleG.call(a(this.axisScaleUI).tickValues(this.axisScaleUI.ticks()));this.renderArea(false);this.renderArea(true);if(this.plot.valuesImg)this.violinG.append("image").classed("sjpp-beans-img",true).attr("xlink:href",this.plot.valuesImg).attr("transform",`translate(0, -${this.plot.radius||3})`);if(this.callback)this.svg.append("g").call(t().extent([[this.shiftx,this.shifty],[this.width+this.shiftx,this.height+this.shifty]]).on("end",(async t=>{const s=t.selection;if(!s)return;const i=this.axisScale.invert(s[0]-this.shiftx);const a=this.axisScale.invert(s[1]-this.shiftx);this.callback({range_start:i,range_end:a})})))}renderArea(t){if(this.plot.densityMax==0)return;const s=e().curve(h).x((t=>this.axisScale(t.x0))).y((s=>t?-this.wScale(s.density):this.wScale(s.density)));this.violinG.append("path").style("fill",this.plot.color||i(221,221,221)).style("opacity",0).attr("stroke",i(this.plot.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",s(this.plot.density))}}export{r as v};
1
+ import{b as t}from"./brush-4c775f74.js";import{I as s,r as i}from"./app-0de0ae35.js";import{c as a}from"./axis-747c801e.js";import{l as e}from"./line-264f8f9e.js";import{c as h}from"./basis-3870f5ba.js";class r{constructor(t,i,a=500,e=100,h=20,r=20,l=null,n=1){this.holder=t;this.plot=i;this.width=a;this.height=e;this.callback=l;this.shiftx=h;this.shifty=r;this.svg=t.append("svg").attr("width",`${a+50}px`).attr("height",`${e+50}px`);this.axisScale=s().domain([i.minvalue,i.maxvalue]).range([0,a]);this.axisScaleUI=s().domain([i.minvalue*n,i.maxvalue*n]).range([0,a]);this.wScale=s().domain([i.densityMax,i.densityMin]).range([e*.45,0])}render(){this.svg.selectAll("*").remove();this.violinG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.height/2+this.shifty})`);this.scaleG=this.svg.append("g").attr("transform",`translate(${this.shiftx}, ${this.shifty})`);this.scaleG.call(a(this.axisScaleUI).tickValues(this.axisScaleUI.ticks()));this.renderArea(false);this.renderArea(true);if(this.plot.valuesImg)this.violinG.append("image").classed("sjpp-beans-img",true).attr("xlink:href",this.plot.valuesImg).attr("transform",`translate(0, -${this.plot.radius||3})`);if(this.callback)this.svg.append("g").call(t().extent([[this.shiftx,this.shifty],[this.width+this.shiftx,this.height+this.shifty]]).on("end",(async t=>{const s=t.selection;if(!s)return;const i=this.axisScale.invert(s[0]-this.shiftx);const a=this.axisScale.invert(s[1]-this.shiftx);this.callback({range_start:i,range_end:a})})))}renderArea(t){if(this.plot.densityMax==0)return;const s=e().curve(h).x((t=>this.axisScale(t.x0))).y((s=>t?-this.wScale(s.density):this.wScale(s.density)));this.violinG.append("path").style("fill",this.plot.color||i(221,221,221)).style("opacity",0).attr("stroke",i(this.plot.color).darker()).attr("stroke-width",1).attr("stroke-linejoin","round").style("opacity","0.8").attr("d",s(this.plot.density))}}export{r as v};