@sjcrh/proteinpaint-client 2.63.0 → 2.63.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/README.md +9 -7
  2. package/dist/{2dmaf-70c0b6bb.js → 2dmaf-0cabb4a4.js} +1 -1
  3. package/dist/{ColorScale-b44d51ef.js → ColorScale-9800a609.js} +1 -1
  4. package/dist/{DEanalysis-b86d0874.js → DEanalysis-567989ff.js} +1 -1
  5. package/dist/{Disco-16cd51c0.js → Disco-5d1404ce.js} +1 -1
  6. package/dist/{Disco.UI-a38a12e6.js → Disco.UI-54228bb6.js} +1 -1
  7. package/dist/{DragControls-0c173a20.js → DragControls-a05737c2.js} +1 -1
  8. package/dist/{DziViewer-5c2d68e7.js → DziViewer-3f466d90.js} +2 -2
  9. package/dist/{FilterRxComp-0e75dd8d.js → FilterRxComp-fc769f34.js} +1 -1
  10. package/dist/{FilterStateless-ad3df967.js → FilterStateless-8f30f856.js} +1 -1
  11. package/dist/{HicApp-bcf8330c.js → HicApp-aac413df.js} +1 -1
  12. package/dist/{OrbitControls-c33cf781.js → OrbitControls-8b7f91ca.js} +1 -1
  13. package/dist/app-59194db0.js +1 -0
  14. package/dist/{app-f91922b4.js → app-71453429.js} +1 -1
  15. package/dist/{app-bfce9bf5.js → app-fb676934.js} +1 -1
  16. package/dist/app.js +1 -1
  17. package/dist/{bam-95f36008.js → bam-e7f6baea.js} +1 -1
  18. package/dist/{barchart-e2af00a8.js → barchart-ef4874c8.js} +1 -1
  19. package/dist/{barchart.events-272fd122.js → barchart.events-e24facf7.js} +1 -1
  20. package/dist/{bars.renderer-f0e5af5a.js → bars.renderer-c46d3f44.js} +1 -1
  21. package/dist/{block-ec76524e.js → block-4f585abe.js} +1 -1
  22. package/dist/block.lazyload-6f83d057.js +1 -0
  23. package/dist/{block.legend-f8cad7e4.js → block.legend-cec87c6f.js} +1 -1
  24. package/dist/{block.mds-20655637.js → block.mds-f5a11c42.js} +1 -1
  25. package/dist/{block.mds.cnv-5feb86a0.js → block.mds.cnv-25423c1e.js} +1 -1
  26. package/dist/{block.mds.expressionrank-c7043f35.js → block.mds.expressionrank-fc1996d5.js} +1 -1
  27. package/dist/{block.mds.expressionstat-4bf457f3.js → block.mds.expressionstat-45b6bf47.js} +1 -1
  28. package/dist/{block.mds.geneboxplot-132e5fe6.js → block.mds.geneboxplot-037df46d.js} +1 -1
  29. package/dist/{block.mds.junction-1f9810df.js → block.mds.junction-00161de6.js} +1 -1
  30. package/dist/{block.mds.svcnv-094c416f.js → block.mds.svcnv-0c257af4.js} +1 -1
  31. package/dist/{block.mds.svcnv.share-bb976e02.js → block.mds.svcnv.share-c0b9dfad.js} +1 -1
  32. package/dist/{block.mds2-7045e32c.js → block.mds2-9009f8d8.js} +1 -1
  33. package/dist/{block.svg-d8d76ba7.js → block.svg-86bbfcb0.js} +1 -1
  34. package/dist/{block.tk.aicheck-317d04bd.js → block.tk.aicheck-a5697794.js} +1 -1
  35. package/dist/{block.tk.ase-d1577ec1.js → block.tk.ase-ad1be47c.js} +1 -1
  36. package/dist/{block.tk.bam-3cdc13a0.js → block.tk.bam-14339d16.js} +1 -1
  37. package/dist/{block.tk.bedgraphdot-5304e06c.js → block.tk.bedgraphdot-efe19e56.js} +1 -1
  38. package/dist/{block.tk.bigwig.ui-0c96dce5.js → block.tk.bigwig.ui-a92f286b.js} +1 -1
  39. package/dist/{block.tk.hicstraw-39d89269.js → block.tk.hicstraw-57fbbe61.js} +1 -1
  40. package/dist/{block.tk.junction-b45b3a95.js → block.tk.junction-64c39cd5.js} +1 -1
  41. package/dist/{block.tk.junction.textmatrixui-6ec019e1.js → block.tk.junction.textmatrixui-09e5e02f.js} +1 -1
  42. package/dist/{block.tk.ld-5c54e58b.js → block.tk.ld-f681d099.js} +1 -1
  43. package/dist/{block.tk.menu-30a2c3a5.js → block.tk.menu-2563364c.js} +1 -1
  44. package/dist/{block.tk.pgv-7ff2dfaf.js → block.tk.pgv-9dfc00c0.js} +1 -1
  45. package/dist/{boxplot-7de25274.js → boxplot-a2e1ace0.js} +1 -1
  46. package/dist/brainImaging-21701238.js +1 -0
  47. package/dist/{brush-db0ed33a.js → brush-bb4566a3.js} +1 -1
  48. package/dist/{categorical-bc309399.js → categorical-a00f4ffc.js} +1 -1
  49. package/dist/{condition-f0eb2343.js → condition-2034db37.js} +1 -1
  50. package/dist/{controls-8d4972c8.js → controls-0467d2ec.js} +1 -1
  51. package/dist/{controls.btns-bad9e4cf.js → controls.btns-ad7b28a2.js} +1 -1
  52. package/dist/{controls.config-e0f394cb.js → controls.config-6cf816fb.js} +1 -1
  53. package/dist/{controls.divide-d8ac5a9b.js → controls.divide-3c0d52d7.js} +1 -1
  54. package/dist/{controls.overlay-3ac8773d.js → controls.overlay-3a55c2ec.js} +1 -1
  55. package/dist/{controls.term1-008f4be4.js → controls.term1-59f4cd60.js} +1 -1
  56. package/dist/cuminc-8d21132b.js +1 -0
  57. package/dist/{customdata.inputui-58cd9b32.js → customdata.inputui-40ba6d7f.js} +1 -1
  58. package/dist/{dataDownload-91da6dd6.js → dataDownload-bfa92dad.js} +1 -1
  59. package/dist/{databrowser.ui-c50862e4.js → databrowser.ui-4799f04d.js} +1 -1
  60. package/dist/{density-7c3f91eb.js → density-4c2b53f6.js} +1 -1
  61. package/dist/{dictionary-48a38837.js → dictionary-89e860ee.js} +1 -1
  62. package/dist/{drag-c354e2c6.js → drag-88d451b4.js} +1 -1
  63. package/dist/{e2pca-3bba91fa.js → e2pca-8a3f2566.js} +1 -1
  64. package/dist/{ep-144d8973.js → ep-5399c5cc.js} +1 -1
  65. package/dist/{fusion.parse-ae1253f4.js → fusion.parse-fc25e5bd.js} +1 -1
  66. package/dist/{geneExpClustering-96d09008.js → geneExpClustering-a916ebda.js} +1 -1
  67. package/dist/{geneExpression-d6494fd3.js → geneExpression-501e95c0.js} +1 -1
  68. package/dist/{geneExpression-9ca2da4f.js → geneExpression-9047481a.js} +1 -1
  69. package/dist/{geneExpression-be9b5da2.js → geneExpression-da4b50f0.js} +1 -1
  70. package/dist/{geneORA-85850143.js → geneORA-ffb2497e.js} +1 -1
  71. package/dist/{geneVariant-3df05e0c.js → geneVariant-7ab521d6.js} +1 -1
  72. package/dist/{geneVariant-3d674865.js → geneVariant-d79431a2.js} +1 -1
  73. package/dist/{genefusion.ui-3e2a3a73.js → genefusion.ui-3ce190c7.js} +1 -1
  74. package/dist/{geneset-3b761b2c.js → geneset-3522bcda.js} +1 -1
  75. package/dist/{genomeBrowser-2105a98f.js → genomeBrowser-9b72eb22.js} +1 -1
  76. package/dist/{genomeBrowser.controls-f9b9bf42.js → genomeBrowser.controls-bef8bf99.js} +1 -1
  77. package/dist/{groupsetting-4901d033.js → groupsetting-574ad150.js} +1 -1
  78. package/dist/{hierCluster-a7ff7f5a.js → hierCluster-3b14b2b3.js} +1 -1
  79. package/dist/{hierCluster.config-3d124abf.js → hierCluster.config-f8686a30.js} +1 -1
  80. package/dist/{hierCluster.interactivity-3463cc0b.js → hierCluster.interactivity-3b5f1e81.js} +1 -1
  81. package/dist/{hierCluster.renderers-668d0075.js → hierCluster.renderers-9f9a7cad.js} +1 -1
  82. package/dist/{html.legend-3e428f9e.js → html.legend-ef8066dd.js} +1 -1
  83. package/dist/{imagePlot-6d89200c.js → imagePlot-095b9a92.js} +1 -1
  84. package/dist/{lasso-393c1570.js → lasso-ef63631b.js} +1 -1
  85. package/dist/{launch.adhoc-9c59874e.js → launch.adhoc-1b356f97.js} +1 -1
  86. package/dist/{legacyDataset-26ead9cc.js → legacyDataset-056e9d4c.js} +1 -1
  87. package/dist/{log-4d74231e.js → log-ca1e2a74.js} +1 -1
  88. package/dist/{lollipop-59f65024.js → lollipop-6ad9ec3c.js} +1 -1
  89. package/dist/{maf-72e5b7da.js → maf-dfada1c8.js} +1 -1
  90. package/dist/{maftimeline-ed8aaae8.js → maftimeline-1b715a01.js} +1 -1
  91. package/dist/{matrix-3d09a31f.js → matrix-3fae58f8.js} +1 -1
  92. package/dist/matrix.cells-3620eb3a.js +1 -0
  93. package/dist/{matrix.cluster-acdfc6a7.js → matrix.cluster-15b8a865.js} +1 -1
  94. package/dist/{matrix.config-cd01ebbd.js → matrix.config-8247bea5.js} +1 -1
  95. package/dist/{matrix.controls-86eb8d5c.js → matrix.controls-dea65894.js} +1 -1
  96. package/dist/{matrix.data-e2d7ac16.js → matrix.data-121a1a8c.js} +1 -1
  97. package/dist/{matrix.dom-e5f91cc0.js → matrix.dom-83c5fa39.js} +1 -1
  98. package/dist/{matrix.groups-f1969b5c.js → matrix.groups-2e1202ef.js} +1 -1
  99. package/dist/{matrix.interactivity-92bc8332.js → matrix.interactivity-2b076155.js} +1 -1
  100. package/dist/{matrix.layout-29a8f334.js → matrix.layout-8dc54c05.js} +1 -1
  101. package/dist/{matrix.legend-8c28039e.js → matrix.legend-e0078739.js} +1 -1
  102. package/dist/matrix.renderers-0c8eddc9.js +1 -0
  103. package/dist/{matrix.serieses-e079f04a.js → matrix.serieses-2898da6b.js} +1 -1
  104. package/dist/{matrix.sort-e1f83454.js → matrix.sort-249d4a35.js} +1 -1
  105. package/dist/{matrix.sorterUi-2025f39d.js → matrix.sorterUi-d26208c8.js} +1 -1
  106. package/dist/{mavb-37fffd68.js → mavb-9a6fa2e9.js} +1 -1
  107. package/dist/{mds.fimo-68f0eaf5.js → mds.fimo-ce97371c.js} +1 -1
  108. package/dist/{mds.samplescatterplot-362f3591.js → mds.samplescatterplot-a54b9e93.js} +1 -1
  109. package/dist/{mds.survivalplot-f5bda05a.js → mds.survivalplot-c5093f73.js} +1 -1
  110. package/dist/{mdsjsonform-7f0b6cc7.js → mdsjsonform-09b4e1cb.js} +1 -1
  111. package/dist/metaboliteIntensity-eeb5ad12.js +1 -0
  112. package/dist/niceNumLabels-ddb76164.js +1 -0
  113. package/dist/{nodrag-777a34a5.js → nodrag-bed2488c.js} +1 -1
  114. package/dist/{numeric-2eb8c25b.js → numeric-d5536b1c.js} +1 -1
  115. package/dist/numeric.binary-d67da945.js +1 -0
  116. package/dist/numeric.continuous-9a0c88bc.js +1 -0
  117. package/dist/numeric.discrete-921f7097.js +1 -0
  118. package/dist/numeric.spline-649308d5.js +1 -0
  119. package/dist/{numeric.toggle-5316211b.js → numeric.toggle-52789fd2.js} +1 -1
  120. package/dist/{oncomatrix-cd9fa01b.js → oncomatrix-6950c48c.js} +1 -1
  121. package/dist/{parseData-1bfa9946.js → parseData-480d1ff3.js} +1 -1
  122. package/dist/{plot.2dvaf-1ed153c1.js → plot.2dvaf-1ecc4bbc.js} +1 -1
  123. package/dist/plot.app-c841507a.js +1 -0
  124. package/dist/{plot.barplot-61742e94.js → plot.barplot-24140b0f.js} +1 -1
  125. package/dist/{plot.boxplot-fe966ac3.js → plot.boxplot-87fe8ab2.js} +1 -1
  126. package/dist/{plot.brainImaging-d2c23bb7.js → plot.brainImaging-325ebded.js} +1 -1
  127. package/dist/{plot.disco-70d493f4.js → plot.disco-621d1b8e.js} +1 -1
  128. package/dist/{plot.dzi-14e6fdc4.js → plot.dzi-3a7e478e.js} +1 -1
  129. package/dist/{plot.ssgq-9d364d41.js → plot.ssgq-1949c207.js} +1 -1
  130. package/dist/{plot.vaf2cov-4d28015b.js → plot.vaf2cov-d03c6409.js} +1 -1
  131. package/dist/{profileBarchart-c104f8e2.js → profileBarchart-11755d7c.js} +1 -1
  132. package/dist/{profileHome-a555583d.js → profileHome-9c5e266b.js} +1 -1
  133. package/dist/{profilePlot-5ce5b6a0.js → profilePlot-8ee3034a.js} +1 -1
  134. package/dist/{profilePolar-610213d4.js → profilePolar-9fe70c32.js} +1 -1
  135. package/dist/{profileRadar-fddb18f7.js → profileRadar-0e744181.js} +1 -1
  136. package/dist/{profileRadarFacility-2c2db1dd.js → profileRadarFacility-102544c5.js} +1 -1
  137. package/dist/{recover-a08c8d01.js → recover-b1ec4fed.js} +1 -1
  138. package/dist/{regression.inputs-5718cf72.js → regression.inputs-ad548745.js} +1 -1
  139. package/dist/{regression.inputs.values.table-d587c1cf.js → regression.inputs.values.table-1618447a.js} +1 -1
  140. package/dist/{regression.results-748024be.js → regression.results-25008028.js} +1 -1
  141. package/dist/{renderPvalueTable-c435aefd.js → renderPvalueTable-46056189.js} +1 -1
  142. package/dist/sampleScatter-47dd82cb.js +1 -0
  143. package/dist/{sampleScatter.interactivity-e9c30652.js → sampleScatter.interactivity-cfa3451d.js} +1 -1
  144. package/dist/{sampleScatter.rendererThree-3e6c032e.js → sampleScatter.rendererThree-c5321d24.js} +2 -2
  145. package/dist/{sampleView-d6a91293.js → sampleView-30b97c7d.js} +1 -1
  146. package/dist/{samplelst-821ec148.js → samplelst-2bdc1b9d.js} +1 -1
  147. package/dist/{samplematrix-7aa0a780.js → samplematrix-4f0ec523.js} +1 -1
  148. package/dist/{scatter-2e2c76f4.js → scatter-8a337eeb.js} +1 -1
  149. package/dist/{selectGenomeWithTklst-51cd21a4.js → selectGenomeWithTklst-895106fb.js} +1 -1
  150. package/dist/{singleCellPlot-c7347a27.js → singleCellPlot-360eaec6.js} +1 -1
  151. package/dist/{singlecell-a668bb17.js → singlecell-29c1cbb1.js} +1 -1
  152. package/dist/{singlecell-7c851ef8.js → singlecell-75f8af89.js} +1 -1
  153. package/dist/{snplocus-fe6f4ba1.js → snplocus-0cafa73c.js} +1 -1
  154. package/dist/{snplst-751cea95.js → snplst-2284d5ce.js} +1 -1
  155. package/dist/{spliceevent.a53ss.diagram-b157f95d.js → spliceevent.a53ss.diagram-44ccabf9.js} +1 -1
  156. package/dist/{spliceevent.exonskip.diagram-071a3467.js → spliceevent.exonskip.diagram-c8d1bdf0.js} +1 -1
  157. package/dist/spliceevent.exonskip.getdefault-9fe16119.js +1 -0
  158. package/dist/{spliceevent.noeventdiagram-1c731f35.js → spliceevent.noeventdiagram-5e244090.js} +1 -1
  159. package/dist/{spliceevent.phrase-7a3bfb00.js → spliceevent.phrase-186eb050.js} +1 -1
  160. package/dist/{stattable-a7713026.js → stattable-886f7dad.js} +1 -1
  161. package/dist/{style.gdc-40ec2784.js → style.gdc-4ac9b96b.js} +1 -1
  162. package/dist/{summary-592d8f81.js → summary-ee2045a5.js} +1 -1
  163. package/dist/{sunburst-452df940.js → sunburst-bbff8818.js} +1 -1
  164. package/dist/survival-04e279f8.js +1 -0
  165. package/dist/{survival-450b6df4.js → survival-d7bd3c6b.js} +1 -1
  166. package/dist/{svg.download-56529955.js → svg.download-54c99186.js} +1 -1
  167. package/dist/{svg.legend-c82b153f.js → svg.legend-28652faa.js} +1 -1
  168. package/dist/{svgraph-3c5cd8d2.js → svgraph-a12d89da.js} +1 -1
  169. package/dist/{svmr-3dd531ef.js → svmr-248055c8.js} +1 -1
  170. package/dist/{table-d6c411fd.js → table-1dae543a.js} +1 -1
  171. package/dist/{table-bf604c50.js → table-b4a61573.js} +1 -1
  172. package/dist/{termInfo-96285f4a.js → termInfo-4c759483.js} +1 -1
  173. package/dist/{termsetting-9a7511e6.js → termsetting-636d2271.js} +1 -1
  174. package/dist/{tk-6a8e5bb0.js → tk-741d4674.js} +1 -1
  175. package/dist/{tp.ui-221efed6.js → tp.ui-23151bb1.js} +1 -1
  176. package/dist/{tvs.density-9fdae0cc.js → tvs.density-9fe0c7fd.js} +1 -1
  177. package/dist/{tvs.geneVariant-149e25b7.js → tvs.geneVariant-1b179327.js} +1 -1
  178. package/dist/tvs.numeric-b4cfc975.js +1 -0
  179. package/dist/{tvs.samplelst-a38e9c2b.js → tvs.samplelst-681358bc.js} +1 -1
  180. package/dist/{uiUtils-a6de7f14.js → uiUtils-74700a01.js} +1 -1
  181. package/dist/{variantBrowser-05375469.js → variantBrowser-910b4bcd.js} +1 -1
  182. package/dist/{vcf-58904308.js → vcf-16ba1e06.js} +1 -1
  183. package/dist/{violin-c1b78717.js → violin-a41b2e2b.js} +1 -1
  184. package/dist/{violin.interactivity-534d6993.js → violin.interactivity-bcf0ccc2.js} +1 -1
  185. package/dist/{violin.renderer-16540fb8.js → violin.renderer-149310eb.js} +1 -1
  186. package/dist/{violinRenderer-688abcb2.js → violinRenderer-71c9f3ab.js} +1 -1
  187. package/dist/{viridis-d3cf2713.js → viridis-81de7bcd.js} +1 -1
  188. package/dist/{y-2d48b9e4.js → y-76c7da8c.js} +1 -1
  189. package/dist/{zoom-2d4ede33.js → zoom-a40839cf.js} +1 -1
  190. package/package.json +7 -7
  191. package/dist/app-de19f41c.js +0 -1
  192. package/dist/block.lazyload-ebd949e4.js +0 -1
  193. package/dist/brainImaging-007edaa3.js +0 -1
  194. package/dist/cuminc-72257faf.js +0 -1
  195. package/dist/matrix.cells-a5157233.js +0 -1
  196. package/dist/matrix.renderers-3b8dfd04.js +0 -1
  197. package/dist/metaboliteIntensity-512257f3.js +0 -1
  198. package/dist/niceNumLabels-8fdc6507.js +0 -1
  199. package/dist/numeric.binary-0a3b17d2.js +0 -1
  200. package/dist/numeric.continuous-f77038de.js +0 -1
  201. package/dist/numeric.discrete-b977e88f.js +0 -1
  202. package/dist/numeric.spline-d64b1abe.js +0 -1
  203. package/dist/plot.app-91a1d78d.js +0 -1
  204. package/dist/sampleScatter-031f47de.js +0 -1
  205. package/dist/spliceevent.exonskip.getdefault-93feb627.js +0 -1
  206. package/dist/survival-6a4c4f12.js +0 -1
  207. package/dist/tvs.numeric-f9ce58bc.js +0 -1
