@sjcrh/proteinpaint-client 2.33.1 → 2.34.1-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/{2dmaf-f0ea88d5.js → 2dmaf-6e863e4d.js} +1 -1
  2. package/dist/{DEanalysis-d335fc7c.js → DEanalysis-da02484f.js} +1 -1
  3. package/dist/{Disco-54d3b565.js → Disco-b490d835.js} +1 -1
  4. package/dist/Disco.UI-78723116.js +1 -0
  5. package/dist/{app-b772bf1c.js → app-13ba2af2.js} +1 -1
  6. package/dist/{app-74668360.js → app-85b2b4c3.js} +1 -1
  7. package/dist/app-9cb80ed3.js +1 -0
  8. package/dist/app.js +1 -1
  9. package/dist/{barchart-6ff26962.js → barchart-88f9024c.js} +1 -1
  10. package/dist/{barchart.events-be9537d4.js → barchart.events-68defcca.js} +1 -1
  11. package/dist/{bars.renderer-58cd0637.js → bars.renderer-b743ff28.js} +1 -1
  12. package/dist/{block-6cf8fde0.js → block-ca796307.js} +1 -1
  13. package/dist/{block.ds.gmcustomdata-08fdd86a.js → block.ds.gmcustomdata-f4d39ff9.js} +1 -1
  14. package/dist/block.lazyload-fb1e262e.js +1 -0
  15. package/dist/{block.legend-dc666894.js → block.legend-6f173560.js} +1 -1
  16. package/dist/{block.mds-bd3033f1.js → block.mds-74d33d0f.js} +1 -1
  17. package/dist/{block.mds.cnv-aefcf810.js → block.mds.cnv-a48a7a0a.js} +1 -1
  18. package/dist/{block.mds.expressionrank-c9c551c6.js → block.mds.expressionrank-1f73b91d.js} +1 -1
  19. package/dist/{block.mds.expressionstat-573f58be.js → block.mds.expressionstat-89427972.js} +1 -1
  20. package/dist/{block.mds.geneboxplot-4e62f074.js → block.mds.geneboxplot-d403673d.js} +1 -1
  21. package/dist/{block.mds.junction-4f110103.js → block.mds.junction-5ac3b5a8.js} +1 -1
  22. package/dist/{block.mds.svcnv-856ba6a2.js → block.mds.svcnv-330c4b40.js} +1 -1
  23. package/dist/{block.mds.svcnv.share-6d58cc78.js → block.mds.svcnv.share-616bc0a0.js} +1 -1
  24. package/dist/{block.mds2-eaaa33d7.js → block.mds2-14d4efa0.js} +1 -1
  25. package/dist/{block.svg-7b832779.js → block.svg-833d50e5.js} +1 -1
  26. package/dist/{block.tk.aicheck-4a934145.js → block.tk.aicheck-9a30ad3f.js} +1 -1
  27. package/dist/{block.tk.ase-81c1a9b4.js → block.tk.ase-2a681e8e.js} +1 -1
  28. package/dist/{block.tk.bam-4160b404.js → block.tk.bam-3ed8ce4e.js} +1 -1
  29. package/dist/block.tk.bam.gdc-c6f3188b.js +1 -0
  30. package/dist/{block.tk.bedgraphdot-0649a53f.js → block.tk.bedgraphdot-516cf618.js} +1 -1
  31. package/dist/{block.tk.bigwig.ui-5c4d52a3.js → block.tk.bigwig.ui-02e74c07.js} +1 -1
  32. package/dist/{block.tk.hicstraw-0555c46b.js → block.tk.hicstraw-bf9ac888.js} +1 -1
  33. package/dist/{block.tk.junction-33413524.js → block.tk.junction-327c987c.js} +1 -1
  34. package/dist/{block.tk.junction.textmatrixui-56761c4e.js → block.tk.junction.textmatrixui-4630ca54.js} +1 -1
  35. package/dist/{block.tk.ld-72541265.js → block.tk.ld-14854b58.js} +1 -1
  36. package/dist/{block.tk.menu-c6c0d358.js → block.tk.menu-c736069f.js} +1 -1
  37. package/dist/{block.tk.pgv-6454c603.js → block.tk.pgv-34fbf02f.js} +1 -1
  38. package/dist/{boxplot-0224d78b.js → boxplot-089e25c9.js} +1 -1
  39. package/dist/{brush-e69df665.js → brush-d4d1ea46.js} +1 -1
  40. package/dist/{categorical-80a547ed.js → categorical-c003e308.js} +1 -1
  41. package/dist/{condition-d825d430.js → condition-89e2f904.js} +1 -1
  42. package/dist/{controls-0094d967.js → controls-3cb1bd88.js} +1 -1
  43. package/dist/{controls.btns-b42caa27.js → controls.btns-12f8bc68.js} +1 -1
  44. package/dist/{controls.config-04cd855c.js → controls.config-d686d170.js} +1 -1
  45. package/dist/{controls.divide-a0ebbf60.js → controls.divide-0744003d.js} +1 -1
  46. package/dist/{controls.overlay-890343fb.js → controls.overlay-f7a286d4.js} +1 -1
  47. package/dist/{controls.term1-5a40be14.js → controls.term1-62f50d05.js} +1 -1
  48. package/dist/{cuminc-e727fb97.js → cuminc-c5805dcf.js} +1 -1
  49. package/dist/{dataDownload-3d122ceb.js → dataDownload-ccf90a68.js} +1 -1
  50. package/dist/{databrowser.ui-a517ac29.js → databrowser.ui-8365bd49.js} +1 -1
  51. package/dist/{density-3a818d2f.js → density-7cc16663.js} +1 -1
  52. package/dist/{densityplot-5d01289f.js → densityplot-1b4aa332.js} +1 -1
  53. package/dist/{dictionary-9eb8e2e6.js → dictionary-c5a8e23d.js} +1 -1
  54. package/dist/{drag-50a81f33.js → drag-3570a727.js} +1 -1
  55. package/dist/{e2pca-285eee53.js → e2pca-3143f6f8.js} +1 -1
  56. package/dist/{ep-204d3d17.js → ep-0db82bdf.js} +1 -1
  57. package/dist/{filter-fe17a5ae.js → filter-b029f9b0.js} +1 -1
  58. package/dist/{fusion.parse-72f21d3f.js → fusion.parse-0631b831.js} +1 -1
  59. package/dist/{gdc.maf-e53284e2.js → gdc.maf-ca4bbb68.js} +1 -1
  60. package/dist/gdc.singleCell-ea605723.js +1 -0
  61. package/dist/{geneExpression-3acc8b16.js → geneExpression-817d216f.js} +1 -1
  62. package/dist/{geneSearch4GDCmds3-d220570e.js → geneSearch4GDCmds3-8fc03bd9.js} +1 -1
  63. package/dist/{geneVariant-a5890e4f.js → geneVariant-f0441b77.js} +1 -1
  64. package/dist/{genefusion.ui-478ab612.js → genefusion.ui-d8028441.js} +1 -1
  65. package/dist/{genomeBrowser-9cb821bd.js → genomeBrowser-7f251bca.js} +1 -1
  66. package/dist/{genomeBrowser.controls-d5724bd0.js → genomeBrowser.controls-6c3478e3.js} +1 -1
  67. package/dist/{groupsetting-fe6ca8e3.js → groupsetting-1dec6d16.js} +1 -1
  68. package/dist/hic.straw-bdcb4aa3.js +1 -0
  69. package/dist/{hierCluster-c3f9f76d.js → hierCluster-bc3af06e.js} +1 -1
  70. package/dist/{html.legend-754ff41a.js → html.legend-0ca9ffcd.js} +1 -1
  71. package/dist/{lasso-c23aaebf.js → lasso-a9919628.js} +1 -1
  72. package/dist/launch.adhoc-7359333b.js +1 -0
  73. package/dist/{launchGdcHierCluster-efb4a585.js → launchGdcHierCluster-c199b975.js} +1 -1
  74. package/dist/{launchGdcMatrix-b0da2bcb.js → launchGdcMatrix-98a8237c.js} +1 -1
  75. package/dist/{legacyDataset-20d84057.js → legacyDataset-40258cc4.js} +1 -1
  76. package/dist/{log-81a59f8f.js → log-c177a360.js} +1 -1
  77. package/dist/{maftimeline-4a7ecfae.js → maftimeline-ebf3f288.js} +1 -1
  78. package/dist/{matrix-4e476f5b.js → matrix-f54a707a.js} +1 -1
  79. package/dist/{matrix.cells-3c1d8b5a.js → matrix.cells-929606ff.js} +1 -1
  80. package/dist/{matrix.cluster-c8ded832.js → matrix.cluster-3c129b2c.js} +1 -1
  81. package/dist/{matrix.config-ce521c8a.js → matrix.config-5f8b0dc4.js} +1 -1
  82. package/dist/{matrix.controls-a63f74db.js → matrix.controls-58f6a281.js} +1 -1
  83. package/dist/{matrix.data-8b5e0859.js → matrix.data-09b64968.js} +1 -1
  84. package/dist/{matrix.dom-3594580f.js → matrix.dom-309fa2ea.js} +1 -1
  85. package/dist/matrix.interactivity-d7c321c7.js +1 -0
  86. package/dist/{matrix.layout-cfb3e8d3.js → matrix.layout-d0ed3cae.js} +1 -1
  87. package/dist/{matrix.legend-92585feb.js → matrix.legend-c5a6ace1.js} +1 -1
  88. package/dist/{matrix.renderers-9e0431c0.js → matrix.renderers-b861ff52.js} +1 -1
  89. package/dist/{matrix.serieses-0ada9cb7.js → matrix.serieses-19395c5c.js} +1 -1
  90. package/dist/{mavb-af7e0d70.js → mavb-48ca3256.js} +1 -1
  91. package/dist/{mds.fimo-bb46844b.js → mds.fimo-5873ae68.js} +1 -1
  92. package/dist/{mds.samplescatterplot-cff2565c.js → mds.samplescatterplot-21107806.js} +1 -1
  93. package/dist/{mds.survivalplot-e0a848e0.js → mds.survivalplot-215c105e.js} +1 -1
  94. package/dist/{mdsjsonform-4015f916.js → mdsjsonform-c0d96a00.js} +1 -1
  95. package/dist/{nodrag-dc7e72f0.js → nodrag-29db6d44.js} +1 -1
  96. package/dist/{numeric-721c93c2.js → numeric-ae285ff2.js} +1 -1
  97. package/dist/numeric.binary-953f5fbe.js +1 -0
  98. package/dist/{numeric.continuous-87dbbf87.js → numeric.continuous-0e9d94d3.js} +1 -1
  99. package/dist/{numeric.discrete-ad3f017c.js → numeric.discrete-50d36844.js} +1 -1
  100. package/dist/{numeric.spline-6bb2d3af.js → numeric.spline-f9fc56d4.js} +1 -1
  101. package/dist/{numeric.toggle-c713239c.js → numeric.toggle-5678c346.js} +1 -1
  102. package/dist/{plot.2dvaf-6e05554d.js → plot.2dvaf-37ef4174.js} +1 -1
  103. package/dist/plot.app-d6781262.js +1 -0
  104. package/dist/{plot.barplot-e684d8ca.js → plot.barplot-08f2d8b9.js} +1 -1
  105. package/dist/{plot.boxplot-e8473873.js → plot.boxplot-fcf5153f.js} +1 -1
  106. package/dist/{plot.disco-078d9bd5.js → plot.disco-d18a6f8c.js} +1 -1
  107. package/dist/{plot.ssgq-9457a9c4.js → plot.ssgq-d40efbf0.js} +1 -1
  108. package/dist/{plot.vaf2cov-7bd522df.js → plot.vaf2cov-2db1954c.js} +1 -1
  109. package/dist/{polar-52622efd.js → polar-43225a6a.js} +1 -1
  110. package/dist/profileBarchart-cf01bc77.js +1 -0
  111. package/dist/profilePlot-e7bb31e2.js +1 -0
  112. package/dist/profilePolar-510b85da.js +1 -0
  113. package/dist/profileRadar-ccd90d2e.js +1 -0
  114. package/dist/{profileRadarFacility-9de3ae88.js → profileRadarFacility-3a4d0d85.js} +1 -1
  115. package/dist/recover-0e6797ef.js +1 -0
  116. package/dist/{regression.inputs-e10f0afd.js → regression.inputs-a844d04e.js} +1 -1
  117. package/dist/{regression.inputs.values.table-db762e5c.js → regression.inputs.values.table-d774a809.js} +1 -1
  118. package/dist/{regression.results-954bbc16.js → regression.results-d471a9b6.js} +1 -1
  119. package/dist/{renderPvalueTable-5ea5621d.js → renderPvalueTable-080f2471.js} +1 -1
  120. package/dist/{sampleScatter-29f34891.js → sampleScatter-d7cf8ff5.js} +1 -1
  121. package/dist/sampleScatter.interactivity-f43434a6.js +1 -0
  122. package/dist/sampleView-040a597e.js +1 -0
  123. package/dist/{samplelst-e309317a.js → samplelst-39112d69.js} +1 -1
  124. package/dist/{samplematrix-642e752f.js → samplematrix-c941e2af.js} +1 -1
  125. package/dist/{scatter-4dfa091b.js → scatter-a80b5aa2.js} +1 -1
  126. package/dist/{selectGenomeWithTklst-4ac515f5.js → selectGenomeWithTklst-d13ac56e.js} +1 -1
  127. package/dist/singleCellView-03d152d9.js +1 -0
  128. package/dist/{singlecell-7492996e.js → singlecell-689f2e3c.js} +1 -1
  129. package/dist/{snplocus-b1b13b0b.js → snplocus-958b48a1.js} +1 -1
  130. package/dist/{snplst-04ac35f2.js → snplst-3a07d5c1.js} +1 -1
  131. package/dist/{spliceevent.a53ss.diagram-44f74621.js → spliceevent.a53ss.diagram-66d89320.js} +1 -1
  132. package/dist/{spliceevent.exonskip.diagram-c1397e0a.js → spliceevent.exonskip.diagram-3f18800e.js} +1 -1
  133. package/dist/{spliceevent.exonskip.getdefault-a868b112.js → spliceevent.exonskip.getdefault-825ec5a4.js} +1 -1
  134. package/dist/{spliceevent.noeventdiagram-e598ce84.js → spliceevent.noeventdiagram-21257124.js} +1 -1
  135. package/dist/{spliceevent.phrase-0531197e.js → spliceevent.phrase-4926e5fb.js} +1 -1
  136. package/dist/{stattable-35ba70c3.js → stattable-0a3a4d28.js} +1 -1
  137. package/dist/{style.gdc-1588b0c1.js → style.gdc-1607c7e2.js} +1 -1
  138. package/dist/{summary-5d5c09c1.js → summary-2a42740b.js} +1 -1
  139. package/dist/{sunburst-ed9c2da0.js → sunburst-26c9c3be.js} +1 -1
  140. package/dist/survival-a193466a.js +1 -0
  141. package/dist/{survival-45926bb6.js → survival-d694d41d.js} +1 -1
  142. package/dist/{svg.download-d60aac16.js → svg.download-51b56229.js} +1 -1
  143. package/dist/{svg.legend-91a50921.js → svg.legend-015a3f9f.js} +1 -1
  144. package/dist/{svgraph-bc456e9a.js → svgraph-de7c048d.js} +1 -1
  145. package/dist/{svmr-0da8e4c5.js → svmr-5f35e717.js} +1 -1
  146. package/dist/{table-5f1900ff.js → table-a2f45430.js} +1 -1
  147. package/dist/table-f77bad81.js +1 -0
  148. package/dist/{termInfo-d5a8bd35.js → termInfo-4bc50e85.js} +1 -1
  149. package/dist/{termsetting-9e4e4d20.js → termsetting-5c4348fa.js} +1 -1
  150. package/dist/tk-89acbe40.js +1 -0
  151. package/dist/{tp.ui-2e7fa37c.js → tp.ui-d430285e.js} +1 -1
  152. package/dist/{tvs.density-25c4334c.js → tvs.density-ec013f83.js} +1 -1
  153. package/dist/{tvs.geneVariant-5e11a833.js → tvs.geneVariant-e430bf8f.js} +1 -1
  154. package/dist/{tvs.numeric-78a0e409.js → tvs.numeric-346bd398.js} +1 -1
  155. package/dist/{tvs.samplelst-189f538c.js → tvs.samplelst-87beae72.js} +1 -1
  156. package/dist/{uiUtils-1f132617.js → uiUtils-d3b22457.js} +1 -1
  157. package/dist/{variantBrowser-4d901183.js → variantBrowser-356d3042.js} +1 -1
  158. package/dist/{vcf-f0ed6b42.js → vcf-22a82f3b.js} +1 -1
  159. package/dist/{violin-15125ba7.js → violin-ccc375b4.js} +1 -1
  160. package/dist/{violin.interactivity-6706c369.js → violin.interactivity-89ca54ec.js} +1 -1
  161. package/dist/violin.renderer-ec1abfbf.js +1 -0
  162. package/dist/{viridis-86991d69.js → viridis-8338cc91.js} +1 -1
  163. package/dist/{y-eb954c68.js → y-71deceba.js} +1 -1
  164. package/dist/{zoom-361b1e09.js → zoom-0616ee17.js} +1 -1
  165. package/package.json +1 -1
  166. package/dist/Disco.UI-873f0fd3.js +0 -1
  167. package/dist/app-666853c7.js +0 -1
  168. package/dist/block.lazyload-f1ece2ed.js +0 -1
  169. package/dist/block.tk.bam.gdc-b2b8666f.js +0 -1
  170. package/dist/gdc.singleCell-ba7417c7.js +0 -1
  171. package/dist/hic.straw-9df44e3c.js +0 -1
  172. package/dist/launch.adhoc-4bee1852.js +0 -1
  173. package/dist/matrix.interactivity-0639fcf1.js +0 -1
  174. package/dist/numeric.binary-cc382492.js +0 -1
  175. package/dist/plot.app-4ba66f5a.js +0 -1
  176. package/dist/profileBarchart-45d6c16f.js +0 -1
  177. package/dist/profilePlot-ebd39c0b.js +0 -1
  178. package/dist/profilePolar-9ba319c6.js +0 -1
  179. package/dist/profileRadar-fae33ca2.js +0 -1
  180. package/dist/recover-fb000475.js +0 -1
  181. package/dist/sampleScatter.interactivity-e21a2c27.js +0 -1
  182. package/dist/sampleView-6a57e088.js +0 -1
  183. package/dist/survival-9f317717.js +0 -1
  184. package/dist/table-845c2632.js +0 -1
  185. package/dist/tk-ee809003.js +0 -1
  186. package/dist/violin.renderer-de8a53bd.js +0 -1
@@ -1 +1 @@
1
- import{az as e,q as t,aR as s,aC as i,ae as r,k as a,ac as o,aA as l,M as n,T as d,aK as c}from"./app-74668360.js";import{a as p,i as m,g as h,f as u,s as f,n as y,v as b}from"./filter-fe17a5ae.js";import{termInfoInit as v}from"./termInfo-d5a8bd35.js";import"path";import"./table-845c2632.js";const g="25px";const _="root";const x=20;const T="400px";const k="termdiv",C="termchilddiv",w="termbtn",I="termlabel",S="termloading",A="termcheck";class D{constructor(e){this.type="tree";V(this);B(this);this.loadingTermSet=new Set;this.termsByCohort={};this.expandAll="expandAll"in e?e.expandAll:false}init(){this.dom={holder:this.opts.holder.append("div")}}reactsTo(e){if(e.type.startsWith("tree_"))return true;if(e.type.startsWith("filter_"))return true;if(e.type.startsWith("cohort_"))return true;if(e.type.startsWith("info_"))return true;if(e.type.startsWith("submenu_"))return true;if(e.type=="app_refresh")return true}getState(e){const t=p(e.termfilter.filter);const s={isVisible:!e.submenu.term,activeCohort:e.activeCohort,expandedTermIds:e.tree.expandedTermIds,selectedTerms:e.selectedTerms,termfilter:{filter:t},usecase:e.tree.usecase};if(e.termdbConfig.selectCohort){s.toSelectCohort=true;const t=e.termdbConfig.selectCohort.values[e.activeCohort];if(t){s.cohortValuelst=t.keys}}return s}async main(){if(!this.state.isVisible){this.dom.holder.style("display","none");return}if(this.state.toSelectCohort){if(!this.state.cohortValuelst){return}}this.termsById=this.getTermsById();const e=this.termsById[_];e.terms=await this.requestTermRecursive(e);this.dom.holder.style("display","block");this.renderBranch(e,this.dom.holder)}getTermsById(){if(!(this.state.activeCohort in this.termsByCohort)){this.termsByCohort[this.state.activeCohort]={[_]:{id:_,__tree_isroot:true}}}return this.termsByCohort[this.state.activeCohort]}async requestTermRecursive(e){const t=await this.app.vocabApi.getTermChildren(e,this.state.toSelectCohort?this.state.cohortValuelst:null);if(t.error)throw t.error;if(!t.lst||t.lst.length==0){return[]}const s=[];for(const e of t.lst){const t=Object.assign({},e);s.push(t);if(this.state.expandedTermIds.includes(t.id)){t.terms=await this.requestTermRecursive(t)}else{const e=this.termsById[t.id];if(e&&e.terms){t.terms=e.terms}}this.termsById[t.id]=t}return s}bindKey(e){return e.id}}const j=e(D);function B(e){e.renderBranch=(t,s,i)=>{if(!t||!t.terms)return;if(t.terms.length>=x){if(s.classed("sjpp_show_scrollbar"));else{s.style("max-height",T).style("padding","10px").style("resize","vertical").classed("sjpp_show_scrollbar",true)}}if(e.opts.disable_terms){t.terms.forEach((t=>{if(t.disabled)e.opts.disable_terms.push(t.id)}))}e.included_terms=[];if(e.state.usecase){for(const s of t.terms){if(m(s,e.state.usecase).size){e.included_terms.push(s)}}}else{e.included_terms.push(...t.terms)}if(!(t.id in e.termsById)||!e.included_terms.length){s.style("display","none");return}if(e.loadingTermSet.has(t.id)){e.loadingTermSet.delete(t.id);s.select("."+S).remove()}const r=e.state.expandedTermIds;if(!r.includes(t.id)){s.style("display","none");if(i)i.text("+");return}s.style("display","block");if(i)i.text("-");const a=s.selectAll("."+k).data(e.included_terms,e.bindKey);a.exit().each(e.hideTerm);a.each(e.updateTerm);a.enter().append("div").each(e.addTerm);for(const i of t.terms){if(r.includes(i.id)){e.renderBranch(i,s.selectAll("."+C).filter((e=>e.id==i.id)),s.selectAll("."+w).filter((e=>e.id==i.id)))}}};e.hideTerm=function(s){if(s.id in e.termsById&&e.state.expandedTermIds.includes(s.id))return;t(this).style("display","none")};e.updateTerm=function(s){const i=t(this);if(!(s.id in e.termsById)){i.style("display","none");return}const r=e.opts.disable_terms?.includes(s.id);const a=m(s,e.state.usecase);i.style("display","");const o=e.state.expandedTermIds.includes(s.id);i.select("."+w).text(o?"-":"+");i.select("."+C).style("display",o?"block":"none");const l=e.state.selectedTerms.find((e=>e.name===s.name&&e.type===s.type));i.select("."+I).style("background-color",!a.has("plot")||r?"":l?"rgba(255, 194, 10,0.5)":"#cfe2f3");i.select("."+A).style("display",a.has("plot")&&l&&!r?"inline-block":"none")};e.addTerm=async function(s){const i=e.opts.disable_terms?.includes(s.id);const r=m(s,e.state.usecase);const a=t(this).attr("class",k).style("margin",s.isleaf?"":"2px").style("padding","0px 5px");if(r.has("branch")){a.append("div").attr("class","sja_menuoption "+w).style("display","inline-block").style("padding","4px 9px").style("font-family","courier").text("+").on("click",(t=>{t.stopPropagation();e.toggleBranch(s)}));if(e.expandAll)e.toggleBranch(s)}const o=e.state.selectedTerms.find((e=>e.name===s.name&&e.type===s.type));const l=a.append("div").attr("class",I).style("display","inline-block").style("padding","5px").style("opacity",i?.4:null).text(s.name);let n;if(s.hashtmldetail){n=a.append("div").style("display","inline-block")}if(r.size>0){if(i){l.attr("class","sja_tree_click_term_disabled "+I).style("padding","5px 8px").style("margin","1px 0px").style("opacity",.4)}else if(r.has("plot")){l.attr("class","ts_pill sja_filter_tag_btn sja_tree_click_term "+I).style("color","black").style("padding","5px 8px").style("border-radius","6px").style("background-color",o?"rgba(255, 194, 10,0.5)":"#cfe2f3").style("margin","1px 0px").style("cursor","default").on("click",(()=>e.clickTerm(s)))}if(s.samplecount!==undefined){a.append("div").style("font-size",".8em").style("display","inline-block").style("margin-left","5px").style("color",s.samplecount?"#777":"#ddd").text("n="+s.samplecount)}}if(s.hashtmldetail){v({vocabApi:e.app.vocabApi,icon_holder:n,content_holder:a.append("div"),id:s.id,state:{term:s}})}if(e.opts.submit_lst){a.append("div").attr("class",A).style("color","#008000").style("display",o?"inline-block":"none").html("&check;")}if(!s.isleaf){a.append("div").attr("class",C).style("padding-left",g)}}}function V(e){e.toggleBranch=function(s){if(s.isleaf)return;const i=e.termsById[s.id];if(!i)throw"invalid term id";if(!i.terms){if(e.loadingTermSet.has(i.id))return;e.loadingTermSet.add(i.id);t(this.parentNode).selectAll("."+C).filter((e=>e.id===i.id)).style("display","block").append("div").text("Loading...").attr("class",S).style("opacity",.5).style("padding","5px")}const r=e.state.expandedTermIds.includes(s.id);const a=r?"tree_collapse":"tree_expand";e.app.dispatch({type:a,termId:s.id})};e.clickTerm=async t=>{if(e.opts.click_term2select_tvs){e.app.dispatch({type:"submenu_set",submenu:{term:t,type:"tvs"}});return}if(e.opts.click_term_wrapper){e.opts.click_term_wrapper(t);return}if(e.opts.submit_lst){const s=e.state.selectedTerms.findIndex((e=>e.name===t.name));if(s==-1){e.app.dispatch({type:"app_refresh",state:{selectedTerms:[...e.state.selectedTerms,t]}})}else{const t=e.state.selectedTerms.slice(0);t.splice(s,1);e.app.dispatch({type:"app_refresh",state:{selectedTerms:t}})}return}throw"missing term click callback"}}const N={header_mode:"search_only",activeCohort:0,tree:{usecase:{},expandedTermIds:[]},submenu:{},search:{isVisible:true},selectedTerms:[],termfilter:{filter:{type:"tvslst",in:true,join:"",lst:[]}}};class O{constructor(e){this.type="store";this.defaultState=N;s(this,e);this.prevGeneratedId=0}validateOpts(e){if(!e.state)throw".state{} missing";const t=e.state;if(t.vocab){if(t.vocab.dslabel){if(!t.vocab.genome)throw".state[.vocab].genome missing"}else if(t.vocab.genome){if(!t.vocab.dslabel)throw".state[.vocab].dslabel missing"}else{if(!Array.isArray(t.vocab.terms))throw"vocab.terms must be an array of objects"}}}validateState(){const e=this.state;if(e.tree.expandedTermIds.length==0){e.tree.expandedTermIds.push(_)}else{if(e.tree.expandedTermIds[0]!=_){e.tree.expandedTermIds.unshift(_)}}}async init(){this.state.termdbConfig=await this.app.vocabApi.getTermdbConfig();let e=h(this.state.termfilter.filter,"filterUiRoot");if(!e){this.state.termfilter.filter.tag="filterUiRoot";e=this.state.termfilter.filter}if(this.state.termdbConfig.selectCohort){let t=h(this.state.termfilter.filter,"cohortFilter");if(!t){t={tag:"cohortFilter",type:"tvs",tvs:{term:JSON.parse(JSON.stringify(this.state.termdbConfig.selectCohort.term)),values:this.state.activeCohort==-1?[]:this.state.termdbConfig.selectCohort.values[this.state.activeCohort].keys.map((e=>({key:e,label:e})))}};this.state.termfilter.filter={type:"tvslst",in:true,join:"and",lst:[t,e]}}else{const e=(e,t)=>e<t?-1:1;t.tvs.values.sort(((e,t)=>e.key<t.key?-1:1));const s=JSON.stringify(t.tvs.values.map((e=>e.key)).sort(e));const i=this.state.termdbConfig.selectCohort.values.findIndex((t=>s==JSON.stringify(t.keys.sort(e))));if(this.state.activeCohort!==-1&&this.state.activeCohort!==0&&i!==this.state.activeCohort){console.log("Warning: cohortFilter will override the state.activeCohort due to mismatch")}this.state.activeCohort=i}}else{this.state.activeCohort=-1;if(this.state.header_mode==="with_cohortHtmlSelect"){console.warn(`no termdbConfig.selectCohort to use for state.header_mode = 'with_cohortHtmlSelect'`);this.state.header_mode="search_only"}}}fromJson(e){const t=JSON.parse(e);return t}setId(e){e.$id=this.prevGeneratedId++;if(e.$lst){for(const t of e.$lst){this.setId(t)}}}}O.prototype.actions={app_refresh(e={}){this.state=this.copyMerge(this.toJson(this.state),e.state?e.state:{},this.replaceKeyVals)},cohort_set(e){this.state.activeCohort=e.activeCohort;const t=this.state.termdbConfig.selectCohort.values[e.activeCohort];const s=h(this.state.termfilter.filter,"cohortFilter");if(!s)throw`No item tagged with 'cohortFilter'`;s.tvs.values=t.keys.map((e=>({key:e,label:e})))},tree_expand(e){if(this.state.tree.expandedTermIds.includes(e.termId))return;this.state.tree.expandedTermIds.push(e.termId)},tree_collapse(e){const t=this.state.tree.expandedTermIds.indexOf(e.termId);if(t==-1)return;this.state.tree.expandedTermIds.splice(t,1)},filter_replace(e){const t=e.filter?e.filter:{type:"tvslst",join:"",in:1,lst:[]};if(!e.filter.tag){this.state.termfilter.filter=t}else{const s=h(this.state.termfilter.filter,e.filter.tag);if(!s)throw`cannot replace missing filter with tag '${e.filter.tag}'`;const i=u(this.state.termfilter.filter,s.$id);if(i==s){this.state.termfilter.filter=t}else{const e=i.lst.indexOf(s);i.lst[e]=t}}},submenu_set(e){const t=e.submenu&&e.submenu.term;if(!t){this.state.submenu={};this.state.tree.expandedTermIds=[_]}else{const s=[_];if(t.__ancestors){s.push(...t.__ancestors)}if(m(t).has("plot")){Object.assign(this.state.submenu,e.submenu)}else{s.push(t.id);delete this.state.submenu.term}this.state.tree.expandedTermIds=s}}};const E=i(O);class R{constructor(e){this.type="submenu";this.dom={holder:e.holder};P(this)}reactsTo(e){if(e.type.startsWith("submenu_"))return true;if(e.type=="app_refresh")return true}getState(e){return{type:e.submenu.type,term:e.submenu.term,termfilter:e.termfilter}}main(){if(!this.state.term){this.dom.holder.style("display","none");return}if(this.state.type=="tvs")this.showTvsMenu(this.state.term);else throw`unsupported submenu.type='${this.state.type}'`}}const z=e(R);function P(e){e.showTvsMenu=function(t){e.dom.holder.selectAll("*").remove();e.dom.holder.style("display","block").append("div").style("margin","20px").append("span").html("&laquo; Back to variable selection").attr("class","sja_clbtext").on("click",(()=>e.app.dispatch({type:"submenu_set",submenu:{}})));f({term:t,filter:e.state.termfilter.filter,holder:e.dom.holder.append("div"),vocabApi:e.app.vocabApi,debug:e.app.debug,getCategoriesArguments:e.app.opts.getCategoriesArguments,callback:e.app.opts.tree.click_term2select_tvs})}}class ${constructor(e){this.type="search";this.customEvents=["postSearch"];G(this);J(this);this.dom={holder:e.holder};this.isVisible="isVisible"in e?e.isVisible:true}async init(e){this.initUI(this.getState(e))}reactsTo(e){if(e.type=="app_refresh")return true;const t=e.type.split("_")[0];return["search","cohort","submenu"].includes(t)}getState(e){return{isVisible:!e.submenu.term&&this.isVisible,cohortStr:e.activeCohort==-1||!e.termdbConfig.selectCohort?"":e.termdbConfig.selectCohort.values[e.activeCohort].keys.slice().sort().join(","),allowedTermTypes:e.termdbConfig.allowedTermTypes||[],expandedTermIds:e.tree.expandedTermIds,selectedTerms:e.selectedTerms,usecase:e.tree.usecase,search:e.search,isGeneSetTermdb:e.termdbConfig.isGeneSetTermdb}}async main(){this.dom.holder.style("display",this.state.isVisible?"block":"none");this.renderSelectedNonDictTerms()}async doSearch(e,t){if(!e){this.clear();this.bus.emit("postSearch",[]);return}const s=await this.app.vocabApi.findTerm(e,this.state.cohortStr,this.state.usecase,t);if(!s.lst||s.lst.length==0){this.noResult()}else{this.showTerms(s)}this.bus.emit("postSearch",s)}}const q=e($);function G(e){e.initUI=t=>{e.dom.holder.style("display",e.search&&e.search.isVisible==false?"none":"block");e.dom.input=e.dom.holder.style("text-align","left").append("input").attr("type","search").attr("class","tree_search").attr("placeholder","Search"+e.getPrompt(t)).style("width","220px").style("margin","10px").style("display","block").on("input",r.debounce(e.onInput,300)).on("keyup",e.onKeyup);e.dom.input.node().focus();e.dom.resultDiv=(e.opts.resultsHolder||e.dom.holder).append("div").style("display","none").style("grid-template-columns","auto auto");const s=e.dom.resultDiv.append("div");const i=e.dom.resultDiv.append("div");e.dom.resultDiv_genes=s.append("div").style("border-left","solid 1px rgb(133,182,225)").style("margin","0px 0px 10px 10px").style("padding-left","5px");e.dom.resultDiv_terms=i.append("div").style("border-left",e.opts.resultsHolder?"":"solid 1px rgb(133,182,225)").style("margin","0px 0px 10px 10px").style("padding-left","5px");e.dom.nonDictDiv=e.dom.holder.append("div").style("margin","0px 0px 10px 10px").style("display","none");e.dom.nonDictDiv.append("div").style("font-weight",600).html("Selected genes");e.dom.selectedNonDictDiv=e.dom.nonDictDiv.append("div")};e.getPrompt=e=>{const t=e.allowedTermTypes.includes("geneVariant")&&m({type:"geneVariant"},e.usecase).has("plot");if(t)return" variables or genes";if(e.isGeneSetTermdb)return" gene sets";return" variables"};e.noResult=()=>{e.clear();e.dom.resultDiv.style("display","inline-grid");e.dom.resultDiv_terms.append("div").style("padding","3px 3px 3px 0px").style("opacity",.5).text("No match"+(e.app.vocabApi.termdbConfig?.queries?.snvindel?.allowSNPs?". Press ENTER to search SNP":""))};e.showTerms=t=>{if(e.opts.disable_terms){t.lst.forEach((t=>{if(t.disabled)e.opts.disable_terms.push(t.id)}))}e.clear();e.dom.resultDiv.style("display","inline-grid");const s=[],i=[];for(const e of t.lst){if(e.type=="geneVariant"){s.push(e)}else{i.push(e)}}if(s.length){e.dom.resultDiv_genes.append("table").selectAll().data(s).enter().append("tr").each(e.showTerm)}if(i.length){e.dom.resultDiv_terms.append("table").selectAll().data(i).enter().append("tr").each(e.showTerm)}};e.showTerm=function(s){const i=t(this);const r=i.append("td").text(s.name);const a=m(s,e.state.usecase);if((e.opts.click_term||e.app.opts?.tree?.click_term_wrapper)&&a.has("plot")){if("id"in s&&e.opts.disable_terms?.includes(s.id)){r.attr("class","sja_tree_click_term_disabled").style("display","block").style("padding","5px 8px").style("margin","1px 0px").style("opacity",.4)}else{r.attr("class","ts_pill sja_filter_tag_btn sja_tree_click_term").style("display","block").style("color","black").style("padding","5px 8px").style("border-radius","6px").style("background-color",s.type=="geneVariant"?"rgba(251,171,96,0.5)":"#cfe2f3").style("margin","1px 0px").style("cursor","default").on("click",(()=>{if(e.opts.click_term){e.opts.click_term(s)}else{e.app.opts.tree.click_term_wrapper(s)}e.clear();e.dom.input.property("value","")}))}if(s.samplecount!==undefined){i.append("td").append("div").style("font-size",".8em").style("display","inline-block").style("margin-left","5px").style("color",s.samplecount?"#777":"#ddd").text("n="+s.samplecount)}}else{r.attr("class","sja_menuoption").on("click",(()=>{e.clear();e.dom.input.property("value","");const t=[_];if(s.type=="geneVariant"&&e.opts.handleGeneVariant){e.opts.handleGeneVariant(s)}else if(y.has(s.type)){e.app.dispatch({type:"app_refresh",state:{selectedTerms:[...e.state.selectedTerms,s]}})}else{if(s.__ancestors){t.push(...s.__ancestors)}if(!e.app.vocabApi.graphable(s))t.push(s.id);e.app.dispatch({type:"app_refresh",state:{tree:{expandedTermIds:t}}})}}))}i.append("td").text(s.type=="geneVariant"?"gene variant":(s.__ancestorNames||[]).join(" > ")).style("opacity",.5).style("font-size",".7em")};e.clear=()=>{e.dom.resultDiv_genes.selectAll("*").remove();e.dom.resultDiv_terms.selectAll("*").remove();e.dom.resultDiv.style("display","none")};e.renderSelectedNonDictTerms=function(){const t=e.state.selectedTerms.filter((e=>y.has(e.type)));e.dom.nonDictDiv.style("display",t.length?"":"none");const s=e.dom.selectedNonDictDiv.selectAll("div").data(t,(e=>e.name));s.exit().remove();s.enter().append("div").style("display","inline-block").style("margin","1px").style("padding","5px 8px").style("background-color","rgba(255, 194, 10,0.5)").style("border-radius","6px").html((e=>e.name))}}function J(e){e.onKeyup=t=>{if(!a(t))return;if(!e.app.vocabApi.termdbConfig?.queries?.snvindel?.allowSNPs)return;e.onInput(t,"snp")};e.onInput=async(t,s)=>{const i=e.dom.input.property("value");try{await e.doSearch(i,s)}catch(t){e.clear();e.dom.resultDiv.style("display","inline-grid");o(e.dom.resultDiv_terms,"Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}}class W{constructor(e){this.type="app";if(!e.holder)t("body").append("div");const s=e.holder.append("div").style("display",e.tree?.submit_lst?"":"none").style("text-align","center").style("margin","10px 5px");const i=s.append("button").property("disabled",true).text(this.noSelectionPrompt).on("click",(()=>this.opts.tree?.submit_lst(this.state.selectedTerms)));const r=e.holder.append("div");this.dom={holder:e.holder,treeDiv:e.holder.append("div"),customTermDiv:e.holder.append("div").style("margin","10px"),submitDiv:s,submitBtn:i,topbar:r,searchDiv:r.append("div").style("display","inline-block"),filterDiv:r.append("div").style("display","none"),errdiv:e.holder.append("div"),tip:new n({padding:"5px"})}}validateOpts(e){if(e.vocabApi);else if(e.state&&e.state.vocab){if(typeof e.state.vocab!="object")throw"opts.state.vocab{} is not an object"}else if(e.state&&e.state.genome){const t=e.state;if(!t.vocab)t.vocab={};t.vocab.genome=t.genome;delete t.genome;if(t.dslabel){t.vocab.dslabel=t.dslabel;delete t.dslabel}}else{throw"neither state.vocab{} or opts.vocabApi provided"}if(e.tree){if(e.tree.disable_terms&&!e.tree.click_term&&!e.tree.click_term2select_tvs&&(!e.barchart||!e.barchart.bar_click_override)){throw`opts.tree.disable_terms is used only when opts.tree.click_term, opts.tree.click_term2select_tvs, or opts.barchart.bar_click_override is set`}if(!e.search)e.search={};if(e.tree.click_term2select_tvs){e.search.click_term=e=>this.api.dispatch({type:"submenu_set",submenu:{term:e,type:"tvs"}})}if(e.tree.click_term){e.tree.click_term_wrapper=async t=>{if(this.state.termdbConfig.termMatch2geneSet){const e=await d("termdb",{body:{genome:this.state.vocab.genome,dslabel:this.state.vocab.dslabel,genesetByTermId:t.id}});t._geneset=e}e.tree.click_term(t)}}if(e.tree.disable_terms)e.search.disable_terms=e.tree.disable_terms}return e}async preApiFreeze(e){try{if(this.opts.vocabApi){e.vocabApi=this.opts.vocabApi}else{const t={vocab:this.opts.state.vocab||{genome:this.opts.state.genome,dslabel:this.opts.state.dslabel}};e.vocabApi=await b({app:this.api,state:t,fetchOpts:this.opts.fetchOpts})}e.appInit=F}catch(e){console.log(e);throw e}}async init(){try{this.store=await E({app:this.api,state:this.opts.state});this.state=await this.store.copyState();await this.setComponents();await this.api.dispatch()}catch(e){this.printError(e)}}async setComponents(){try{const e=this.state.nav?.header_mode;const t={search:q({app:this.api,holder:this.dom.searchDiv,isVisible:e!=="hide_search"}),tree:j({app:this.api,holder:this.dom.treeDiv,headerDiv:this.dom.headerDiv,expandAll:e=="hide_search"})};if(this.opts.tree&&this.opts.tree.click_term2select_tvs){t.submenu=z({app:this.api,holder:this.dom.holder.append("div").style("display","none")})}this.components=await c(t)}catch(e){throw e}}async main(){this.api.vocabApi.main();const e=this.state.selectedTerms.length;this.dom.submitBtn.property("disabled",!e).text(!e?"Search or click term(s)":`Submit ${e} term${e>1?"s":""}`);await this.mayShowCustomTerms()}printError(e){o(this.dom.errdiv,"Error: "+(e.message||e));if(e.stack)console.log(e.stack)}async mayShowCustomTerms(){const e=await this.api.vocabApi.getCustomTerms();if(!Array.isArray(e)||e.length==0)return this.dom.customTermDiv.style("display","none");const t=[];for(const s of e){const e=m(s.term,this.state.tree.usecase);if(e.has("plot"))t.push(s)}if(t.length==0)return this.dom.customTermDiv.style("display","none");this.dom.customTermDiv.selectAll("*").remove();this.dom.customTermDiv.append("div").text("CUSTOM VARIABLES").style("font-size",".7em");for(const e of t){this.dom.customTermDiv.append("div").style("margin-bottom","3px").append("div").text(e.term.name).attr("class","sja_filter_tag_btn").style("padding","3px 6px").style("border-radius","6px").on("click",(()=>{if(!this.opts.tree)return;if(this.opts.tree.click_term){this.opts.tree.click_term(e);return}if(this.opts.tree.click_term2select_tvs){this.api.dispatch({type:"submenu_set",submenu:{term:e.term,type:"tvs"}});return}}))}}}const F=l(W);export{F as appInit};
1
+ import{az as e,q as t,aR as s,aC as i,ae as r,k as a,ac as o,aA as l,M as n,T as d,aK as c}from"./app-85b2b4c3.js";import{a as p,i as m,g as h,f as u,s as f,n as y,v as b}from"./filter-b029f9b0.js";import{termInfoInit as v}from"./termInfo-4bc50e85.js";import"path";import"./table-f77bad81.js";const g="25px";const _="root";const x=20;const T="400px";const k="termdiv",C="termchilddiv",w="termbtn",I="termlabel",S="termloading",A="termcheck";class D{constructor(e){this.type="tree";V(this);B(this);this.loadingTermSet=new Set;this.termsByCohort={};this.expandAll="expandAll"in e?e.expandAll:false}init(){this.dom={holder:this.opts.holder.append("div")}}reactsTo(e){if(e.type.startsWith("tree_"))return true;if(e.type.startsWith("filter_"))return true;if(e.type.startsWith("cohort_"))return true;if(e.type.startsWith("info_"))return true;if(e.type.startsWith("submenu_"))return true;if(e.type=="app_refresh")return true}getState(e){const t=p(e.termfilter.filter);const s={isVisible:!e.submenu.term,activeCohort:e.activeCohort,expandedTermIds:e.tree.expandedTermIds,selectedTerms:e.selectedTerms,termfilter:{filter:t},usecase:e.tree.usecase};if(e.termdbConfig.selectCohort){s.toSelectCohort=true;const t=e.termdbConfig.selectCohort.values[e.activeCohort];if(t){s.cohortValuelst=t.keys}}return s}async main(){if(!this.state.isVisible){this.dom.holder.style("display","none");return}if(this.state.toSelectCohort){if(!this.state.cohortValuelst){return}}this.termsById=this.getTermsById();const e=this.termsById[_];e.terms=await this.requestTermRecursive(e);this.dom.holder.style("display","block");this.renderBranch(e,this.dom.holder)}getTermsById(){if(!(this.state.activeCohort in this.termsByCohort)){this.termsByCohort[this.state.activeCohort]={[_]:{id:_,__tree_isroot:true}}}return this.termsByCohort[this.state.activeCohort]}async requestTermRecursive(e){const t=await this.app.vocabApi.getTermChildren(e,this.state.toSelectCohort?this.state.cohortValuelst:null);if(t.error)throw t.error;if(!t.lst||t.lst.length==0){return[]}const s=[];for(const e of t.lst){const t=Object.assign({},e);s.push(t);if(this.state.expandedTermIds.includes(t.id)){t.terms=await this.requestTermRecursive(t)}else{const e=this.termsById[t.id];if(e&&e.terms){t.terms=e.terms}}this.termsById[t.id]=t}return s}bindKey(e){return e.id}}const j=e(D);function B(e){e.renderBranch=(t,s,i)=>{if(!t||!t.terms)return;if(t.terms.length>=x){if(s.classed("sjpp_show_scrollbar"));else{s.style("max-height",T).style("padding","10px").style("resize","vertical").classed("sjpp_show_scrollbar",true)}}if(e.opts.disable_terms){t.terms.forEach((t=>{if(t.disabled)e.opts.disable_terms.push(t.id)}))}e.included_terms=[];if(e.state.usecase){for(const s of t.terms){if(m(s,e.state.usecase).size){e.included_terms.push(s)}}}else{e.included_terms.push(...t.terms)}if(!(t.id in e.termsById)||!e.included_terms.length){s.style("display","none");return}if(e.loadingTermSet.has(t.id)){e.loadingTermSet.delete(t.id);s.select("."+S).remove()}const r=e.state.expandedTermIds;if(!r.includes(t.id)){s.style("display","none");if(i)i.text("+");return}s.style("display","block");if(i)i.text("-");const a=s.selectAll("."+k).data(e.included_terms,e.bindKey);a.exit().each(e.hideTerm);a.each(e.updateTerm);a.enter().append("div").each(e.addTerm);for(const i of t.terms){if(r.includes(i.id)){e.renderBranch(i,s.selectAll("."+C).filter((e=>e.id==i.id)),s.selectAll("."+w).filter((e=>e.id==i.id)))}}};e.hideTerm=function(s){if(s.id in e.termsById&&e.state.expandedTermIds.includes(s.id))return;t(this).style("display","none")};e.updateTerm=function(s){const i=t(this);if(!(s.id in e.termsById)){i.style("display","none");return}const r=e.opts.disable_terms?.includes(s.id);const a=m(s,e.state.usecase);i.style("display","");const o=e.state.expandedTermIds.includes(s.id);i.select("."+w).text(o?"-":"+");i.select("."+C).style("display",o?"block":"none");const l=e.state.selectedTerms.find((e=>e.name===s.name&&e.type===s.type));i.select("."+I).style("background-color",!a.has("plot")||r?"":l?"rgba(255, 194, 10,0.5)":"#cfe2f3");i.select("."+A).style("display",a.has("plot")&&l&&!r?"inline-block":"none")};e.addTerm=async function(s){const i=e.opts.disable_terms?.includes(s.id);const r=m(s,e.state.usecase);const a=t(this).attr("class",k).style("margin",s.isleaf?"":"2px").style("padding","0px 5px");if(r.has("branch")){a.append("div").attr("class","sja_menuoption "+w).style("display","inline-block").style("padding","4px 9px").style("font-family","courier").text("+").on("click",(t=>{t.stopPropagation();e.toggleBranch(s)}));if(e.expandAll)e.toggleBranch(s)}const o=e.state.selectedTerms.find((e=>e.name===s.name&&e.type===s.type));const l=a.append("div").attr("class",I).style("display","inline-block").style("padding","5px").style("opacity",i?.4:null).text(s.name);let n;if(s.hashtmldetail){n=a.append("div").style("display","inline-block")}if(r.size>0){if(i){l.attr("class","sja_tree_click_term_disabled "+I).style("padding","5px 8px").style("margin","1px 0px").style("opacity",.4)}else if(r.has("plot")){l.attr("class","ts_pill sja_filter_tag_btn sja_tree_click_term "+I).style("color","black").style("padding","5px 8px").style("border-radius","6px").style("background-color",o?"rgba(255, 194, 10,0.5)":"#cfe2f3").style("margin","1px 0px").style("cursor","default").on("click",(()=>e.clickTerm(s)))}if(s.samplecount!==undefined){a.append("div").style("font-size",".8em").style("display","inline-block").style("margin-left","5px").style("color",s.samplecount?"#777":"#ddd").text("n="+s.samplecount)}}if(s.hashtmldetail){v({vocabApi:e.app.vocabApi,icon_holder:n,content_holder:a.append("div"),id:s.id,state:{term:s}})}if(e.opts.submit_lst){a.append("div").attr("class",A).style("color","#008000").style("display",o?"inline-block":"none").html("&check;")}if(!s.isleaf){a.append("div").attr("class",C).style("padding-left",g)}}}function V(e){e.toggleBranch=function(s){if(s.isleaf)return;const i=e.termsById[s.id];if(!i)throw"invalid term id";if(!i.terms){if(e.loadingTermSet.has(i.id))return;e.loadingTermSet.add(i.id);t(this.parentNode).selectAll("."+C).filter((e=>e.id===i.id)).style("display","block").append("div").text("Loading...").attr("class",S).style("opacity",.5).style("padding","5px")}const r=e.state.expandedTermIds.includes(s.id);const a=r?"tree_collapse":"tree_expand";e.app.dispatch({type:a,termId:s.id})};e.clickTerm=async t=>{if(e.opts.click_term2select_tvs){e.app.dispatch({type:"submenu_set",submenu:{term:t,type:"tvs"}});return}if(e.opts.click_term_wrapper){e.opts.click_term_wrapper(t);return}if(e.opts.submit_lst){const s=e.state.selectedTerms.findIndex((e=>e.name===t.name));if(s==-1){e.app.dispatch({type:"app_refresh",state:{selectedTerms:[...e.state.selectedTerms,t]}})}else{const t=e.state.selectedTerms.slice(0);t.splice(s,1);e.app.dispatch({type:"app_refresh",state:{selectedTerms:t}})}return}throw"missing term click callback"}}const N={header_mode:"search_only",activeCohort:0,tree:{usecase:{},expandedTermIds:[]},submenu:{},search:{isVisible:true},selectedTerms:[],termfilter:{filter:{type:"tvslst",in:true,join:"",lst:[]}}};class O{constructor(e){this.type="store";this.defaultState=N;s(this,e);this.prevGeneratedId=0}validateOpts(e){if(!e.state)throw".state{} missing";const t=e.state;if(t.vocab){if(t.vocab.dslabel){if(!t.vocab.genome)throw".state[.vocab].genome missing"}else if(t.vocab.genome){if(!t.vocab.dslabel)throw".state[.vocab].dslabel missing"}else{if(!Array.isArray(t.vocab.terms))throw"vocab.terms must be an array of objects"}}}validateState(){const e=this.state;if(e.tree.expandedTermIds.length==0){e.tree.expandedTermIds.push(_)}else{if(e.tree.expandedTermIds[0]!=_){e.tree.expandedTermIds.unshift(_)}}}async init(){this.state.termdbConfig=await this.app.vocabApi.getTermdbConfig();let e=h(this.state.termfilter.filter,"filterUiRoot");if(!e){this.state.termfilter.filter.tag="filterUiRoot";e=this.state.termfilter.filter}if(this.state.termdbConfig.selectCohort){let t=h(this.state.termfilter.filter,"cohortFilter");if(!t){t={tag:"cohortFilter",type:"tvs",tvs:{term:JSON.parse(JSON.stringify(this.state.termdbConfig.selectCohort.term)),values:this.state.activeCohort==-1?[]:this.state.termdbConfig.selectCohort.values[this.state.activeCohort].keys.map((e=>({key:e,label:e})))}};this.state.termfilter.filter={type:"tvslst",in:true,join:"and",lst:[t,e]}}else{const e=(e,t)=>e<t?-1:1;t.tvs.values.sort(((e,t)=>e.key<t.key?-1:1));const s=JSON.stringify(t.tvs.values.map((e=>e.key)).sort(e));const i=this.state.termdbConfig.selectCohort.values.findIndex((t=>s==JSON.stringify(t.keys.sort(e))));if(this.state.activeCohort!==-1&&this.state.activeCohort!==0&&i!==this.state.activeCohort){console.log("Warning: cohortFilter will override the state.activeCohort due to mismatch")}this.state.activeCohort=i}}else{this.state.activeCohort=-1;if(this.state.header_mode==="with_cohortHtmlSelect"){console.warn(`no termdbConfig.selectCohort to use for state.header_mode = 'with_cohortHtmlSelect'`);this.state.header_mode="search_only"}}}fromJson(e){const t=JSON.parse(e);return t}setId(e){e.$id=this.prevGeneratedId++;if(e.$lst){for(const t of e.$lst){this.setId(t)}}}}O.prototype.actions={app_refresh(e={}){this.state=this.copyMerge(this.toJson(this.state),e.state?e.state:{},this.replaceKeyVals)},cohort_set(e){this.state.activeCohort=e.activeCohort;const t=this.state.termdbConfig.selectCohort.values[e.activeCohort];const s=h(this.state.termfilter.filter,"cohortFilter");if(!s)throw`No item tagged with 'cohortFilter'`;s.tvs.values=t.keys.map((e=>({key:e,label:e})))},tree_expand(e){if(this.state.tree.expandedTermIds.includes(e.termId))return;this.state.tree.expandedTermIds.push(e.termId)},tree_collapse(e){const t=this.state.tree.expandedTermIds.indexOf(e.termId);if(t==-1)return;this.state.tree.expandedTermIds.splice(t,1)},filter_replace(e){const t=e.filter?e.filter:{type:"tvslst",join:"",in:1,lst:[]};if(!e.filter.tag){this.state.termfilter.filter=t}else{const s=h(this.state.termfilter.filter,e.filter.tag);if(!s)throw`cannot replace missing filter with tag '${e.filter.tag}'`;const i=u(this.state.termfilter.filter,s.$id);if(i==s){this.state.termfilter.filter=t}else{const e=i.lst.indexOf(s);i.lst[e]=t}}},submenu_set(e){const t=e.submenu&&e.submenu.term;if(!t){this.state.submenu={};this.state.tree.expandedTermIds=[_]}else{const s=[_];if(t.__ancestors){s.push(...t.__ancestors)}if(m(t).has("plot")){Object.assign(this.state.submenu,e.submenu)}else{s.push(t.id);delete this.state.submenu.term}this.state.tree.expandedTermIds=s}}};const E=i(O);class R{constructor(e){this.type="submenu";this.dom={holder:e.holder};P(this)}reactsTo(e){if(e.type.startsWith("submenu_"))return true;if(e.type=="app_refresh")return true}getState(e){return{type:e.submenu.type,term:e.submenu.term,termfilter:e.termfilter}}main(){if(!this.state.term){this.dom.holder.style("display","none");return}if(this.state.type=="tvs")this.showTvsMenu(this.state.term);else throw`unsupported submenu.type='${this.state.type}'`}}const z=e(R);function P(e){e.showTvsMenu=function(t){e.dom.holder.selectAll("*").remove();e.dom.holder.style("display","block").append("div").style("margin","20px").append("span").html("&laquo; Back to variable selection").attr("class","sja_clbtext").on("click",(()=>e.app.dispatch({type:"submenu_set",submenu:{}})));f({term:t,filter:e.state.termfilter.filter,holder:e.dom.holder.append("div"),vocabApi:e.app.vocabApi,debug:e.app.debug,getCategoriesArguments:e.app.opts.getCategoriesArguments,callback:e.app.opts.tree.click_term2select_tvs})}}class ${constructor(e){this.type="search";this.customEvents=["postSearch"];G(this);J(this);this.dom={holder:e.holder};this.isVisible="isVisible"in e?e.isVisible:true}async init(e){this.initUI(this.getState(e))}reactsTo(e){if(e.type=="app_refresh")return true;const t=e.type.split("_")[0];return["search","cohort","submenu"].includes(t)}getState(e){return{isVisible:!e.submenu.term&&this.isVisible,cohortStr:e.activeCohort==-1||!e.termdbConfig.selectCohort?"":e.termdbConfig.selectCohort.values[e.activeCohort].keys.slice().sort().join(","),allowedTermTypes:e.termdbConfig.allowedTermTypes||[],expandedTermIds:e.tree.expandedTermIds,selectedTerms:e.selectedTerms,usecase:e.tree.usecase,search:e.search,isGeneSetTermdb:e.termdbConfig.isGeneSetTermdb}}async main(){this.dom.holder.style("display",this.state.isVisible?"block":"none");this.renderSelectedNonDictTerms()}async doSearch(e,t){if(!e){this.clear();this.bus.emit("postSearch",[]);return}const s=await this.app.vocabApi.findTerm(e,this.state.cohortStr,this.state.usecase,t);if(!s.lst||s.lst.length==0){this.noResult()}else{this.showTerms(s)}this.bus.emit("postSearch",s)}}const q=e($);function G(e){e.initUI=t=>{e.dom.holder.style("display",e.search&&e.search.isVisible==false?"none":"block");e.dom.input=e.dom.holder.style("text-align","left").append("input").attr("type","search").attr("class","tree_search").attr("placeholder","Search"+e.getPrompt(t)).style("width","220px").style("margin","10px").style("display","block").on("input",r.debounce(e.onInput,300)).on("keyup",e.onKeyup);e.dom.input.node().focus();e.dom.resultDiv=(e.opts.resultsHolder||e.dom.holder).append("div").style("display","none").style("grid-template-columns","auto auto");const s=e.dom.resultDiv.append("div");const i=e.dom.resultDiv.append("div");e.dom.resultDiv_genes=s.append("div").style("border-left","solid 1px rgb(133,182,225)").style("margin","0px 0px 10px 10px").style("padding-left","5px");e.dom.resultDiv_terms=i.append("div").style("border-left",e.opts.resultsHolder?"":"solid 1px rgb(133,182,225)").style("margin","0px 0px 10px 10px").style("padding-left","5px");e.dom.nonDictDiv=e.dom.holder.append("div").style("margin","0px 0px 10px 10px").style("display","none");e.dom.nonDictDiv.append("div").style("font-weight",600).html("Selected genes");e.dom.selectedNonDictDiv=e.dom.nonDictDiv.append("div")};e.getPrompt=e=>{const t=e.allowedTermTypes.includes("geneVariant")&&m({type:"geneVariant"},e.usecase).has("plot");if(t)return" variables or genes";if(e.isGeneSetTermdb)return" gene sets";return" variables"};e.noResult=()=>{e.clear();e.dom.resultDiv.style("display","inline-grid");e.dom.resultDiv_terms.append("div").style("padding","3px 3px 3px 0px").style("opacity",.5).text("No match"+(e.app.vocabApi.termdbConfig?.queries?.snvindel?.allowSNPs?". Press ENTER to search SNP":""))};e.showTerms=t=>{if(e.opts.disable_terms){t.lst.forEach((t=>{if(t.disabled)e.opts.disable_terms.push(t.id)}))}e.clear();e.dom.resultDiv.style("display","inline-grid");const s=[],i=[];for(const e of t.lst){if(e.type=="geneVariant"){s.push(e)}else{i.push(e)}}if(s.length){e.dom.resultDiv_genes.append("table").selectAll().data(s).enter().append("tr").each(e.showTerm)}if(i.length){e.dom.resultDiv_terms.append("table").selectAll().data(i).enter().append("tr").each(e.showTerm)}};e.showTerm=function(s){const i=t(this);const r=i.append("td").text(s.name);const a=m(s,e.state.usecase);if((e.opts.click_term||e.app.opts?.tree?.click_term_wrapper)&&a.has("plot")){if("id"in s&&e.opts.disable_terms?.includes(s.id)){r.attr("class","sja_tree_click_term_disabled").style("display","block").style("padding","5px 8px").style("margin","1px 0px").style("opacity",.4)}else{r.attr("class","ts_pill sja_filter_tag_btn sja_tree_click_term").style("display","block").style("color","black").style("padding","5px 8px").style("border-radius","6px").style("background-color",s.type=="geneVariant"?"rgba(251,171,96,0.5)":"#cfe2f3").style("margin","1px 0px").style("cursor","default").on("click",(()=>{if(e.opts.click_term){e.opts.click_term(s)}else{e.app.opts.tree.click_term_wrapper(s)}e.clear();e.dom.input.property("value","")}))}if(s.samplecount!==undefined){i.append("td").append("div").style("font-size",".8em").style("display","inline-block").style("margin-left","5px").style("color",s.samplecount?"#777":"#ddd").text("n="+s.samplecount)}}else{r.attr("class","sja_menuoption").on("click",(()=>{e.clear();e.dom.input.property("value","");const t=[_];if(s.type=="geneVariant"&&e.opts.handleGeneVariant){e.opts.handleGeneVariant(s)}else if(y.has(s.type)){e.app.dispatch({type:"app_refresh",state:{selectedTerms:[...e.state.selectedTerms,s]}})}else{if(s.__ancestors){t.push(...s.__ancestors)}if(!e.app.vocabApi.graphable(s))t.push(s.id);e.app.dispatch({type:"app_refresh",state:{tree:{expandedTermIds:t}}})}}))}i.append("td").text(s.type=="geneVariant"?"gene variant":(s.__ancestorNames||[]).join(" > ")).style("opacity",.5).style("font-size",".7em")};e.clear=()=>{e.dom.resultDiv_genes.selectAll("*").remove();e.dom.resultDiv_terms.selectAll("*").remove();e.dom.resultDiv.style("display","none")};e.renderSelectedNonDictTerms=function(){const t=e.state.selectedTerms.filter((e=>y.has(e.type)));e.dom.nonDictDiv.style("display",t.length?"":"none");const s=e.dom.selectedNonDictDiv.selectAll("div").data(t,(e=>e.name));s.exit().remove();s.enter().append("div").style("display","inline-block").style("margin","1px").style("padding","5px 8px").style("background-color","rgba(255, 194, 10,0.5)").style("border-radius","6px").html((e=>e.name))}}function J(e){e.onKeyup=t=>{if(!a(t))return;if(!e.app.vocabApi.termdbConfig?.queries?.snvindel?.allowSNPs)return;e.onInput(t,"snp")};e.onInput=async(t,s)=>{const i=e.dom.input.property("value");try{await e.doSearch(i,s)}catch(t){e.clear();e.dom.resultDiv.style("display","inline-grid");o(e.dom.resultDiv_terms,"Error: "+(t.message||t));if(t.stack)console.log(t.stack)}}}class W{constructor(e){this.type="app";if(!e.holder)t("body").append("div");const s=e.holder.append("div").style("display",e.tree?.submit_lst?"":"none").style("text-align","center").style("margin","10px 5px");const i=s.append("button").property("disabled",true).text(this.noSelectionPrompt).on("click",(()=>this.opts.tree?.submit_lst(this.state.selectedTerms)));const r=e.holder.append("div");this.dom={holder:e.holder,treeDiv:e.holder.append("div"),customTermDiv:e.holder.append("div").style("margin","10px"),submitDiv:s,submitBtn:i,topbar:r,searchDiv:r.append("div").style("display","inline-block"),filterDiv:r.append("div").style("display","none"),errdiv:e.holder.append("div"),tip:new n({padding:"5px"})}}validateOpts(e){if(e.vocabApi);else if(e.state&&e.state.vocab){if(typeof e.state.vocab!="object")throw"opts.state.vocab{} is not an object"}else if(e.state&&e.state.genome){const t=e.state;if(!t.vocab)t.vocab={};t.vocab.genome=t.genome;delete t.genome;if(t.dslabel){t.vocab.dslabel=t.dslabel;delete t.dslabel}}else{throw"neither state.vocab{} or opts.vocabApi provided"}if(e.tree){if(e.tree.disable_terms&&!e.tree.click_term&&!e.tree.click_term2select_tvs&&(!e.barchart||!e.barchart.bar_click_override)){throw`opts.tree.disable_terms is used only when opts.tree.click_term, opts.tree.click_term2select_tvs, or opts.barchart.bar_click_override is set`}if(!e.search)e.search={};if(e.tree.click_term2select_tvs){e.search.click_term=e=>this.api.dispatch({type:"submenu_set",submenu:{term:e,type:"tvs"}})}if(e.tree.click_term){e.tree.click_term_wrapper=async t=>{if(this.state.termdbConfig.termMatch2geneSet){const e=await d("termdb",{body:{genome:this.state.vocab.genome,dslabel:this.state.vocab.dslabel,genesetByTermId:t.id}});t._geneset=e}e.tree.click_term(t)}}if(e.tree.disable_terms)e.search.disable_terms=e.tree.disable_terms}return e}async preApiFreeze(e){try{if(this.opts.vocabApi){e.vocabApi=this.opts.vocabApi}else{const t={vocab:this.opts.state.vocab||{genome:this.opts.state.genome,dslabel:this.opts.state.dslabel}};e.vocabApi=await b({app:this.api,state:t,fetchOpts:this.opts.fetchOpts})}e.appInit=F}catch(e){console.log(e);throw e}}async init(){try{this.store=await E({app:this.api,state:this.opts.state});this.state=await this.store.copyState();await this.setComponents();await this.api.dispatch()}catch(e){this.printError(e)}}async setComponents(){try{const e=this.state.nav?.header_mode;const t={search:q({app:this.api,holder:this.dom.searchDiv,isVisible:e!=="hide_search"}),tree:j({app:this.api,holder:this.dom.treeDiv,headerDiv:this.dom.headerDiv,expandAll:e=="hide_search"})};if(this.opts.tree&&this.opts.tree.click_term2select_tvs){t.submenu=z({app:this.api,holder:this.dom.holder.append("div").style("display","none")})}this.components=await c(t)}catch(e){throw e}}async main(){this.api.vocabApi.main();const e=this.state.selectedTerms.length;this.dom.submitBtn.property("disabled",!e).text(!e?"Search or click term(s)":`Submit ${e} term${e>1?"s":""}`);await this.mayShowCustomTerms()}printError(e){o(this.dom.errdiv,"Error: "+(e.message||e));if(e.stack)console.log(e.stack)}async mayShowCustomTerms(){const e=await this.api.vocabApi.getCustomTerms();if(!Array.isArray(e)||e.length==0)return this.dom.customTermDiv.style("display","none");const t=[];for(const s of e){const e=m(s.term,this.state.tree.usecase);if(e.has("plot"))t.push(s)}if(t.length==0)return this.dom.customTermDiv.style("display","none");this.dom.customTermDiv.selectAll("*").remove();this.dom.customTermDiv.append("div").text("CUSTOM VARIABLES").style("font-size",".7em");for(const e of t){this.dom.customTermDiv.append("div").style("margin-bottom","3px").append("div").text(e.term.name).attr("class","sja_filter_tag_btn").style("padding","3px 6px").style("border-radius","6px").on("click",(()=>{if(!this.opts.tree)return;if(this.opts.tree.click_term){this.opts.tree.click_term(e);return}if(this.opts.tree.click_term2select_tvs){this.api.dispatch({type:"submenu_set",submenu:{term:e.term,type:"tvs"}});return}}))}}}const F=l(W);export{F as appInit};