@@ -1 +1 @@
1
- import{aZ as t,aW as e,b5 as n,q as o,a$ as i}from"./app-f91922b4.js";import{p as u}from"./pointer-c7475677.js";import{d as r,y as a}from"./nodrag-777a34a5.js";var h=1e-12;function s(t){return((t=Math.exp(t))+1/t)/2}function c(t){return((t=Math.exp(t))-1/t)/2}function f(t){return((t=Math.exp(2*t))-1)/(t+1)}var l=function t(e,n,o){function i(t,i){var u=t[0],r=t[1],a=t[2],l=i[0],m=i[1],p=i[2],v=l-u,y=m-r,d=v*v+y*y,g,z;if(d<h){z=Math.log(p/a)/e;g=function(t){return[u+t*v,r+t*y,a*Math.exp(e*t*z)]}}else{var _=Math.sqrt(d),M=(p*p-a*a+o*d)/(2*a*n*_),x=(p*p-a*a-o*d)/(2*p*n*_),w=Math.log(Math.sqrt(M*M+1)-M),b=Math.log(Math.sqrt(x*x+1)-x);z=(b-w)/e;g=function(t){var o=t*z,i=s(w),h=a/(n*_)*(i*f(e*o+w)-c(w));return[u+h*v,r+h*y,a*i/s(e*o+w)]}}g.duration=z*1e3*e/Math.SQRT2;return g}i.rho=function(e){var n=Math.max(.001,+e),o=n*n,i=o*o;return t(n,o,i)};return i}(Math.SQRT2,2,4);var m=t=>()=>t;function p(t,{sourceEvent:e,target:n,transform:o,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:true,configurable:true},sourceEvent:{value:e,enumerable:true,configurable:true},target:{value:n,enumerable:true,configurable:true},transform:{value:o,enumerable:true,configurable:true},_:{value:i}})}function v(t){t.stopImmediatePropagation()}function y(t){t.preventDefault();t.stopImmediatePropagation()}function d(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function g(){var t=this;if(t instanceof SVGElement){t=t.ownerSVGElement||t;if(t.hasAttribute("viewBox")){t=t.viewBox.baseVal;return[[t.x,t.y],[t.x+t.width,t.y+t.height]]}return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}return[[0,0],[t.clientWidth,t.clientHeight]]}function z(){return this.__zoom||e}function _(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function M(){return navigator.maxTouchPoints||"ontouchstart"in this}function x(t,e,n){var o=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],u=t.invertY(e[0][1])-n[0][1],r=t.invertY(e[1][1])-n[1][1];return t.translate(i>o?(o+i)/2:Math.min(0,o)||Math.max(0,i),r>u?(u+r)/2:Math.min(0,u)||Math.max(0,r))}function w(){var h=d,s=g,c=x,f=_,w=M,b=[0,Infinity],T=[[-Infinity,-Infinity],[Infinity,Infinity]],k=250,E=l,I=t("start","zoom","end"),q,V,Y,j=500,B=150,D=0,P=10;function S(t){t.property("__zoom",z).on("wheel.zoom",A,{passive:false}).on("mousedown.zoom",H).on("dblclick.zoom",O).filter(w).on("touchstart.zoom",Z).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",C).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}S.transform=function(t,e,n,o){var i=t.selection?t.selection():t;i.property("__zoom",z);if(t!==i){Q(t,e,n,o)}else{i.interrupt().each((function(){R(this,arguments).event(o).start().zoom(null,typeof e==="function"?e.apply(this,arguments):e).end()}))}};S.scaleBy=function(t,e,n,o){S.scaleTo(t,(function(){var t=this.__zoom.k,n=typeof e==="function"?e.apply(this,arguments):e;return t*n}),n,o)};S.scaleTo=function(t,e,n,o){S.transform(t,(function(){var t=s.apply(this,arguments),o=this.__zoom,i=n==null?G(t):typeof n==="function"?n.apply(this,arguments):n,u=o.invert(i),r=typeof e==="function"?e.apply(this,arguments):e;return c(K(X(o,r),i,u),t,T)}),n,o)};S.translateBy=function(t,e,n,o){S.transform(t,(function(){return c(this.__zoom.translate(typeof e==="function"?e.apply(this,arguments):e,typeof n==="function"?n.apply(this,arguments):n),s.apply(this,arguments),T)}),null,o)};S.translateTo=function(t,n,o,i,u){S.transform(t,(function(){var t=s.apply(this,arguments),u=this.__zoom,r=i==null?G(t):typeof i==="function"?i.apply(this,arguments):i;return c(e.translate(r[0],r[1]).scale(u.k).translate(typeof n==="function"?-n.apply(this,arguments):-n,typeof o==="function"?-o.apply(this,arguments):-o),t,T)}),i,u)};function X(t,e){e=Math.max(b[0],Math.min(b[1],e));return e===t.k?t:new n(e,t.x,t.y)}function K(t,e,o){var i=e[0]-o[0]*t.k,u=e[1]-o[1]*t.k;return i===t.x&&u===t.y?t:new n(t.k,i,u)}function G(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function Q(t,e,o,i){t.on("start.zoom",(function(){R(this,arguments).event(i).start()})).on("interrupt.zoom end.zoom",(function(){R(this,arguments).event(i).end()})).tween("zoom",(function(){var t=this,u=arguments,r=R(t,u).event(i),a=s.apply(t,u),h=o==null?G(a):typeof o==="function"?o.apply(t,u):o,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,l=typeof e==="function"?e.apply(t,u):e,m=E(f.invert(h).concat(c/f.k),l.invert(h).concat(c/l.k));return function(t){if(t===1)t=l;else{var e=m(t),o=c/e[2];t=new n(o,h[0]-e[0]*o,h[1]-e[1]*o)}r.zoom(null,t)}}))}function R(t,e,n){return!n&&t.__zooming||new W(t,e)}function W(t,e){this.that=t;this.args=e;this.active=0;this.sourceEvent=null;this.extent=s.apply(t,e);this.taps=0}W.prototype={event:function(t){if(t)this.sourceEvent=t;return this},start:function(){if(++this.active===1){this.that.__zooming=this;this.emit("start")}return this},zoom:function(t,e){if(this.mouse&&t!=="mouse")this.mouse[1]=e.invert(this.mouse[0]);if(this.touch0&&t!=="touch")this.touch0[1]=e.invert(this.touch0[0]);if(this.touch1&&t!=="touch")this.touch1[1]=e.invert(this.touch1[0]);this.that.__zoom=e;this.emit("zoom");return this},end:function(){if(--this.active===0){delete this.that.__zooming;this.emit("end")}return this},emit:function(t){var e=o(this.that).datum();I.call(t,this.that,new p(t,{sourceEvent:this.sourceEvent,target:S,type:t,transform:this.that.__zoom,dispatch:I}),e)}};function A(t,...e){if(!h.apply(this,arguments))return;var n=R(this,e).event(t),o=this.__zoom,r=Math.max(b[0],Math.min(b[1],o.k*Math.pow(2,f.apply(this,arguments)))),a=u(t);if(n.wheel){if(n.mouse[0][0]!==a[0]||n.mouse[0][1]!==a[1]){n.mouse[1]=o.invert(n.mouse[0]=a)}clearTimeout(n.wheel)}else if(o.k===r)return;else{n.mouse=[a,o.invert(a)];i(this);n.start()}y(t);n.wheel=setTimeout(s,B);n.zoom("mouse",c(K(X(o,r),n.mouse[0],n.mouse[1]),n.extent,T));function s(){n.wheel=null;n.end()}}function H(t,...e){if(Y||!h.apply(this,arguments))return;var n=t.currentTarget,s=R(this,e,true).event(t),f=o(t.view).on("mousemove.zoom",d,true).on("mouseup.zoom",g,true),l=u(t,n),m=t.clientX,p=t.clientY;r(t.view);v(t);s.mouse=[l,this.__zoom.invert(l)];i(this);s.start();function d(t){y(t);if(!s.moved){var e=t.clientX-m,o=t.clientY-p;s.moved=e*e+o*o>D}s.event(t).zoom("mouse",c(K(s.that.__zoom,s.mouse[0]=u(t,n),s.mouse[1]),s.extent,T))}function g(t){f.on("mousemove.zoom mouseup.zoom",null);a(t.view,s.moved);y(t);s.event(t).end()}}function O(t,...e){if(!h.apply(this,arguments))return;var n=this.__zoom,i=u(t.changedTouches?t.changedTouches[0]:t,this),r=n.invert(i),a=n.k*(t.shiftKey?.5:2),f=c(K(X(n,a),i,r),s.apply(this,e),T);y(t);if(k>0)o(this).transition().duration(k).call(Q,f,i,t);else o(this).call(S.transform,f,i,t)}function Z(t,...e){if(!h.apply(this,arguments))return;var n=t.touches,o=n.length,r=R(this,e,t.changedTouches.length===o).event(t),a,s,c,f;v(t);for(s=0;s<o;++s){c=n[s],f=u(c,this);f=[f,this.__zoom.invert(f),c.identifier];if(!r.touch0)r.touch0=f,a=true,r.taps=1+!!q;else if(!r.touch1&&r.touch0[2]!==f[2])r.touch1=f,r.taps=0}if(q)q=clearTimeout(q);if(a){if(r.taps<2)V=f[0],q=setTimeout((function(){q=null}),j);i(this);r.start()}}function $(t,...e){if(!this.__zooming)return;var n=R(this,e).event(t),o=t.changedTouches,i=o.length,r,a,h,s;y(t);for(r=0;r<i;++r){a=o[r],h=u(a,this);if(n.touch0&&n.touch0[2]===a.identifier)n.touch0[0]=h;else if(n.touch1&&n.touch1[2]===a.identifier)n.touch1[0]=h}a=n.that.__zoom;if(n.touch1){var f=n.touch0[0],l=n.touch0[1],m=n.touch1[0],p=n.touch1[1],v=(v=m[0]-f[0])*v+(v=m[1]-f[1])*v,d=(d=p[0]-l[0])*d+(d=p[1]-l[1])*d;a=X(a,Math.sqrt(v/d));h=[(f[0]+m[0])/2,(f[1]+m[1])/2];s=[(l[0]+p[0])/2,(l[1]+p[1])/2]}else if(n.touch0)h=n.touch0[0],s=n.touch0[1];else return;n.zoom("touch",c(K(a,h,s),n.extent,T))}function C(t,...e){if(!this.__zooming)return;var n=R(this,e).event(t),i=t.changedTouches,r=i.length,a,h;v(t);if(Y)clearTimeout(Y);Y=setTimeout((function(){Y=null}),j);for(a=0;a<r;++a){h=i[a];if(n.touch0&&n.touch0[2]===h.identifier)delete n.touch0;else if(n.touch1&&n.touch1[2]===h.identifier)delete n.touch1}if(n.touch1&&!n.touch0)n.touch0=n.touch1,delete n.touch1;if(n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else{n.end();if(n.taps===2){h=u(h,this);if(Math.hypot(V[0]-h[0],V[1]-h[1])<P){var s=o(this).on("dblclick.zoom");if(s)s.apply(this,arguments)}}}}S.wheelDelta=function(t){return arguments.length?(f=typeof t==="function"?t:m(+t),S):f};S.filter=function(t){return arguments.length?(h=typeof t==="function"?t:m(!!t),S):h};S.touchable=function(t){return arguments.length?(w=typeof t==="function"?t:m(!!t),S):w};S.extent=function(t){return arguments.length?(s=typeof t==="function"?t:m([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),S):s};S.scaleExtent=function(t){return arguments.length?(b[0]=+t[0],b[1]=+t[1],S):[b[0],b[1]]};S.translateExtent=function(t){return arguments.length?(T[0][0]=+t[0][0],T[1][0]=+t[1][0],T[0][1]=+t[0][1],T[1][1]=+t[1][1],S):[[T[0][0],T[0][1]],[T[1][0],T[1][1]]]};S.constrain=function(t){return arguments.length?(c=t,S):c};S.duration=function(t){return arguments.length?(k=+t,S):k};S.interpolate=function(t){return arguments.length?(E=t,S):E};S.on=function(){var t=I.on.apply(I,arguments);return t===I?S:t};S.clickDistance=function(t){return arguments.length?(D=(t=+t)*t,S):Math.sqrt(D)};S.tapDistance=function(t){return arguments.length?(P=+t,S):P};return S}export{w as d};
1
+ import{aZ as t,aW as e,b5 as n,q as o,a$ as i}from"./app-71453429.js";import{p as u}from"./pointer-c7475677.js";import{d as r,y as a}from"./nodrag-bed2488c.js";var h=1e-12;function s(t){return((t=Math.exp(t))+1/t)/2}function c(t){return((t=Math.exp(t))-1/t)/2}function f(t){return((t=Math.exp(2*t))-1)/(t+1)}var l=function t(e,n,o){function i(t,i){var u=t[0],r=t[1],a=t[2],l=i[0],m=i[1],p=i[2],v=l-u,y=m-r,d=v*v+y*y,g,z;if(d<h){z=Math.log(p/a)/e;g=function(t){return[u+t*v,r+t*y,a*Math.exp(e*t*z)]}}else{var _=Math.sqrt(d),M=(p*p-a*a+o*d)/(2*a*n*_),x=(p*p-a*a-o*d)/(2*p*n*_),w=Math.log(Math.sqrt(M*M+1)-M),b=Math.log(Math.sqrt(x*x+1)-x);z=(b-w)/e;g=function(t){var o=t*z,i=s(w),h=a/(n*_)*(i*f(e*o+w)-c(w));return[u+h*v,r+h*y,a*i/s(e*o+w)]}}g.duration=z*1e3*e/Math.SQRT2;return g}i.rho=function(e){var n=Math.max(.001,+e),o=n*n,i=o*o;return t(n,o,i)};return i}(Math.SQRT2,2,4);var m=t=>()=>t;function p(t,{sourceEvent:e,target:n,transform:o,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:true,configurable:true},sourceEvent:{value:e,enumerable:true,configurable:true},target:{value:n,enumerable:true,configurable:true},transform:{value:o,enumerable:true,configurable:true},_:{value:i}})}function v(t){t.stopImmediatePropagation()}function y(t){t.preventDefault();t.stopImmediatePropagation()}function d(t){return(!t.ctrlKey||t.type==="wheel")&&!t.button}function g(){var t=this;if(t instanceof SVGElement){t=t.ownerSVGElement||t;if(t.hasAttribute("viewBox")){t=t.viewBox.baseVal;return[[t.x,t.y],[t.x+t.width,t.y+t.height]]}return[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}return[[0,0],[t.clientWidth,t.clientHeight]]}function z(){return this.__zoom||e}function _(t){return-t.deltaY*(t.deltaMode===1?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function M(){return navigator.maxTouchPoints||"ontouchstart"in this}function x(t,e,n){var o=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],u=t.invertY(e[0][1])-n[0][1],r=t.invertY(e[1][1])-n[1][1];return t.translate(i>o?(o+i)/2:Math.min(0,o)||Math.max(0,i),r>u?(u+r)/2:Math.min(0,u)||Math.max(0,r))}function w(){var h=d,s=g,c=x,f=_,w=M,b=[0,Infinity],T=[[-Infinity,-Infinity],[Infinity,Infinity]],k=250,E=l,I=t("start","zoom","end"),q,V,Y,j=500,B=150,D=0,P=10;function S(t){t.property("__zoom",z).on("wheel.zoom",A,{passive:false}).on("mousedown.zoom",H).on("dblclick.zoom",O).filter(w).on("touchstart.zoom",Z).on("touchmove.zoom",$).on("touchend.zoom touchcancel.zoom",C).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}S.transform=function(t,e,n,o){var i=t.selection?t.selection():t;i.property("__zoom",z);if(t!==i){Q(t,e,n,o)}else{i.interrupt().each((function(){R(this,arguments).event(o).start().zoom(null,typeof e==="function"?e.apply(this,arguments):e).end()}))}};S.scaleBy=function(t,e,n,o){S.scaleTo(t,(function(){var t=this.__zoom.k,n=typeof e==="function"?e.apply(this,arguments):e;return t*n}),n,o)};S.scaleTo=function(t,e,n,o){S.transform(t,(function(){var t=s.apply(this,arguments),o=this.__zoom,i=n==null?G(t):typeof n==="function"?n.apply(this,arguments):n,u=o.invert(i),r=typeof e==="function"?e.apply(this,arguments):e;return c(K(X(o,r),i,u),t,T)}),n,o)};S.translateBy=function(t,e,n,o){S.transform(t,(function(){return c(this.__zoom.translate(typeof e==="function"?e.apply(this,arguments):e,typeof n==="function"?n.apply(this,arguments):n),s.apply(this,arguments),T)}),null,o)};S.translateTo=function(t,n,o,i,u){S.transform(t,(function(){var t=s.apply(this,arguments),u=this.__zoom,r=i==null?G(t):typeof i==="function"?i.apply(this,arguments):i;return c(e.translate(r[0],r[1]).scale(u.k).translate(typeof n==="function"?-n.apply(this,arguments):-n,typeof o==="function"?-o.apply(this,arguments):-o),t,T)}),i,u)};function X(t,e){e=Math.max(b[0],Math.min(b[1],e));return e===t.k?t:new n(e,t.x,t.y)}function K(t,e,o){var i=e[0]-o[0]*t.k,u=e[1]-o[1]*t.k;return i===t.x&&u===t.y?t:new n(t.k,i,u)}function G(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function Q(t,e,o,i){t.on("start.zoom",(function(){R(this,arguments).event(i).start()})).on("interrupt.zoom end.zoom",(function(){R(this,arguments).event(i).end()})).tween("zoom",(function(){var t=this,u=arguments,r=R(t,u).event(i),a=s.apply(t,u),h=o==null?G(a):typeof o==="function"?o.apply(t,u):o,c=Math.max(a[1][0]-a[0][0],a[1][1]-a[0][1]),f=t.__zoom,l=typeof e==="function"?e.apply(t,u):e,m=E(f.invert(h).concat(c/f.k),l.invert(h).concat(c/l.k));return function(t){if(t===1)t=l;else{var e=m(t),o=c/e[2];t=new n(o,h[0]-e[0]*o,h[1]-e[1]*o)}r.zoom(null,t)}}))}function R(t,e,n){return!n&&t.__zooming||new W(t,e)}function W(t,e){this.that=t;this.args=e;this.active=0;this.sourceEvent=null;this.extent=s.apply(t,e);this.taps=0}W.prototype={event:function(t){if(t)this.sourceEvent=t;return this},start:function(){if(++this.active===1){this.that.__zooming=this;this.emit("start")}return this},zoom:function(t,e){if(this.mouse&&t!=="mouse")this.mouse[1]=e.invert(this.mouse[0]);if(this.touch0&&t!=="touch")this.touch0[1]=e.invert(this.touch0[0]);if(this.touch1&&t!=="touch")this.touch1[1]=e.invert(this.touch1[0]);this.that.__zoom=e;this.emit("zoom");return this},end:function(){if(--this.active===0){delete this.that.__zooming;this.emit("end")}return this},emit:function(t){var e=o(this.that).datum();I.call(t,this.that,new p(t,{sourceEvent:this.sourceEvent,target:S,type:t,transform:this.that.__zoom,dispatch:I}),e)}};function A(t,...e){if(!h.apply(this,arguments))return;var n=R(this,e).event(t),o=this.__zoom,r=Math.max(b[0],Math.min(b[1],o.k*Math.pow(2,f.apply(this,arguments)))),a=u(t);if(n.wheel){if(n.mouse[0][0]!==a[0]||n.mouse[0][1]!==a[1]){n.mouse[1]=o.invert(n.mouse[0]=a)}clearTimeout(n.wheel)}else if(o.k===r)return;else{n.mouse=[a,o.invert(a)];i(this);n.start()}y(t);n.wheel=setTimeout(s,B);n.zoom("mouse",c(K(X(o,r),n.mouse[0],n.mouse[1]),n.extent,T));function s(){n.wheel=null;n.end()}}function H(t,...e){if(Y||!h.apply(this,arguments))return;var n=t.currentTarget,s=R(this,e,true).event(t),f=o(t.view).on("mousemove.zoom",d,true).on("mouseup.zoom",g,true),l=u(t,n),m=t.clientX,p=t.clientY;r(t.view);v(t);s.mouse=[l,this.__zoom.invert(l)];i(this);s.start();function d(t){y(t);if(!s.moved){var e=t.clientX-m,o=t.clientY-p;s.moved=e*e+o*o>D}s.event(t).zoom("mouse",c(K(s.that.__zoom,s.mouse[0]=u(t,n),s.mouse[1]),s.extent,T))}function g(t){f.on("mousemove.zoom mouseup.zoom",null);a(t.view,s.moved);y(t);s.event(t).end()}}function O(t,...e){if(!h.apply(this,arguments))return;var n=this.__zoom,i=u(t.changedTouches?t.changedTouches[0]:t,this),r=n.invert(i),a=n.k*(t.shiftKey?.5:2),f=c(K(X(n,a),i,r),s.apply(this,e),T);y(t);if(k>0)o(this).transition().duration(k).call(Q,f,i,t);else o(this).call(S.transform,f,i,t)}function Z(t,...e){if(!h.apply(this,arguments))return;var n=t.touches,o=n.length,r=R(this,e,t.changedTouches.length===o).event(t),a,s,c,f;v(t);for(s=0;s<o;++s){c=n[s],f=u(c,this);f=[f,this.__zoom.invert(f),c.identifier];if(!r.touch0)r.touch0=f,a=true,r.taps=1+!!q;else if(!r.touch1&&r.touch0[2]!==f[2])r.touch1=f,r.taps=0}if(q)q=clearTimeout(q);if(a){if(r.taps<2)V=f[0],q=setTimeout((function(){q=null}),j);i(this);r.start()}}function $(t,...e){if(!this.__zooming)return;var n=R(this,e).event(t),o=t.changedTouches,i=o.length,r,a,h,s;y(t);for(r=0;r<i;++r){a=o[r],h=u(a,this);if(n.touch0&&n.touch0[2]===a.identifier)n.touch0[0]=h;else if(n.touch1&&n.touch1[2]===a.identifier)n.touch1[0]=h}a=n.that.__zoom;if(n.touch1){var f=n.touch0[0],l=n.touch0[1],m=n.touch1[0],p=n.touch1[1],v=(v=m[0]-f[0])*v+(v=m[1]-f[1])*v,d=(d=p[0]-l[0])*d+(d=p[1]-l[1])*d;a=X(a,Math.sqrt(v/d));h=[(f[0]+m[0])/2,(f[1]+m[1])/2];s=[(l[0]+p[0])/2,(l[1]+p[1])/2]}else if(n.touch0)h=n.touch0[0],s=n.touch0[1];else return;n.zoom("touch",c(K(a,h,s),n.extent,T))}function C(t,...e){if(!this.__zooming)return;var n=R(this,e).event(t),i=t.changedTouches,r=i.length,a,h;v(t);if(Y)clearTimeout(Y);Y=setTimeout((function(){Y=null}),j);for(a=0;a<r;++a){h=i[a];if(n.touch0&&n.touch0[2]===h.identifier)delete n.touch0;else if(n.touch1&&n.touch1[2]===h.identifier)delete n.touch1}if(n.touch1&&!n.touch0)n.touch0=n.touch1,delete n.touch1;if(n.touch0)n.touch0[1]=this.__zoom.invert(n.touch0[0]);else{n.end();if(n.taps===2){h=u(h,this);if(Math.hypot(V[0]-h[0],V[1]-h[1])<P){var s=o(this).on("dblclick.zoom");if(s)s.apply(this,arguments)}}}}S.wheelDelta=function(t){return arguments.length?(f=typeof t==="function"?t:m(+t),S):f};S.filter=function(t){return arguments.length?(h=typeof t==="function"?t:m(!!t),S):h};S.touchable=function(t){return arguments.length?(w=typeof t==="function"?t:m(!!t),S):w};S.extent=function(t){return arguments.length?(s=typeof t==="function"?t:m([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),S):s};S.scaleExtent=function(t){return arguments.length?(b[0]=+t[0],b[1]=+t[1],S):[b[0],b[1]]};S.translateExtent=function(t){return arguments.length?(T[0][0]=+t[0][0],T[1][0]=+t[1][0],T[0][1]=+t[0][1],T[1][1]=+t[1][1],S):[[T[0][0],T[0][1]],[T[1][0],T[1][1]]]};S.constrain=function(t){return arguments.length?(c=t,S):c};S.duration=function(t){return arguments.length?(k=+t,S):k};S.interpolate=function(t){return arguments.length?(E=t,S):E};S.on=function(){var t=I.on.apply(I,arguments);return t===I?S:t};S.clickDistance=function(t){return arguments.length?(D=(t=+t)*t,S):Math.sqrt(D)};S.tapDistance=function(t){return arguments.length?(P=+t,S):P};return S}export{w as d};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sjcrh/proteinpaint-client",
3
- "version": "2.63.0",
3
+ "version": "2.63.2",
4
4
  "description": "a genomics visualization tool for exploring a cohort's genotype and phenotype data",
5
5
  "main": "dist/app.js",
6
6
  "module": "dist/app.js",
@@ -24,13 +24,11 @@
24
24
  "dev0": "rm -rf ../public/bin; webpack --env NODE_ENV=development --watch --progress --color",
25
25
  "dev": "./dev.sh",
26
26
  "pretest": "./test/pretest.js",
27
- "test": "node ./test/import-specs.js && npm run tape",
28
- "pretest:unit": "webpack --config=./webpack.test.config.js --env TEST_TYPE=unit",
29
- "test:unit": "cat ../public/bin/unittest.js | tape-run --static ../public",
30
- "tape": "cat ../public/bin/proteinpaint.js ./test/init.js | tape-run --static ../public",
31
- "pretest:integration": "webpack --config=./webpack.test.config.js --env TEST_TYPE=integration",
32
- "test:integration": "cat ../public/bin/testrunproteinpaint.js ./test/initIntegration.js | tape-run --static ../public",
27
+ "test": "./test.sh *.spec.js",
28
+ "test:unit": "./test.sh *.unit.spec.*",
29
+ "test:integration": "./test.sh *.integration.spec.*",
33
30
  "examples": "node ./test/import-specs.js name=_x_.examples && npm run tape",
31
+ "//TODO": "# replace rollup with esbuild",
34
32
  "rollw": "rm -rf dist && rollup -c ./rollup.config.js -w --bundleConfigAsCjs",
35
33
  "build": "rm -rf dist && rollup -c ./rollup.config.js",
36
34
  "prepack": "rm -rf dist && rollup -c ./rollup.config.js && npm run sedver",
@@ -61,6 +59,8 @@
61
59
  "d3-beeswarm": "0.0.4",
62
60
  "d3-regression": "^1.3.10",
63
61
  "debounce": "^1.2.0",
62
+ "esbuild-plugin-polyfill-node": "^0.3.0",
63
+ "glob": "^10.4.1",
64
64
  "highlight.js": "~11.2.0",
65
65
  "html-webpack-plugin": "^5.5.0",
66
66
  "minimatch": "^3.1.2",
@@ -1 +0,0 @@
1
- import{az as t,q as e,M as s,aA as r,a1 as o,ac as i}from"./app-f91922b4.js";import{r as a,s as n}from"./recover-a08c8d01.js";import{v as p}from"./FilterRxComp-0e75dd8d.js";import{n as c}from"./sampleScatter.interactivity-e9c30652.js";import{summaryInit as l}from"./summary-592d8f81.js";import"./FilterStateless-ad3df967.js";import"./app-bfce9bf5.js";import"./termInfo-96285f4a.js";import"./table-d6c411fd.js";import"./termsetting-9a7511e6.js";import"path";import"./downloadTextfile-5723af95.js";import"./sampleView-d6a91293.js";import"./controls-8d4972c8.js";import"./controls.btns-bad9e4cf.js";import"./controls.config-e0f394cb.js";import"./controls.overlay-3ac8773d.js";import"./controls.term1-008f4be4.js";import"./controls.divide-d8ac5a9b.js";import"./violin-c1b78717.js";import"./violin.renderer-16540fb8.js";import"./brush-db0ed33a.js";import"./pointer-c7475677.js";import"./nodrag-777a34a5.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";import"./log-4d74231e.js";import"./html.legend-3e428f9e.js";import"./violin.interactivity-534d6993.js";import"./niceNumLabels-8fdc6507.js";import"./barchart-e2af00a8.js";import"./bars.settings-64bb4642.js";import"./bars.renderer-f0e5af5a.js";import"./svg.legend-c82b153f.js";import"./barchart.events-272fd122.js";import"./sampleScatter-031f47de.js";import"./zoom-2d4ede33.js";import"./lasso-393c1570.js";import"./drag-c354e2c6.js";import"./svg.download-56529955.js";import"./symbol-fc7cbd41.js";import"./math-2fb199c6.js";import"./sampleScatter.rendererThree-3e6c032e.js";function d(t){switch(t){case"../plots/DEanalysis.js":return import("./DEanalysis-b86d0874.js");case"../plots/Disco.js":return import("./Disco-16cd51c0.js");case"../plots/DziViewer.js":return import("./DziViewer-5c2d68e7.js");case"../plots/barchart.data.js":return import("./FilterRxComp-0e75dd8d.js").then((function(t){return t.y}));case"../plots/barchart.events.js":return import("./barchart.events-272fd122.js");case"../plots/barchart.js":return import("./barchart-e2af00a8.js");case"../plots/bars.renderer.js":return import("./bars.renderer-f0e5af5a.js");case"../plots/bars.settings.js":return import("./bars.settings-64bb4642.js");case"../plots/boxplot.js":return import("./boxplot-7de25274.js");case"../plots/brainImaging.js":return import("./brainImaging-007edaa3.js");case"../plots/controls.btns.js":return import("./controls.btns-bad9e4cf.js");case"../plots/controls.config.js":return import("./controls.config-e0f394cb.js");case"../plots/controls.divide.js":return import("./controls.divide-d8ac5a9b.js");case"../plots/controls.js":return import("./controls-8d4972c8.js");case"../plots/controls.overlay.js":return import("./controls.overlay-3ac8773d.js");case"../plots/controls.term1.js":return import("./controls.term1-008f4be4.js");case"../plots/cuminc.js":return import("./cuminc-72257faf.js");case"../plots/dataDownload.js":return import("./dataDownload-91da6dd6.js");case"../plots/dictionary.js":return import("./dictionary-48a38837.js");case"../plots/geneExpression.js":return import("./geneExpression-9ca2da4f.js");case"../plots/geneORA.js":return import("./geneORA-85850143.js");case"../plots/geneset.js":return import("./geneset-3b761b2c.js");case"../plots/genomeBrowser.controls.js":return import("./genomeBrowser.controls-f9b9bf42.js");case"../plots/genomeBrowser.js":return import("./genomeBrowser-2105a98f.js");case"../plots/hierCluster.config.js":return import("./hierCluster.config-3d124abf.js");case"../plots/hierCluster.interactivity.js":return import("./hierCluster.interactivity-3463cc0b.js").then((function(t){return t.i}));case"../plots/hierCluster.js":return import("./hierCluster-a7ff7f5a.js");case"../plots/hierCluster.renderers.js":return import("./hierCluster.renderers-668d0075.js").then((function(t){return t.r}));case"../plots/imagePlot.js":return import("./imagePlot-6d89200c.js");case"../plots/matrix.cells.js":return import("./matrix.cells-a5157233.js");case"../plots/matrix.cluster.js":return import("./matrix.cluster-acdfc6a7.js");case"../plots/matrix.config.js":return import("./matrix.config-cd01ebbd.js");case"../plots/matrix.controls.js":return import("./matrix.controls-86eb8d5c.js");case"../plots/matrix.data.js":return import("./matrix.data-e2d7ac16.js").then((function(t){return t.m}));case"../plots/matrix.dom.js":return import("./matrix.dom-e5f91cc0.js");case"../plots/matrix.groups.js":return import("./matrix.groups-f1969b5c.js").then((function(t){return t.m}));case"../plots/matrix.interactivity.js":return import("./matrix.interactivity-92bc8332.js");case"../plots/matrix.js":return import("./matrix-3d09a31f.js");case"../plots/matrix.layout.js":return import("./matrix.layout-29a8f334.js").then((function(t){return t.m}));case"../plots/matrix.legend.js":return import("./matrix.legend-8c28039e.js").then((function(t){return t.m}));case"../plots/matrix.renderers.js":return import("./matrix.renderers-3b8dfd04.js");case"../plots/matrix.serieses.js":return import("./matrix.serieses-e079f04a.js").then((function(t){return t.m}));case"../plots/matrix.sort.js":return import("./matrix.sort-e1f83454.js");case"../plots/matrix.sorterUi.js":return import("./matrix.sorterUi-2025f39d.js");case"../plots/plot.app.js":return import("./plot.app-91a1d78d.js");case"../plots/plot.brainImaging.js":return import("./plot.brainImaging-d2c23bb7.js");case"../plots/plot.disco.js":return import("./plot.disco-70d493f4.js");case"../plots/plot.ssgq.js":return import("./plot.ssgq-9d364d41.js");case"../plots/profileBarchart.js":return import("./profileBarchart-c104f8e2.js");case"../plots/profilePlot.js":return import("./profilePlot-5ce5b6a0.js");case"../plots/profilePolar.js":return import("./profilePolar-610213d4.js");case"../plots/profileRadar.js":return import("./profileRadar-fddb18f7.js");case"../plots/profileRadarFacility.js":return import("./profileRadarFacility-2c2db1dd.js");case"../plots/regression.inputs.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.b}));case"../plots/regression.inputs.term.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.a}));case"../plots/regression.inputs.values.table.js":return import("./regression.inputs.values.table-d587c1cf.js");case"../plots/regression.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.r}));case"../plots/regression.results.js":return import("./regression.results-748024be.js").then((function(t){return t.r}));case"../plots/sampleScatter.interactivity.js":return import("./sampleScatter.interactivity-e9c30652.js").then((function(t){return t.a}));case"../plots/sampleScatter.js":return import("./sampleScatter-031f47de.js").then((function(t){return t.a}));case"../plots/sampleScatter.renderer.js":return import("./sampleScatter-031f47de.js").then((function(t){return t.s}));case"../plots/sampleScatter.rendererThree.js":return import("./sampleScatter.rendererThree-3e6c032e.js").then((function(t){return t.c}));case"../plots/sampleView.js":return import("./sampleView-d6a91293.js");case"../plots/scatter.js":return import("./scatter-2e2c76f4.js");case"../plots/singleCellPlot.js":return import("./singleCellPlot-c7347a27.js");case"../plots/stattable.js":return import("./stattable-a7713026.js");case"../plots/summary.js":return import("./summary-592d8f81.js");case"../plots/survival.js":return import("./survival-450b6df4.js");case"../plots/table.js":return import("./table-bf604c50.js");case"../plots/variantBrowser.js":return import("./variantBrowser-05375469.js");case"../plots/violin.interactivity.js":return import("./violin.interactivity-534d6993.js");case"../plots/violin.js":return import("./violin-c1b78717.js");case"../plots/violin.renderer.js":return import("./violin.renderer-16540fb8.js");default:return new Promise((function(e,s){(typeof queueMicrotask==="function"?queueMicrotask:setTimeout)(s.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}class m{constructor(t){this.type="plot";u(this);this.initUi(t)}reactsTo(t){if(t.type.includes("cache_termq"))return true;if(t.type.endsWith("_group"))return true;if(t.type.startsWith("plot_"))return t.id===this.id;if(t.type.startsWith("filter"))return true;if(t.type.startsWith("cohort"))return true;if(t.type=="app_refresh")return true;if(t.type.endsWith("customTerm"))return true}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{config:e,groups:t.groups,_scope_:t._scope_}}async main(){this.dom.errdiv.style("display","none");if(!this.components)await this.setComponents(this.opts)}async setComponents(t){this.components={recover:await a({app:this.app,holder:this.dom.localRecoverDiv,getState:t=>this.getState(t),reactsTo:t=>t.id==this.id&&(t.type=="plot_edit"||t.type=="plot_nestedEdits")&&t._track_!="none",plot_id:this.id,maxHistoryLen:10})};const s=await d(`../plots/${t.chartType}.js`);this.components.chart=await s.componentInit({app:this.app,holder:this.dom.viz,header:this.dom.paneTitleDiv,id:this.id,plotDiv:e(this.dom.holder.app_div.node().parentNode)})}destroy(){this.dom.holder.app_div.selectAll("*").remove();this.dom.holder.app_div.remove();for(const t in this.dom){delete this.dom[t]}}}const j=t(m);function u(t){t.initUi=function(e){const r=e.holder;r.header.style("padding",0);try{t.dom={tip:new s({padding:"0px"}),holder:r,paneTitleDiv:r.header.append("div").style("display","inline-block").style("color","#555").style("padding-left","7px").style("vertical-align","sub"),localRecoverDiv:r.header.append("div").style("display","inline-block"),body:r.body.style("white-space","nowrap").style("overflow-x","auto"),errdiv:r.body.append("div").style("display","none").style("padding","5px").style("background-color","rgba(255,100,100,0.2)"),viz:r.body.append("div")}}catch(e){t.dom.errdiv.style("display","none").text(e)}}}class h{constructor(t){if(t.addLoginCallback){t.addLoginCallback((()=>this.api.dispatch({type:"app_refresh"})))}this.type="app";this.dom={holder:t.holder,topbar:t.holder.append("div"),errdiv:t.holder.append("div"),plotDiv:t.holder.append("div")};this.plotIdToSandboxId={}}validateOpts(t={}){if(!t.holder)throw`missing opts.holder in the MassApp constructor argument`;if(!t.callbacks)t.callbacks={};if(!t.state.vocab)t.state.vocab={};if(typeof t.state.vocab!="object")throw"opts.state.vocab{} is not an object";if(t.state.genome){t.state.vocab.genome=t.state.genome;delete t.state.genome}if(t.state.dslabel){t.state.vocab.dslabel=t.state.dslabel;delete t.state.dslabel}return t}async preApiFreeze(t){try{t.tip=new s({padding:"5px"});t.tip.d.on("keyup",(e=>{if(e.key=="Escape")t.tip.hide()}));t.printError=t=>this.printError(t);const e=this.opts.state.vocab;t.vocabApi=await p({app:t,state:{vocab:this.opts.state.vocab},fetchOpts:this.opts.fetchOpts,getDatasetAccessToken:this.opts.getDatasetAccessToken});t.hasWebGL=function(){try{var t=document.createElement("canvas");return!!(window.WebGLRenderingContext&&(t.getContext("webgl")||t.getContext("experimental-webgl")))}catch(t){return false}};this.opts.state.vocab=t.vocabApi.vocab}catch(t){throw t}}async init(){try{const t="debounceInterval"in this.opts?this.opts.debounceInterval:0;if(this.opts.embeddedSessionState){Object.assign(this.opts.state,this.opts.embeddedSessionState)}this.store=await n({app:this.api,state:this.opts.state,debounceInterval:t});this.state=await this.store.copyState();this.components={};if(this.state.nav.header_mode!="hidden"){this.components.nav=await c({app:this.api,holder:this.dom.topbar,header_mode:this.state&&this.state.nav&&this.state.nav.header_mode,vocab:this.state.vocab,massSessionDuration:this.state.termdbConfig.massSessionDuration})}this.components.plots={};await this.api.dispatch()}catch(t){this.printError(t);throw t}}async main(){await this.api.vocabApi.main();const t={};let e;for(const s of this.state.plots){if(this.components.plots&&!(s.id in this.components.plots)){e=o(this.dom.plotDiv,{close:()=>{this.api.dispatch({type:"plot_delete",id:s.id})},plotId:s.id,beforePlotId:s.insertBefore||null,style:{width:"98.5%"}});if(s.chartType=="summary")t[s.id]=l(Object.assign({app:this.api,holder:e},s));else t[s.id]=j(Object.assign({app:this.api,holder:e},s))}}const s=Object.keys(t).length;if(s){await Promise.all(Object.values(t));for(const e in t){this.components.plots[e]=await t[e]}}for(const t in this.components.plots){if(!this.state.plots.find((e=>e.id===t))){this.components.plots[t].destroy();delete this.components.plots[t]}}}printError(t){i(this.dom.errdiv||this.opts.holder,"Error: "+(t.message||t));if(t.stack)console.log(t.stack);this.bus.emit("error")}}const f=r(h);export{f as appInit};
@@ -1 +0,0 @@
1
- let n;async function t(t){if(!n){const t=await import("./block-ec76524e.js").then((function(n){return n.c}));n=t.Block}return new n(t)}export{t as b};
@@ -1 +0,0 @@
1
- import{az as t,aS as i,aQ as a,S as e}from"./app-f91922b4.js";import{topBarInit as n}from"./controls.btns-bad9e4cf.js";import{configUiInit as s}from"./controls.config-e0f394cb.js";import"./controls.overlay-3ac8773d.js";import"./termsetting-9a7511e6.js";import"path";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";import"./controls.term1-008f4be4.js";import"./controls.divide-d8ac5a9b.js";class o{constructor(t){this.opts=t;this.type="brainImaging";this.isOpen=true}async init(){const t=this.opts.holder;const i=t.append("div").style("display","inline-block").style("vertical-align","top");const e=i.append("div");const o=i.append("div");const r=this.getConfigInputsOptions();this.features=await a({topbar:n({app:this.app,id:this.id,downloadHandler:()=>{const i=t.select('div[id="sjpp_brainImaging_holder_div"] img').node();const a="brainImaging";const e=document.createElement("a");document.body.appendChild(e);e.addEventListener("click",(()=>{e.download=a+".png";e.href=i.src;document.body.removeChild(e)}),false);e.click()},callback:()=>this.toggleVisibility(this.isOpen),isOpen:()=>this.isOpen,holder:e}),config:s({app:this.app,id:this.id,holder:o,isOpen:()=>this.isOpen,inputs:r})})}getConfigInputsOptions(){const t=[];const i=[{label:"Sagittal",type:"number",chartType:"brainImaging",settingsKey:"brainImageL",title:"Sagittal",min:0,max:192},{label:"Coronal",type:"number",chartType:"brainImaging",settingsKey:"brainImageF",title:"Coronal",min:0,max:228},{label:"Axial",type:"number",chartType:"brainImaging",settingsKey:"brainImageT",title:"Axial",min:0,max:192}];t.push(...i);return t}async main(){const t=this.state.settings;this.isOpen=t.brainImaging.isOpen;const i=this.opts.holder;i.select('div[id="sjpp_brainImaging_holder_div"]').remove();const a=i.append("div").attr("id","sjpp_brainImaging_holder_div").style("display","inline-block");const n=this.app.getState();for(const t in this.features){this.features[t].update({state:this.state,appState:n})}const s={genome:n.genome,dslabel:n.dslabel,NIdata:{dataType:n.args.queryKey,sample:n.args.sampleName+".nii"},l:t.brainImaging.brainImageL,f:t.brainImaging.brainImageF,t:t.brainImaging.brainImageT};const o=await e("mds3",{body:s});if(o.error)throw o.error;const r=await o.text();const p=new Image;p.onload=()=>{a.append("img").attr("width",p.width*2).attr("height",p.height*2).attr("src",r)};p.src=r}getState(t){return t.plots.find((t=>t.id===this.id))}toggleVisibility(t){this.app.dispatch({type:"plot_edit",id:this.opts.id,config:{settings:{brainImaging:{isOpen:!t}}}})}}const r=t(o);const p=r;async function d(t){const a={brainImaging:{brainImageL:76,brainImageF:116,brainImageT:80}};const e={chartType:"brainImaging",settings:a};return i(e,t)}export{r as brainImaging,p as componentInit,d as getPlotConfig};
@@ -1 +0,0 @@
1
- import{aS as e,M as t,am as s,an as i,x as n,az as a,q as r,l as o}from"./app-f91922b4.js";import{controlsInit as c}from"./controls-8d4972c8.js";import{f as l}from"./termsetting-9a7511e6.js";import{s as d}from"./legacy-d3-polyfill-bdb2d792.js";import{h as p}from"./html.legend-3e428f9e.js";import{o as h}from"./FilterRxComp-0e75dd8d.js";import{s as m,r as u,a as g,g as f}from"./renderPvalueTable-c435aefd.js";import{l as y}from"./line-264f8f9e.js";import{a as v}from"./area-f56e50f9.js";import{c as x,b}from"./axis-6cb4f314.js";import"./controls.btns-bad9e4cf.js";import"./controls.config-e0f394cb.js";import"./controls.overlay-3ac8773d.js";import"path";import"./table-d6c411fd.js";import"./controls.term1-008f4be4.js";import"./controls.divide-d8ac5a9b.js";import"./pointer-c7475677.js";import"./constant-426a1483.js";class I{constructor(s){this.type="cuminc";this.pj=_(this);this.state={config:e({settings:JSON.parse(C)},s.config)};const i=s.holder;this.dom={holder:i,chartsDiv:i.append("div").style("margin","10px"),legendDiv:i.append("div").style("margin","5px"),hiddenDiv:i.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});this.lineFxn=y().curve(m).x((e=>e.scaledX)).y((e=>e.scaledY));this.hidePlotTitle=true;j(this);this.legendRenderer=p(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}})}main(e){this.config=structuredClone(this.state.config);if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.settings=this.config.settings.cuminc;this.settings.xTitleLabel="Years since entry into the cohort";this.settings.atRiskVisible=false;this.processResults(e);this.pj.refresh({data:this.currData});this.setTerm2Color(this.pj.tree.charts);this.render()}processResults(e){const t=Object.keys(e);if(t.length!=1)throw"must be a single chart";const s=t[0];const i=e[s];this.currData=[];this.uniqueSeriesIds=new Set;for(const e in i.estimates){const t=i.estimates[e];for(const i of t){const{time:t,est:n,low:a,up:r,nrisk:o,nevent:c,ncensor:l}=i;const d={chartId:s,seriesId:e,time:t,cuminc:n*100,low:a*100,high:r*100,nrisk:o,nevent:c,ncensor:l};this.currData.push(d);this.uniqueSeriesIds.add(d.seriesId)}}this.tests={};if(i.tests?.length!=1)throw"must have a single test";const n=i.tests[0];this.tests[s]=[{pvalue:{id:"pvalue",text:n.permutation?n.pvalue+"*":n.pvalue},series1:{id:n.series1},series2:{id:n.series2},permutation:n.permutation}];this.refs={}}setTerm2Color(e){if(!e)return;if(e.length!=1)throw"should be a single chart";const t=e[0];this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(d);const a=[];for(const e of t.serieses){const t=this.config.term2?.term.values?.[e.seriesId]?.color;const s={orig:t||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};s.rgb=n(s.orig);s.adjusted=s.rgb.toString();this.term2toColor[e.seriesId]=s;if(!a.find((t=>t.seriesId==e.seriesId))){a.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted})}}if(this.config.term2&&a.length){this.legendData=[{name:this.config.term2.term.name,items:a}]}else{this.legendData=[]}const r=this.tests[t.chartId];if(r.length!=1)throw"should have one test";const o=r[0];for(const e in o){if(e=="pvalue"){o[e].color="#000"}else if(e.startsWith("series")){const t=a.find((t=>t.seriesId==o[e].id));o[e].color=t.color;o[e].text=t.text}else{continue}}}}class k{constructor(e){this.type="cuminc";this.chartIncrement=0}async init(e){const s=this.opts;const i=this.opts.controls?null:s.holder.append("div");const n=s.controls?s.holder:s.holder.append("div");this.dom={loadingDiv:n.append("div").style("position","absolute").style("display","none").style("padding","20px").html("Loading ..."),header:s.header,controls:i,holder:n,chartsDiv:n.append("div").style("margin","10px"),legendDiv:n.append("div").style("margin","5px"),hiddenDiv:n.append("div").style("margin","5px 5px 15px 5px")};this.tip=new t({padding:"5px"});if(this.dom.header)this.dom.header.html("Cumulative Incidence Plot");this.settings=Object.assign({},this.opts.settings);this.pj=_(this);this.lineFxn=y().curve(m).x((e=>e.scaledX)).y((e=>e.scaledY));T(this);j(this);this.legendRenderer=p(this.dom.legendDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.legendClick(e.target.__data__,e.clientX,e.clientY)}}});this.hiddenRenderer=p(this.dom.hiddenDiv,{settings:{legendOrientation:"vertical"},handlers:{legend:{click:e=>this.hideLegendItem(e.target.__data__)}}});await this.setControls(e)}async setControls(e){const t=e.plots.find((e=>e.id===this.id));if(this.opts.controls){this.opts.controls.on("downloadClick.boxplot",this.download)}else{this.dom.holder.attr("class","pp-termdb-plot-viz").style("display","inline-block").style("min-width","300px").style("margin-left","50px");const e=[];for(const s in t.term.term.values){const i=t.term.term.values[s];if(i.uncomputable)continue;e.push({label:i.label,value:s})}this.components={controls:await c({app:this.app,id:this.id,holder:this.dom.controls.attr("class","pp-termdb-plot-controls").style("display","inline-block"),inputs:["term1",{label:"Overlay",title:"Overlay",type:"overlay",numericEditMenuVersion:["discrete"],defaultQ4fillTW:{numeric:{isAtomic:true,mode:"discrete",type:"custom-bin",preferredBins:"median"}}},{label:"Divide by",title:"Divide by",type:"divideBy",defaultQ4fillTW:{numeric:{isAtomic:true,mode:"discrete",type:"custom-bin",preferredBins:"median"}}},{label:"Minimum sample size of series",type:"number",chartType:"cuminc",settingsKey:"minSampleSize"},{label:"Minimum at-risk count of event",type:"number",chartType:"cuminc",settingsKey:"minAtRisk"},{label:"Chart width",type:"number",chartType:"cuminc",settingsKey:"svgw",title:"The internal width of the chart plot"},{label:"Chart height",type:"number",chartType:"cuminc",settingsKey:"svgh",title:"The internal height of the chart plot"},{label:"X-axis ticks",type:"text",chartType:"cuminc",settingsKey:"xTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"Y-axis ticks",type:"text",chartType:"cuminc",settingsKey:"yTickValues",placeholder:"tick,tick,...",processInput:e=>e?e.split(",").map(Number):[]},{label:"At-risk counts",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"atRiskVisible",title:"Display the at-risk counts"},{label:"95% confidence interval",boxLabel:"Visible",type:"checkbox",chartType:"cuminc",settingsKey:"ciVisible"},{label:"Default color",type:"color",chartType:"cuminc",settingsKey:"defaultColor"}]})};this.components.controls.on("downloadClick.boxplot",this.download)}}getState(e){const t=e.plots.find((e=>e.id===this.id));if(!t){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}return{genome:this.app.vocabApi.vocab.genome,dslabel:this.app.vocabApi.vocab.dslabel,activeCohort:e.activeCohort,termfilter:e.termfilter,config:{term:JSON.parse(JSON.stringify(t.term)),term0:t.term0?JSON.parse(JSON.stringify(t.term0)):null,term2:t.term2?JSON.parse(JSON.stringify(t.term2)):null,settings:t.settings.cuminc}}}async main(){try{this.config=structuredClone(this.state.config);if(this.dom.header)this.dom.header.html(this.state.config.term.term.name+' <span style="opacity:.6;font-size:.7em;margin-left:10px;">CUMULATIVE INCIDENCE</span>');if(this.config.term.term.type!="condition")throw"cuminc term is not a condition term";this.toggleLoadingDiv();Object.assign(this.settings,this.config.settings);this.settings.defaultHidden=this.getDefaultHidden();this.settings.hidden=this.settings.customHidden||this.settings.defaultHidden;this.settings.xTitleLabel="Years since diagnosis";const e=this.getDataRequestOpts();const t=await this.app.vocabApi.getNestedChartSeriesData(e);if(t.error)throw t.error;this.toggleLoadingDiv("none");this.app.vocabApi.syncTermData(this.config,t);this.processResults(t);this.pj.refresh({data:this.currData});this.sortSerieses(this.pj.tree.charts);this.setTerm2Color(this.pj.tree.charts);this.render()}catch(e){console.error(e)}}getDataRequestOpts(){const e=this.config;const t={chartType:"cuminc",term:e.term,filter:this.state.termfilter.filter,minSampleSize:e.settings.minSampleSize};if(e.term2)t.term2=e.term2;if(e.term0)t.term0=e.term0;if(this.state.ssid)t.ssid=this.state.ssid;return t}getDefaultHidden(){const e=[];const t=this.config.term2;if(!t)return e;const s=t.q.hiddenValues;if(s&&Object.keys(s).length){for(const i in s){e.push(t.term.values[i].label)}}return e}processResults(e){const t=this.settings;const s=this.config;const i={};const n={};const a=e.lowSampleSize;const r=e.noEvents;this.currData=[];this.uniqueSeriesIds=new Set;this.tests={};this.noData=[];this.refs=e.refs;for(const s in e.data){const a=e.data[s];if(a.estimates){for(const e in a.estimates){const n=a.estimates[e];if(!n.filter((e=>e.nrisk>=t.minAtRisk&&e.est>0)).length){s in r?r[s].push(e):r[s]=[e];continue}s in i?i[s][e]=n:i[s]={[e]:n}}if(!(s in i))this.noData.push(s)}else{this.noData.push(s)}if(a.tests){n[s]=a.tests.filter((e=>e.series1 in i[s]&&e.series2 in i[s]&&!t.hidden.includes(e.series1)&&!t.hidden.includes(e.series2)))}}for(const e in i){const s=i[e];for(const i in s){const n=s[i];for(const s of n){const{time:n,est:a,low:r,up:o,nrisk:c,nevent:l,ncensor:d}=s;const p={chartId:e,seriesId:i,time:n,cuminc:a*100,low:r*100,high:o*100,nrisk:c,nevent:l,ncensor:d};if(p.nrisk<t.minAtRisk){this.currData.push(p);break}this.currData.push(p);this.uniqueSeriesIds.add(p.seriesId)}}}for(const e in n){for(const t of n[e]){const s={pvalue:{id:"pvalue",text:t.permutation?t.pvalue+"*":t.pvalue},series1:{id:t.series1},series2:{id:t.series2},permutation:t.permutation};e in this.tests?this.tests[e].push(s):this.tests[e]=[s]}}this.lowSampleSize={};for(const e in a){this.lowSampleSize[e]=a[e].map((e=>s.term2?.term.values?.[e]?.label||e))}this.noEvents={};for(const e in r){this.noEvents[e]=r[e].map((e=>s.term2?.term.values?.[e]?.label||e))}}sortSerieses(e){if(!e)return;for(const t of e){const e=t.serieses.map((e=>e.seriesId));const s=[...e.filter((e=>!this.settings.defaultHidden.includes(e))),...e.filter((e=>this.settings.defaultHidden.includes(e)))];t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}setTerm2Color(e){if(!e){this.legendData=[];return}this.term2toColor={};this.colorScale=this.uniqueSeriesIds.size<11?s(i):s(d);const t=[];for(const s of e){for(const e of s.serieses){const s=this.config.term2?.term.values?.[e.seriesId]?.color;const i={orig:s||(e.seriesId==""?this.settings.defaultColor:this.colorScale(e.seriesId))};i.rgb=n(i.orig);i.adjusted=i.rgb.toString();this.term2toColor[e.seriesId]=i;if(!t.find((t=>t.seriesId==e.seriesId))){t.push({seriesId:e.seriesId,text:e.seriesLabel,color:this.term2toColor[e.seriesId].adjusted,isHidden:this.settings.hidden.includes(e.seriesId)})}}}if(this.config.term2&&t.length){this.legendData=[{name:this.config.term2.term.name,items:t.filter((e=>!e.isHidden))}];this.hiddenData=[{name:`<span style='color:#aaa; font-weight:400'><span>Hidden categories</span><span style='font-size:0.8rem'> CLICK TO SHOW</span></span>`,items:t.filter((e=>e.isHidden)).map((e=>Object.assign({},e,{isHidden:false})))}]}else{this.legendData=[]}for(const e in this.tests){const s=this.tests[e];for(const e of s){for(const s in e){if(s=="pvalue"){e[s].color="#000"}else if(s.startsWith("series")){const i=t.find((t=>t.seriesId==e[s].id));e[s].color=i.color;e[s].text=i.text}else{continue}}}}}toggleLoadingDiv(e=""){if(e!="none"){this.dom.loadingDiv.style("opacity",0).style("display",e).transition().duration("loadingWait"in this?this.loadingWait:0).style("opacity",1)}else{this.dom.loadingDiv.style("display",e)}this.loadingWait=1e3}}const S=a(k);const w=S;function j(e){e.render=function(){const t=e.pj.tree.charts||[{}];if(e.noData?.length){t.push(...e.noData.map((t=>{let s=t;const i=e.config.term0;if(i.q&&i.q.groupsetting&&i.q.groupsetting.inuse)return{chartId:t,chartTitle:s};if(i.term.values){const e=i.term.values[t];if(e&&e.label)s=e.label}return{chartId:t,chartTitle:s}})))}const s=e.dom.chartsDiv.selectAll(".pp-cuminc-chart").data(t,(e=>e.chartId));s.exit().remove();s.each(e.updateCharts);s.enter().each(e.addCharts);e.dom.holder.style("display","inline-block");e.dom.chartsDiv.on("mouseover",e.mouseover).on("mouseout",e.mouseout);e.legendRenderer(e.settings.atRiskVisible?[]:e.legendData);if(!e.hiddenData?.[0]?.items.length||!e.config.term2)e.dom.hiddenDiv.style("display","none");else{e.dom.hiddenDiv.style("display","");e.hiddenRenderer(e.hiddenData)}};e.addCharts=function(n){const a=e.settings;const o=r(this).append("div").attr("class","pp-cuminc-chart").style("opacity",n.serieses?0:1).style("display","inline-block").style("margin",a.chartMargin+"px").style("padding","10px").style("top",0).style("left",0).style("text-align","center").style("vertical-align","top").style("background",n.color);o.append("div").attr("class","sjpcb-cuminc-title").style("text-align","center").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").style("font-weight","600").style("margin","5px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)o.select(".sjpcb-cuminc-title").style("display","none");o.append("div").attr("class","pp-cuminc-chart-noData").style("display","none").style("width",`${a.svgw+50}px`).style("margin","40px 5px").text("No cumulative incidence data");if(n.serieses){t(n,a);const e=o.append("svg").attr("class","pp-cuminc-svg");s(e,n,a);o.style("opacity",1)}else{o.select(".pp-cuminc-chart-noData").style("display","block")}o.append("div").attr("class","pp-cuminc-chartLegends").style("vertical-align","top").style("text-align",n.serieses?"left":"center").style("margin",n.serieses?"10px 30px 0px 20px":"0px").style("display","none");if(e.tests&&n.chartId in e.tests){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");u({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function t(e,t){e.visibleSerieses=t.hidden?e.serieses.filter((e=>!t.hidden.includes(e.seriesId))):e.serieses}e.updateCharts=function(n){const a=e.settings;const o=r(this);o.style("background",n.color);o.select(".sjpcb-cuminc-title").style("width",`${a.svgw+50}px`).style("height",a.chartTitleDivHt+"px").datum(n.chartId).html(n.chartTitle);if(e.hidePlotTitle)o.select(".sjpcb-cuminc-title").style("display","none");o.selectAll(".sjpcb-lock-icon").style("display",a.scale=="byChart"?"block":"none");o.selectAll(".sjpcb-unlock-icon").style("display",a.scale=="byChart"?"none":"block");if(n.serieses){o.select(".pp-cuminc-chart-noData").style("display","none");t(n,a);s(o.select("svg"),n,a)}else{o.select(".pp-cuminc-chart-noData").style("display","block").style("width",`${a.svgw+50}px`)}o.select(".pp-cuminc-chartLegends").selectAll("*").remove();if(e.tests&&n.chartId in e.tests){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");u({title:"Group comparisons (Gray's test)",holder:t,plot:"cuminc",tests:e.tests[n.chartId],s:a,bins:e.refs.bins})}if(e.noEvents&&n.chartId in e.noEvents){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (no events)";i(t,s,e.noEvents[n.chartId],a)}if(e.lowSampleSize&&n.chartId in e.lowSampleSize){const t=o.select(".pp-cuminc-chartLegends").style("display","inline-block").append("div").style("margin-bottom","30px");const s="Skipped series (low sample size)";i(t,s,e.lowSampleSize[n.chartId],a)}};function s(t,s,i){const c=i.atRiskVisible?i.axisTitleFontSize+4+s.visibleSerieses.length*2*i.axisTitleFontSize:0;t.attr("width",i.svgw).attr("height",i.svgh+c).style("overflow","visible").style("padding-left","20px");const[l,d,p,h,m,u,f,y,v,x,b]=n(t);l.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);const I=i.svgPadding.left;p.attr("transform","translate("+I+","+i.svgPadding.top+")");const k=h.selectAll(".sjpcb-cuminc-series").data(s.visibleSerieses,(e=>e&&e[0]?e[0].seriesId:""));k.exit().remove();k.each((function(e,t){a(r(this),e,i)}));k.enter().append("g").attr("class","sjpcb-cuminc-series").each((function(e,t){a(r(this),e,i)}));o(u,y,f,v,i,s);g({g:x,s:i,chart:s,term2values:e.config.term2?.values,term2toColor:e.term2toColor,onSerieClick:e.legendClick});b.attr("x",0).attr("width",i.svgw-i.svgPadding.left-i.svgPadding.right).attr("y",0).attr("height",i.svgh-i.svgPadding.top-i.svgPadding.bottom+i.xAxisOffset);t.seriesTip.update({xScale:s.xScale,xTitleLabel:i.xTitleLabel,decimals:i.seriesTipDecimals,serieses:s.visibleSerieses.map((t=>{const s=t.seriesLabel?`${t.seriesLabel}:`:"Cumulative Incidence:";const i=e.term2toColor[t.seriesId].adjusted;return{data:t.data.map((e=>({x:e.x,html:`<span style='color: ${i}'>`+`${s} ${e.y.toFixed(2)} (${e.low.toFixed(2)} - ${e.high.toFixed(2)})`+`</span>`})))}}))})}function i(e,t,s,i){const n=i.axisTitleFontSize-2;e.selectAll("*").remove();e.append("div").style("padding-bottom","5px").style("font-size",n+"px").style("font-weight","bold").text(t);const a=e.append("div").style("padding-bottom","5px").style("font-size",n+"px");a.selectAll("div").data(s).enter().append("div").attr("class","pp-cuminc-chartLegends-skipped").text((e=>e))}function n(t,s){let i,n,a,r,o,c,l,d,p,h,m,u;if(!t.select(".sjpcb-cuminc-mainG").size()){const s=`${e.id}-${e.chartIncrement++}`;i=t.append("defs").append("clipPath").attr("id",s).append("rect");n=t.append("g").attr("class","sjpcb-cuminc-clipG");a=t.append("g").attr("class","sjpcb-cuminc-mainG").attr("data-testid","sja-cuminc-main-g");r=a.append("g").attr("class","sjpcb-cuminc-seriesesG").attr("clip-path",`url(#${s})`);o=a.append("g").attr("class","sjpcb-cuminc-axis");c=o.append("g").attr("class","sjpcb-cuminc-x-axis");l=o.append("g").attr("class","sjpcb-cuminc-y-axis");d=o.append("g").attr("class","sjpcb-cuminc-x-title");p=o.append("g").attr("class","sjpcb-cuminc-y-title");h=a.append("g").attr("class","sjpp-cuminc-atrisk");u=a.append("line").attr("class","sjpcb-plot-tip-line").attr("stroke","#000").attr("stroke-width","2px");m=a.append("rect").attr("class","sjpcb-plot-tip-rect").style("fill","transparent")}else{i=t.select("defs clipPath rect");n=t.select(".sjpcb-cuminc-clipG");a=t.select(".sjpcb-cuminc-mainG");r=a.select(".sjpcb-cuminc-seriesesG");o=a.select(".sjpcb-cuminc-axis");c=o.select(".sjpcb-cuminc-x-axis");l=o.select(".sjpcb-cuminc-y-axis");d=o.select(".sjpcb-cuminc-x-title");p=o.select(".sjpcb-cuminc-y-title");h=a.select(".sjpp-cuminc-atrisk");m=a.select(".sjpcb-plot-tip-rect");u=a.select(".sjpcb-plot-tip-line")}if(!t.seriesTip){t.seriesTip=f(u,m,e.app?.tip)}return[i,n,a,r,o,c,l,d,p,h,m]}function a(t,s,i){t.selectAll("path").remove();t.append("path").attr("d",e.lineFxn(s.data.map((e=>({scaledX:e.scaledX,scaledY:e.scaledY[0]}))))).style("fill","none").style("stroke",e.term2toColor[s.seriesId].adjusted).style("stroke-width",2).style("stroke-linecap","square").style("opacity",1).style("stroke-opacity",1);t.append("path").attr("d",v().curve(m).x((e=>e.scaledX)).y0((e=>e.scaledY[1])).y1((e=>e.scaledY[2]))(s.data)).style("display",i.ciVisible?"":"none").style("fill",e.term2toColor[s.seriesId].adjusted).style("opacity","0.15").style("stroke","none")}function o(e,t,s,i,n,a){const r=x(a.xScale).tickValues(a.xTickValues);const o=b(a.yScale).tickValues(a.yTickValues);const c=-.5;e.attr("transform",`translate(${c}, ${n.svgh-n.svgPadding.top-n.svgPadding.bottom+n.xAxisOffset+c})`).call(r);s.attr("transform",`translate(${n.yAxisOffset+c}, ${c})`).call(o);t.select("text, title").remove();t.attr("transform","translate("+(n.svgw-n.svgPadding.left-n.svgPadding.right)/2+","+(n.svgh-n.axisTitleFontSize-4)+")").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(n.xTitleLabel);const l="Cumulative Incidence (%)";i.select("text, title").remove();i.attr("transform","translate("+(-n.svgPadding.left/2-n.axisTitleFontSize)+","+(n.svgh-n.svgPadding.top-n.svgPadding.bottom)/2+")rotate(-90)").append("text").style("text-anchor","middle").style("font-size",n.axisTitleFontSize+"px").text(l)}}function T(e){e.mouseover=function(e){e.target.__data__};e.mouseout=function(){e.app.tip.hide()};e.legendClick=function(t,s,i){if(t===undefined)return;const a=e.tip.clear();if(e.config.term2==null){const t=n(e.settings.defaultColor).formatHex();const r=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const o=r.append("input").attr("type","color").attr("value",t).on("change",(()=>{const t=o.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{defaultColor:t}}}});a.hide()}));a.show(s,i);return}if(!t.seriesId)return;a.d.append("div").attr("class","sja_menuoption sja_sharp_border").text(`Hide`).on("click",(async s=>{a.hide();e.hideLegendItem(t)}));let r=e.term2toColor[t.seriesId]?.adjusted;if(r){r=n(r).formatHex();const s=a.d.append("div").attr("class","sja_sharp_border").style("padding","0px 10px").text("Edit color:");const i=s.append("input").attr("type","color").attr("value",r).on("change",(()=>{const s=e.config.term2;const n=structuredClone(s);if(!n.term.values)n.term.values={[t.seriesId]:{}};else if(!n.term.values[t.seriesId])n.term.values[t.seriesId]={};n.term.values[t.seriesId].color=i.node().value;e.app.dispatch({type:"plot_edit",id:e.id,config:{term2:n}});a.hide()}))}a.show(event.clientX,event.clientY)};e.hideLegendItem=function(t){const s=e.settings.hidden.slice();const i=s.indexOf(t.seriesId);i==-1?s.push(t.seriesId):s.splice(i,1);e.app.dispatch({type:"plot_edit",id:e.id,config:{settings:{cuminc:{customHidden:s}}}})}}const C=JSON.stringify({controls:{term2:null,term0:null},cuminc:{minSampleSize:10,minAtRisk:10,atRiskVisible:true,atRiskLabelOffset:-10,seriesTipDecimals:0,ciVisible:true,radius:5,fill:"#fff",stroke:"#000",fillOpacity:0,chartMargin:10,svgw:400,svgh:300,svgPadding:{top:20,left:55,right:20,bottom:50},axisTitleFontSize:16,xAxisOffset:5,yAxisOffset:-5,defaultColor:"#2077b4"}});async function D(t,s){if(!t.term)throw"cuminc: opts.term{} missing";try{await l(t.term,s.vocabApi,{condition:{mode:"cuminc"}});if(t.term2)await l(t.term2,s.vocabApi);if(t.term0)await l(t.term0,s.vocabApi)}catch(e){throw`${e} [cuminc getPlotConfig()]`}const i={id:t.term.term.id,settings:JSON.parse(C)};return e(i,t)}function _(e){const t=new h({template:{xMin:">=x()",xMax:"<=x()",yMin:">=yMin()",yMax:"<=yMax()",charts:[{chartId:"@key",chartTitle:"=chartTitle()",xMin:">=x()",xMax:"<=x()","__:xTickValues":"=xTickValues()","__:yTickValues":"=yTickValues()","__:xScale":"=xScale()","__:yScale":"=yScale()",yMin:">=yMin()",yMax:"<=yMax()",serieses:[{chartId:"@parent.@parent.@key",seriesId:"@key","__:seriesLabel":"=seriesLabel()",data:[{"__:seriesId":"@parent.@parent.seriesId",x:"$time",y:"$cuminc",low:"$low",high:"$high","_1:scaledX":"=scaledX()","_1:scaledY":"=scaledY()",nrisk:"$nrisk",nevent:"$nevent",ncensor:"$ncensor"},"$time"]},"$seriesId"],"@done()":"=sortSerieses()"},"$chartId"]},"=":{chartTitle(t){if(!e.state?.config?.term)return t.chartId;e.settings;const s=e.config.term.q.breaks[0];if(!t.chartId||t.chartId=="-"){return s==5?"CTCAE grade 5":`CTCAE grade ${s}-5`}const i=e.config.term0;if(!i||!i.term.values)return t.chartId;if(i.q&&i.q.groupsetting&&i.q.groupsetting.inuse){return t.chartId}const n=e.config.term0.term.values[t.chartId];return n&&n.label?n.label:t.chartId},seriesLabel(t,s){const i=e.config?.term2;if(!i)return s.self.seriesId;const n=s.self.seriesId;if(i&&i.q&&i.q.groupsetting&&i.q.groupsetting.inuse)return n;if(i&&i.term.values&&n in i.term.values)return i.term.values[n].label;return n},x(t){if(e.settings.hidden?.includes(t.seriesId))return;return t.time},yMin(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.low:t.cuminc},yMax(t){if(e.settings.hidden?.includes(t.seriesId))return;return e.settings.ciVisible?t.high:t.cuminc},xTickValues(t,s){const i=e.settings;if(i.xTickValues?.length){return i.xTickValues}else{const e=s.root.xMin;const t=s.root.xMax;return O(e,t)}},xScale(t,s){const i=e.settings;const n=Math.min(...s.self.xTickValues);const a=Math.max(...s.self.xTickValues);return o().domain([n,a]).range([0,i.svgw-i.svgPadding.left-i.svgPadding.right])},scaledX(e,t){const s=t.context.context.context.parent.xScale.clamp(false);return s(t.self.x)},yTickValues(t,s){const i=e.settings;if(i.yTickValues?.length){return i.yTickValues}else{const e=s.root.yMin;const t=s.root.yMax;return O(e,t)}},yScale(t,s){const i=e.settings;const n=Math.min(...s.self.yTickValues);const a=Math.max(...s.self.yTickValues);return o().domain([a,n]).range([0,i.svgh-i.svgPadding.top-i.svgPadding.bottom])},scaledY(e,t){const s=t.context.context.context.parent.yScale.clamp(false);const i=t.self;return[s(i.y),s(i.low),s(i.high)]},sortSerieses(t){if(!e.refs.bins)return;const s=e.refs.bins.map((e=>e.label));t.serieses.sort(((e,t)=>s.indexOf(e.seriesId)-s.indexOf(t.seriesId)))}}});return t}function O(e,t){const s=(t-e)/5;const i=Math.floor(Math.log10(s));const n=Math.round(s/(5*10**i))*(5*10**i)||1*10**i;const a=[];let r=e;while(r<=Math.min(100,t+n)){a.push(r);r=r+n}if(!a.includes(0))a.unshift(0);return a}export{I as Cuminc,w as componentInit,S as cumincInit,D as getPlotConfig};
@@ -1 +0,0 @@
1
- import{L as e,J as l,af as t,aJ as s,K as n,aN as a}from"./app-f91922b4.js";import{T as r}from"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";function o(e,l,t,s,n,r,o,i,c,g,d,u){const f=t.key;const p=l.term.values||{};e.label="label"in t?t.label:p[f]?.label?p[f].label:f;e.fill=t.color||p[t.key]?.color;e.order=r.ref.bins?r.ref.bins.findIndex((e=>e.name==f)):0;if(l.q?.mode=="continuous"){if(!l.settings)l.settings={};if(!l.settings.barh)l.settings.barh=n.barh;if(!("gap"in l.settings))l.settings.gap=4;const t=l.term.values?.[e.key];if(t?.uncomputable){e.x=e.totalIndex*g+e.grpIndex*n.colgspace;e.y=c*u;e.height=l.settings.barh;e.fill="transparent";l.legend?.group||l.$id;return}e.fill="#555";if(n.transpose){e.height=r.scale(e.key);e.x=l.settings.gap}else{const l=e.term.valueConversion;const t=l?e.key*l.scaleFactor:e.key;e.height=e.key>=0?r.scales.pos(t):r.scales.neg(t);e.x=e.totalIndex*g+e.grpIndex*n.colgspace;e.y=e.key>=0?r.counts.posMaxHt+r.tw.settings.gap-e.height:r.counts.posMaxHt+r.tw.settings.gap;e.convertedValueLabel=l?a(e.key,l.fromUnit,l.toUnit,l.scaleFactor):""}}else{e.x=e.totalIndex*g+e.grpIndex*n.colgspace;e.y=c*u;const t=l.legend?.group||l.$id;return{ref:r.ref,group:t,value:f,entry:{key:f,label:e.label,fill:e.fill}}}}function i(e,l,t,s,n,r,o,i,c,g,d,u){const f=l.q?.mode=="continuous"?t.value:t.key;e.key=f;e.label=l.q?.mode=="continuous"?l.term.unit?`${f}(${l.term.unit})`:f:"Exit code: "+f;e.fill=f==1?"#ff7f0e":"#1f77b4";e.order=0;if(l.q?.mode=="continuous"){if(!l.settings)l.settings={};if(!l.settings.barh)l.settings.barh=n.barh;if(!("gap"in l.settings))l.settings.gap=4;e.fill="#555";if(n.transpose){e.height=r.scale(e.key);e.x=l.settings.gap}else{const l=e.term.valueConversion;const t=l?e.key*l.scaleFactor:e.key;e.height=e.key>=0?r.scales.pos(t):r.scales.neg(t);e.x=e.totalIndex*g+e.grpIndex*n.colgspace;e.y=e.key>=0?r.counts.posMaxHt+r.tw.settings.gap-e.height:r.counts.posMaxHt+r.tw.settings.gap;e.convertedValueLabel=l?a(e.key,l.fromUnit,l.toUnit,l.scaleFactor):""}}else{e.x=e.totalIndex*g+e.grpIndex*n.colgspace;e.y=c*u;const t=l.legend?.group||l.$id;return{ref:r.ref,group:t,value:f,entry:{key:f,label:e.label,fill:e.fill}}}}function c(e,l,t,s,n,a,r,o,i,c,g,d){const u=l.term.values||{};const f=t.key;e.label="label"in t?t.label:u[f]?.label?u[f].label:f;e.fill=t.color||u[f]?.color;e.x=e.totalIndex*c+e.grpIndex*n.colgspace;e.y=i*d;const p=l.legend?.group||l.$id;return{ref:a.ref,group:p,value:t.key,entry:{key:f,label:e.label,fill:e.fill}}}function g(a,r,o,i,c,g,d,u,f,p,x,b){const h=o.renderedValues||o.filteredValues||o.values||[o.value];const y=r.q?.values&&r.q?.values[i.class]?.color;if(r.q?.groupsetting?.inuse){a.label=i;a.fill=["Mutated","Protein-changing","Truncating"].includes(i)?"#FF0000":["Wildtype","Rest"].includes(o.key)?"#0000FF":o.key=="Not tested"?"#00FF00":"#000000";a.value={value:i,dt:r.q.dt,origin:r.q.origin};a.x=a.totalIndex*p+a.grpIndex*c.colgspace;a.y=f*b;const e=r.legend?.group||r.q.origin?`${r.q.origin[0].toUpperCase()+r.q.origin.slice(1)} ${d.dt2label[r.q.dt]}`:d.dt2label[r.q.dt];return{ref:g.ref,group:e,value:o.key,order:-2,entry:{key:o.key,label:a.label,fill:a.fill,dt:r.q.dt,origin:r.q.origin}}}else{a.label=i.label||d.mclass[i.class].label;a.fill=d.getValueColor?.(i.value)||y||i.color||d.mclass[i.class]?.color;a.class=i.class;a.value=i;const o=d.dimensions.colw;if(c.cellEncoding==""){a.height=c.rowh/h.length;a.width=o;a.x=a.totalIndex*p+a.grpIndex*c.colgspace;a.y=f*b}else if(i.dt==e||i.dt==l){if(c.cellEncoding=="single"){a.height=c.rowh;a.width=o;a.x=a.totalIndex*p+a.grpIndex*c.colgspace;a.y=0}else{const e=3;a.height=c.rowh/e;a.width=o;a.x=a.totalIndex*p+a.grpIndex*c.colgspace;a.y=f*.33333}}else if(i.dt==t||i.dt==s){a.height=c.rowh;a.width=o;a.x=a.totalIndex*p+a.grpIndex*c.colgspace;a.y=0}else{throw`cannot set cell props for dt='${i.dt}'`}if(i.class=="Blank"||i.class=="WT"){a.label=`${d.dt2label[i.dt]} ${a.label}`}const u=d.state.termdbConfig.assayAvailability?.byDt;const x=i.class=="CNV_loss"?-2:i.class.startsWith("CNV_")?-1:0;if(i.dt==t){if(g.scales&&i.class.startsWith("CNV_")){g.scales.max;const{maxLoss:e,maxGain:l,minLoss:t,minGain:s}=g.scales;i.scaledValue=i.value<0?i.value/t:i.value/l;a.fill=i.value<0?g.scales.loss(i.scaledValue):g.scales.gain(i.scaledValue);return{ref:g.ref,group:"CNV",value:i.class,order:-1,entry:{key:i.class,label:a.label,scale:i.class=="CNV_loss"?g.scales.loss:g.scales.gain,domain:i.class=="CNV_loss"?[0,-t]:[0,l],minLabel:0,maxLabel:i.class=="CNV_loss"?t:l,order:x,dt:i.dt,origin:i.origin}}}else{const e="CNV";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:a.label,fill:a.fill,order:x,dt:i.dt,origin:i.origin}}}}else if(i.dt==l&&u?.[l]){const e="Fusion RNA";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:a.label,fill:a.fill,order:x,dt:i.dt,origin:i.origin}}}else if(i.dt==n&&u?.[n]){const e="Structural Variation";return{ref:g.ref,group:e,value:i.class,order:-1,entry:{key:i.class,label:a.label,fill:a.fill,order:x,dt:i.dt,origin:i.origin}}}else if(i.dt==s){return{ref:g.ref,group:d.config.settings.hierCluster?.termGroupName||"Gene Expression",value:i.class,order:-1,entry:{key:i.class,label:"",scale:d.geneExpValues.scale,domain:[0,.5,1],minLabel:d.geneExpValues.min,maxLabel:d.geneExpValues.max,order:x,dt:i.dt,origin:i.origin}}}else{const e=d.settings.matrix.controlLabels;const l=r.legend?.group||(i.origin?`${i.origin[0].toUpperCase()+i.origin.slice(1)} ${e.Mutations}`:e.Mutations);return{ref:g.ref,group:l,value:i.class,order:-2,entry:{key:i.class,label:a.label,fill:a.fill,order:x,dt:i.dt,origin:i.origin}}}}}function d(e,l,t,s,n,a,r,o,i,c,g,d){const u=t.renderedValues||t.filteredValues||t.values||[t.value];e.label=s.value;e.fill=r.getValueColor?.(s.value);e.value=s;const f=r.dimensions.colw;e.height=n.rowh/u.length;e.width=f;e.x=e.totalIndex*c+e.grpIndex*n.colgspace;e.y=i*d;const p=r.config.settings.hierCluster?.termGroupName?r.config.settings.hierCluster?.termGroupName:l.term.type=="geneExpression"?"Expression":l.term.type=="metaboliteIntensity"?"Intensity":"Heatmap color scale";return{ref:a.ref,group:p,order:-1,entry:{label:"",scale:r.hierClusterValues.scale,domain:[0,.5,1],minLabel:r.hierClusterValues.min,maxLabel:r.hierClusterValues.max,order:0,dt:s.dt}}}function u(e,l,t){const s=Object.assign({},e);s.fill=l.cellbg;s.height=l.rowh;s.width=t.colw;s.x=s.totalIndex*t.dx+s.grpIndex*l.colgspace;s.y=0;return s}const f={categorical:c,integer:o,float:o,survival:i,geneVariant:g,hierCluster:d,[r.GENE_EXPRESSION]:o,[r.METABOLITE_INTENSITY]:o};const p={geneVariant:x,integer:b,float:b,categorical:h,survival:b,[r.GENE_EXPRESSION]:b,[r.METABOLITE_INTENSITY]:b};function x(e,l,s,n){if(e.find((e=>e.value.dt==t)))return;const a=Object.assign({},l);a.fill=s.cellbg;a.height=s.rowh;a.width=n.colw;a.x=a.totalIndex*n.dx+a.grpIndex*s.colgspace;a.y=0;return a}function b(e,l,t,s){const n=l.tw.q;if(n.mode!="continuous"){if(e.length)return;h(e,l,t,s)}else{if(n?.mode!="continuous")return;const e=l.tw.settings;const a=e?e.barh+2*e.gap:t.rowh;if(l.height>=a)return;const r=Object.assign({},l);r.fill=t.cellbg;r.height=a||t.rowh;r.width=s.colw;r.x=r.totalIndex*s.dx+r.grpIndex*t.colgspace;r.y=0;return r}}function h(e,l,t,s){if(e.length)return;const n=Object.assign({},l);n.fill=t.cellbg;n.height=t.rowh;n.width=s.colw;n.x=n.totalIndex*s.dx+n.grpIndex*t.colgspace;n.y=0;return n}export{u as getEmptyCell,p as maySetEmptyCell,f as setCellProps,g as setGeneVariantCellProps,d as setHierClusterCellProps};
@@ -1 +0,0 @@
1
- import{t,f as e}from"./termsetting-9a7511e6.js";import{q as s}from"./app-f91922b4.js";import"path";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";function r(r){r.render=function(){const t=r.settings.matrix;const e=r.layout;const s=r.dimensions;const a=r.dom.svg.attr("width")?t.duration:0;r.dom.clipRect.attr("x",s.xOffset-1).attr("y",0).attr("width",s.mainw+3).attr("height",s.mainh+500);r.renderSerieses(t,e,s,a);r.renderLabels(t,e,s,a);r.renderDivideByLabel(t,e,s,a);r.dom.colBeam.attr("width",s.dx).attr("height",s.mainh).style("stroke",t.beamStroke);r.dom.rowBeam.attr("width",s.zoomedMainW).attr("height",t.rowh).style("stroke",t.beamStroke)};r.renderSerieses=function(t,e,s,a){if(r.prevUseCanvas!=t.useCanvas){r.dom.seriesesG.selectAll("g").remove()}if(t.useCanvas){const e=r.dom.seriesesG.selectAll("g");const n=r.dom.seriesesG.append("g").datum(this.serieses);r.renderCanvas(this.serieses,n,s,t,e,a)}else{r.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);const t=r.dom.seriesesG.selectAll(".sjpp-mass-series-g").data(this.serieses,(t=>t.tw.$id));t.exit().remove();t.each(r.renderSeries);t.enter().append("g").attr("class","sjpp-mass-series-g").style("opacity",.001).each(r.renderSeries);r.mouseout()}r.prevUseCanvas=t.useCanvas};r.renderSeries=async function(t){const e=r.settings.matrix;r.dimensions;const a=s(this);a.attr("transform")?e.duration:0;a.attr("transform",`translate(${t.x},${t.y})`).style("opacity",1);const n=t.cells[t.cells.length-1];t.y+n?.y+e.rowh;const o=a.selectAll("rect").data(t.cells,(t=>t.sample+";;"+t.tw.$id+";;"+t.valueIndex));o.exit().remove();o.each(r.renderCell);o.enter().append("rect").each(r.renderCell)};r.renderCanvas=async function(t,e,s,a,n,o){const i=window.devicePixelRatio<=1?1:window.devicePixelRatio;e.selectAll("*").remove();const l=s.imgW;const c=r.dimensions.mainh;const d=window.OffscreenCanvas?new OffscreenCanvas(l*i,c*i):r.dom.holder.append("canvas").attr("width",i*l).attr("height",i*c).style("opacity",0).node();const m=d.getContext("2d");m.imageSmoothingEnabled=false;m.imageSmoothingQuality="high";m.scale(i,i);for(const e of t){for(const t of e.cells){r.renderCellWithCanvas(m,t,e,a,s,e.y)}}if(window.OffscreenCanvas){const t=new FileReader;t.addEventListener("load",(()=>{n?.remove();r.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);e.selectAll("image").remove();e.append("image").attr("xlink:href",t.result).attr("x",s.xMin).attr("width",l).attr("height",c)}),false);const a=await d.convertToBlob({quality:1});t.readAsDataURL(a)}else{n?.remove();r.dom.seriesesG.attr("transform",`translate(${s.xOffset+s.seriesXoffset},${s.yOffset})`);const t=d.toDataURL();e.append("image").attr("width",l).attr("height",c).attr("xlink:href",t);if(!window.OffscreenCanvas)d.remove()}r.mouseout()};r.renderCellWithCanvas=function(t,e,s,n,o,i){if(!e.fill)e.fill=e.$id in r.colorScaleByTermId?r.colorScaleByTermId[e.$id](e.key):a(e);const l=e.x?e.x-o.xMin:0;const c=i?i+e.y:e.y||0;const d=n.useMinPixelWidth?Math.max(e.width||o.colw,o.pxw):e.width||o.colw;const m="height"in e?e.height:n.rowh;t.fillStyle=e.fill;t.fillRect(l,c,d,m)};r.renderCell=function(t){if(!t.fill)t.fill=t.$id in r.colorScaleByTermId?r.colorScaleByTermId[t.$id](t.key):a(t);const e=r.settings.matrix;s(this).attr("x",t.x||0).attr("y",t.y||0).attr("width",t.width||r.dimensions.colw).attr("height","height"in t?Math.max(0,t.height):e.rowh).attr("shape-rendering","crispEdges").attr("stroke-width",0).attr("fill",t.fill)};r.renderLabels=function(t,e,a,n){for(const o of["top","btm","left","right"]){const i=e[o];i.box.style("display",i.display||"").attr("transform",i.attr.boxTransform);const l=i.box.selectAll(".sjpp-matrix-label").data(i.data,i.key);l.exit().remove();l.each(c);l.enter().append("g").attr("class","sjpp-matrix-label").each(c);function c(e){const a=s(this);a.attr("transform")?n:0;a.attr("transform",i.attr.labelGTransform);if(!a.select(":scope>text").size())a.append("text");const o=!i.isGroup&&e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous";const l=i.label(e);const c=a.select(":scope>text").attr("fill","#000");c.attr("font-size",i.attr.fontSize).attr("text-anchor",i.attr.labelAnchor).attr("transform",i.attr.labelTransform).attr("cursor","pointer").attr(i.attr.textpos.coord,i.attr.textpos.factor*(o?30:0));if(!Array.isArray(l)){c.text(l);c.attr("y",e.grp?.type!=="hierCluster"&&e.tw?.q?.mode=="continuous"?10:0)}else{const t=c.selectAll("tspan").data(l);t.exit().remove();t.attr("dx",m).attr("font-size",f).text(p);t.enter().append("tspan").attr("class",d).attr("dx",m).attr("font-size",f).text(p)}c.on("mouseover",l==="configure"?()=>c.attr("opacity",.5):null).on("mouseout",l==="configure"?()=>c.attr("opacity",0):null);const g=a.select(".sjpp-matrix-cell-axis").size()&&true;if(o&&l){if(!g){a.append("g").attr("class","sjpp-matrix-cell-axis").attr("shape-rendering","crispEdges")}const s=a.select(".sjpp-matrix-cell-axis");s.selectAll("*").remove();[e.counts.maxval,e.counts.minval];if(t.transpose);r.dimensions;const n=!t.transpose?0:e.tw.settings.gap-1-e.labelOffset;const o=!t.transpose?e.tw.settings.gap-1-e.labelOffset:0;s.attr("shape-rendering","crispEdges").attr("transform",`translate(${n},${o})`).call(i.attr.axisFxn(e.scales.full.domain(e.scales.tickValues)).tickValues(e.scales.tickValues))}else if(g){a.select(".sjpp-matrix-cell-axis").remove()}}function d(t){return t.cls}function m(t){return t.dx}function f(t){return t.fontSize||i.attr.fontSize}function p(t){return t.text}}};r.colLabelGTransform=(t,e)=>{const s=r.settings.matrix;const a=r.dimensions;t.labelOffset=.8*a.colw;const n=t.grpIndex*s.colgspace+t.totalIndex*a.dx+t.labelOffset+t.totalHtAdjustments;const o=0;return`translate(${n+a.seriesXoffset},${o})`};r.colGrpLabelGTransform=(t,e)=>{const s=r.settings.matrix;const a=r.dimensions;const n=(t.processedLst||t.grp.lst).length;const o=t.grpIndex*s.colgspace+t.prevGrpTotalIndex*a.dx+n*a.dx/2+s.grpLabelFontSize/2+t.totalHtAdjustments;return`translate(${o+a.seriesXoffset},0)`};r.rowLabelGTransform=(t,e)=>{const s=r.settings.matrix;const a=r.dimensions;const n=0;t.labelOffset=.7*s.rowh;const o=t.grpIndex*s.rowgspace+t.totalIndex*a.dy+t.labelOffset+t.totalHtAdjustments;return`translate(${n},${o})`};r.rowGrpLabelGTransform=(t,e)=>{const s=r.settings.matrix;const a=r.dimensions;const n=(t.processedLst||t.grp.lst).length;const o=t.grpIndex*s.rowgspace+t.prevGrpTotalIndex*a.dy+n*a.dy/2+s.grpLabelFontSize/2+t.totalHtAdjustments;return`translate(0,${o})`};r.rowAxisGTransform=(t,e)=>{const s=r.settings.matrix;const a=r.dimensions;const n=0;const o=t.grpIndex*s.rowgspace+t.totalIndex*a.dy+.7*s.rowh+t.totalHtAdjustments;return`translate(${n},${o})`};r.renderDivideByLabel=async(s,a,n)=>{r.dom.mainG.selectAll(".sjpp-matrix-divide-by-label").remove();if(!r.config.divideBy)return;const o=r.config.divideBy?.term.name||"";const i=o.length<=s.rowlabelmaxchars?o:o.slice(0,s.rowlabelmaxchars)+"…";const l=!s.transpose?[a.left,a.right]:[a.top,a.bottom];const c=l.find((t=>!t.isGroup))?.box;const d=(s.collabelpos=="top"?n.mainh+s.collabelmaxchars:-s.collabelmaxchars)+8;const m=s.rowlabelpos=="left"?"end":"start";const f=s.controlLabels;const p=c.append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${d})`);p.append("text").attr("text-anchor",m).attr("font-style","italic").attr("y",-20).text(`${f.Samples} grouped by`);const g=c.datum({tw:r.config.divideBy}).append("g").attr("class","sjpp-matrix-divide-by-label").attr("transform",`translate(0, ${d})`);const h=g.append("text").attr("text-anchor",m).attr("font-weight",600).text(i).on("click",((t,e)=>{y.showMenu(t,h.node())}));g.append("title").text(`${f.Samples} are grouped by this gene or variable. Click to edit.`);const x=[];const u=["integer","float"].includes(r.config.divideBy.term.type)?"ranges":"values";if(r.config.legendValueFilter.lst?.find((t=>t.legendGrpName==r.config.divideBy.id))?.tvs[u]?.length){x.push({label:`Show filtered ${f.samples}`,callback:r.showDeletedSampleGroups})}const y=await t({menuOptions:"{edit,replace,remove}",customMenuOptions:x,vocabApi:r.app.vocabApi,vocab:r.state.vocab,holder:g,debug:r.opts.debug,usecase:{target:"matrix"},getBodyParams:()=>{const t=r.termOrder.filter((t=>t.tw.term.type==="geneVariant")).map((t=>t.tw.term.chr?`${t.tw.term.chr}:${t.tw.term.start}-${t.tw.term.stop}`:t.tw.term.gene||t.tw.term.name));return{currentGeneNames:t}},callback:t=>{if(t&&!t.q)throw"data.q{} missing from pill callback";if(t)e(t,r.app.vocabApi);y.main(t?t:{term:null,q:null});c.datum({tw:t});r.app.dispatch({type:"plot_edit",id:r.id,config:{divideBy:t,legendValueFilter:r.mayRemoveTvsEntry(r.config.divideBy)}})}});y.main({term:r.config.divideBy.term,q:r.config.divideBy.q})};r.adjustSvgDimensions=async function(t){const e=r.settings.matrix;const s=r.settings.hierCluster||{};const a=s.yDendrogramHeight||0;const o=s.xDendrogramHeight||0;const i=r.dimensions;const l=r.dom.svg.attr("width")?e.duration:0;await n(t==e.transpose?l:e.duration);const c=r.layout;const d=c.top.box.node().getBBox();const m=c.btm.box.node().getBBox();const f=c.left.box.node().getBBox();const p=c.right.box.node().getBBox();const g=r.dom.legendG.node().getBBox();r.dom.seriesesG.node().getBBox();i.extraWidth=f.width+p.width+e.margin.left+e.margin.right+e.rowlabelgap*2;i.extraHeight=d.height+m.height+e.margin.top+e.margin.bottom+e.collabelgap*2;i.svgw=i.mainw+i.extraWidth+o;i.svgh=i.mainh+i.extraHeight+g.height+20+e.scrollHeight+a;r.dom.svg.attr("width",i.svgw).attr("height",i.svgh);let h=r.type=="hierCluster"?0:f.width;if(s.xDendrogramHeight){r.dom.termLabelG.selectAll(".sjpp-matrix-label").each((function(t){if(t.grp.type!=="hierCluster")return;const e=this.getBBox();if(e.width>h){h=e.width;t.label.length}}))}const x=-c.left.offset+o+h;const u=!s.xDendrogramHeight?0:Math.max(f.width-(s.xDendrogramHeight+h),0);const y=(c.top.display=="none"?0:d.height)-c.top.offset+a;r.dom.mainG.attr("transform",`translate(${x+u},${y})`);r.dom.clipRect.attr("y",-y).attr("height",i.mainh+500+y);const w=i.xOffset+(e.transpose?20:0);const b=i.yOffset+i.mainh+e.collabelgap+(c.btm.display=="none"?0:m.height)+20;r.dom.legendG.attr("transform",`translate(${w},${b})`);if(s.xDendrogramHeight){const t=h+u-c.left.offset+i.xOffset-i.dx/2;r.dom.hcClipRect.attr("x",t+o+i.dx/2).attr("y",0).attr("width",i.mainw+3).attr("height",i.mainh+s.yDendrogramHeight+500);r.topDendroX=t+i.seriesXoffset;r.dom.topDendrogram.attr("transform",`translate(${r.topDendroX}, -5)`);const a=-.5*e.rowh+(c.top.display=="none"?0:d.height);r.dom.leftDendrogram.attr("transform",`translate(${t-h-10}, ${a})`)}}}function a(t){if(t.fill)return t.fill;const e=t.class||Array.isArray(t.values)&&t.values[0].class;return e?mclass[e].color:"#555"}function n(t){return new Promise((e=>setTimeout(e,t)))}export{r as setRenderers};
@@ -1 +0,0 @@
1
- import{aD as n}from"./app-f91922b4.js";function e(n){switch(n){case"./numeric.binary.ts":return import("./numeric.binary-0a3b17d2.js");case"./numeric.continuous.ts":return import("./numeric.continuous-f77038de.js");case"./numeric.discrete.ts":return import("./numeric.discrete-b977e88f.js");case"./numeric.spline.ts":return import("./numeric.spline-d64b1abe.js");case"./numeric.toggle.ts":return import("./numeric.toggle-5316211b.js");default:return new Promise((function(e,t){(typeof queueMicrotask==="function"?queueMicrotask:setTimeout)(t.bind(null,new Error("Unknown variable dynamic import: "+n)))}))}}function t(e){return n(this,void 0,void 0,(function*(){const n=e.opts.numericEditMenuVersion;const t=n.length>1?"toggle":n[0];const i=yield r(t);return yield i.getHandler(e)}))}function i(e,t,i=null){var r;return n(this,void 0,void 0,(function*(){if(!((r=e.q)===null||r===void 0?void 0:r.mode))e.q={mode:"continuous"};const n=e.q.mode||"continuous";if(!e.term.bins){const n=yield t.getDefaultBins({tw:e});e.term.bins=n;e.q=JSON.parse(JSON.stringify(e.term.bins.default))}e.q.mode=n;return e}))}function r(t){return n(this,void 0,void 0,(function*(){try{return yield e(`./numeric.${t}.ts`)}catch(n){if(n.stack)console.log(n.stack);throw`Type numeric.${t} does not exist [handlers/numeric.ts importSubtype()]`}}))}export{i as fillTW,t as getHandler};
@@ -1 +0,0 @@
1
- import{m as t}from"./FilterRxComp-0e75dd8d.js";function o(o){const n=o.sort(((t,o)=>t-o));const s=Math.abs(n[0]-n[n.length-1]);const r=t(s);const e=s>=10?0:s>=1?1:r+2;return o.map((t=>Number(t.toFixed(e))))}export{o as n};
@@ -1 +0,0 @@
1
- import{aD as e}from"./app-f91922b4.js";import{setDensityPlot as t}from"./density-7c3f91eb.js";import{renderBoundaryInclusionInput as i,renderBoundaryInputDivs as n}from"./numeric.discrete-b977e88f.js";import{u as o,w as r}from"./FilterRxComp-0e75dd8d.js";import{m as d}from"./checkbox-0e5c659f.js";import{b as s}from"./termsetting-9a7511e6.js";import{convertViolinData as a}from"./tvs.numeric-f9ce58bc.js";import{v as l}from"./violinRenderer-688abcb2.js";import"./drag-c354e2c6.js";import"./nodrag-777a34a5.js";import"./pointer-c7475677.js";import"./table-d6c411fd.js";import"./radiobutton-09bff425.js";import"path";import"./tvs.density-9fdae0cc.js";import"./brush-db0ed33a.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";function u(o){return{getPillName(e){return s(o,e)},getPillStatus(){var e;return{text:((e=o.usecase)===null||e===void 0?void 0:e.target)=="regression"?o.data.q.lst.find((e=>e.label!=o.data.refGrp)).label:"binary"}},showEditMenu(r){var d,s;return e(this,void 0,void 0,(function*(){o.num_obj={};o.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};r.selectAll("*").remove();r.append("div").style("padding","10px").style("text-align","center").html("Getting distribution data ...<br/>");const f=yield o.vocabApi.getViolinPlotData({term:{term:o.term,q:o.q},filter:o.filter,svgw:o.num_obj.plot_size.width/window.devicePixelRatio},(s=(d=o.opts).getBodyParams)===null||s===void 0?void 0:s.call(d));o.num_obj.density_data=a(f);o.dom.num_holder=r;r.selectAll("*").remove();o.dom.density_div=r.append("div");o.vr=new l(o.dom.density_div,o.num_obj.density_data,o.num_obj.plot_size.width,o.num_obj.plot_size.height);o.num_obj.svg=o.vr.svg;o.dom.bins_div=r.append("div").style("padding","4px");p(o);t(o);i(o);o.dom.cutoff_div=o.dom.bins_div.append("div").style("margin","10px");m(o);o.dom.bins_table=o.dom.bins_div.append("div").style("display","flex").style("color","rgb(136, 136, 136)").style("margin","10px").style("width","100%");o.dom.rangeAndLabelDiv=o.dom.bins_table.append("div");n(o,o.q.lst);const y=r.append("div").style("padding","3px 10px");y.append("button").style("margin","5px").html("Apply").on("click",(()=>e(this,void 0,void 0,(function*(){delete o.q.startinclusive;delete o.q.stopinclusive;delete o.q.bin_size;delete o.q.first_bin;delete o.q.last_bin;o.q.lst=c(o);o.numqByTermIdModeType[o.term.id].binary=JSON.parse(JSON.stringify(o.q));o.q.mode="binary";o.runCallback()}))));y.append("button").style("margin","5px").html("Reset").on("click",(()=>{o.q={};delete o.numqByTermIdModeType[o.term.id];u(o).showEditMenu(o.dom.num_holder)}))}))}}}function p(e){const t=e.num_obj.density_data;const i=e.q&&e.q.lst&&e.q.lst.length?e.q.lst[0].stop:undefined;const n=e.numqByTermIdModeType;if(!e.term)throw`Missing .term{} [numeric.binary, setqDefaults()]`;const d=e.term;if(!n[d.id])n[d.id]={};if(!n[d.id].binary){const o=i!==undefined?Number(i):t.maxvalue!=t.minvalue?t.minvalue+(t.maxvalue-t.minvalue)/2:t.maxvalue;n[d.id].binary={mode:"binary",type:"custom-bin",modeBinaryCutoffType:"normal",modeBinaryCutoffPercentile:50,lst:[{startunbounded:true,stopinclusive:true,stop:o.toFixed(e.term.type=="integer"?0:2)},{stopunbounded:true,start:o.toFixed(e.term.type=="integer"?0:2)}]}}if(!e.q||e.q.mode!=="binary")e.q={};const s=JSON.parse(JSON.stringify(n[d.id].binary));e.q=Object.assign(s,e.q);if(e.q.lst){e.q.lst.forEach((t=>{if(!("label"in t))t.label=o(t,e.q);if(!("range"in t))t.range=r(t,e.q)}))}}function m(i){return e(this,void 0,void 0,(function*(){i.dom.cutoff_div.append("span").style("margin-right","5px").style("opacity",.5).text("Boundary value");i.dom.customBinBoundaryInput=i.dom.cutoff_div.append("input").style("width","100px").attr("type","number").style("margin-right","10px").attr("value",i.q.modeBinaryCutoffType=="normal"?i.q.lst[0].stop:i.q.modeBinaryCutoffPercentile).on("change",s);i.dom.customBinBoundaryPercentileCheckbox=d({holder:i.dom.cutoff_div,labeltext:"Use percentile",checked:i.q.modeBinaryCutoffType=="percentile",divstyle:{display:"inline-block"},callback:l});function s(){return e(this,void 0,void 0,(function*(){const e=+this.value;if(i.q.modeBinaryCutoffType=="normal"){a(e)}else if(i.q.modeBinaryCutoffType=="percentile"){if(e<1||e>99){window.alert("Invalid percentile value: enter integer between 1 and 99");return}i.q.modeBinaryCutoffPercentile=e;yield u()}else{throw"invalid modeBinaryCutoffType value"}}))}function a(e){i.q.lst[0].stop=e;i.q.lst[1].start=e;i.q.lst.forEach((e=>{e.label=o(e,i.q);e.range=r(e,i.q)}));if(!i.num_obj)throw`Missing density data [numeric.binary updateUI()]`;t(i);n(i,i.q.lst)}function l(){return e(this,void 0,void 0,(function*(){i.q.modeBinaryCutoffType=i.q.modeBinaryCutoffType=="percentile"?"normal":"percentile";if(i.q.modeBinaryCutoffType=="normal"){const e=i.q.lst[0].stop;i.dom.customBinBoundaryInput.property("value",e);a(e)}else if(i.q.modeBinaryCutoffType=="percentile"){i.dom.customBinBoundaryInput.property("value",i.q.modeBinaryCutoffPercentile);yield u()}else{throw"invalid modeBinaryCutoffType value"}}))}function u(){return e(this,void 0,void 0,(function*(){const e=yield i.opts.vocabApi.getPercentile(i.term.id,[i.q.modeBinaryCutoffPercentile],i.filter);a(e.values[0])}))}}))}function c(e){const t=e.dom.boundaryInput.property("value")=="startinclusive";const i=e.dom.boundaryInput.property("value")=="stopinclusive";const n=e.dom.bins_table.node().querySelectorAll("input");const r=e.q.lst[0].stop;const d=[{startunbounded:true,stop:r,startinclusive:t,stopinclusive:i},{start:r,startinclusive:t,stopinclusive:i,stopunbounded:true}];d.forEach(((t,i)=>{const r=n[i].value;t.label=r?r:o(t,e.q)}));return d}export{u as getHandler};
@@ -1 +0,0 @@
1
- import{aD as t}from"./app-f91922b4.js";import{b as e}from"./termsetting-9a7511e6.js";import{convertViolinData as i}from"./tvs.numeric-f9ce58bc.js";import{v as n}from"./violinRenderer-688abcb2.js";import"path";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";import"./tvs.density-9fdae0cc.js";import"./brush-db0ed33a.js";import"./pointer-c7475677.js";import"./nodrag-777a34a5.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";function o(o){return{getPillName(t){return e(o,t)},getPillStatus(){return{text:"continuous"}},showEditMenu(e){var a,l;return t(this,void 0,void 0,(function*(){s(o);e.style("padding","5px").selectAll("*").remove();const t=e.append("div");const r={width:500,height:100,xpad:10,ypad:20};const p=yield o.vocabApi.getViolinPlotData({term:{term:o.term,q:o.q},filter:o.filter,svgw:r.width/window.devicePixelRatio},(l=(a=o.opts).getBodyParams)===null||l===void 0?void 0:l.call(a));const d=i(p);const c=new n(t,d,r.width,r.height);c.render();c.svg;e.append("div").style("display","inline-block").style("padding","3px 10px").html("Scale values");const m=e.append("select").on("change",(t=>{if(!o.q)throw`Missing .q{} [numeric.continuous getHandler()]`;if(t.target.value!="1")o.q.scale=Number(t.target.value);else delete o.q.scale}));m.selectAll("option").data([{html:"No Scaling",value:1},{html:"Per 10",value:10},{html:"Per 100",value:100},{html:"Per 1000",value:1e3}]).enter().append("option").attr("value",(t=>t.value)).html((t=>t.html)).property("selected",(t=>"scale"in o.q&&t.value==o.q.scale));const u=e.append("div").style("padding","3px 10px");if(o.term.type=="survival"){u.append("div").style("font-size",".8em").style("margin","20px 5px 5px 5px").html(`\n\t\t\t\t\t\tDisplay survival outcomes as time to event (${o.term.unit})\n\t\t\t\t\t`)}u.append("button").style("margin","5px").html("Apply").on("click",(()=>{o.q.mode="continuous";o.runCallback()}))}))}}}function s(t){const e=t.numqByTermIdModeType;const i=t.term;if(!e[i.id])e[i.id]={};if(!e[i.id].continuous){e[i.id].continuous={mode:"continuous"}}const n=JSON.parse(JSON.stringify(e[i.id].continuous));t.q=Object.assign(n,t.q)}export{o as getHandler};
@@ -1 +0,0 @@
1
- import{aD as e,aR as t,f as n,k as i}from"./app-f91922b4.js";import{setDensityPlot as s}from"./density-7c3f91eb.js";import{u as a,w as r}from"./FilterRxComp-0e75dd8d.js";import{m as o}from"./radiobutton-09bff425.js";import{b as l,f as d}from"./termsetting-9a7511e6.js";import{convertViolinData as u}from"./tvs.numeric-f9ce58bc.js";import{v as p}from"./violinRenderer-688abcb2.js";import"./drag-c354e2c6.js";import"./nodrag-777a34a5.js";import"./pointer-c7475677.js";import"./table-d6c411fd.js";import"path";import"./tvs.density-9fdae0cc.js";import"./brush-db0ed33a.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";function m(t){return{getPillName(e){return l(t,e)},getPillStatus(){var e,n;if(!t.q)throw`Missing .q{} [numeric.discrete getPillStatus()]`;const i=((e=t.q)===null||e===void 0?void 0:e.name)||((n=t.q)===null||n===void 0?void 0:n.reuseId);if(i)return{text:i};if(t.q.type=="regular-bin")return{text:"bin size="+t.q.bin_size};return{text:t.q.lst.length+" bins"}},showEditMenu(n){return e(this,void 0,void 0,(function*(){c(t,n)}))}}}function c(t,n){var i,a;return e(this,void 0,void 0,(function*(){t.num_obj={};t.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};n.selectAll("*").remove();n.append("div").style("padding","10px").style("text-align","center").html("Getting distribution data ...<br/>");try{if(!t.vocabApi)throw`Missing .vocabApi{} [numeric.discrete showBinsMenu()]`;const e=yield d({term:t.term,q:t.q},t.vocabApi);const n=yield t.vocabApi.getViolinPlotData({term:e,filter:t.filter,svgw:t.num_obj.plot_size.width/window.devicePixelRatio,strokeWidth:.2},(a=(i=t.opts).getBodyParams)===null||a===void 0?void 0:a.call(i));t.q=JSON.parse(JSON.stringify(e.q));t.num_obj.density_data=u(n)}catch(e){console.log(e)}n.selectAll("*").remove();if(t.term.type=="survival"){t.dom.discreteSur_div=n.append("div").style("padding","4px");N(t);return}t.dom.num_holder=n;t.dom.density_div=n.append("div");t.vr=new p(t.dom.density_div,t.num_obj.density_data,t.num_obj.plot_size.width,t.num_obj.plot_size.height);t.num_obj.svg=t.vr.svg;t.dom.bins_div=n.append("div").style("padding","4px");v(t);s(t);f(t);g(t);I(t)}))}function b(e){var t;if(e.q.type=="regular-bin"){if(!e.q.first_bin){e.q.first_bin={stop:Number(e.dom.first_stop_input.property("value"))}}e.q.startinclusive=e.dom.boundaryInput.property("value")=="startinclusive";e.q.stopinclusive=e.dom.boundaryInput.property("value")=="stopinclusive";const n=e.dom.bin_size_input.property("value");e.q.bin_size=Number(n);if(n.includes(".")&&!n.endsWith(".")){e.q.rounding="."+n.split(".")[1].length+"f"}else{e.q.rounding=".0f"}if(e.q.scale)delete e.q.scale;if(Number.isFinite((t=e.q.last_bin)===null||t===void 0?void 0:t.start));else{delete e.q.last_bin}e.numqByTermIdModeType[e.term.id].discrete["regular-bin"]=JSON.parse(JSON.stringify(e.q))}else if(e.term.type!=="survival"){if(e.dom.bins_table.selectAll("input").node().value){e.q.lst=y(e);e.numqByTermIdModeType[e.term.id].discrete["custom-bin"]=JSON.parse(JSON.stringify(e.q))}}e.q.mode="discrete";e.dom.tip.hide();e.runCallback()}function y(e){var t;const n=e.dom.boundaryInput.property("value")=="startinclusive";const i=e.dom.boundaryInput.property("value")=="stopinclusive";const s=e.dom.bins_table.node().querySelectorAll("input");let o;const l=e.dom.customBinBoundaryInput.property("value").split("\n").filter((e=>e!=""&&!isNaN(e)));const d=new Set(l);const u=Array.from(d).map((e=>+e)).sort(((e,t)=>e-t)).map(((t,l)=>{const d={start:+t,startinclusive:n,stopinclusive:i};if(o){delete o.stopunbounded;o.stop=d.start;const t=s[l].value;o.label=t?t:a(o,e.q,e.term.valueConversion);o.range=r(o,e.q)}o=d;return d}));if(u.length==0)return;o.stopunbounded=true;const p=(t=s[u.length])===null||t===void 0?void 0:t.value;o.label=p?p:a(o,e.q,e.term.valueConversion);o.range=r(o,e.q);u.unshift({startunbounded:true,stop:u[0].start,startinclusive:n,stopinclusive:i,label:s[0].value});if(!u[0].label)u[0].label=a(u[0],e.q,e.term.valueConversion);if(!u[0].range)u[0].range=r(u[0],e.q);return u}function v(e){var t,n;const i=e.num_obj.density_data;const s=e.numqByTermIdModeType;const o=e.term;if(!s[o.id])s[o.id]={};if(!s[o.id].discrete){const t=!Number.isFinite(i.minvalue)||!Number.isFinite(i.maxvalue)?0:i.maxvalue!=i.minvalue?i.minvalue+(i.maxvalue-i.minvalue)/2:i.maxvalue;s[o.id].discrete={"regular-bin":e.q&&e.q.type=="regular-bin"?JSON.parse(JSON.stringify(e.q)):e.opts.use_bins_less&&o.bins.less?JSON.parse(JSON.stringify(o.bins.less)):JSON.parse(JSON.stringify(o.bins.default)),"custom-bin":e.q&&e.q.type=="custom-bin"?e.q:{type:"custom-bin",mode:"discrete",lst:[{startunbounded:true,startinclusive:true,stopinclusive:false,stop:+t.toFixed(o.type=="integer"?0:2)},{stopunbounded:true,startinclusive:true,stopinclusive:false,start:+t.toFixed(o.type=="integer"?0:2)}]}};if(!s[o.id].discrete["regular-bin"].type){s[o.id].discrete["regular-bin"].type="regular-bin"}}if(e.q&&!e.q.mode)e.q.mode="discrete";if(!e.q||e.q.mode!=="discrete")e.q={};if(!e.q.type){e.q.type=((n=(t=e.term.bins)===null||t===void 0?void 0:t.default)===null||n===void 0?void 0:n.type)||"regular-bin"}const l=JSON.parse(JSON.stringify(s[o.id].discrete[e.q.type]));e.q=Object.assign(l,e.q);const d="bin_size"in e.q&&e.q.bin_size.toString();if(!e.q.rounding&&typeof d=="string"&&d.includes(".")&&!d.endsWith(".")){const t=d.split(".")[1].length;e.q.rounding="."+t+"f"}if(e.q.lst){e.q.lst.forEach((t=>{if(!("label"in t))t.label=a(t,e.q,e.term.valueConversion);if(!("range"in t))t.range=r(t,e.q)}))}}function f(e){e.dom.boundaryInclusionDiv=e.dom.bins_div.append("div").style("margin-left","5px");e.dom.boundaryInclusionDiv.append("span").style("padding","5px").style("color","rgb(136, 136, 136)").html("Boundary Inclusion");const t='<span style="font-family:Times;font-style:italic">x</span>';e.dom.boundaryInput=e.dom.boundaryInclusionDiv.append("select").style("margin-left","10px").on("change",(function(){const t=e.q.mode=="binary"?e.numqByTermIdModeType[e.term.id].binary:e.numqByTermIdModeType[e.term.id].discrete[e.q.type];t.lst=e.q.lst;if(t.type=="regular-bin"){n(t)}else{t.lst.forEach((t=>{n(t);t.label=a(t,e.q,e.term.valueConversion);t.range=r(t,e.q)}));z(e,t.lst)}function n(t){t.startinclusive=e.dom.boundaryInput.node().selectedIndex==1;t.stopinclusive=e.dom.boundaryInput.node().selectedIndex==0}}));e.dom.boundaryInput.selectAll("option").data([{value:"stopinclusive",html:"start &lt; "+t+" &le; end"},{value:"startinclusive",html:"start &le; "+t+" &lt; end"}]).enter().append("option").property("value",(e=>e.value)).property("selected",(t=>{if(e.q.type=="regular-bin")return e.q[t.value]==true;else return e.q.lst[0][t.value]==true})).html((e=>e.html))}function g(n){const i=n.dom.bins_div.append("div").style("margin","10px");if(n.term.bins.default.type=="custom-bin"){n.q.type="custom-bin";v(n);s(n);w(n,i);return}if(n.term.bins.default.type!="regular-bin")throw"self.bins.default.type is neither regular-bin or custom-bin, cannot render ui";const a=[{active:n.q.type=="regular-bin",label:"Same bin size",callback:(t,i)=>e(this,void 0,void 0,(function*(){n.q.type="regular-bin";v(n);s(n);if(!a[0].isInitialized){_(n,i.contentHolder);a[0].isInitialized=true}}))},{active:n.q.type=="custom-bin",label:"Varying bin sizes",callback:(t,i)=>e(this,void 0,void 0,(function*(){n.q.type="custom-bin";v(n);s(n);if(!a[1].isInitialized){w(n,i.contentHolder);a[1].isInitialized=true}}))}];new t({holder:i,tabs:a}).main()}function q(e,t){if(!e.term.valueConversion)return;t.append("div").style("margin-bottom","5px").style("opacity",.6).text(`Note: using values by the unit of ${e.term.valueConversion.fromUnit}.`)}function _(e,t){q(e,t);e.dom.bins_table=t.append("table");h(e,e.dom.bins_table.append("tr"));x(e,e.dom.bins_table.append("tr"));j(e,e.dom.bins_table.append("tr"))}function h(e,t){t.append("td").style("margin","5px").style("opacity",.5).text("Bin Size");const i=e.num_obj.density_data;const a=e.q.bin_size;e.dom.bin_size_input=t.append("td").append("input").attr("type","number").attr("value","rounding"in e.q?n(e.q.rounding)(e.q.bin_size):e.q.bin_size).style("margin-left","15px").style("width","100px").style("color",(()=>e.q.bin_size>Math.abs(i.maxvalue-i.minvalue)?"red":"")).on("change",(t=>{const n=Number(t.target.value);if(n<=0){window.alert("Please enter non-negative bin size.");t.target.value=a;return}if((i.maxvalue-i.minvalue)/n>100){window.alert("Bin size too small. Try setting a bigger value.");t.target.value=a;return}e.q.bin_size=n;e.dom.bin_size_input.style("color",e.q.bin_size>i.maxvalue-i.minvalue?"red":n!=a?"green":"");s(e)}))}function x(e,t){if(!e.q.first_bin)throw"missing q.first_bin";t.append("td").style("margin","5px").style("opacity",.5).text("First Bin Stop");const n=e.num_obj.density_data;const i=e.q.first_bin.stop;e.dom.first_stop_input=t.append("td").append("input").attr("type","number").property("value",i).style("width","100px").style("margin-left","15px").on("change",(t=>{const s=Number(t.target.value);if(s<n.minvalue||s>n.maxvalue){window.alert("First bin stop value out of bound.");t.target.value=i;return}if(e.q.first_bin)e.q.first_bin.stop=s;e.renderBinLines(e,e.q)}));t.append("td").append("div").style("font-size",".6em").style("opacity",.5).style("display",e.num_obj.no_density_data?"none":"block").text("Indicated by left-most red line. Drag to change.")}function j(e,t){const n=!e.q.last_bin||!Number.isFinite(e.q.last_bin.start);t.append("td").style("margin","5px").style("opacity",.5).text("Last Bin Start");const i=e.num_obj.density_data;const a=t.append("td").style("padding-left","15px").style("vertical-align","top");const r=a.append("div");o({holder:r,options:[{label:"Automatic",value:"auto",checked:n},{label:"Fixed",value:"fixed",checked:!n}],callback:t=>{if(t=="auto"){delete e.q.last_bin.start;l.style("display","none");e.renderBinLines(e,e.q);s(e);return}l.style("display","inline-block");if(!e.q.last_bin)e.q.last_bin={};if(e.dom.last_start_input.property("value")==""){e.dom.last_start_input.property("value",i.maxvalue)}d();s(e)}});const l=t.append("td").append("div").style("display",n?"none":"inline-block");e.dom.last_start_input=l.append("input").attr("type","number").property("value",e.q.last_bin?e.q.last_bin.start:"").style("width","100px").on("change",d);l.append("div").style("font-size",".6em").style("opacity",.5).style("display",e.num_obj.no_density_data?"none":"block").text("Indicated by right-most red line. Drag to change.");function d(){const t=Number(e.dom.last_start_input.property("value"));if(e.q.first_bin&&t<=e.q.first_bin.stop){window.alert("Last bin start cannot be smaller than first bin stop.");e.dom.last_start_input.property("value",i.maxvalue);return}if(t>i.maxvalue){window.alert("Last bin start value out of bound.");e.dom.last_start_input.property("value",i.maxvalue);return}if(!e.q.last_bin)e.q.last_bin={};e.q.last_bin.start=t;e.renderBinLines(e,e.q)}}function w(t,n){q(t,n);t.dom.bins_table=n.append("div").style("display","flex").style("width","100%");const s=t.dom.bins_table.append("div").style("margin-right","20px");t.dom.rangeAndLabelDiv=t.dom.bins_table.append("div");s.append("div").style("margin-bottom","5px").style("color","rgb(136, 136, 136)").text("Bin boundaries");t.dom.customBinBoundaryInput=s.append("textarea").style("width","100px").style("height","70px").text(t.q.lst.slice(1).map((e=>e.start)).join("\n")).on("change",a).on("keyup",(function(n){return e(this,void 0,void 0,(function*(){if(!i(n)&&n.key!=8)return;if(!t.dom.bins_table.selectAll("input").node().value)return;a.call(this)}))}));s.append("div").style("font-size",".6em").style("margin-left","1px").style("color","#858585").html("Enter numeric values </br>seperated by ENTER");function a(){const e=t.dom.bins_table.selectAll("input");e.property("value","");const n=y(t);if(n==undefined){return}const i=t.numqByTermIdModeType[t.term.id].discrete[t.q.type];if(t.q.hiddenValues)i.hiddenValues=t.q.hiddenValues;if(r(n,i.lst)){i.lst=n;t.renderBinLines(t,i)}z(t,i.lst);t.q.lst=i.lst}function r(e,t){if(e.length!=t.length)return true;if(Object.keys(e[0]).length!==Object.keys(t[0]).length)return true;for(const[n,i]of t.entries()){for(const t of Object.keys(i)){if(i[t]&&i[t]!==e[n][t]){return true}}}return false}z(t,t.q.lst)}function z(e,t){const n=e.dom.rangeAndLabelDiv;n.selectAll("*").remove();const i=n.append("div").style("display","grid").style("grid-template-columns","auto auto").style("column-gap","20px").style("align-items","center");i.append("div").style("margin-bottom","3px").style("color","rgb(136, 136, 136)").text("Range");i.append("div").style("margin-bottom","3px").style("color","rgb(136, 136, 136)").text("Bin label");for(const[e,n]of t.entries()){i.append("div").attr("name","range").html(n.range);i.append("div").append("input").attr("type","text").style("margin","2px 0px").property("value",n.label).on("change",(function(){t[e].label=this.value}))}e.dom.customBinRanges=e.dom.bins_table.selectAll('div[name="range"]').data(t);e.dom.customBinLabelInput=e.dom.bins_table.selectAll("input").data(t)}function I(e){const t=e.dom.bins_div.append("div");t.append("button").style("margin","5px").html("Apply").on("click",(()=>b(e)));t.append("button").style("margin","5px").html("Reset").on("click",(()=>{e.q={};delete e.numqByTermIdModeType[e.term.id];c(e,e.dom.num_holder)}))}function N(e){const t=e.dom.discreteSur_div.append("div");t.append("div").style("font-size",".8em").style("margin","5px").html(`\n\t\t\tDisplay survival outcomes as exit codes <br>\n\t\t`);const n=e.dom.discreteSur_div.append("div");n.append("button").style("margin","5px").html("Apply").on("click",(()=>b(e)))}export{m as getHandler,f as renderBoundaryInclusionInput,z as renderBoundaryInputDivs};
@@ -1 +0,0 @@
1
- import{aD as t,k as e}from"./app-f91922b4.js";import{setDensityPlot as n}from"./density-7c3f91eb.js";import{b as o}from"./termsetting-9a7511e6.js";import{convertViolinData as i}from"./tvs.numeric-f9ce58bc.js";import{v as s}from"./violinRenderer-688abcb2.js";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";import"./drag-c354e2c6.js";import"./nodrag-777a34a5.js";import"./pointer-c7475677.js";import"path";import"./tvs.density-9fdae0cc.js";import"./brush-db0ed33a.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";function l(e){return{getPillName(t){return o(e,t)},getPillStatus(){return{text:"cubic spline"}},showEditMenu(o){var l,p;return t(this,void 0,void 0,(function*(){e.num_obj={};e.num_obj.plot_size={width:500,height:100,xpad:10,ypad:20};o.selectAll("*").remove();o.append("div").style("padding","10px").style("text-align","center").html("Getting distribution data ...<br/>");try{const t=yield e.vocabApi.getViolinPlotData({term:{term:e.term,q:e.q},filter:e.filter,svgw:e.num_obj.plot_size.width/window.devicePixelRatio},(p=(l=e.opts).getBodyParams)===null||p===void 0?void 0:p.call(l));e.num_obj.density_data=i(t)}catch(t){console.log(t)}o.selectAll("*").remove();e.dom.density_div=o.append("div");e.vr=new s(e.dom.density_div,e.num_obj.density_data,e.num_obj.plot_size.width,e.num_obj.plot_size.height);e.num_obj.svg=e.vr.svg;e.dom.num_holder=o;e.dom.knots_div=o.append("div").style("padding","5px");yield d(e);n(e);r(e);y(e)}))}}}function d(e){return t(this,void 0,void 0,(function*(){const t=e.numqByTermIdModeType;const n=e.term;if(!t[n.id])t[n.id]={};if(!t[n.id]["spline"]){t[n.id]["spline"]={mode:"spline",knots:[]}}const o=JSON.parse(JSON.stringify(t[n.id]["spline"]));e.q=Object.assign(o,e.q);if(!e.q.knots.length){const t=4;yield u(e,t);e.numqByTermIdModeType[e.term.id]["spline"].knots=e.q.knots}}))}function r(t){const e=t.dom.knots_div;p(t,e);m(t,e)}function p(n,o){n.dom.custom_knots_div=o.append("div");n.dom.custom_knots_div.append("div").style("display","inline-block").style("vertical-align","top").style("padding","3px 15px").style("font-weight","normal").style("color","rgb(136, 136, 136)").html("Knots");n.dom.customKnotsInput=n.dom.custom_knots_div.append("div").style("display","inline-block").style("padding","3px 15px").style("padding-left","5px").append("textarea").style("height","100px").style("width","100px").text(n.q.knots.map((t=>t.value)).join("\n")).on("change",i).on("keyup",(function(n){return t(this,void 0,void 0,(function*(){if(!e(n)&&n.key!=8)return;i.call(this)}))}));n.dom.custom_knots_div.append("div").style("display","inline-block").style("vertical-align","top").style("font-size",".7em").style("padding","3px 15px").style("padding-left","5px").style("color","rgb(136, 136, 136)").html(`Enter knot values, one knot per line.</br> \n\t\t\tAdjust knot by dragging on the vertical line.</br>\n\t\t \tOr autocompute knots from below.`);function i(){const t=c(n);const e=n.q;if(s(t,e.knots)){e.knots=t;n.renderBinLines(n,e)}n.q=e}function s(t,e){if(t.length!=e.length)return true;if(Object.keys(t[0]).length!==Object.keys(e[0]).length)return true;for(const[n,o]of e.entries()){for(const e of Object.keys(o)){if(o[e]&&o[e]!==t[n][e]){return true}}}return false}}function a(t){t.dom.customKnotsInput.property("value",t.q.knots.map((t=>t.value)).join("\n"))}function c(t){const e=t.dom.customKnotsInput.property("value").split("\n").filter((t=>t!="")).map((t=>+t)).sort(((t,e)=>t-e)).map((t=>{const e={value:+t};return e}));return e}function m(e,o){const i=4;const s=i;e.dom.knot_select_div=o.append("div");e.dom.knot_select_div.append("div").style("display","inline-block").style("margin-left","15px").style("color","rgb(136, 136, 136)").html("Autocompute");const l=e.dom.knot_select_div.append("select").style("margin-left","10px").style("margin-bottom","7px");for(let t=s-1;t<s+5;t++){l.append("option").attr("value",t).html(t)}const d=e.q.knots&&e.q.knots.length?e.q.knots.length:s;l.node().value=d;e.dom.knot_select_div.append("div").style("display","inline-block").style("margin-left","10px").style("color","rgb(136, 136, 136)").html("knots");e.dom.knot_select_div.append("button").style("margin","15px").html("Compute").on("click",(()=>t(this,void 0,void 0,(function*(){const t=Number.parseInt(l.node().value);let o=Number.parseInt(l.node().value);while(e.q.knots.length!=t){yield u(e,o);o=o+1}a(e);n(e)}))));e.dom.knot_select_div.append("div").style("display","inline-block").style("font-size",".7em").style("padding","3px 15px").style("padding-left","5px").style("color","rgb(136, 136, 136)").html("Will overwrite existing values.")}function u(e,n){return t(this,void 0,void 0,(function*(){const t=n-2;const o=e.term;const i=e.q.knots=[];const s=[5];const l=(90/(t+1)).toFixed(0);for(let e=1;e<t+1;e++){s.push(e*l)}s.push(95);const d=yield v(e,s);for(const t of d){i.push({value:t.toFixed(o.type=="integer"?0:2)})}}))}function v(e,n){return t(this,void 0,void 0,(function*(){const t=yield e.vocabApi.getPercentile(e.term.id,n,e.filter);if(t.error||!t.values.length||!t.values.every((t=>Number.isFinite(t))))throw"cannot get median value: "+(t.error||"no data");const o=[...new Set(t.values)];return o}))}function y(t){const e=t.dom.knots_div.append("div");e.append("button").style("margin","5px").html("Apply").on("click",(()=>f(t)));e.append("button").style("margin","5px").html("Reset").on("click",(()=>{t.q={};delete t.numqByTermIdModeType[t.term.id];t.handler=l(t);t.handler.showEditMenu(t.dom.num_holder)}))}function f(t){t.q.mode="spline";t.dom.tip.hide();t.runCallback()}export{l as getHandler};
@@ -1 +0,0 @@
1
- import{aA as t,M as s,ac as r}from"./app-f91922b4.js";import{s as e,r as o}from"./recover-a08c8d01.js";import{v as i}from"./FilterRxComp-0e75dd8d.js";import"./FilterStateless-ad3df967.js";import"./app-bfce9bf5.js";import"./termInfo-96285f4a.js";import"./table-d6c411fd.js";import"./termsetting-9a7511e6.js";import"path";function a(t){switch(t){case"../plots/DEanalysis.js":return import("./DEanalysis-b86d0874.js");case"../plots/Disco.js":return import("./Disco-16cd51c0.js");case"../plots/DziViewer.js":return import("./DziViewer-5c2d68e7.js");case"../plots/barchart.data.js":return import("./FilterRxComp-0e75dd8d.js").then((function(t){return t.y}));case"../plots/barchart.events.js":return import("./barchart.events-272fd122.js");case"../plots/barchart.js":return import("./barchart-e2af00a8.js");case"../plots/bars.renderer.js":return import("./bars.renderer-f0e5af5a.js");case"../plots/bars.settings.js":return import("./bars.settings-64bb4642.js");case"../plots/boxplot.js":return import("./boxplot-7de25274.js");case"../plots/brainImaging.js":return import("./brainImaging-007edaa3.js");case"../plots/controls.btns.js":return import("./controls.btns-bad9e4cf.js");case"../plots/controls.config.js":return import("./controls.config-e0f394cb.js");case"../plots/controls.divide.js":return import("./controls.divide-d8ac5a9b.js");case"../plots/controls.js":return import("./controls-8d4972c8.js");case"../plots/controls.overlay.js":return import("./controls.overlay-3ac8773d.js");case"../plots/controls.term1.js":return import("./controls.term1-008f4be4.js");case"../plots/cuminc.js":return import("./cuminc-72257faf.js");case"../plots/dataDownload.js":return import("./dataDownload-91da6dd6.js");case"../plots/dictionary.js":return import("./dictionary-48a38837.js");case"../plots/geneExpression.js":return import("./geneExpression-9ca2da4f.js");case"../plots/geneORA.js":return import("./geneORA-85850143.js");case"../plots/geneset.js":return import("./geneset-3b761b2c.js");case"../plots/genomeBrowser.controls.js":return import("./genomeBrowser.controls-f9b9bf42.js");case"../plots/genomeBrowser.js":return import("./genomeBrowser-2105a98f.js");case"../plots/hierCluster.config.js":return import("./hierCluster.config-3d124abf.js");case"../plots/hierCluster.interactivity.js":return import("./hierCluster.interactivity-3463cc0b.js").then((function(t){return t.i}));case"../plots/hierCluster.js":return import("./hierCluster-a7ff7f5a.js");case"../plots/hierCluster.renderers.js":return import("./hierCluster.renderers-668d0075.js").then((function(t){return t.r}));case"../plots/imagePlot.js":return import("./imagePlot-6d89200c.js");case"../plots/matrix.cells.js":return import("./matrix.cells-a5157233.js");case"../plots/matrix.cluster.js":return import("./matrix.cluster-acdfc6a7.js");case"../plots/matrix.config.js":return import("./matrix.config-cd01ebbd.js");case"../plots/matrix.controls.js":return import("./matrix.controls-86eb8d5c.js");case"../plots/matrix.data.js":return import("./matrix.data-e2d7ac16.js").then((function(t){return t.m}));case"../plots/matrix.dom.js":return import("./matrix.dom-e5f91cc0.js");case"../plots/matrix.groups.js":return import("./matrix.groups-f1969b5c.js").then((function(t){return t.m}));case"../plots/matrix.interactivity.js":return import("./matrix.interactivity-92bc8332.js");case"../plots/matrix.js":return import("./matrix-3d09a31f.js");case"../plots/matrix.layout.js":return import("./matrix.layout-29a8f334.js").then((function(t){return t.m}));case"../plots/matrix.legend.js":return import("./matrix.legend-8c28039e.js").then((function(t){return t.m}));case"../plots/matrix.renderers.js":return import("./matrix.renderers-3b8dfd04.js");case"../plots/matrix.serieses.js":return import("./matrix.serieses-e079f04a.js").then((function(t){return t.m}));case"../plots/matrix.sort.js":return import("./matrix.sort-e1f83454.js");case"../plots/matrix.sorterUi.js":return import("./matrix.sorterUi-2025f39d.js");case"../plots/plot.app.js":return Promise.resolve().then((function(){return c}));case"../plots/plot.brainImaging.js":return import("./plot.brainImaging-d2c23bb7.js");case"../plots/plot.disco.js":return import("./plot.disco-70d493f4.js");case"../plots/plot.ssgq.js":return import("./plot.ssgq-9d364d41.js");case"../plots/profileBarchart.js":return import("./profileBarchart-c104f8e2.js");case"../plots/profilePlot.js":return import("./profilePlot-5ce5b6a0.js");case"../plots/profilePolar.js":return import("./profilePolar-610213d4.js");case"../plots/profileRadar.js":return import("./profileRadar-fddb18f7.js");case"../plots/profileRadarFacility.js":return import("./profileRadarFacility-2c2db1dd.js");case"../plots/regression.inputs.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.b}));case"../plots/regression.inputs.term.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.a}));case"../plots/regression.inputs.values.table.js":return import("./regression.inputs.values.table-d587c1cf.js");case"../plots/regression.js":return import("./regression.inputs-5718cf72.js").then((function(t){return t.r}));case"../plots/regression.results.js":return import("./regression.results-748024be.js").then((function(t){return t.r}));case"../plots/sampleScatter.interactivity.js":return import("./sampleScatter.interactivity-e9c30652.js").then((function(t){return t.a}));case"../plots/sampleScatter.js":return import("./sampleScatter-031f47de.js").then((function(t){return t.a}));case"../plots/sampleScatter.renderer.js":return import("./sampleScatter-031f47de.js").then((function(t){return t.s}));case"../plots/sampleScatter.rendererThree.js":return import("./sampleScatter.rendererThree-3e6c032e.js").then((function(t){return t.c}));case"../plots/sampleView.js":return import("./sampleView-d6a91293.js");case"../plots/scatter.js":return import("./scatter-2e2c76f4.js");case"../plots/singleCellPlot.js":return import("./singleCellPlot-c7347a27.js");case"../plots/stattable.js":return import("./stattable-a7713026.js");case"../plots/summary.js":return import("./summary-592d8f81.js");case"../plots/survival.js":return import("./survival-450b6df4.js");case"../plots/table.js":return import("./table-bf604c50.js");case"../plots/variantBrowser.js":return import("./variantBrowser-05375469.js");case"../plots/violin.interactivity.js":return import("./violin.interactivity-534d6993.js");case"../plots/violin.js":return import("./violin-c1b78717.js");case"../plots/violin.renderer.js":return import("./violin.renderer-16540fb8.js");default:return new Promise((function(s,r){(typeof queueMicrotask==="function"?queueMicrotask:setTimeout)(r.bind(null,new Error("Unknown variable dynamic import: "+t)))}))}}class n{constructor(t){this.type="app";const s=t.violin?.mode=="minimal"?null:t.holder.append("div").style("white-space","nowrap");this.dom={holder:t.holder,errdiv:t.holder.append("div"),plotDiv:t.holder.append("div")};if(s){this.dom.plotControls=s.append("div").style("display","inline-block");this.dom.recoverControls=s.append("div").style("display","inline-block")}}validateOpts(t={}){if(!t.holder)throw`missing opts.holder in the MassApp constructor argument`;if(!t.callbacks)t.callbacks={};return t}async preApiFreeze(t){try{t.tip=new s({padding:"5px"});t.printError=t=>this.printError(t);const r=this.opts.state.vocab;t.vocabApi=this.opts.vocabApi?this.opts.vocabApi:await i({app:t,state:{vocab:{genome:r?.genome||this.opts.state.genome,dslabel:r?.dslabel||this.opts.state.dslabel,terms:r?.terms}},fetchOpts:this.opts.fetchOpts});this.opts.state.vocab=t.vocabApi.vocab}catch(t){throw t}}async init(){try{this.opts.state.nav={header_mode:"hidden"};this.store=await e({app:this.api,state:this.opts.state});this.state=await this.store.copyState();this.components={plots:{}};if(this.opts.app?.features?.includes("recover"))this.components.recover=await o({app:this.api,holder:this.dom.recoverControls,getState:t=>t,maxHistoryLen:10});await this.api.dispatch()}catch(t){this.printError(t);throw t}}async main(){this.api.vocabApi.main();for(const t in this.components.plots){const s=this.components.plots[t];if(!this.state.plots.find((t=>t.id===s.id))){s.destroy();delete this.components.plots[t]}}for(const[t,s]of this.state.plots.entries()){if(!this.components.plots[s.id]){const t=this.dom.holder.append("div");if(!this.dom.plotDiv)this.dom.plotDiv=t;const r=await a(`../plots/${s.chartType}.js`);const e=await r.componentInit({id:s.id,app:this.api,holder:t,controls:this.dom.plotControls});this.components.plots[s.id]=e}}}printError(t){r(this.dom.errdiv,"Error: "+(t.message||t));if(t.stack)console.log(t.stack);this.bus.emit("error")}destroy(){this.dom.holder.selectAll("*").remove()}}const p=t(n);var c=Object.freeze({__proto__:null,appInit:p});export{p as appInit};
@@ -1 +0,0 @@
1
- import{q as t,l as e,x as s,aV as a,aW as o,M as n,ao as i,O as r,az as l,aS as c,aT as p}from"./app-f91922b4.js";import{f as d}from"./termsetting-9a7511e6.js";import{controlsInit as f}from"./controls-8d4972c8.js";import{d as g}from"./zoom-2d4ede33.js";import{d as m}from"./lasso-393c1570.js";import{b as h,a as u,h as y,f as x,i as v,j as b}from"./recover-a08c8d01.js";import{g as S,s as T}from"./sampleScatter.interactivity-e9c30652.js";import{d as w}from"./svg.download-56529955.js";import{c as C}from"./FilterRxComp-0e75dd8d.js";import{S as D,s as z,a as A,b as W,c as O,d as M,e as k,f as L}from"./symbol-fc7cbd41.js";import{a as G,m as $}from"./math-2fb199c6.js";import{s as _}from"./sampleScatter.rendererThree-3e6c032e.js";import{c as j,b as I,d as N}from"./axis-6cb4f314.js";import{l as V}from"./line-264f8f9e.js";const q=G(3);var R={draw(t,e){const s=G(e+$(e/28,.75))*.59436;const a=s/2;const o=a*q;t.moveTo(0,s);t.lineTo(0,-s);t.moveTo(-o,-a);t.lineTo(o,a);t.moveTo(-o,a);t.lineTo(o,-a)}};var F={draw(t,e){const s=G(e)*.62625;t.moveTo(0,-s);t.lineTo(s,0);t.lineTo(0,s);t.lineTo(-s,0);t.closePath()}};var K={draw(t,e){const s=G(e-$(e/7,2))*.87559;t.moveTo(-s,0);t.lineTo(s,0);t.moveTo(0,s);t.lineTo(0,-s)}};var E={draw(t,e){const s=G(e)*.4431;t.moveTo(s,s);t.lineTo(s,-s);t.lineTo(-s,-s);t.lineTo(-s,s);t.closePath()}};const P=G(3);var J={draw(t,e){const s=G(e)*.6824;const a=s/2;const o=s*P/2;t.moveTo(0,-s);t.lineTo(o,a);t.lineTo(-o,a);t.closePath()}};var Y={draw(t,e){const s=G(e-$(e/6,1.7))*.6189;t.moveTo(-s,-s);t.lineTo(s,s);t.moveTo(-s,s);t.lineTo(s,-s)}};function B(t,e){return H(t)||X(t,e)||Z()}function H(t){if(Array.isArray(t))return t}function X(t,e){var s=[];var a=true;var o=false;var n=undefined;try{for(var i=t[Symbol.iterator](),r;!(a=(r=i.next()).done);a=true){s.push(r.value);if(e&&s.length===e)break}}catch(t){o=true;n=t}finally{try{if(!a&&i["return"]!=null)i["return"]()}finally{if(o)throw n}}return s}function Z(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}function U(t,e,s,a){t=t.filter((function(t,a){var o=e(t,a),n=s(t,a);return o!=null&&isFinite(o)&&n!=null&&isFinite(n)}));if(a){t.sort((function(t,s){return e(t)-e(s)}))}var o=t.length,n=new Float64Array(o),i=new Float64Array(o);var r=0,l=0,c,p,d;for(var f=0;f<o;){d=t[f];n[f]=c=+e(d,f,t);i[f]=p=+s(d,f,t);++f;r+=(c-r)/f;l+=(p-l)/f}for(var g=0;g<o;++g){n[g]-=r;i[g]-=l}return[n,i,r,l]}function Q(t,e,s,a){var o=0;for(var n=0,i=t.length;n<i;n++){var r=t[n],l=+e(r,n,t),c=+s(r,n,t);if(l!=null&&isFinite(l)&&c!=null&&isFinite(c)){a(l,c,o++)}}}function tt(t,e,s,a,o){var n=0,i=0;Q(t,e,s,(function(t,e){var s=e-o(t),r=e-a;n+=s*s;i+=r*r}));return 1-n/i}function et(t){return Math.atan2(t[1][1]-t[0][1],t[1][0]-t[0][0])*180/Math.PI}function st(t){return[(t[0][0]+t[1][0])/2,(t[0][1]+t[1][1])/2]}function at(t,e,s){var a=Math.log(e-t)*Math.LOG10E+1|0;var o=1*Math.pow(10,-a/2-1),n=1e4;var i=[l(t),l(e)],r=0;while(c(i)&&r<n){}return i;function l(t){return[t,s(t)]}function c(t){r++;var e=t.length;var s=false;for(var a=0;a<e-1;a++){var n=t[a],i=t[a+1],c=st([n,i]),p=l(c[0]),d=et([n,c]),f=et([n,p]),g=Math.abs(d-f);if(g>o){t.splice(a+1,0,p);s=true}}return s}}function ot(t,e,s,a){var o=a-t*t,n=Math.abs(o)<1e-24?0:(s-t*e)/o,i=e-n*t;return[i,n]}function nt(){var t=function t(e){return e[0]},e=function t(e){return e[1]},s;function a(a){var o=0,n=0,i=0,r=0,l=0,c=s?+s[0]:Infinity,p=s?+s[1]:-Infinity;Q(a,t,e,(function(t,e){++o;n+=(t-n)/o;i+=(e-i)/o;r+=(t*e-r)/o;l+=(t*t-l)/o;if(!s){if(t<c)c=t;if(t>p)p=t}}));var d=ot(n,i,r,l),f=B(d,2),g=f[0],m=f[1],h=function t(e){return m*e+g},u=[[c,h(c)],[p,h(p)]];u.a=m;u.b=g;u.predict=h;u.rSquared=tt(a,t,e,i,h);return u}a.domain=function(t){return arguments.length?(s=t,a):s};a.x=function(e){return arguments.length?(t=e,a):t};a.y=function(t){return arguments.length?(e=t,a):e};return a}function it(){var t=function t(e){return e[0]},e=function t(e){return e[1]},s;function a(a){var o=U(a,t,e),n=B(o,4),i=n[0],r=n[1],l=n[2],c=n[3],p=i.length;var d=0,f=0,g=0,m=0,h=0,u,y,x,v;for(u=0;u<p;){y=i[u];x=r[u++];v=y*y;d+=(v-d)/u;f+=(v*y-f)/u;g+=(v*v-g)/u;m+=(y*x-m)/u;h+=(v*x-h)/u}var b=0,S=0,T=s?+s[0]:Infinity,w=s?+s[1]:-Infinity;Q(a,t,e,(function(t,e){S++;b+=(e-b)/S;if(!s){if(t<T)T=t;if(t>w)w=t}}));var C=g-d*d,D=d*C-f*f,z=(h*d-m*f)/D,A=(m*C-h*f)/D,W=-z*d,O=function t(e){e=e-l;return z*e*e+A*e+W+c};var M=at(T,w,O);M.a=z;M.b=A-2*z*l;M.c=W-A*l+z*l*l+c;M.predict=O;M.rSquared=tt(a,t,e,b,O);return M}a.domain=function(t){return arguments.length?(s=t,a):s};a.x=function(e){return arguments.length?(t=e,a):t};a.y=function(t){return arguments.length?(e=t,a):e};return a}function rt(){var t=function t(e){return e[0]},e=function t(e){return e[1]},s=3,a;function o(o){if(s===1){var n=nt().x(t).y(e).domain(a)(o);n.coefficients=[n.b,n.a];delete n.a;delete n.b;return n}if(s===2){var i=it().x(t).y(e).domain(a)(o);i.coefficients=[i.c,i.b,i.a];delete i.a;delete i.b;delete i.c;return i}var r=U(o,t,e),l=B(r,4),c=l[0],p=l[1],d=l[2],f=l[3],g=c.length,m=[],h=[],u=s+1;var y=0,x=0,v=a?+a[0]:Infinity,b=a?+a[1]:-Infinity;Q(o,t,e,(function(t,e){++x;y+=(e-y)/x;if(!a){if(t<v)v=t;if(t>b)b=t}}));var S,T,w,C,D;for(S=0;S<u;++S){for(w=0,C=0;w<g;++w){C+=Math.pow(c[w],S)*p[w]}m.push(C);D=new Float64Array(u);for(T=0;T<u;++T){for(w=0,C=0;w<g;++w){C+=Math.pow(c[w],S+T)}D[T]=C}h.push(D)}h.push(m);var z=ct(h),A=function t(e){e-=d;var s=f+z[0]+z[1]*e+z[2]*e*e;for(S=3;S<u;++S){s+=z[S]*Math.pow(e,S)}return s},W=at(v,b,A);W.coefficients=lt(u,z,-d,f);W.predict=A;W.rSquared=tt(o,t,e,y,A);return W}o.domain=function(t){return arguments.length?(a=t,o):a};o.x=function(e){return arguments.length?(t=e,o):t};o.y=function(t){return arguments.length?(e=t,o):e};o.order=function(t){return arguments.length?(s=t,o):s};return o}function lt(t,e,s,a){var o=Array(t);var n,i,r,l;for(n=0;n<t;++n){o[n]=0}for(n=t-1;n>=0;--n){r=e[n];l=1;o[n]+=r;for(i=1;i<=n;++i){l*=(n+1-i)/i;o[n-i]+=r*Math.pow(s,i)*l}}o[0]+=a;return o}function ct(t){var e=t.length-1,s=[];var a,o,n,i,r;for(a=0;a<e;++a){i=a;for(o=a+1;o<e;++o){if(Math.abs(t[a][o])>Math.abs(t[a][i])){i=o}}for(n=a;n<e+1;++n){r=t[n][a];t[n][a]=t[n][i];t[n][i]=r}for(o=a+1;o<e;++o){for(n=e;n>=a;n--){t[n][o]-=t[n][a]*t[a][o]/t[a][a]}}}for(o=e-1;o>=0;--o){r=0;for(n=o+1;n<e;++n){r+=t[n][o]*s[n]}s[o]=(t[e][o]-r)/t[o][o]}return s}const pt=64;function dt(l){_(l);l.render=function(){const t=l.mainDiv.selectAll(":scope > div").data(l.charts,(t=>t?.id));t.exit().remove();t.each(l.renderChart);t.enter().append("div").style("vertical-align","top").each(l.renderChart)};l.renderChart=function(e){e.chartDiv=t(this);const s=l.settings;e.chartDiv.style("opacity",0).style("display","inline-block");e.chartDiv.on("mouseover",(t=>{if(!l.onClick)l.showTooltip(t,e)}));e.chartDiv.on("click",(t=>l.showTooltip(t,e)));e.svg=e.chartDiv.select("svg").empty()?e.chartDiv.append("svg"):e.chartDiv.select("svg");c(e,s);e.chartDiv.transition().duration(s.duration).style("opacity",1)};l.initAxes=function(t){if(t.data.samples.length==0)return;t.xAxisScale=e().domain([t.xMin,t.xMax]).range([l.axisOffset.x,l.settings.svgw+l.axisOffset.x]);t.axisBottom=j(t.xAxisScale);t.yAxisScale=e().domain([t.yMax,t.yMin]).range([l.axisOffset.y,l.settings.svgh+l.axisOffset.y]);t.zAxisScale=e().domain([t.zMin,t.zMax]).range([0,l.settings.svgd]);t.xScaleMin=t.xAxisScale(t.xMin);t.xScaleMax=t.xAxisScale(t.xMax);t.yScaleMin=t.xAxisScale(t.yMin);t.yScaleMax=t.yAxisScale(t.yMax);t.zScaleMin=t.xAxisScale(t.zMin);t.zScaleMax=t.zAxisScale(t.zMax);t.axisLeft=I(t.yAxisScale);const a=l.config.settings.sampleScatter.defaultColor;if(!l.config.startColor?.[t.id]){if(!l.config.startColor)l.config.startColor={};l.config.startColor[t.id]=s(a).brighter().brighter().toString()}if(!l.config.stopColor?.[t.id]){if(!l.config.stopColor)l.config.stopColor={};l.config.stopColor[t.id]=s(a).darker().toString()}if(l.config.colorTW?.q.mode==="continuous"){const[s,a]=t.cohortSamples.filter((t=>!l.config.colorTW.term.values||!(t.category in l.config.colorTW.term.values))).reduce(((t,e)=>[e.category<t[0]?e.category:t[0],e.category>t[1]?e.category:t[1]]),[t.cohortSamples[0].category,t.cohortSamples[0].category]);t.colorGenerator=e().domain([s,a]).range([l.config.startColor[t.id],l.config.stopColor[t.id]])}};function c(t,e){const s=t.svg;let a=Math.min(20*40/t.colorLegend.size,25);if(a<12)a=12;let o=t.colorLegend.size*a;if(t.colorLegend.get("Ref")?.sampleCount>0)o+=60;const n=l.config.scaleDotTW?200:100;l.legendHeight=Math.max(o,t.shapeLegend.size*30)+n;const i=l.charts.length==1?e.svgw+800:e.svgw+(l.config.shapeTW?600:350);s.transition().duration(e.duration).attr("width",i).attr("height",Math.max(e.svgh+100,l.legendHeight));p(t);if(l.is3D)l.render3DSerie(t);else if(l.is2DLarge)l.render2DSerieLarge(t);else{d(t,e.duration);l.renderLegend(t,a)}}function p(t){const e=t.svg;let s,a,o;if(e.select(".sjpcb-scatter-mainG").size()==0){t.mainG=e.append("g").attr("class","sjpcb-scatter-mainG");s=e.append("g").attr("class","sjpcb-scatter-axis");a=e.append("g").attr("class","sjpcb-scatter-labelsG");t.xAxis=s.append("g").attr("class","sjpcb-scatter-x-axis");t.yAxis=s.append("g").attr("class","sjpcb-scatter-y-axis").attr("transform",`translate(${l.axisOffset.x}, 0)`);t.mainG.append("rect").attr("class","zoom").attr("x",l.axisOffset.x).attr("y",l.axisOffset.y-l.settings.size).attr("width",l.settings.svgw).attr("height",l.settings.svgh).attr("fill","white");t.serie=t.mainG.append("g").attr("class","sjpcb-scatter-series");t.regressionG=t.mainG.append("g").attr("class","sjpcb-scatter-lowess");const n=`${Date.now()}`;const i=`sjpp_clip_${n}`;l.defs=e.append("defs");o=l.defs.append("clipPath").attr("id",i).append("rect");const r=l.defs.append("linearGradient").attr("id",`linear-gradient-${t.id}`).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");l.startGradient[t.id]=r.append("stop").attr("offset","0%").attr("stop-color",l.config.startColor[t.id]);l.stopGradient[t.id]=r.append("stop").attr("offset","100%").attr("stop-color",l.config.stopColor[t.id]);t.mainG.attr("clip-path",`url(#${i})`);t.legendG=e.append("g").attr("class","sjpcb-scatter-legend")}else{t.mainG=e.select(".sjpcb-scatter-mainG");t.serie=t.mainG.select(".sjpcb-scatter-series");t.regressionG=t.mainG.select(".sjpcb-scatter-lowess");s=e.select(".sjpcb-scatter-axis");a=e.select(".sjpcb-scatter-labelsG");t.xAxis=s.select(".sjpcb-scatter-x-axis");t.yAxis=s.select(".sjpcb-scatter-y-axis");t.legendG=e.select(".sjpcb-scatter-legend");o=e.select(`defs > clipPath > rect`)}t.xAxis.attr("transform",`translate(0, ${l.settings.svgh+l.axisOffset.y})`);t.legendG.attr("transform",`translate(${l.settings.svgw+l.axisOffset.x+50}, 20)`);if(t.axisBottom){t.xAxis.call(t.axisBottom);t.yAxis.call(t.axisLeft)}const n=Math.sqrt(l.settings.size);if(l.settings.showAxes&&!(l.is2DLarge||l.is3D)){o.attr("x",l.axisOffset.x).attr("y",0).attr("width",l.settings.svgw+2*n).attr("height",l.settings.svgh+l.axisOffset.y);s.style("opacity",1);if(l.config.term){let e=l.config.term.term.name;if(!l.config.colorTW&&!l.config.shapeTW&&!l.config.term0)e=`${e}, n=${t.cohortSamples.length}`;a.selectAll("*").remove();a.append("text").attr("transform",`translate(${l.axisOffset.x+l.settings.svgw/2}, ${l.settings.svgh+l.axisOffset.y+40})`).attr("text-anchor","middle").text(e);if(l.config.term0&&!l.config.colorTW&&!l.config.shapeTW){const e=`${t.id}, n=${t.cohortSamples.length}`;a.append("text").attr("transform",`translate(${l.axisOffset.x+l.settings.svgw/2}, ${l.settings.svgh+l.axisOffset.y+65})`).attr("text-anchor","middle").text(e)}a.append("text").attr("transform",`translate(${l.axisOffset.x-50}, ${l.settings.svgh/2+l.axisOffset.y}) rotate(-90)`).attr("text-anchor","middle").text(l.config.term2.term.name)}}else{s.style("opacity",0);o.attr("x",l.axisOffset.x-n).attr("y",0).attr("width",l.settings.svgw+2*n).attr("height",l.settings.svgh+l.axisOffset.y+n)}}function d(t,e){if(l.canvas)l.canvas.remove();const s=t.serie;const a=t.data;const o=s.selectAll('path[name="serie"]').data(a.samples);o.exit().remove();o.transition().duration(e).attr("name","serie").attr("transform",(e=>f(t,e))).attr("d",(e=>l.getShape(t,e))).attr("fill",(e=>l.getColor(e,t))).attr("stroke",(e=>l.getColor(e,t))).attr("stroke-width",(t=>l.getOpacity(t)==0?0:1)).style("fill-opacity",(t=>l.getOpacity(t)));o.enter().append("path").attr("name","serie").attr("transform",(e=>f(t,e))).attr("d",(e=>l.getShape(t,e))).attr("fill",(e=>l.getColor(e,t))).attr("stroke",(e=>l.getColor(e,t))).attr("stroke-width",(t=>l.getOpacity(t)==0?0:1)).style("fill-opacity",(t=>l.getOpacity(t))).transition().duration(e);l.mayRenderRegression()}l.processData=async function(){for(const t of l.charts){l.initAxes(t);const e=l.config.settings.sampleScatter.regression;if(!e||e=="None")continue;let s;const a=[];await t.cohortSamples.forEach((e=>{const s=t.xAxisScale(e.x);const o=t.yAxisScale(e.y);a.push({x:s,y:o})}));let o;if(e=="Polynomial"){s=rt().x((t=>t.x)).y((t=>t.y)).order(3);o=s(a)}else if(e=="Lowess"){const t=[],e=[];for(const s of a){t.push(s.x);e.push(s.y)}o=await l.app.vocabApi.getLowessCurve({coords:{X:t,Y:e}})}else{throw`unsupported regression type='${e}'`}t.regressionCurve=o}};l.mayRenderRegression=async function(){for(const t of l.charts){t.regressionG?.selectAll("*").remove();if(t.regressionCurve){const e=V().x((t=>t[0])).y((t=>t[1]));const s=t.regressionG.append("path");s.attr("d",e(t.regressionCurve)).attr("stroke","blue").attr("fill","none").style("stroke-width","2")}}};l.getColor=function(t,e){if(l.config.colorTW?.q.mode=="continuous"&&"sampleId"in t){const s=e.colorGenerator(t.category);return s}if(t.category=="Default")return l.config.settings.sampleScatter.defaultColor;const s=e.colorLegend.get(t.category);return s.color};l.getOpacity=function(t){if("sampleId"in t){if(l.filterSampleStr)if(!t.sample?.toLowerCase().includes(l.filterSampleStr.toLowerCase()))return 0;const e=t.hidden?.["category"]||t.hidden?.["shape"]?0:l.settings.opacity;return e}const e=l.settings.showRef?l.settings.opacity:0;return e};l.getShape=function(t,e,s=1){const a=t.shapeLegend.get(e.shape).shape%l.symbols.length;const o=!("sampleId"in e);if(!l.config.scaleDotTW||o){const t="sampleId"in e?l.settings.size:l.settings.refSize;return l.symbols[a].size(t*s/l.zoom)()}else{const o=l.settings.maxDotSize-l.settings.minDotSize;let n;if(l.settings.scaleDotOrder=="Ascending")n=l.settings.minDotSize+(e.scale-t.scaleMin)/(t.scaleMax-t.scaleMin)*o;else n=l.settings.maxDotSize-(e.scale-t.scaleMin)/(t.scaleMax-t.scaleMin)*o;const i=n*s/l.zoom;return l.symbols[a].size(i)()}};function f(t,e){const s=t.xAxisScale(e.x);const a=t.yAxisScale(e.y);const o=`translate(${s},${a})`;return o}l.lassoReset=t=>{const e=t.chartDiv.select(".sjpcb-scatter-mainG");if(t.lasso)t.lasso.items(e.select(".sjpcb-scatter-series").selectAll('path[name="serie"]')).targetArea(e).on("start",s).on("draw",a).on("end",o);function s(e){if(l.lassoOn){t.lasso.items().attr("d",(e=>l.getShape(t,e,1/2))).style("fill-opacity",(t=>l.getOpacity(t)!=0?.5:0)).classed("not_possible",true).classed("selected",false)}}function a(e){if(l.lassoOn){t.lasso.possibleItems().attr("d",(e=>l.getShape(t,e,2))).style("fill-opacity",(t=>l.getOpacity(t))).classed("not_possible",false).classed("possible",true);t.lasso.notPossibleItems().attr("d",(e=>l.getShape(t,e,1/2))).style("fill-opacity",(t=>l.getOpacity(t)!=0?.5:0)).classed("not_possible",true).classed("possible",false)}}function o(e){if(l.lassoOn){t.lasso.items().classed("not_possible",false).classed("possible",false);t.lasso.selectedItems().attr("d",(e=>l.getShape(t,e,2)));t.lasso.items().style("fill-opacity",(t=>l.getOpacity(t)));l.selectedItems=[];for(const e of t.lasso.selectedItems()){const t=e.__data__;if("sampleId"in t&&!(t.hidden["category"]||t.hidden["shape"]))l.selectedItems.push(e)}t.lasso.notSelectedItems().attr("d",(e=>l.getShape(t,e)));n(e.sourceEvent)}}function n(t){const e=l.selectedItems.map((t=>t.__data__));l.dom.tip.clear().hide();if(l.selectedItems.length==0)return;l.dom.tip.show(t.clientX,t.clientY);const s=l.dom.tip.d.append("div");s.append("div").attr("class","sja_menuoption sja_sharp_border").text(`List ${l.selectedItems.length} samples`).on("click",(t=>{l.dom.tip.hide();l.showTable({name:"Group "+(l.config.groups.length+1),items:e},t.clientX,t.clientY,true)}));s.append("div").attr("class","sja_menuoption sja_sharp_border").text("Add to a group").on("click",(async()=>{const t={name:"Group",items:e};const s=h([t]);const a=u(s);y(l.app,a,l.state.groups)}));s.append("div").attr("class","sja_menuoption sja_sharp_border").text("Add to a group and filter").on("click",(()=>{const t={name:"Group",items:e};const s=h([t]);const a=u(s);y(l.app,a,l.state.groups);l.addToFilter(s)}));if("sample"in e[0])s.append("div").attr("class","sja_menuoption sja_sharp_border").text("Show samples").on("click",(async t=>{const s=[];for(const t of e)s.push({sampleId:t.sampleId,sampleName:t.sample});l.app.dispatch({type:"plot_create",id:S(),config:{chartType:"sampleView",samples:s}});l.dom.tip.hide()}))}if(l.lassoOn){e.on(".zoom",null);e.on("mousedown.drag",null);e.call(t.lasso)}};l.addGroup=async function(t){t.plotId=l.id;await l.app.vocabApi.addGroup(t);l.dom.tip.hide()};l.setTools=function(){if(!l.charts[0])return;const t=l.config.settings.controls.isOpen;const e=l.dom.toolsDiv.style("background-color","white");e.selectAll("*").remove();let s="block";if(t)s="inline-block";const n=e.insert("div").style("display",s).style("margin","20px").attr("name","sjpp-reset-btn");a["restart"](n,{handler:x});const i=e.insert("div").style("display",s).style("margin","20px").attr("name","sjpp-zoom-in-btn");a["zoomIn"](i,{handler:u});const r=e.insert("div").style("display",s).style("margin","20px").attr("name","sjpp-zoom-out-btn");a["zoomOut"](r,{handler:y});const c=e.insert("div").style("display",s).style("margin","20px");const p=e.insert("div").style("display",s).style("margin","20px");if(!(l.is2DLarge||l.is3D)){a["search"](c,{handler:t=>l.searchSample(t)});a["lasso"](p,{handler:v,enabled:l.lassoOn})}l.dom.groupDiv=e.insert("div").style("display",s).style("margin","20px");const d=l.charts[0].mainG;const f=g().scaleExtent([.5,l.config.scaleDotTW?4:10]).on("zoom",h).filter((t=>{if(t.type==="wheel")return t.ctrlKey;return true}));if(l.config.scaleDotTW&&l.zoom>4)x();d.call(f);for(const t of l.charts){t.lasso=m();l.lassoReset(t)}l.updateGroupsButton();l.settings;function h(t){for(const e of l.charts){const s=t.transform.rescaleX(e.xAxisScale);const a=t.transform.rescaleY(e.yAxisScale);e.xAxis.call(e.axisBottom.scale(s));e.yAxis.call(e.axisLeft.scale(a));e.serie.attr("transform",t.transform);l.zoom=t.transform.scale(1).k;const o=e.serie.selectAll('path[name="serie"');o.attr("d",(t=>l.getShape(e,t)));if(l.lassoOn)e.lasso.selectedItems().attr("d",(t=>l.getShape(e,t,2)));if(l.config.scaleDotTW)l.drawScaleDotLegend(e)}}function u(){for(const t of l.charts)if(l.is2DLarge)l.zoom=l.zoom+.25;else f.scaleBy(t.mainG.transition().duration(750),1.5)}function y(){for(const t of l.charts)if(l.is2DLarge)l.zoom=l.zoom-.25;else f.scaleBy(t.mainG.transition().duration(750),.5)}function x(){for(const t of l.charts)if(l.is2DLarge)l.zoom=1;else t.mainG.transition().duration(750).call(f.transform,o);l.render()}function v(){l.lassoOn=!l.lassoOn;for(const t of l.charts){if(l.lassoOn){t.mainG.on(".zoom",null);t.mainG.call(t.lasso)}else{t.mainG.on("mousedown.drag",null);t.lasso.items().classed("not_possible",false);t.lasso.items().classed("possible",false);t.lasso.items().attr("r",l.settings.size).style("fill-opacity",(t=>l.getOpacity(t)));t.mainG.call(f);l.selectedItems=null}}p.select("*").remove();a["lasso"](p,{handler:v,enabled:l.lassoOn})}};l.updateGroupsButton=function(){l.dom.groupDiv.selectAll("*").remove();l.dom.tip.hide();if(l.config.groups.length==0)return;l.dom.groupDiv.append("button").style("border","none").style("background","transparent").style("padding",0).append("div").style("font-size","1.1em").html(`&#931${l.config.groups.length+1};`).on("click",(t=>{if(l.config.groups.length==1)l.showGroupMenu(t,l.config.groups[0]);else l.showGroupsMenu(t)}))};l.renderLegend=function(t,a){const o=t.legendG;o.selectAll("*").remove();let n=0;let i=25;if(!l.config.colorTW&&!l.config.shapeTW&&!l.config.colorColumn){if(l.config.scaleDotTW){t.scaleG=o.append("g").attr("transform",`translate(${n},${l.legendHeight-150})`);l.drawScaleDotLegend(t)}return}let r;let c=Math.min(.8,20/t.colorLegend.size);if(c<.5)c=.5;const p=o.style("font-size",`${c}em`);const d=l.config.term0?`${t.id}, n=${t.cohortSamples.length}`:`${t.cohortSamples.length} ${l.config.sampleType?l.config.sampleType+"s":"samples"}`;p.append("text").attr("x",0).attr("y",i).text(d).style("font-weight","bold");i+=a+10;if(l.config.colorTW||l.config.colorColumn){r=`${f(l.config.colorTW?.term?.name||l.config.colorColumn.name,l.config.shapeTW==undefined)}`;const c=t.colorLegend.get("Ref");if(l.config.colorTW?.term?.type=="geneVariant"&&!l.config.colorTW?.q.groupsetting.inuse)i=l.renderGeneVariantLegend(t,n,i,o,l.config.colorTW,"category",t.colorLegend);else{p.append("text").attr("id","legendTitle").attr("x",n).attr("y",i).text(r).style("font-weight","bold");i+=a;if(l.config.colorTW?.q?.mode==="continuous"){const s=150;const[o,n]=t.colorGenerator.domain();const r=e().domain([o,n]).range([0,s]);const c=(n-o)/4;const d=[o,o+c,o+2*c,o+3*c,n];const f=N(r).tickValues(d);p.append("g").attr("transform",`translate(0, 100)`).call(f);t.startRect=p.append("rect").attr("x",-25).attr("y",100).attr("width",20).attr("height",20).style("fill",l.config.startColor[t.id]).on("click",(e=>l.editColor(t,"startColor",t.startRect)));t.stopRect=p.append("rect").attr("x",s+5).attr("y",100).attr("width",20).attr("height",20).style("fill",l.config.stopColor[t.id]).on("click",(e=>l.editColor(t,"stopColor",t.stopRect)));p.append("rect").attr("x",0).attr("y",100).attr("width",s).attr("height",20).style("fill",`url(#linear-gradient-${t.id})`);i+=a}else{for(const[e,s]of t.colorLegend){if(e=="Ref")continue;const r=e;const c=l.config.colorTW?.q.hiddenValues?e in l.config.colorTW.q.hiddenValues:false;const[d,f]=g(p,s,r,n,i,c);if(!l.config.colorColumn){d.on("click",(a=>l.onLegendClick(t,o,"colorTW",e,a,s)));f.on("click",(a=>l.onLegendClick(t,o,"colorTW",e,a,s)))}i+=a}}}if(c?.sampleCount>0){i=i+a;const e=o.append("g");e.append("text").attr("x",n).attr("y",i).text("Reference").style("font-weight","bold");i=i+a;let r=l.symbols[0].size(64)();const p=o.append("g");p.append("path").attr("transform",(t=>`translate(${n}, ${i})`)).style("fill",c.color).attr("d",r).style("stroke",s(c.color).darker());p.on("click",(e=>l.onLegendClick(t,o,"colorTW","Ref",e,c)));const d=o.append("g").append("text").attr("x",n+10).attr("y",i).text(`n=${c.sampleCount}`).style("text-decoration",!l.settings.showRef?"line-through":"none").attr("alignment-baseline","middle");d.on("click",(e=>l.onLegendClick(t,o,"colorTW","Ref",e,c)))}}if(l.config.scaleDotTW){t.scaleG=o.append("g").attr("transform",`translate(${n},${l.legendHeight-100})`);l.drawScaleDotLegend(t)}if(l.config.shapeTW){n=!l.config.colorTW?0:l.config.colorTW.term.type=="geneVariant"&&!l.config.colorTW.q.groupsetting.inuse?300:200;i=60;r=`${f(l.config.shapeTW.term.name)}`;if(l.config.shapeTW.term.type=="geneVariant"&&!l.config.shapeTW.q.groupsetting.inuse)l.renderGeneVariantLegend(t,n,i,o,l.config.shapeTW,"shape",t.shapeLegend);else{const e=o.append("g");e.append("text").attr("x",n).attr("y",i).text(r).style("font-weight","bold");i+=a+10;const c="gray";for(const[r,p]of t.shapeLegend){if(r=="Ref")continue;const d=p.shape%l.symbols.length;const f=l.symbols[d].size(pt)();const g=r;const m=p.sampleCount;const h=l.config.shapeTW.q.hiddenValues?r in l.config.shapeTW.q.hiddenValues:false;const u=e.append("g");u.append("path").attr("transform",(t=>`translate(${n}, ${i})`)).style("fill",c).attr("d",f).style("stroke",s(c).darker());u.append("text").attr("x",n+10).attr("y",i).text(`${g}, n=${m}`).style("text-decoration",h?"line-through":"none").attr("alignment-baseline","middle");i+=a;u.on("click",(e=>l.onLegendClick(t,o,"shapeTW",r,e,p)))}}}function f(t,e=false){if(t.length>25&&!e)t=t.slice(0,25)+"...";return t}function g(e,a,n,i,r,c=false){const p=Math.min(5*40/t.colorLegend.size,5);const d=e.append("g");d.append("circle").attr("cx",i).attr("cy",r).attr("r",p).style("fill",a.color).style("stroke",s(a.color).darker());if(!l.config.colorColumn)d.on("click",(e=>l.onLegendClick(t,o,"colorTW",key,e,a)));const f=e.append("g");f.append("text").attr("name","sjpp-scatter-legend-label").attr("x",i+10).attr("y",r).text(`${n}, n=${a.sampleCount}`).style("text-decoration",c?"line-through":"none").attr("alignment-baseline","middle");return[d,f]}};l.drawScaleDotLegend=function(e){const s=e.scaleG;s.selectAll("*").remove();const a=Math.sqrt(l.settings.minDotSize)/2*l.zoom;const o=Math.sqrt(l.settings.maxDotSize)/2*l.zoom;const i=30*l.zoom;const r=l.settings.scaleDotOrder;const c=s.append("g");c.append("text").text(l.config.scaleDotTW.term.name).style("font-weight","bold");let p=e.scaleMin;if(p%1!=0)p=p.toFixed(1);let d=e.scaleMax;if(d%1!=0)d=d.toFixed(1);const f=s.append("g").attr("transform",`translate(${40},${30})`);const g=5+p.toString().length*7;const m=20;f.append("circle").attr("r",r=="Ascending"?a:o).style("fill","#aaa").style("stroke","#aaa").attr("transform",`translate(0,${m})`);f.append("text").attr("x",r=="Ascending"?-a-g:-o-g).attr("y",m+5).style("font-size",".8em").attr("text-anchor","start").text(p);const h=s.append("g");h.attr("transform",`translate(${i+40},${m+30})`).append("circle").style("fill","#aaa").style("stroke","#aaa").attr("r",r=="Ascending"?o:a);h.append("text").attr("x",r=="Ascending"?o+10:a+10).attr("y",5).style("font-size",".8em").text(d);if(r=="Ascending"){f.append("line").attr("x1",0).attr("y1",m-a).attr("x2",i).attr("y2",m-o).style("stroke","#aaa");f.append("line").attr("x1",0).attr("y1",m+a).attr("x2",i).attr("y2",m+o).style("stroke","#aaa")}else{f.append("line").attr("x1",0).attr("y1",m-o).attr("x2",i).attr("y2",m-a).style("stroke","#aaa");f.append("line").attr("x1",0).attr("y1",m+o).attr("x2",i).attr("y2",m+a).style("stroke","#aaa")}s.append("rect").attr("width",110*l.zoom).attr("height",50).attr("fill","transparent").on("click",(e=>{const s=new n({padding:"3px"});const a=s.d;a.append("label").text("Min:");const o=a.append("input").attr("type","number").attr("min","1").attr("max","100").style("width","50px").attr("value",l.settings.minDotSize).on("change",(()=>{let t=parseFloat(o.node().value);if(t<mt){t=mt;o.node().value=mt}l.config.settings.sampleScatter.minDotSize=t;l.app.dispatch({type:"plot_edit",id:l.id,config:l.config})}));a.append("label").text("Max:");const i=a.append("input").attr("type","number").attr("min","1").attr("max","1000").style("width","50px").attr("value",l.settings.maxDotSize).on("change",(()=>{let t=parseFloat(i.node().value);if(t>ht){t=ht;i.node().value=ht}l.config.settings.sampleScatter.maxDotSize=t;l.app.dispatch({type:"plot_edit",id:l.id,config:l.config})}));const c=s.d.append("div");c.append("label").text("Order: ");const p=["Ascending","Descending"];c.selectAll("input").data(p).enter().append("div").style("display","inline-block").each(d);function d(e){const s=t(this);const a=s.append("input").attr("type","radio").attr("id",e).attr("value",e).property("checked",(t=>t==r));s.append("label").text(e).attr("for",e);a.on("change",(t=>{l.config.settings.sampleScatter.scaleDotOrder=t.target.value;c.selectAll("input").nodes().find((e=>e.value!=t.target.value)).checked=false;l.app.dispatch({type:"plot_edit",id:l.id,config:l.config})}))}s.showunder(e.target)}))};l.editColor=function(t,e,a){const o=l.config[e][t.id];const i=new n({padding:"3px"});const r=i.clear().d.append("Label").text("Color:").append("input").attr("type","color").attr("value",s(o).formatHex()).on("change",(()=>{const s=r.node().value;l.changeGradientColor(t,e,a,s);i.hide()}));i.showunder(a.node(),false)};l.changeGradientColor=function(t,a,o,n){const i=s(n).formatHex();l.config[a][t.id]=i;o.style("fill",i);t.colorGenerator=e().range([l.config.startColor[t.id],l.config.stopColor[t.id]]);l.startGradient[t.id].attr("stop-color",l.config.startColor[t.id]);l.stopGradient[t.id].attr("stop-color",l.config.stopColor[t.id]);l.app.dispatch({type:"plot_edit",id:l.id,config:l.config})};l.renderGeneVariantLegend=function(t,e,a,o,n,c,p){const d=125;const f=n.term.name.length>25?n.term.name.slice(0,25)+"...":n.term.name;let g=`${f}, n=${t.cohortSamples.length}`;const m=o.append("g").style("font-size","0.9em");m.append("text").attr("id","legendTitle").attr("x",e).attr("y",a).text(g).style("font-weight","bold");e+=d;const h=t.cohortSamples[0]["cat_info"][c];for(const[f,g]of h.entries()){a+=25;const f=g.dt;const h=i[g.origin]?.label;const u=h?`${h[0]} ${r[f]}`:r[f];m.append("text").attr("x",e).attr("y",a-25).text(h?`${h} ${r[f]}`:r[f]).style("font-weight","bold");for(const[i,r]of p){if(i=="Ref")continue;if(!i.includes(u))continue;const p=i.split(", ")[0];const f=m.append("g");if(c=="shape"){const t=r.shape%l.symbols.length;f.append("path").attr("transform",(t=>`translate(${e-d}, ${a-5})`)).style("fill","gray").attr("d",l.symbols[t].size(64)()).style("stroke",s("gray").darker())}else{f.append("circle").attr("cx",e-d).attr("cy",a-5).attr("r",5).style("fill",r.color).style("stroke",s(r.color).darker());f.on("click",(e=>l.onLegendClick(t,o,"colorTW",i,e,r)))}const g=n.q.hiddenValues?i in n.q.hiddenValues:false;m.append("g").append("text").attr("x",e-d+10).attr("y",a).attr("name","sjpp-scatter-legend-label").style("text-decoration",g?"line-through":"none").text(p).on("click",(e=>l.onLegendClick(t,m,c=="shape"?"shapeTW":"colorTW",i,e,r)));const h=i.split(", ")[1];if(i.includes(u))m.append("text").attr("x",e).attr("y",a).text(`${r.sampleCount}${r.hasOrigin?h[0]:""}`);a+=25}}return a}}var ft=Object.freeze({__proto__:null,setRenderers:dt});function gt(t,e){const s=new n({padding:"5px"});const a=t.d.append("div").style("padding","5px");a.append("div").html("Select variables to plot").style("font-size","0.9rem");let o,i;const r=a.append("div").style("padding-top","5px").html("&nbsp;X&nbsp;&nbsp;");const l=r.append("div").attr("class","sja_filter_tag_btn add_term_btn").text("+").on("click",(t=>{f(l,(t=>o=t))}));const c=a.append("div").html("&nbsp;Y&nbsp;&nbsp;");const p=c.append("div").attr("class","sja_filter_tag_btn add_term_btn").text("+").on("click",(t=>{f(p,(t=>i=t))}));const d=a.append("div").style("float","right").style("padding","5px").insert("button").text("Submit").property("disabled",true).on("click",(()=>{e.dispatch({type:"plot_create",config:{chartType:"sampleScatter",term:{term:o,q:{mode:"continuous"}},term2:{term:i,q:{mode:"continuous"}},name:"Dynamic scatter"}});t.hide()}));function f(a,n){const r={tree:{usecase:{detail:"numeric",target:"sampleScatter"}}};const l=[];if(o)l.push(o);if(i)l.push(i);x(a,(t=>{n(t);s.hide();a.selectAll("*").remove();a.text(t.name);if(o!=null&&i!=null)d.property("disabled",false)}),e,t,r,false,false,l)}}const mt=9;const ht=300;class ut{constructor(){this.type="sampleScatter";this.lassoOn=false;const t=[z,A,W,O,M,k,F,L,K,E,J,Y,R];this.symbols=t.map((t=>D(t)));this.zoom=1;this.startGradient={};this.stopGradient={}}async init(e){const s=this.opts.holder.insert("div").style("display","inline-block");const a=s.insert("div").style("display","inline-block").attr("class","pp-termdb-plot-controls");this.mainDiv=this.opts.holder.insert("div").style("display","inline-block").style("vertical-align","top");const o=80;this.axisOffset={x:o,y:30};this.dom={header:this.opts.header,loadingDiv:this.opts.holder.append("div").style("position","absolute").style("left","45%").style("top","60%"),tip:new n({padding:"0px"}),tooltip:new n({padding:"2px",offsetX:10,offsetY:0}),controlsHolder:a,toolsDiv:s.insert("div")};this.settings={};if(this.dom.header)this.dom.header.html("Scatter Plot");T(this);dt(this);document.addEventListener("scroll",(t=>this?.dom?.tooltip?.hide()));t(".sjpp-output-sandbox-content").on("scroll",(t=>this.dom.tooltip.hide()))}getState(t){const e=t.plots.find((t=>t.id===this.id));if(!e){throw`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`}const s=v(t);return{config:e,termfilter:t.termfilter,supportedChartTypes:t.termdbConfig.supportedChartTypes[s],matrixplots:t.termdbConfig.matrixplots,vocab:t.vocab,termdbConfig:t.termdbConfig,groups:b(t)}}getDataRequestOpts(){const t=this.config;const e=[];if(t.term)e.push(t.term);if(t.term2)e.push(t.term2);const s={name:t.name,colorTW:t.colorTW,filter:this.getFilter(),coordTWs:e};if(t.colorColumn)s.colorColumn=t.colorColumn;if(t.shapeTW)s.shapeTW=t.shapeTW;if(t.scaleDotTW){if(!t.scaleDotTW.q)t.scaleDotTW.q={};t.scaleDotTW.q.mode="continuous";s.scaleDotTW=t.scaleDotTW}if(t.term0)s.divideByTW=t.term0;return s}async main(){this.config=JSON.parse(JSON.stringify(this.state.config));if(this.config.settings.sampleScatter.regression!=="None"&&this.config.term0){if(this.charts)for(const t of this.charts)t.chartDiv.selectAll("*").remove();this.dom.loadingDiv.style("display","block").html("Processing data...")}if(this.dom.header)this.dom.header.html(this.config.name+` <span style="opacity:.6;font-size:.7em;margin-left:10px;">SCATTER PLOT</span>`);c(this.settings,this.config.settings.sampleScatter);const t=this.getDataRequestOpts();if(t.coordTWs.length==1)return;const e=await this.app.vocabApi.getScatterData(t);if(e.error)throw e.error;this.charts=[];let s=0;for(const[t,a]of Object.entries(e)){if(!Array.isArray(a.samples))throw"data.samples[] not array";if(a.isLast)this.createChart(t,a,s);else this.createChart(t,a,0)}this.initRanges();this.is3D=this.config.term&&this.config.term0?.q.mode=="continuous";if(!this.config.colorColumn)await this.setControls();await this.processData();this.render();this.dom.loadingDiv.style("display","none");if(!this.is3D)this.setTools();this.dom.tip.hide()}createChart(t,e,s){const a=e.samples.filter((t=>"sampleId"in t));if(a.length>1e4)this.is2DLarge=true;const o=new Map(e.colorLegend);const n=new Map(e.shapeLegend);this.charts.splice(s,0,{id:t,data:e,cohortSamples:a,colorLegend:o,shapeLegend:n})}initRanges(){if(this.charts.length>1){const t=[];for(const e of this.charts)t.push(...e.data.samples);const e=t[0];const[s,a,o,n,i,r,l,c]=t.reduce(((t,e)=>[e.x<t[0]?e.x:t[0],e.x>t[1]?e.x:t[1],e.y<t[2]?e.y:t[2],e.y>t[3]?e.y:t[3],e.z<t[4]?e.z:t[4],e.z>t[5]?e.z:t[5],"scale"in e?e.scale<t[6]?e.scale:t[6]:Number.POSITIVE_INFINITY,"scale"in e?e.scale>t[7]?e.scale:t[7]:Number.NEGATIVE_INFINITY]),[e.x,e.x,e.y,e.y,e.z,e.z,e.scale,e.scale]);for(const t of this.charts){t.xMin=s;t.xMax=a;t.yMin=o;t.yMax=n;t.zMin=i;t.zMax=r;t.scaleMin=l;t.scaleMax=c}}else for(const t of this.charts){if(t.data.samples.length==0)return;const e=t.data.samples[0];const[s,a,o,n,i,r,l,c]=t.data.samples.reduce(((t,e)=>[e.x<t[0]?e.x:t[0],e.x>t[1]?e.x:t[1],e.y<t[2]?e.y:t[2],e.y>t[3]?e.y:t[3],e.z<t[4]?e.z:t[4],e.z>t[5]?e.z:t[5],"scale"in e?e.scale<t[6]?e.scale:t[6]:Number.POSITIVE_INFINITY,"scale"in e?e.scale>t[7]?e.scale:t[7]:Number.NEGATIVE_INFINITY]),[e.x,e.x,e.y,e.y,e.z,e.z,e.scale,e.scale]);t.xMin=s;t.xMax=a;t.yMin=o;t.yMax=n;t.zMin=i;t.zMax=r;t.scaleMin=l;t.scaleMax=c}}async setControls(){this.dom.controlsHolder.selectAll("*").remove();const t=this.charts[0]?.data.samples.find((t=>!("sampleId"in t)))||false;const e={type:"term",configKey:"scaleDotTW",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"numeric"},title:"Scale sample by term value",label:"Scale by",vocabApi:this.app.vocabApi,numericEditMenuVersion:["continuous"]};const s={type:"term",configKey:"shapeTW",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"shapeTW"},title:"Categories to assign a shape",label:"Shape",vocabApi:this.app.vocabApi};const a={label:"Sample area",type:"number",chartType:"sampleScatter",settingsKey:"size",title:"Sample area, in square pixels",min:0};const o={label:"Min area",type:"number",chartType:"sampleScatter",settingsKey:"minDotSize",title:"Minimum area, in square pixels",min:mt,max:ht};const n={label:"Max area",type:"number",chartType:"sampleScatter",settingsKey:"maxDotSize",title:"Maximum area, in square pixels",min:mt,max:ht};const i={label:"Scale order",type:"radio",chartType:"sampleScatter",settingsKey:"scaleDotOrder",options:[{label:"Ascending",value:"Ascending"},{label:"Descending",value:"Descending"}]};const r={label:"Reference size",type:"number",chartType:"sampleScatter",settingsKey:"refSize",title:"It represents the area of the reference symbol in square pixels",min:0};const l={boxLabel:"Visible",label:"Show axes",type:"checkbox",chartType:"sampleScatter",settingsKey:"showAxes",title:`Option to show/hide plot axes`};const c=[{type:"term",configKey:"colorTW",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"colorTW"},title:"Categories to color the samples",label:"Color",vocabApi:this.app.vocabApi,numericEditMenuVersion:["continuous","discrete"]},{label:"Opacity",type:"number",chartType:"sampleScatter",settingsKey:"opacity",title:"It represents the opacity of the symbols",min:0,max:1,step:.1},{label:"Chart width",type:"number",chartType:"sampleScatter",settingsKey:"svgw"},{label:"Chart height",type:"number",chartType:"sampleScatter",settingsKey:"svgh"}];if(this.config.sampleCategory){const t=Object.values(this.config.sampleCategory.tw.term.values).map((t=>({label:t.label||t.key,value:t.key})));if(this.config.sampleCategory.order)t.sort(((t,e)=>{const s=this.config.sampleCategory.order.indexOf(t.value);const a=this.config.sampleCategory.order.indexOf(e.value);if(s<a)return-1;return 1}));if(!this.settings.sampleCategory)this.settings.sampleCategory=this.config.sampleCategory.defaultValue||"";t.push({label:"All",value:""});const e={label:"Sample type",type:"dropdown",chartType:"sampleScatter",settingsKey:"sampleCategory",options:t};c.push(e)}if(!this.is2DLarge){c.unshift({type:"term",configKey:"term0",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"term0"},title:"Categories to divide by",label:this.config.term0?.q?.mode=="continuous"?"Z":"Divide by",vocabApi:this.app.vocabApi,numericEditMenuVersion:this.app.hasWebGL?.()?["discrete","continuous"]:["discrete"],processInput:t=>{if(t?.term.type=="integer"||t?.term.type=="float")t.q={mode:"continuous"}}})}else{c.push({label:"Sample size",type:"number",chartType:"sampleScatter",settingsKey:"threeSize",title:"Sample size",min:0,max:1,step:.001}),c.push({label:"Field of Vision",type:"number",chartType:"sampleScatter",settingsKey:"threeFOV",title:"Field of Vision",min:50,max:90,step:1})}if(this.config.term){c.unshift(...[{type:"term",configKey:"term",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"numeric"},title:"X coordinate to plot the samples",label:"X",vocabApi:this.app.vocabApi,menuOptions:"!remove",numericEditMenuVersion:["continuous"]},{type:"term",configKey:"term2",chartType:"sampleScatter",usecase:{target:"sampleScatter",detail:"numeric"},title:"Y coordinate to plot the samples",label:"Y",vocabApi:this.app.vocabApi,menuOptions:"!remove",numericEditMenuVersion:["continuous"]}]);if(!this.is3D){c.splice(4,0,s);c.splice(5,0,e);if(this.config.scaleDotTW){c.splice(6,0,o);c.splice(7,0,n);c.splice(8,0,i);if(t)c.splice(9,0,r)}else{c.splice(6,0,a);if(t)c.splice(7,0,r)}c.push({label:"Show regression",type:"dropdown",chartType:"sampleScatter",settingsKey:"regression",options:[{label:"None",value:"None"},{label:"Lowess",value:"Lowess"},{label:"Polynomial",value:"Polynomial"}]})}else{c.push({label:"Chart depth",type:"number",chartType:"sampleScatter",settingsKey:"svgd"});c.push({label:"Field of vision",title:"Camera field of view, in degrees",type:"number",chartType:"sampleScatter",settingsKey:"fov"})}c.push(l);c.push({label:"Default color",type:"color",chartType:"sampleScatter",settingsKey:"defaultColor"})}else if(!this.is2DLarge){c.splice(2,0,s);c.splice(3,0,e);if(this.config.scaleDotTW){c.splice(4,0,o);c.splice(5,0,n);c.splice(6,0,i);if(t)c.splice(7,0,r)}else{c.splice(4,0,a);if(t)c.splice(5,0,r)}c.push(l)}this.components={controls:await f({app:this.app,id:this.id,holder:this.dom.controlsHolder,inputs:c})};this.components.controls.on("downloadClick.scatter",(()=>{if(this.is2DLarge||this.is3D){const t=this.canvas.toDataURL("image/png");yt(t)}else for(const t of this.charts)w(t.svg,"scatter.svg",this.opts.holder.node())}))}getFilter(){const t={type:"tvslst",in:true,join:"and",lst:[]};const e="sampleCategory"in this.settings?this.settings.sampleCategory:this.config.sampleCategory?.defaultValue;if(e){const s=this.config.sampleCategory.tw;t.lst.push({type:"tvs",tvs:{term:s.term,values:[{key:e}]}})}const s=C([this.state.termfilter.filter,t]);return s}}function yt(t){const e=document.createElement("a");e.setAttribute("download","image");document.body.appendChild(e);e.click();e.remove();e.href=t;e.click();e.remove()}async function xt(t,e){try{if(t.colorTW)await d(t.colorTW,e.vocabApi);if(t.shapeTW)await d(t.shapeTW,e.vocabApi);if(t.term)await d(t.term,e.vocabApi);if(t.term2)await d(t.term2,e.vocabApi);if(t.term0)await d(t.term0,e.vocabApi);if(t.scaleDotTW)await d(t.scaleDotTW,e.vocabApi);if(t.sampleCategory)await d(t.sampleCategory.tw,e.vocabApi);let s=Tt();if(t.settings)c(s,t.settings);if(!t.term&&!t.term2)s.showAxes=false;const a={groups:[],settings:{controls:{isOpen:false},sampleScatter:s}};const o=c(a,t);if(o.term0?.q?.mode=="continuous"&&!e.hasWebGL())throw"Can not load Z/Divide by term in continuous mode as WebGL is not supported";return o}catch(t){console.log(t);throw`${t} [sampleScatter getPlotConfig()]`}}const vt=l(ut);const bt=vt;function St(t,e){const s=t.append("div");if(e.state.termdbConfig.scatterplots)for(const t of e.state.termdbConfig.scatterplots){s.append("div").attr("class","sja_menuoption sja_sharp_border").text(t.name).on("click",(()=>{let s={chartType:"sampleScatter",name:t.name};if(t.sampleCategory)s.sampleCategory={tw:JSON.parse(JSON.stringify(t.sampleCategory.tw)),order:t.sampleCategory.order,defaultValue:t.sampleCategory.defaultValue};if(t.sampleType)s.sampleType=t.sampleType;if(t.colorTW)s.colorTW=JSON.parse(JSON.stringify(t.colorTW));else if(t.colorColumn)s.colorColumn=JSON.parse(JSON.stringify(t.colorColumn));if("shapeTW"in t)s.shapeTW=JSON.parse(JSON.stringify(t.shapeTW));if(t.settings)s.settings=JSON.parse(JSON.stringify(t.settings));e.app.dispatch({type:"plot_create",config:s});e.dom.tip.hide()}))}s.append("div");if(!e.state.termdbConfig.hiddenChartTypes?.includes("dynamicScatter"))gt(e.dom.tip,e.app)}function Tt(){return{size:16,minDotSize:9,maxDotSize:144,scaleDotOrder:"Ascending",refSize:9,svgw:500,svgh:500,svgd:500,axisTitleFontSize:16,showAxes:true,showRef:true,opacity:.8,defaultColor:p,regression:"None",fov:50,threeSize:.002,threeFOV:70}}async function wt(t,e,s){const a={holder:t,state:{vocab:e.vocab,plots:[{chartType:"sampleScatter",subfolder:"plots",name:s.name,colorTW:s.colorTW,sampleType:s.sampleType,sampleCategory:{tw:JSON.parse(JSON.stringify(s.sampleCategory.tw)),order:s.sampleCategory.order,defaultValue:s.sampleCategory.defaultValue}}]}};const o=await import("./plot.app-91a1d78d.js");await o.appInit(a)}var Ct=Object.freeze({__proto__:null,minDotSize:mt,maxDotSize:ht,downloadImage:yt,getPlotConfig:xt,scatterInit:vt,componentInit:bt,makeChartBtnMenu:St,getDefaultScatterSettings:Tt,renderScatter:wt});export{Ct as a,Tt as g,ft as s};
@@ -1 +0,0 @@
1
- import{bS as e,bQ as n}from"./app-f91922b4.js";function o(o){let t=0;for(let f=1;f<o.length;f++){const i=o[f];const r=o[t];if(i.isskipexon&&r.isaltexon){t=f;continue}if(i.frame==e&&r.framenocheck){t=f;continue}if(i.frame==n&&r.frame!=n){t=f;continue}}return t}export{o as e};
@@ -1 +0,0 @@
1
- import{aD as t}from"./app-f91922b4.js";import{b as e}from"./termsetting-9a7511e6.js";import{getHandler as i}from"./numeric.toggle-5316211b.js";import"path";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";function o(o){return{showEditMenu(e){return t(this,void 0,void 0,(function*(){const t=yield i(o);yield t.showEditMenu(e)}))},getPillStatus(){},getPillName(t){return e(o,t)}}}function r(t,e){}export{r as fillTW,o as getHandler};
@@ -1 +0,0 @@
1
- import{aN as t,l as e,q as n}from"./app-f91922b4.js";import{addBrushes as s,addNewBrush as a}from"./tvs.density-9fdae0cc.js";import{v as r}from"./violinRenderer-688abcb2.js";import"./brush-db0ed33a.js";import"./pointer-c7475677.js";import"./nodrag-777a34a5.js";import"./FilterRxComp-0e75dd8d.js";import"./table-d6c411fd.js";import"./axis-6cb4f314.js";import"./line-264f8f9e.js";import"./constant-426a1483.js";import"./basis-3870f5ba.js";class i{constructor(t,e,n){this.input=t.append("input").attr("name","rangeInput").attr("title",`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=o(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 o(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 l={type:"numeric",term_name_gen:p,get_pill_label:u,getSelectRemovePos:m,fillMenu:c,setTvsDefaults:g};function p(t){const e=t.term.name;return e.length<26?e:'<label title="'+e+'">'+e.substring(0,24)+"..."+"</label>"}function u(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:d(e,t.term)}}return{txt:t.ranges.length+" intervals"}}function d(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>`}let a,r;const i=n.valueConversion;if(i){if("start"in e)a=t(e.start,i.fromUnit,i.toUnit,i.scaleFactor);if("stop"in e)r=t(e.stop,i.fromUnit,i.toUnit,i.scaleFactor)}else{a=e.start;r=e.stop}if(e.startunbounded)return`${s} ${e.stopinclusive?"&le;":"&lt;"} ${r}`;if(e.stopunbounded)return`${s} ${e.startinclusive?"&ge;":"&gt;"} ${a}`;return`${a} \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${r}`}function m(t,e){return t-e.ranges.slice(0,t).filter((t=>t.start||t.stop)).length}async function c(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({term:{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=f(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){b(t,i);return}t.vr=new r(t.num_obj.num_div,t.num_obj.density_data);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);y(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=()=>y(t);a(t,l.length?"end":"center",e)}));if(!l.length){const e=()=>y(t);a(t,"center",e)}t.num_obj.brushes.forEach((t=>t.init()));await _(t,i,n)}function f(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 g(t){if(!t.ranges)t.ranges=[]}function b(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 o=a.append("table");const l=o.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 i(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 y(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 o=a.range_tr;const l=t.num_obj.xscale;o.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=o.append("td").style("width","150px");a.rangeInput=new i(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{x(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);y(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 _(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{x(s)}catch(t){window.alert(t);return}t.opts.callback(s)}}catch(t){window.alert(t)}};t.makeValueTable(o,e,i,l).node()}function x(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{f as convertViolinData,l as handler};