@sjcrh/proteinpaint-client 2.207.1 → 2.208.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 (919) hide show
  1. package/dist/2dmaf-PN5YS362.js +1367 -0
  2. package/dist/AggMatrixInput-NJHU4FU2.js +406 -0
  3. package/dist/AggMatrixInput-NJHU4FU2.js.map +7 -0
  4. package/dist/AggregateMatrix-IBWOJWOC.js +41 -0
  5. package/dist/AppHeader-XV6S7GG5.js +830 -0
  6. package/dist/BoxPlot-ZIVA55SK.js +1211 -0
  7. package/dist/CorrelationVolcano-33I4FC44.js +617 -0
  8. package/dist/CorrelationVolcano-33I4FC44.js.map +7 -0
  9. package/dist/Cuminc-WKY35UGV.js +1219 -0
  10. package/dist/DE-E256DHID.js +89 -0
  11. package/dist/DEinput-YU3W72K7.js +499 -0
  12. package/dist/DM-W7PXTIKY.js +90 -0
  13. package/dist/DifferentialAnalysis-SHMQHWJL.js +236 -0
  14. package/dist/DifferentialAnalysis-SHMQHWJL.js.map +7 -0
  15. package/dist/Disco-OZY5GW2Z.js +3389 -0
  16. package/dist/Disco.UI-NRALEYXK.js +243 -0
  17. package/dist/DmrPlot-QKUX5XUW.js +637 -0
  18. package/dist/GB-ZYH7PGHT.js +1391 -0
  19. package/dist/GSEA-VQTD4MLY.js +851 -0
  20. package/dist/GeneExpInput-XEFUTLFU.js +42 -0
  21. package/dist/Geomap-GEK7UEDU.js +84 -0
  22. package/dist/HicApp-ZY7UHV5H.js +2245 -0
  23. package/dist/IDCViewer-YNKG4V46.js +10812 -0
  24. package/dist/NumBinaryEditor-NEL727DX.js +279 -0
  25. package/dist/NumBinaryEditor.unit.spec-GCGZMJYF.js +312 -0
  26. package/dist/NumContEditor-IM6RRDGU.js +105 -0
  27. package/dist/NumContEditor.unit.spec-B5AJXANS.js +164 -0
  28. package/dist/NumCustomBinEditor-EZT5DRKP.js +33 -0
  29. package/dist/NumCustomBinEditor.unit.spec-KLUDS6TH.js +397 -0
  30. package/dist/NumDiscreteEditor-2M6Q5AAZ.js +170 -0
  31. package/dist/NumDiscreteEditor.unit.spec-2JYZYJUX.js +233 -0
  32. package/dist/NumRegularBinEditor-AQDHA2PU.js +33 -0
  33. package/dist/NumRegularBinEditor.unit.spec-62BYFNYG.js +278 -0
  34. package/dist/NumSplineEditor-6Y5TZSTO.js +210 -0
  35. package/dist/NumSplineEditor.unit.spec-S65AV5EK.js +224 -0
  36. package/dist/NumericDensity-5ES4SDWZ.js +33 -0
  37. package/dist/NumericDensity.unit.spec-J6KZSE2P.js +418 -0
  38. package/dist/NumericHandler-ZTLDPP2F.js +34 -0
  39. package/dist/NumericHandler.unit.spec-BZFBVHGU.js +214 -0
  40. package/dist/ProteomeInput-IKEXPCGV.js +388 -0
  41. package/dist/Regression-6F6YP3AX.js +1416 -0
  42. package/dist/RunChart2-CVRPXQH5.js +749 -0
  43. package/dist/SC-FPXVXBXF.js +1175 -0
  44. package/dist/SC-FPXVXBXF.js.map +7 -0
  45. package/dist/Violin-BAS6DQHL.js +1081 -0
  46. package/dist/Violin-BAS6DQHL.js.map +7 -0
  47. package/dist/Volcano-FCCWUMX7.js +1649 -0
  48. package/dist/Wsi-3YTFABWG.js +629 -0
  49. package/dist/Wsi-3YTFABWG.js.map +7 -0
  50. package/dist/adSandbox-QYIG6637.js +33 -0
  51. package/dist/animatedBubbleChart-X53PR73H.js +547 -0
  52. package/dist/app-HJLTRZPI.js +32 -0
  53. package/dist/app-MGY6A4DM.js +42 -0
  54. package/dist/app.js +14 -14
  55. package/dist/bam-VRQHRCP5.js +876 -0
  56. package/dist/barchart-TWMOUZFL.js +42 -0
  57. package/dist/barchart2-CV7RMMRG.js +309 -0
  58. package/dist/block-L53P4UGQ.js +6249 -0
  59. package/dist/block.init-XYOJTXKP.js +33 -0
  60. package/dist/block.mds.expressionrank-77FSBDHA.js +354 -0
  61. package/dist/block.mds.geneboxplot-4TSYV4WS.js +823 -0
  62. package/dist/block.mds.junction-P4MYDET6.js +1539 -0
  63. package/dist/block.mds.svcnv-CYOFAS2T.js +6796 -0
  64. package/dist/block.svg-IT3ELCF4.js +159 -0
  65. package/dist/block.tk.aicheck-GULHJLV5.js +278 -0
  66. package/dist/block.tk.ase-RW5YL6HN.js +360 -0
  67. package/dist/block.tk.bam-MPGQW6KB.js +1901 -0
  68. package/dist/block.tk.bedgraphdot-EYRY374P.js +379 -0
  69. package/dist/block.tk.bigwig.ui-BKSXCDNM.js +206 -0
  70. package/dist/block.tk.hicstraw-76PV6NM3.js +818 -0
  71. package/dist/block.tk.junction-Z52QHQJQ.js +2358 -0
  72. package/dist/block.tk.junction.textmatrixui-K32OOTZC.js +194 -0
  73. package/dist/block.tk.ld-DDGLRHPO.js +94 -0
  74. package/dist/block.tk.menu-MO6TESKI.js +1024 -0
  75. package/dist/block.tk.pgv-AKLKKSEP.js +938 -0
  76. package/dist/brainImaging-KSTJQJAB.js +555 -0
  77. package/dist/brainRegions-WCRMMSK4.js +217 -0
  78. package/dist/bubbleHeatmap-4YOQ3BAB.js +378 -0
  79. package/dist/cellTypeBubbleHeatmap-O6YZ2RW4.js +278 -0
  80. package/dist/chunk-3GUVLDUS.js +299 -0
  81. package/dist/chunk-3PQDD5HM.js +446 -0
  82. package/dist/chunk-3WYUHDDP.js +1986 -0
  83. package/dist/chunk-4C7MA5Q3.js +158 -0
  84. package/dist/chunk-4EZLVENZ.js +1612 -0
  85. package/dist/chunk-4EZLVENZ.js.map +7 -0
  86. package/dist/chunk-4PB5ZEOB.js +102 -0
  87. package/dist/chunk-5IMFPVGT.js +119 -0
  88. package/dist/chunk-6DPELKO5.js +518 -0
  89. package/dist/chunk-6HGTVMZM.js +54 -0
  90. package/dist/chunk-6HGTVMZM.js.map +7 -0
  91. package/dist/chunk-72P6O537.js +1731 -0
  92. package/dist/chunk-72P6O537.js.map +7 -0
  93. package/dist/chunk-74C6G6JD.js +397 -0
  94. package/dist/chunk-A7TXS6JR.js +276 -0
  95. package/dist/chunk-AAJXHERO.js +123 -0
  96. package/dist/chunk-AVS4IXEA.js +692 -0
  97. package/dist/chunk-AVS4IXEA.js.map +7 -0
  98. package/dist/chunk-BFXZBZEV.js +176 -0
  99. package/dist/chunk-BGVGN73F.js +480 -0
  100. package/dist/chunk-BL7EYUZC.js +6360 -0
  101. package/dist/chunk-BPGZUNLL.js +274 -0
  102. package/dist/chunk-CPIPN5F6.js +141 -0
  103. package/dist/chunk-D5MSWPAZ.js +217 -0
  104. package/dist/chunk-DFT2PAIU.js +243 -0
  105. package/dist/chunk-DMWOK4DS.js +178 -0
  106. package/dist/chunk-DMWOK4DS.js.map +7 -0
  107. package/dist/chunk-E7NVJ44Z.js +263 -0
  108. package/dist/chunk-EMMGUSJB.js +54 -0
  109. package/dist/chunk-G3CCQOLH.js +240 -0
  110. package/dist/chunk-GGQVDHYF.js +379 -0
  111. package/dist/chunk-GMRIEUBW.js +408 -0
  112. package/dist/chunk-GMRIEUBW.js.map +7 -0
  113. package/dist/chunk-GPZYAJQH.js +2676 -0
  114. package/dist/chunk-GS6ZMPKP.js +272 -0
  115. package/dist/chunk-GUXKLMLM.js +102 -0
  116. package/dist/chunk-HELEV3LT.js +2853 -0
  117. package/dist/chunk-HKKTNIMX.js +339 -0
  118. package/dist/chunk-HKSRIEWJ.js +26 -0
  119. package/dist/chunk-IELQ3HMN.js +70 -0
  120. package/dist/chunk-IISNWG4X.js +103 -0
  121. package/dist/chunk-J7KB2MH3.js +34 -0
  122. package/dist/chunk-JEJV7V7M.js +2327 -0
  123. package/dist/chunk-JIZ3B32T.js +626 -0
  124. package/dist/chunk-KAY2ODXX.js +38 -0
  125. package/dist/chunk-KJM6PLXM.js +5071 -0
  126. package/dist/chunk-KZHF3MQX.js +1278 -0
  127. package/dist/chunk-MC674TS2.js +194 -0
  128. package/dist/chunk-MLKQZ3RL.js +1339 -0
  129. package/dist/chunk-MSSPT5YM.js +550 -0
  130. package/dist/chunk-N6IWVSFP.js +4375 -0
  131. package/dist/chunk-N6IWVSFP.js.map +7 -0
  132. package/dist/chunk-NBGVEZNX.js +56 -0
  133. package/dist/chunk-NBGVEZNX.js.map +7 -0
  134. package/dist/chunk-OBBR4UYN.js +54 -0
  135. package/dist/chunk-PQA3C2NY.js +294 -0
  136. package/dist/chunk-QJ2VBXFB.js +134 -0
  137. package/dist/chunk-QJ3HYZH3.js +24772 -0
  138. package/dist/chunk-QJ3HYZH3.js.map +7 -0
  139. package/dist/chunk-QP7EJXSU.js +55 -0
  140. package/dist/chunk-QUHXX7JE.js +56 -0
  141. package/dist/chunk-QUHXX7JE.js.map +7 -0
  142. package/dist/chunk-REPQKF5L.js +182 -0
  143. package/dist/chunk-REPQKF5L.js.map +7 -0
  144. package/dist/chunk-SHXJW27D.js +2784 -0
  145. package/dist/chunk-SUNDNTVY.js +302 -0
  146. package/dist/chunk-TSI4W6XO.js +98 -0
  147. package/dist/chunk-TXIQ5PHR.js +468 -0
  148. package/dist/chunk-U45R6QNT.js +562 -0
  149. package/dist/chunk-UMZJQWWK.js +1233 -0
  150. package/dist/chunk-VMRO6DMC.js +2140 -0
  151. package/dist/chunk-VMRO6DMC.js.map +7 -0
  152. package/dist/chunk-VO7Q4WMM.js +55 -0
  153. package/dist/chunk-VWGRKOVJ.js +170 -0
  154. package/dist/chunk-WCTKHF5T.js +197 -0
  155. package/dist/chunk-WOMERKMR.js +31 -0
  156. package/dist/chunk-WXX2YD4Q.js +59 -0
  157. package/dist/chunk-X44AR557.js +382 -0
  158. package/dist/chunk-XEU5HXOY.js +783 -0
  159. package/dist/chunk-XGYQZHNX.js +281 -0
  160. package/dist/chunk-XOND7UIK.js +49 -0
  161. package/dist/chunk-XRMUUWLS.js +339 -0
  162. package/dist/chunk-XTOGCXPD.js +129 -0
  163. package/dist/chunk-Y5BBFDC3.js +14 -0
  164. package/dist/chunk-Z2FSHODI.js +203 -0
  165. package/dist/cohort-JWIQOO7U.js +70 -0
  166. package/dist/condition-ZUAQYF5C.js +327 -0
  167. package/dist/controls-ZPQ6SXD2.js +34 -0
  168. package/dist/controls.config-NELL5HY5.js +34 -0
  169. package/dist/correlation-2X76UI3K.js +95 -0
  170. package/dist/customdata.inputui-V6QIGFRP.js +284 -0
  171. package/dist/dataDownload-NSDY4MSL.js +329 -0
  172. package/dist/databrowser.ui-DDLFQB6K.js +425 -0
  173. package/dist/dictionary-WSDD6TFI.js +113 -0
  174. package/dist/dnaMethylation-3IM4OACZ.js +33 -0
  175. package/dist/dnaMethylation.integration.spec-5CSJA67S.js +198 -0
  176. package/dist/dofetch-GZ7POIBV.js +48 -0
  177. package/dist/e2pca-AX7U2DOI.js +344 -0
  178. package/dist/ep-UKACHFJU.js +1249 -0
  179. package/dist/expclust.gdc.spec-46HDKH2Q.js +302 -0
  180. package/dist/facet-3EONZDDE.js +519 -0
  181. package/dist/gb-W7GX5NWS.js +81 -0
  182. package/dist/geneExpClustering-PJA6Y5GW.js +244 -0
  183. package/dist/geneExpression-EMLVPVNK.js +310 -0
  184. package/dist/geneExpression-JMGYBT53.js +33 -0
  185. package/dist/geneExpression.unit.spec-DDZVZJVC.js +128 -0
  186. package/dist/geneORA-CIAFQQWB.js +273 -0
  187. package/dist/geneRanking-JRAU6FMJ.js +548 -0
  188. package/dist/geneVariant-3DZTWQFG.js +36 -0
  189. package/dist/geneVariant-YWURIZ72.js +286 -0
  190. package/dist/geneVariant.integration.spec-V3KECZMM.js +489 -0
  191. package/dist/genefusion.ui-AO3TUDTL.js +303 -0
  192. package/dist/geneset-RCIP2GZH.js +203 -0
  193. package/dist/genomeBrowser.spec-7PZCNBL3.js +276 -0
  194. package/dist/grin2-EUBCNH4Q.js +70 -0
  195. package/dist/grin2-YYBB5XJK.js +1137 -0
  196. package/dist/hierCluster-AV5NO2GW.js +59 -0
  197. package/dist/hierCluster-W2MVN34V.js +55 -0
  198. package/dist/hierCluster.config-4MBWG6RZ.js +36 -0
  199. package/dist/hierCluster.integration.spec-JUIBIUKH.js +483 -0
  200. package/dist/hierCluster.interactivity-6PJE64PF.js +49 -0
  201. package/dist/hierCluster.renderers-RWDQ5SHY.js +19 -0
  202. package/dist/imagePlot-XLDQNUJA.js +156 -0
  203. package/dist/importPlot-7FISAQKR.js +8 -0
  204. package/dist/isoformExpression-WOQAOVZS.js +35 -0
  205. package/dist/isoformExpression.unit.spec-BMEGJNCO.js +237 -0
  206. package/dist/junction-6NO36IPU.js +36 -0
  207. package/dist/junction.customTerm-N6JAOWZO.js +16 -0
  208. package/dist/junction.unit.spec-UKGSQHO4.js +182 -0
  209. package/dist/launch.adhoc-42PUNEA6.js +37 -0
  210. package/dist/leftlabel.sample-EXAUDPSB.js +258 -0
  211. package/dist/lollipop-4ASTA5HO.js +166 -0
  212. package/dist/maf-HPXANL3M.js +455 -0
  213. package/dist/maftimeline-2SXFX3HF.js +587 -0
  214. package/dist/matrix-DX4W5XMX.js +59 -0
  215. package/dist/matrix-S34ITAPJ.js +54 -0
  216. package/dist/matrix.cells-BLULUGSZ.js +26 -0
  217. package/dist/matrix.config-Z3LWYH74.js +37 -0
  218. package/dist/matrix.data-73HY7Y2V.js +23 -0
  219. package/dist/matrix.groups-NOUMYNFY.js +26 -0
  220. package/dist/matrix.integration.spec-VTXYJ46U.js +3160 -0
  221. package/dist/matrix.interactivity-YHDIO5A2.js +37 -0
  222. package/dist/matrix.layout-25HYKUF2.js +39 -0
  223. package/dist/matrix.legend-IMK7DH4V.js +20 -0
  224. package/dist/matrix.renderers-3RZRN6HO.js +34 -0
  225. package/dist/matrix.serieses-ZTVHQ7QA.js +19 -0
  226. package/dist/matrix.sort-EDXHT6NZ.js +26 -0
  227. package/dist/matrix.sort.unit.spec-LSNY7PHU.js +468 -0
  228. package/dist/matrix.sorterUi-3DRNHG5Z.js +16 -0
  229. package/dist/matrix.sorterUi.unit.spec-GNIIWGRJ.js +338 -0
  230. package/dist/matrix.unit.spec-7A6ZFRXI.js +150 -0
  231. package/dist/mavb-M5AXPLYX.js +727 -0
  232. package/dist/mds.fimo-QE5OFA22.js +513 -0
  233. package/dist/mds.samplescatterplot-664EOHX2.js +1545 -0
  234. package/dist/mds.survivalplot-H4TJD44D.js +477 -0
  235. package/dist/multivalue-JD3CNQJR.js +83 -0
  236. package/dist/numericDictTermCluster-XPKEYXD7.js +63 -0
  237. package/dist/oncomatrix-TX5PZQ76.js +290 -0
  238. package/dist/oncomatrix.spec-6X2WAHL7.js +443 -0
  239. package/dist/plot.2dvaf-5OHUFTMK.js +372 -0
  240. package/dist/plot.app-XIVVJHWG.js +36 -0
  241. package/dist/plot.barplot-PSODLAXD.js +97 -0
  242. package/dist/plot.boxplot-W3ASYFOG.js +146 -0
  243. package/dist/plot.brainImaging-JGDLKLR7.js +51 -0
  244. package/dist/plot.disco-TPMXTTZK.js +99 -0
  245. package/dist/plot.ssgq-KIZIOZIF.js +134 -0
  246. package/dist/plot.vaf2cov-MSMW72IY.js +253 -0
  247. package/dist/polar2-LA4MSRRN.js +232 -0
  248. package/dist/profileForms-BJRNB2ZF.js +941 -0
  249. package/dist/profilePlot-DDO53C4T.js +49 -0
  250. package/dist/proteinView-NFUR42XQ.js +1357 -0
  251. package/dist/proteomeCohortCompare-OZVF3X66.js +912 -0
  252. package/dist/pseudbulk.unit.spec-RY72JF7A.js +86 -0
  253. package/dist/pseudbulk.unit.spec-RY72JF7A.js.map +7 -0
  254. package/dist/pseudobulk-UVT5G2VL.js +35 -0
  255. package/dist/qualitative-X3VXNC7X.js +38 -0
  256. package/dist/radar2-RTVUJ3AN.js +327 -0
  257. package/dist/radarFacility2-ZGLZ5AKM.js +335 -0
  258. package/dist/rememberedGvQ.unit.spec-RLLLWU5M.js +211 -0
  259. package/dist/render-LR5BOYW6.js +33 -0
  260. package/dist/report-37W5OXUM.js +217 -0
  261. package/dist/sampleView-BDC2WPH7.js +43 -0
  262. package/dist/samplelst-V2EIVZC5.js +106 -0
  263. package/dist/samplematrix-XOSKILUL.js +2193 -0
  264. package/dist/sc-ZVZPWQY7.js +81 -0
  265. package/dist/scatter-2ZE5MCYH.js +88 -0
  266. package/dist/scatter-ZOWFPGIS.js +925 -0
  267. package/dist/scatter-ZOWFPGIS.js.map +7 -0
  268. package/dist/selectGenomeWithTklst-EF7WYEAJ.js +129 -0
  269. package/dist/singleCellCellType-TKCGC3G3.js +33 -0
  270. package/dist/singleCellCellType.unit.spec-JZ6UHC5F.js +154 -0
  271. package/dist/singleCellGeneExpression-I2INGXGI.js +33 -0
  272. package/dist/singleCellGeneExpression.unit.spec-KL77FSHZ.js +148 -0
  273. package/dist/singleCellNumericValue-2X5NCEHL.js +33 -0
  274. package/dist/singleCellNumericValue.unit.spec-OUDBX5MY.js +416 -0
  275. package/dist/singleCellNumericValue.unit.spec-OUDBX5MY.js.map +7 -0
  276. package/dist/singleCellPlot-Q6INE54V.js +48 -0
  277. package/dist/singlecell-5N2P5ZAT.js +81 -0
  278. package/dist/singlecell-NPSWMNI3.js +1566 -0
  279. package/dist/snp-2WPJYPDE.js +33 -0
  280. package/dist/snp.unit.spec-PPWIIOX6.js +171 -0
  281. package/dist/snplocus-T3HZFZWA.js +203 -0
  282. package/dist/spliceevent.a53ss.diagram-APCF4LV5.js +146 -0
  283. package/dist/spliceevent.exonskip.diagram-TT5JGBSC.js +278 -0
  284. package/dist/spliceevent.noeventdiagram-CPXQSX3Z.js +455 -0
  285. package/dist/ssGSEA-FSX6P7HA.js +33 -0
  286. package/dist/ssGSEA.unit.spec-TXYT665R.js +83 -0
  287. package/dist/stattable-BD64SFYV.js +117 -0
  288. package/dist/studyCatalog-6BOWO4PO.js +414 -0
  289. package/dist/summarizeCnvGeneexp-AMLYJIPU.js +158 -0
  290. package/dist/summarizeGeneexpSurvival-IDM7T333.js +105 -0
  291. package/dist/summarizeMutationCnv-R6SYSJQC.js +159 -0
  292. package/dist/summarizeMutationDiagnosis-XZJ4JLW2.js +35 -0
  293. package/dist/summarizeMutationSurvival-ABJ5RL4L.js +99 -0
  294. package/dist/summary-NVYCTE6P.js +44 -0
  295. package/dist/summary.integration.spec-SSLTLVNW.js +409 -0
  296. package/dist/summaryInput-SJOZETRP.js +242 -0
  297. package/dist/sunburst-RU5ZPJKW.js +278 -0
  298. package/dist/survival-BHJQMXKI.js +53 -0
  299. package/dist/survival-DVG6Y2FV.js +1248 -0
  300. package/dist/survival.integration.spec-OJUPTY5N.js +613 -0
  301. package/dist/survival.integration.spec-OJUPTY5N.js.map +7 -0
  302. package/dist/svgraph-ETFA4GRX.js +1382 -0
  303. package/dist/svmr-AI3RU4JK.js +3837 -0
  304. package/dist/table-YCTSMLQL.js +197 -0
  305. package/dist/termCollection-GMKEZR6D.js +252 -0
  306. package/dist/termCollection-VEVKKJZD.js +33 -0
  307. package/dist/termCollection.unit.spec-EU6YCEPX.js +299 -0
  308. package/dist/termCollectionFractionSelection-UBS74X36.js +42 -0
  309. package/dist/termCollectionFractionSelection.unit.spec-Y5OJFGDD.js +188 -0
  310. package/dist/tk-HMF4HCNV.js +1121 -0
  311. package/dist/tk-W6Z4FJMW.js +41 -0
  312. package/dist/tp.ui-NECRDJCS.js +1454 -0
  313. package/dist/tvs.dt-2JEH3F35.js +34 -0
  314. package/dist/tvs.dtcnv.categorical-YBXKEBR2.js +35 -0
  315. package/dist/tvs.dtcnv.continuous-AD3SJ6BY.js +67 -0
  316. package/dist/tvs.dtfusion-ODI3CLQS.js +35 -0
  317. package/dist/tvs.dtitd-V3LYLPJY.js +35 -0
  318. package/dist/tvs.dtsnvindel-R3V5LTNL.js +35 -0
  319. package/dist/tvs.dtsv-ZQLKEDLJ.js +35 -0
  320. package/dist/tvs.samplelst-G25A7HM6.js +98 -0
  321. package/dist/tvs.termCollection-WLVCWDEJ.js +124 -0
  322. package/dist/vocabulary-6K537FJM.js +36 -0
  323. package/dist/vocabulary-6K537FJM.js.map +7 -0
  324. package/dist/wsi.direct-SNPPQPVO.js +8343 -0
  325. package/package.json +3 -3
  326. package/dist/2dmaf-32F56QBJ.js +0 -1367
  327. package/dist/AggMatrixInput-RDFMGV47.js +0 -277
  328. package/dist/AggMatrixInput-RDFMGV47.js.map +0 -7
  329. package/dist/AggregateMatrix-TPXNNWVD.js +0 -41
  330. package/dist/AppHeader-SEJXDJE3.js +0 -830
  331. package/dist/BoxPlot-LOAO2MDO.js +0 -1211
  332. package/dist/CorrelationVolcano-AU6ZAFPG.js +0 -614
  333. package/dist/CorrelationVolcano-AU6ZAFPG.js.map +0 -7
  334. package/dist/Cuminc-O533BXFY.js +0 -1219
  335. package/dist/DE-FDAUNOWU.js +0 -89
  336. package/dist/DEinput-TF2VYTIJ.js +0 -499
  337. package/dist/DM-42YN3OEO.js +0 -90
  338. package/dist/DifferentialAnalysis-H5NBPR3P.js +0 -237
  339. package/dist/DifferentialAnalysis-H5NBPR3P.js.map +0 -7
  340. package/dist/Disco-FGFHIKUR.js +0 -3389
  341. package/dist/Disco.UI-YGIU2JPM.js +0 -243
  342. package/dist/DmrPlot-EQFXMAW5.js +0 -637
  343. package/dist/GB-244UT5VU.js +0 -1391
  344. package/dist/GSEA-KXQBR3HH.js +0 -851
  345. package/dist/GeneExpInput-ZY6SHXTX.js +0 -42
  346. package/dist/Geomap-6ZV4AM23.js +0 -84
  347. package/dist/HicApp-4UHX2YGP.js +0 -2245
  348. package/dist/IDCViewer-AB6LLO64.js +0 -10812
  349. package/dist/NumBinaryEditor-CGSO2T4L.js +0 -279
  350. package/dist/NumBinaryEditor.unit.spec-3QHARZQJ.js +0 -312
  351. package/dist/NumContEditor-YLKSC4Y2.js +0 -105
  352. package/dist/NumContEditor.unit.spec-L3GC3ZTJ.js +0 -164
  353. package/dist/NumCustomBinEditor-K3XSFHCC.js +0 -33
  354. package/dist/NumCustomBinEditor.unit.spec-2FUHE6BX.js +0 -397
  355. package/dist/NumDiscreteEditor-RJCSIW4R.js +0 -170
  356. package/dist/NumDiscreteEditor.unit.spec-CUA6BOIS.js +0 -233
  357. package/dist/NumRegularBinEditor-C3VIFDS4.js +0 -33
  358. package/dist/NumRegularBinEditor.unit.spec-V2UJ5FLH.js +0 -278
  359. package/dist/NumSplineEditor-XBE7OV7P.js +0 -210
  360. package/dist/NumSplineEditor.unit.spec-CKRRI4US.js +0 -224
  361. package/dist/NumericDensity-ZL7UY7TL.js +0 -33
  362. package/dist/NumericDensity.unit.spec-CWTMSR56.js +0 -418
  363. package/dist/NumericHandler-56ENFMNK.js +0 -34
  364. package/dist/NumericHandler.unit.spec-3YW34TTJ.js +0 -214
  365. package/dist/ProteomeInput-HIS4GYWH.js +0 -388
  366. package/dist/Regression-C5GZYLEN.js +0 -1416
  367. package/dist/RunChart2-X5WKYLPQ.js +0 -749
  368. package/dist/SC-3Y5J65DT.js +0 -1107
  369. package/dist/SC-3Y5J65DT.js.map +0 -7
  370. package/dist/Violin-F3QS2EMJ.js +0 -1082
  371. package/dist/Violin-F3QS2EMJ.js.map +0 -7
  372. package/dist/Volcano-ZNYDKP2O.js +0 -1649
  373. package/dist/Wsi-B6EIGTI2.js +0 -609
  374. package/dist/Wsi-B6EIGTI2.js.map +0 -7
  375. package/dist/adSandbox-A52OQSOW.js +0 -33
  376. package/dist/animatedBubbleChart-OQOZ3WFK.js +0 -547
  377. package/dist/app-4KIKXQX4.js +0 -32
  378. package/dist/app-NZUNKWKK.js +0 -42
  379. package/dist/bam-SME7YD3E.js +0 -876
  380. package/dist/barchart-ESY6FOS4.js +0 -42
  381. package/dist/barchart2-XEJZGCES.js +0 -309
  382. package/dist/block-747IK2EW.js +0 -6249
  383. package/dist/block.init-ITZ42K43.js +0 -33
  384. package/dist/block.mds.expressionrank-Q63IJAJK.js +0 -354
  385. package/dist/block.mds.geneboxplot-EZIKAIKC.js +0 -823
  386. package/dist/block.mds.junction-TJXFKZ2Q.js +0 -1539
  387. package/dist/block.mds.svcnv-WSIEAII6.js +0 -6796
  388. package/dist/block.svg-CQX5W6R4.js +0 -159
  389. package/dist/block.tk.aicheck-J4MQ4BSD.js +0 -278
  390. package/dist/block.tk.ase-2JFNPWCZ.js +0 -360
  391. package/dist/block.tk.bam-RBQ4AXSQ.js +0 -1901
  392. package/dist/block.tk.bedgraphdot-ZQBOMVTO.js +0 -379
  393. package/dist/block.tk.bigwig.ui-U5IBO3VF.js +0 -206
  394. package/dist/block.tk.hicstraw-ZRZMFLLX.js +0 -818
  395. package/dist/block.tk.junction-7U7ABE4O.js +0 -2358
  396. package/dist/block.tk.junction.textmatrixui-AEXZ7W3U.js +0 -194
  397. package/dist/block.tk.ld-E7WPFL5P.js +0 -94
  398. package/dist/block.tk.menu-AITMEZTZ.js +0 -1024
  399. package/dist/block.tk.pgv-EDPZHI5L.js +0 -938
  400. package/dist/brainImaging-35LPNBDR.js +0 -555
  401. package/dist/brainRegions-JMTQT4X3.js +0 -217
  402. package/dist/bubbleHeatmap-FMBKMDUL.js +0 -378
  403. package/dist/cellTypeBubbleHeatmap-ZPTAGEWW.js +0 -278
  404. package/dist/chunk-2GBG3KA7.js +0 -129
  405. package/dist/chunk-2IVN5DWA.js +0 -302
  406. package/dist/chunk-36AAUYZE.js +0 -194
  407. package/dist/chunk-3K7AYA3M.js +0 -54
  408. package/dist/chunk-4JFFFGL3.js +0 -468
  409. package/dist/chunk-4KJSNR5E.js +0 -562
  410. package/dist/chunk-52QHIKH2.js +0 -2139
  411. package/dist/chunk-52QHIKH2.js.map +0 -7
  412. package/dist/chunk-5ALGKNTQ.js +0 -6360
  413. package/dist/chunk-5JCTTSV4.js +0 -480
  414. package/dist/chunk-5W7K7STT.js +0 -26
  415. package/dist/chunk-6CIGRV5K.js +0 -677
  416. package/dist/chunk-6CIGRV5K.js.map +0 -7
  417. package/dist/chunk-6U2OPC6J.js +0 -176
  418. package/dist/chunk-7AHTS4BP.js +0 -382
  419. package/dist/chunk-7HFAEB3C.js +0 -55
  420. package/dist/chunk-7HGZRJZZ.js +0 -98
  421. package/dist/chunk-A2ORIMUJ.js +0 -339
  422. package/dist/chunk-A32SGNCT.js +0 -1233
  423. package/dist/chunk-AKA6RWLC.js +0 -217
  424. package/dist/chunk-AMVZ6KT5.js +0 -240
  425. package/dist/chunk-ASXUC6SM.js +0 -54
  426. package/dist/chunk-BCO5T43J.js +0 -379
  427. package/dist/chunk-BDQPMVKD.js +0 -783
  428. package/dist/chunk-BOQZOLRA.js +0 -274
  429. package/dist/chunk-BSCMVKBP.js +0 -5071
  430. package/dist/chunk-BZN2O76M.js +0 -119
  431. package/dist/chunk-BZZZQFTI.js +0 -34
  432. package/dist/chunk-CRHGXVUQ.js +0 -272
  433. package/dist/chunk-D6AB63O3.js +0 -216
  434. package/dist/chunk-D6AB63O3.js.map +0 -7
  435. package/dist/chunk-DPQP2GUW.js +0 -626
  436. package/dist/chunk-EKQ7NYOU.js +0 -276
  437. package/dist/chunk-EUQEQOFE.js +0 -141
  438. package/dist/chunk-FKA55PHV.js +0 -281
  439. package/dist/chunk-GVLWCGXX.js +0 -397
  440. package/dist/chunk-HLVWCJRO.js +0 -518
  441. package/dist/chunk-HPAW7XDM.js +0 -178
  442. package/dist/chunk-HPAW7XDM.js.map +0 -7
  443. package/dist/chunk-IV57XNTG.js +0 -123
  444. package/dist/chunk-JMAFJKGG.js +0 -243
  445. package/dist/chunk-JZHRVYNS.js +0 -2676
  446. package/dist/chunk-K6YUMBDY.js +0 -55
  447. package/dist/chunk-L6WNBKYN.js +0 -158
  448. package/dist/chunk-LGR6CJTW.js +0 -2853
  449. package/dist/chunk-LOWJQFCC.js +0 -550
  450. package/dist/chunk-M5SYLBBC.js +0 -2327
  451. package/dist/chunk-MKAILEWO.js +0 -59
  452. package/dist/chunk-N4PDPZWQ.js +0 -4366
  453. package/dist/chunk-N4PDPZWQ.js.map +0 -7
  454. package/dist/chunk-OIJ6GRVS.js +0 -134
  455. package/dist/chunk-ONVIVITY.js +0 -203
  456. package/dist/chunk-OQX3HO46.js +0 -56
  457. package/dist/chunk-OQX3HO46.js.map +0 -7
  458. package/dist/chunk-OYLGAFFY.js +0 -31
  459. package/dist/chunk-P7DIIYCX.js +0 -197
  460. package/dist/chunk-PC4MFDHP.js +0 -24613
  461. package/dist/chunk-PC4MFDHP.js.map +0 -7
  462. package/dist/chunk-PGKOJYV6.js +0 -50
  463. package/dist/chunk-PGKOJYV6.js.map +0 -7
  464. package/dist/chunk-PPSWNLMG.js +0 -402
  465. package/dist/chunk-PPSWNLMG.js.map +0 -7
  466. package/dist/chunk-R624P2GE.js +0 -263
  467. package/dist/chunk-RBSAEAQV.js +0 -446
  468. package/dist/chunk-RUBZCKIX.js +0 -1608
  469. package/dist/chunk-RUBZCKIX.js.map +0 -7
  470. package/dist/chunk-RZ3KEFZ2.js +0 -339
  471. package/dist/chunk-SS66BHGA.js +0 -103
  472. package/dist/chunk-SU63FEY6.js +0 -294
  473. package/dist/chunk-SVC65ZPG.js +0 -102
  474. package/dist/chunk-TG3QBMDK.js +0 -102
  475. package/dist/chunk-TMXW5HVE.js +0 -1278
  476. package/dist/chunk-TPDBOH3A.js +0 -1339
  477. package/dist/chunk-U5RWKZVS.js +0 -1720
  478. package/dist/chunk-U5RWKZVS.js.map +0 -7
  479. package/dist/chunk-UYKZ5HXA.js +0 -1986
  480. package/dist/chunk-VOYUJJQ6.js +0 -70
  481. package/dist/chunk-W4RYRU5D.js +0 -38
  482. package/dist/chunk-WFSMIVJT.js +0 -2784
  483. package/dist/chunk-Y4PX2ECH.js +0 -299
  484. package/dist/chunk-YKM46UX5.js +0 -170
  485. package/dist/chunk-Z7AO6A7M.js +0 -14
  486. package/dist/chunk-ZENZ5H2Q.js +0 -49
  487. package/dist/cohort-Q7TW5XTY.js +0 -70
  488. package/dist/condition-H6LBUHIF.js +0 -327
  489. package/dist/controls-DWDKFDXY.js +0 -34
  490. package/dist/controls.config-KF7PHZSG.js +0 -34
  491. package/dist/correlation-YMSARIER.js +0 -95
  492. package/dist/customdata.inputui-KEFE7ZHS.js +0 -284
  493. package/dist/dataDownload-G7TGPFGL.js +0 -329
  494. package/dist/databrowser.ui-NFIIFQJZ.js +0 -425
  495. package/dist/dictionary-ERJQMALC.js +0 -113
  496. package/dist/dnaMethylation-KVCXKAU3.js +0 -33
  497. package/dist/dnaMethylation.integration.spec-3NXGGG4J.js +0 -198
  498. package/dist/dofetch-YRWLEQEH.js +0 -48
  499. package/dist/e2pca-M2F2CI6I.js +0 -344
  500. package/dist/ep-QAEG4RV4.js +0 -1249
  501. package/dist/expclust.gdc.spec-P77T6JR2.js +0 -302
  502. package/dist/facet-LJTSTASE.js +0 -519
  503. package/dist/gb-KSB2DQHH.js +0 -81
  504. package/dist/geneExpClustering-KHDCPE65.js +0 -244
  505. package/dist/geneExpression-AWWMOUAR.js +0 -310
  506. package/dist/geneExpression-Z2EDR6EN.js +0 -33
  507. package/dist/geneExpression.unit.spec-WB2ESPKT.js +0 -128
  508. package/dist/geneORA-NGZTMFSJ.js +0 -273
  509. package/dist/geneRanking-AYNBGFKU.js +0 -548
  510. package/dist/geneVariant-AL64NDHH.js +0 -36
  511. package/dist/geneVariant-QMKR3LUV.js +0 -286
  512. package/dist/geneVariant.integration.spec-N3U5CIRT.js +0 -489
  513. package/dist/genefusion.ui-IWJMF2BM.js +0 -303
  514. package/dist/geneset-APCO4BRX.js +0 -203
  515. package/dist/genomeBrowser.spec-JTCVUTO5.js +0 -276
  516. package/dist/grin2-FVX6AIST.js +0 -70
  517. package/dist/grin2-LF46UKFY.js +0 -1137
  518. package/dist/hierCluster-4DRHXD6W.js +0 -55
  519. package/dist/hierCluster-SFRQK3PS.js +0 -59
  520. package/dist/hierCluster.config-G2TFGBYF.js +0 -36
  521. package/dist/hierCluster.integration.spec-ZUZKCG6A.js +0 -483
  522. package/dist/hierCluster.interactivity-LQA6J56H.js +0 -49
  523. package/dist/hierCluster.renderers-TZZJEVFO.js +0 -19
  524. package/dist/imagePlot-OUHFWYKT.js +0 -156
  525. package/dist/importPlot-7V456QK7.js +0 -8
  526. package/dist/isoformExpression-NGUJJ6VI.js +0 -35
  527. package/dist/isoformExpression.unit.spec-DCRPXPBY.js +0 -237
  528. package/dist/junction-QYKLNXIW.js +0 -36
  529. package/dist/junction.customTerm-EHOOBR4V.js +0 -16
  530. package/dist/junction.unit.spec-LDNY7OFK.js +0 -182
  531. package/dist/launch.adhoc-FF7B3UG6.js +0 -37
  532. package/dist/leftlabel.sample-BTHMKLGF.js +0 -258
  533. package/dist/lollipop-H3UCNMHN.js +0 -166
  534. package/dist/maf-KWGUTPKO.js +0 -455
  535. package/dist/maftimeline-UD5VE4UW.js +0 -587
  536. package/dist/matrix-DLCX6GOO.js +0 -59
  537. package/dist/matrix-TIV42IQB.js +0 -54
  538. package/dist/matrix.cells-J3QZ7C6U.js +0 -26
  539. package/dist/matrix.config-VNMS6B7J.js +0 -37
  540. package/dist/matrix.data-PIE3TLKD.js +0 -23
  541. package/dist/matrix.groups-URBU775S.js +0 -26
  542. package/dist/matrix.integration.spec-LC6YMEKP.js +0 -3160
  543. package/dist/matrix.interactivity-W5AFOAQN.js +0 -37
  544. package/dist/matrix.layout-LU3NIJAL.js +0 -39
  545. package/dist/matrix.legend-LTP6ETZO.js +0 -20
  546. package/dist/matrix.renderers-762XI65L.js +0 -34
  547. package/dist/matrix.serieses-FHDBRPZA.js +0 -19
  548. package/dist/matrix.sort-Q6A6UWMY.js +0 -26
  549. package/dist/matrix.sort.unit.spec-CTCOPKVS.js +0 -468
  550. package/dist/matrix.sorterUi-4M5AU5EL.js +0 -16
  551. package/dist/matrix.sorterUi.unit.spec-Y7GC3PM5.js +0 -338
  552. package/dist/matrix.unit.spec-DROPHFTM.js +0 -150
  553. package/dist/mavb-BWA73N3U.js +0 -727
  554. package/dist/mds.fimo-3UJWIH2J.js +0 -513
  555. package/dist/mds.samplescatterplot-EUS7DCSQ.js +0 -1545
  556. package/dist/mds.survivalplot-77UEBQIC.js +0 -477
  557. package/dist/multivalue-KZ2DMVIR.js +0 -83
  558. package/dist/numericDictTermCluster-C2MYJYPZ.js +0 -63
  559. package/dist/oncomatrix-6LGB3M7R.js +0 -290
  560. package/dist/oncomatrix.spec-UWMSLOHW.js +0 -443
  561. package/dist/plot.2dvaf-LZAVWH65.js +0 -372
  562. package/dist/plot.app-OEWE3AYV.js +0 -36
  563. package/dist/plot.barplot-VIBHGTUT.js +0 -97
  564. package/dist/plot.boxplot-NQI3PSKR.js +0 -146
  565. package/dist/plot.brainImaging-3MTTCZHI.js +0 -51
  566. package/dist/plot.disco-HODBY7SO.js +0 -99
  567. package/dist/plot.ssgq-4URQE673.js +0 -134
  568. package/dist/plot.vaf2cov-QIJNEKCK.js +0 -253
  569. package/dist/polar2-GVFQNSLK.js +0 -232
  570. package/dist/profileForms-Z22CJXI4.js +0 -941
  571. package/dist/profilePlot-IVQZBSID.js +0 -49
  572. package/dist/proteinView-AUK634AU.js +0 -1357
  573. package/dist/proteomeCohortCompare-7G2F35H5.js +0 -912
  574. package/dist/pseudbulk.unit.spec-JDKUQUCM.js +0 -106
  575. package/dist/pseudbulk.unit.spec-JDKUQUCM.js.map +0 -7
  576. package/dist/pseudobulk-QTCUSH5I.js +0 -37
  577. package/dist/qualitative-7ST7SSBT.js +0 -38
  578. package/dist/radar2-CEE6SNBS.js +0 -327
  579. package/dist/radarFacility2-OSKDYIK7.js +0 -335
  580. package/dist/rememberedGvQ.unit.spec-RYFUJ2NW.js +0 -211
  581. package/dist/render-MAD3WMVD.js +0 -33
  582. package/dist/report-6JXJVSEB.js +0 -217
  583. package/dist/sampleView-SG3QYZKQ.js +0 -43
  584. package/dist/samplelst-R765UFP6.js +0 -106
  585. package/dist/samplematrix-EBJYE5SM.js +0 -2193
  586. package/dist/sc-7ZXPFDHD.js +0 -81
  587. package/dist/scatter-3GUL4KF3.js +0 -88
  588. package/dist/scatter-RHUVER53.js +0 -920
  589. package/dist/scatter-RHUVER53.js.map +0 -7
  590. package/dist/selectGenomeWithTklst-K4YXGJYG.js +0 -129
  591. package/dist/singleCellCellType-TU5VTPLP.js +0 -33
  592. package/dist/singleCellCellType.unit.spec-IRITQIGT.js +0 -154
  593. package/dist/singleCellGeneExpression-3IL52QDK.js +0 -33
  594. package/dist/singleCellGeneExpression.unit.spec-WXC4C37T.js +0 -148
  595. package/dist/singleCellPlot-XG3HZS7I.js +0 -48
  596. package/dist/singlecell-BRF2HAV2.js +0 -81
  597. package/dist/singlecell-KVCJF2HI.js +0 -1566
  598. package/dist/snp-RMZRB426.js +0 -33
  599. package/dist/snp.unit.spec-JF6KR2NT.js +0 -171
  600. package/dist/snplocus-AHUFHQ3Q.js +0 -203
  601. package/dist/spliceevent.a53ss.diagram-OSZZ2CF2.js +0 -146
  602. package/dist/spliceevent.exonskip.diagram-AMA2D2OL.js +0 -278
  603. package/dist/spliceevent.noeventdiagram-RKTUXH5D.js +0 -455
  604. package/dist/ssGSEA-7RKWYZKX.js +0 -33
  605. package/dist/ssGSEA.unit.spec-XLCZHH7S.js +0 -83
  606. package/dist/stattable-NDYUCLVZ.js +0 -117
  607. package/dist/studyCatalog-TAXRF5NS.js +0 -414
  608. package/dist/summarizeCnvGeneexp-3QLHU6N7.js +0 -158
  609. package/dist/summarizeGeneexpSurvival-ARI4MPFX.js +0 -105
  610. package/dist/summarizeMutationCnv-W7V7CKPI.js +0 -159
  611. package/dist/summarizeMutationDiagnosis-GCL4SRON.js +0 -35
  612. package/dist/summarizeMutationSurvival-6TTMSRRX.js +0 -99
  613. package/dist/summary-OUYDWLBF.js +0 -44
  614. package/dist/summary.integration.spec-4GTCG6HY.js +0 -409
  615. package/dist/summaryInput-UK3TLC7M.js +0 -242
  616. package/dist/sunburst-2UFHMNH3.js +0 -278
  617. package/dist/survival-SPWYSDVB.js +0 -53
  618. package/dist/survival-TL6UZ6FQ.js +0 -1248
  619. package/dist/survival.integration.spec-WWZELTKZ.js +0 -613
  620. package/dist/survival.integration.spec-WWZELTKZ.js.map +0 -7
  621. package/dist/svgraph-Z543MLIN.js +0 -1382
  622. package/dist/svmr-SZCAOAIF.js +0 -3837
  623. package/dist/table-IAQ6J4DO.js +0 -197
  624. package/dist/termCollection-3NGHR7QN.js +0 -252
  625. package/dist/termCollection-7P3WU6X6.js +0 -33
  626. package/dist/termCollection.unit.spec-EPYC7LOA.js +0 -299
  627. package/dist/termCollectionFractionSelection-YKIE6BME.js +0 -42
  628. package/dist/termCollectionFractionSelection.unit.spec-AG2CZPGZ.js +0 -188
  629. package/dist/tk-TOXMU4GT.js +0 -1121
  630. package/dist/tk-X454XH5N.js +0 -41
  631. package/dist/tp.ui-FDQ76KPL.js +0 -1454
  632. package/dist/tvs.dt-U77PCG6X.js +0 -34
  633. package/dist/tvs.dtcnv.categorical-XYZU4XLO.js +0 -35
  634. package/dist/tvs.dtcnv.continuous-4GJILFGP.js +0 -67
  635. package/dist/tvs.dtfusion-7YROAHVI.js +0 -35
  636. package/dist/tvs.dtitd-MIYU4ZHH.js +0 -35
  637. package/dist/tvs.dtsnvindel-XLDY7KWB.js +0 -35
  638. package/dist/tvs.dtsv-YMLJ37YR.js +0 -35
  639. package/dist/tvs.samplelst-KIVEXJKD.js +0 -98
  640. package/dist/tvs.termCollection-4CQV3EB3.js +0 -124
  641. package/dist/vocabulary-64GO4YDB.js +0 -36
  642. package/dist/wsi.direct-5MQVRJZX.js +0 -8343
  643. /package/dist/{2dmaf-32F56QBJ.js.map → 2dmaf-PN5YS362.js.map} +0 -0
  644. /package/dist/{AggregateMatrix-TPXNNWVD.js.map → AggregateMatrix-IBWOJWOC.js.map} +0 -0
  645. /package/dist/{AppHeader-SEJXDJE3.js.map → AppHeader-XV6S7GG5.js.map} +0 -0
  646. /package/dist/{BoxPlot-LOAO2MDO.js.map → BoxPlot-ZIVA55SK.js.map} +0 -0
  647. /package/dist/{Cuminc-O533BXFY.js.map → Cuminc-WKY35UGV.js.map} +0 -0
  648. /package/dist/{DE-FDAUNOWU.js.map → DE-E256DHID.js.map} +0 -0
  649. /package/dist/{DEinput-TF2VYTIJ.js.map → DEinput-YU3W72K7.js.map} +0 -0
  650. /package/dist/{DM-42YN3OEO.js.map → DM-W7PXTIKY.js.map} +0 -0
  651. /package/dist/{Disco-FGFHIKUR.js.map → Disco-OZY5GW2Z.js.map} +0 -0
  652. /package/dist/{Disco.UI-YGIU2JPM.js.map → Disco.UI-NRALEYXK.js.map} +0 -0
  653. /package/dist/{DmrPlot-EQFXMAW5.js.map → DmrPlot-QKUX5XUW.js.map} +0 -0
  654. /package/dist/{GB-244UT5VU.js.map → GB-ZYH7PGHT.js.map} +0 -0
  655. /package/dist/{GSEA-KXQBR3HH.js.map → GSEA-VQTD4MLY.js.map} +0 -0
  656. /package/dist/{GeneExpInput-ZY6SHXTX.js.map → GeneExpInput-XEFUTLFU.js.map} +0 -0
  657. /package/dist/{Geomap-6ZV4AM23.js.map → Geomap-GEK7UEDU.js.map} +0 -0
  658. /package/dist/{HicApp-4UHX2YGP.js.map → HicApp-ZY7UHV5H.js.map} +0 -0
  659. /package/dist/{IDCViewer-AB6LLO64.js.map → IDCViewer-YNKG4V46.js.map} +0 -0
  660. /package/dist/{NumBinaryEditor-CGSO2T4L.js.map → NumBinaryEditor-NEL727DX.js.map} +0 -0
  661. /package/dist/{NumBinaryEditor.unit.spec-3QHARZQJ.js.map → NumBinaryEditor.unit.spec-GCGZMJYF.js.map} +0 -0
  662. /package/dist/{NumContEditor-YLKSC4Y2.js.map → NumContEditor-IM6RRDGU.js.map} +0 -0
  663. /package/dist/{NumContEditor.unit.spec-L3GC3ZTJ.js.map → NumContEditor.unit.spec-B5AJXANS.js.map} +0 -0
  664. /package/dist/{NumCustomBinEditor-K3XSFHCC.js.map → NumCustomBinEditor-EZT5DRKP.js.map} +0 -0
  665. /package/dist/{NumCustomBinEditor.unit.spec-2FUHE6BX.js.map → NumCustomBinEditor.unit.spec-KLUDS6TH.js.map} +0 -0
  666. /package/dist/{NumDiscreteEditor-RJCSIW4R.js.map → NumDiscreteEditor-2M6Q5AAZ.js.map} +0 -0
  667. /package/dist/{NumDiscreteEditor.unit.spec-CUA6BOIS.js.map → NumDiscreteEditor.unit.spec-2JYZYJUX.js.map} +0 -0
  668. /package/dist/{NumRegularBinEditor-C3VIFDS4.js.map → NumRegularBinEditor-AQDHA2PU.js.map} +0 -0
  669. /package/dist/{NumRegularBinEditor.unit.spec-V2UJ5FLH.js.map → NumRegularBinEditor.unit.spec-62BYFNYG.js.map} +0 -0
  670. /package/dist/{NumSplineEditor-XBE7OV7P.js.map → NumSplineEditor-6Y5TZSTO.js.map} +0 -0
  671. /package/dist/{NumSplineEditor.unit.spec-CKRRI4US.js.map → NumSplineEditor.unit.spec-S65AV5EK.js.map} +0 -0
  672. /package/dist/{NumericDensity-ZL7UY7TL.js.map → NumericDensity-5ES4SDWZ.js.map} +0 -0
  673. /package/dist/{NumericDensity.unit.spec-CWTMSR56.js.map → NumericDensity.unit.spec-J6KZSE2P.js.map} +0 -0
  674. /package/dist/{NumericHandler-56ENFMNK.js.map → NumericHandler-ZTLDPP2F.js.map} +0 -0
  675. /package/dist/{NumericHandler.unit.spec-3YW34TTJ.js.map → NumericHandler.unit.spec-BZFBVHGU.js.map} +0 -0
  676. /package/dist/{ProteomeInput-HIS4GYWH.js.map → ProteomeInput-IKEXPCGV.js.map} +0 -0
  677. /package/dist/{Regression-C5GZYLEN.js.map → Regression-6F6YP3AX.js.map} +0 -0
  678. /package/dist/{RunChart2-X5WKYLPQ.js.map → RunChart2-CVRPXQH5.js.map} +0 -0
  679. /package/dist/{Volcano-ZNYDKP2O.js.map → Volcano-FCCWUMX7.js.map} +0 -0
  680. /package/dist/{adSandbox-A52OQSOW.js.map → adSandbox-QYIG6637.js.map} +0 -0
  681. /package/dist/{animatedBubbleChart-OQOZ3WFK.js.map → animatedBubbleChart-X53PR73H.js.map} +0 -0
  682. /package/dist/{app-4KIKXQX4.js.map → app-HJLTRZPI.js.map} +0 -0
  683. /package/dist/{app-NZUNKWKK.js.map → app-MGY6A4DM.js.map} +0 -0
  684. /package/dist/{bam-SME7YD3E.js.map → bam-VRQHRCP5.js.map} +0 -0
  685. /package/dist/{barchart-ESY6FOS4.js.map → barchart-TWMOUZFL.js.map} +0 -0
  686. /package/dist/{barchart2-XEJZGCES.js.map → barchart2-CV7RMMRG.js.map} +0 -0
  687. /package/dist/{block-747IK2EW.js.map → block-L53P4UGQ.js.map} +0 -0
  688. /package/dist/{block.init-ITZ42K43.js.map → block.init-XYOJTXKP.js.map} +0 -0
  689. /package/dist/{block.mds.expressionrank-Q63IJAJK.js.map → block.mds.expressionrank-77FSBDHA.js.map} +0 -0
  690. /package/dist/{block.mds.geneboxplot-EZIKAIKC.js.map → block.mds.geneboxplot-4TSYV4WS.js.map} +0 -0
  691. /package/dist/{block.mds.junction-TJXFKZ2Q.js.map → block.mds.junction-P4MYDET6.js.map} +0 -0
  692. /package/dist/{block.mds.svcnv-WSIEAII6.js.map → block.mds.svcnv-CYOFAS2T.js.map} +0 -0
  693. /package/dist/{block.svg-CQX5W6R4.js.map → block.svg-IT3ELCF4.js.map} +0 -0
  694. /package/dist/{block.tk.aicheck-J4MQ4BSD.js.map → block.tk.aicheck-GULHJLV5.js.map} +0 -0
  695. /package/dist/{block.tk.ase-2JFNPWCZ.js.map → block.tk.ase-RW5YL6HN.js.map} +0 -0
  696. /package/dist/{block.tk.bam-RBQ4AXSQ.js.map → block.tk.bam-MPGQW6KB.js.map} +0 -0
  697. /package/dist/{block.tk.bedgraphdot-ZQBOMVTO.js.map → block.tk.bedgraphdot-EYRY374P.js.map} +0 -0
  698. /package/dist/{block.tk.bigwig.ui-U5IBO3VF.js.map → block.tk.bigwig.ui-BKSXCDNM.js.map} +0 -0
  699. /package/dist/{block.tk.hicstraw-ZRZMFLLX.js.map → block.tk.hicstraw-76PV6NM3.js.map} +0 -0
  700. /package/dist/{block.tk.junction-7U7ABE4O.js.map → block.tk.junction-Z52QHQJQ.js.map} +0 -0
  701. /package/dist/{block.tk.junction.textmatrixui-AEXZ7W3U.js.map → block.tk.junction.textmatrixui-K32OOTZC.js.map} +0 -0
  702. /package/dist/{block.tk.ld-E7WPFL5P.js.map → block.tk.ld-DDGLRHPO.js.map} +0 -0
  703. /package/dist/{block.tk.menu-AITMEZTZ.js.map → block.tk.menu-MO6TESKI.js.map} +0 -0
  704. /package/dist/{block.tk.pgv-EDPZHI5L.js.map → block.tk.pgv-AKLKKSEP.js.map} +0 -0
  705. /package/dist/{brainImaging-35LPNBDR.js.map → brainImaging-KSTJQJAB.js.map} +0 -0
  706. /package/dist/{brainRegions-JMTQT4X3.js.map → brainRegions-WCRMMSK4.js.map} +0 -0
  707. /package/dist/{bubbleHeatmap-FMBKMDUL.js.map → bubbleHeatmap-4YOQ3BAB.js.map} +0 -0
  708. /package/dist/{cellTypeBubbleHeatmap-ZPTAGEWW.js.map → cellTypeBubbleHeatmap-O6YZ2RW4.js.map} +0 -0
  709. /package/dist/{chunk-Y4PX2ECH.js.map → chunk-3GUVLDUS.js.map} +0 -0
  710. /package/dist/{chunk-RBSAEAQV.js.map → chunk-3PQDD5HM.js.map} +0 -0
  711. /package/dist/{chunk-UYKZ5HXA.js.map → chunk-3WYUHDDP.js.map} +0 -0
  712. /package/dist/{chunk-L6WNBKYN.js.map → chunk-4C7MA5Q3.js.map} +0 -0
  713. /package/dist/{chunk-TG3QBMDK.js.map → chunk-4PB5ZEOB.js.map} +0 -0
  714. /package/dist/{chunk-BZN2O76M.js.map → chunk-5IMFPVGT.js.map} +0 -0
  715. /package/dist/{chunk-HLVWCJRO.js.map → chunk-6DPELKO5.js.map} +0 -0
  716. /package/dist/{chunk-GVLWCGXX.js.map → chunk-74C6G6JD.js.map} +0 -0
  717. /package/dist/{chunk-EKQ7NYOU.js.map → chunk-A7TXS6JR.js.map} +0 -0
  718. /package/dist/{chunk-IV57XNTG.js.map → chunk-AAJXHERO.js.map} +0 -0
  719. /package/dist/{chunk-6U2OPC6J.js.map → chunk-BFXZBZEV.js.map} +0 -0
  720. /package/dist/{chunk-5JCTTSV4.js.map → chunk-BGVGN73F.js.map} +0 -0
  721. /package/dist/{chunk-5ALGKNTQ.js.map → chunk-BL7EYUZC.js.map} +0 -0
  722. /package/dist/{chunk-BOQZOLRA.js.map → chunk-BPGZUNLL.js.map} +0 -0
  723. /package/dist/{chunk-EUQEQOFE.js.map → chunk-CPIPN5F6.js.map} +0 -0
  724. /package/dist/{chunk-AKA6RWLC.js.map → chunk-D5MSWPAZ.js.map} +0 -0
  725. /package/dist/{chunk-JMAFJKGG.js.map → chunk-DFT2PAIU.js.map} +0 -0
  726. /package/dist/{chunk-R624P2GE.js.map → chunk-E7NVJ44Z.js.map} +0 -0
  727. /package/dist/{chunk-3K7AYA3M.js.map → chunk-EMMGUSJB.js.map} +0 -0
  728. /package/dist/{chunk-AMVZ6KT5.js.map → chunk-G3CCQOLH.js.map} +0 -0
  729. /package/dist/{chunk-BCO5T43J.js.map → chunk-GGQVDHYF.js.map} +0 -0
  730. /package/dist/{chunk-JZHRVYNS.js.map → chunk-GPZYAJQH.js.map} +0 -0
  731. /package/dist/{chunk-CRHGXVUQ.js.map → chunk-GS6ZMPKP.js.map} +0 -0
  732. /package/dist/{chunk-SVC65ZPG.js.map → chunk-GUXKLMLM.js.map} +0 -0
  733. /package/dist/{chunk-LGR6CJTW.js.map → chunk-HELEV3LT.js.map} +0 -0
  734. /package/dist/{chunk-A2ORIMUJ.js.map → chunk-HKKTNIMX.js.map} +0 -0
  735. /package/dist/{chunk-5W7K7STT.js.map → chunk-HKSRIEWJ.js.map} +0 -0
  736. /package/dist/{chunk-VOYUJJQ6.js.map → chunk-IELQ3HMN.js.map} +0 -0
  737. /package/dist/{chunk-SS66BHGA.js.map → chunk-IISNWG4X.js.map} +0 -0
  738. /package/dist/{chunk-BZZZQFTI.js.map → chunk-J7KB2MH3.js.map} +0 -0
  739. /package/dist/{chunk-M5SYLBBC.js.map → chunk-JEJV7V7M.js.map} +0 -0
  740. /package/dist/{chunk-DPQP2GUW.js.map → chunk-JIZ3B32T.js.map} +0 -0
  741. /package/dist/{chunk-W4RYRU5D.js.map → chunk-KAY2ODXX.js.map} +0 -0
  742. /package/dist/{chunk-BSCMVKBP.js.map → chunk-KJM6PLXM.js.map} +0 -0
  743. /package/dist/{chunk-TMXW5HVE.js.map → chunk-KZHF3MQX.js.map} +0 -0
  744. /package/dist/{chunk-36AAUYZE.js.map → chunk-MC674TS2.js.map} +0 -0
  745. /package/dist/{chunk-TPDBOH3A.js.map → chunk-MLKQZ3RL.js.map} +0 -0
  746. /package/dist/{chunk-LOWJQFCC.js.map → chunk-MSSPT5YM.js.map} +0 -0
  747. /package/dist/{chunk-ASXUC6SM.js.map → chunk-OBBR4UYN.js.map} +0 -0
  748. /package/dist/{chunk-SU63FEY6.js.map → chunk-PQA3C2NY.js.map} +0 -0
  749. /package/dist/{chunk-OIJ6GRVS.js.map → chunk-QJ2VBXFB.js.map} +0 -0
  750. /package/dist/{chunk-7HFAEB3C.js.map → chunk-QP7EJXSU.js.map} +0 -0
  751. /package/dist/{chunk-WFSMIVJT.js.map → chunk-SHXJW27D.js.map} +0 -0
  752. /package/dist/{chunk-2IVN5DWA.js.map → chunk-SUNDNTVY.js.map} +0 -0
  753. /package/dist/{chunk-7HGZRJZZ.js.map → chunk-TSI4W6XO.js.map} +0 -0
  754. /package/dist/{chunk-4JFFFGL3.js.map → chunk-TXIQ5PHR.js.map} +0 -0
  755. /package/dist/{chunk-4KJSNR5E.js.map → chunk-U45R6QNT.js.map} +0 -0
  756. /package/dist/{chunk-A32SGNCT.js.map → chunk-UMZJQWWK.js.map} +0 -0
  757. /package/dist/{chunk-K6YUMBDY.js.map → chunk-VO7Q4WMM.js.map} +0 -0
  758. /package/dist/{chunk-YKM46UX5.js.map → chunk-VWGRKOVJ.js.map} +0 -0
  759. /package/dist/{chunk-P7DIIYCX.js.map → chunk-WCTKHF5T.js.map} +0 -0
  760. /package/dist/{chunk-OYLGAFFY.js.map → chunk-WOMERKMR.js.map} +0 -0
  761. /package/dist/{chunk-MKAILEWO.js.map → chunk-WXX2YD4Q.js.map} +0 -0
  762. /package/dist/{chunk-7AHTS4BP.js.map → chunk-X44AR557.js.map} +0 -0
  763. /package/dist/{chunk-BDQPMVKD.js.map → chunk-XEU5HXOY.js.map} +0 -0
  764. /package/dist/{chunk-FKA55PHV.js.map → chunk-XGYQZHNX.js.map} +0 -0
  765. /package/dist/{chunk-ZENZ5H2Q.js.map → chunk-XOND7UIK.js.map} +0 -0
  766. /package/dist/{chunk-RZ3KEFZ2.js.map → chunk-XRMUUWLS.js.map} +0 -0
  767. /package/dist/{chunk-2GBG3KA7.js.map → chunk-XTOGCXPD.js.map} +0 -0
  768. /package/dist/{chunk-Z7AO6A7M.js.map → chunk-Y5BBFDC3.js.map} +0 -0
  769. /package/dist/{chunk-ONVIVITY.js.map → chunk-Z2FSHODI.js.map} +0 -0
  770. /package/dist/{cohort-Q7TW5XTY.js.map → cohort-JWIQOO7U.js.map} +0 -0
  771. /package/dist/{condition-H6LBUHIF.js.map → condition-ZUAQYF5C.js.map} +0 -0
  772. /package/dist/{controls-DWDKFDXY.js.map → controls-ZPQ6SXD2.js.map} +0 -0
  773. /package/dist/{controls.config-KF7PHZSG.js.map → controls.config-NELL5HY5.js.map} +0 -0
  774. /package/dist/{correlation-YMSARIER.js.map → correlation-2X76UI3K.js.map} +0 -0
  775. /package/dist/{customdata.inputui-KEFE7ZHS.js.map → customdata.inputui-V6QIGFRP.js.map} +0 -0
  776. /package/dist/{dataDownload-G7TGPFGL.js.map → dataDownload-NSDY4MSL.js.map} +0 -0
  777. /package/dist/{databrowser.ui-NFIIFQJZ.js.map → databrowser.ui-DDLFQB6K.js.map} +0 -0
  778. /package/dist/{dictionary-ERJQMALC.js.map → dictionary-WSDD6TFI.js.map} +0 -0
  779. /package/dist/{dnaMethylation-KVCXKAU3.js.map → dnaMethylation-3IM4OACZ.js.map} +0 -0
  780. /package/dist/{dnaMethylation.integration.spec-3NXGGG4J.js.map → dnaMethylation.integration.spec-5CSJA67S.js.map} +0 -0
  781. /package/dist/{dofetch-YRWLEQEH.js.map → dofetch-GZ7POIBV.js.map} +0 -0
  782. /package/dist/{e2pca-M2F2CI6I.js.map → e2pca-AX7U2DOI.js.map} +0 -0
  783. /package/dist/{ep-QAEG4RV4.js.map → ep-UKACHFJU.js.map} +0 -0
  784. /package/dist/{expclust.gdc.spec-P77T6JR2.js.map → expclust.gdc.spec-46HDKH2Q.js.map} +0 -0
  785. /package/dist/{facet-LJTSTASE.js.map → facet-3EONZDDE.js.map} +0 -0
  786. /package/dist/{gb-KSB2DQHH.js.map → gb-W7GX5NWS.js.map} +0 -0
  787. /package/dist/{geneExpClustering-KHDCPE65.js.map → geneExpClustering-PJA6Y5GW.js.map} +0 -0
  788. /package/dist/{geneExpression-AWWMOUAR.js.map → geneExpression-EMLVPVNK.js.map} +0 -0
  789. /package/dist/{geneExpression-Z2EDR6EN.js.map → geneExpression-JMGYBT53.js.map} +0 -0
  790. /package/dist/{geneExpression.unit.spec-WB2ESPKT.js.map → geneExpression.unit.spec-DDZVZJVC.js.map} +0 -0
  791. /package/dist/{geneORA-NGZTMFSJ.js.map → geneORA-CIAFQQWB.js.map} +0 -0
  792. /package/dist/{geneRanking-AYNBGFKU.js.map → geneRanking-JRAU6FMJ.js.map} +0 -0
  793. /package/dist/{geneVariant-AL64NDHH.js.map → geneVariant-3DZTWQFG.js.map} +0 -0
  794. /package/dist/{geneVariant-QMKR3LUV.js.map → geneVariant-YWURIZ72.js.map} +0 -0
  795. /package/dist/{geneVariant.integration.spec-N3U5CIRT.js.map → geneVariant.integration.spec-V3KECZMM.js.map} +0 -0
  796. /package/dist/{genefusion.ui-IWJMF2BM.js.map → genefusion.ui-AO3TUDTL.js.map} +0 -0
  797. /package/dist/{geneset-APCO4BRX.js.map → geneset-RCIP2GZH.js.map} +0 -0
  798. /package/dist/{genomeBrowser.spec-JTCVUTO5.js.map → genomeBrowser.spec-7PZCNBL3.js.map} +0 -0
  799. /package/dist/{grin2-FVX6AIST.js.map → grin2-EUBCNH4Q.js.map} +0 -0
  800. /package/dist/{grin2-LF46UKFY.js.map → grin2-YYBB5XJK.js.map} +0 -0
  801. /package/dist/{hierCluster-4DRHXD6W.js.map → hierCluster-AV5NO2GW.js.map} +0 -0
  802. /package/dist/{hierCluster-SFRQK3PS.js.map → hierCluster-W2MVN34V.js.map} +0 -0
  803. /package/dist/{hierCluster.config-G2TFGBYF.js.map → hierCluster.config-4MBWG6RZ.js.map} +0 -0
  804. /package/dist/{hierCluster.integration.spec-ZUZKCG6A.js.map → hierCluster.integration.spec-JUIBIUKH.js.map} +0 -0
  805. /package/dist/{hierCluster.interactivity-LQA6J56H.js.map → hierCluster.interactivity-6PJE64PF.js.map} +0 -0
  806. /package/dist/{hierCluster.renderers-TZZJEVFO.js.map → hierCluster.renderers-RWDQ5SHY.js.map} +0 -0
  807. /package/dist/{imagePlot-OUHFWYKT.js.map → imagePlot-XLDQNUJA.js.map} +0 -0
  808. /package/dist/{importPlot-7V456QK7.js.map → importPlot-7FISAQKR.js.map} +0 -0
  809. /package/dist/{isoformExpression-NGUJJ6VI.js.map → isoformExpression-WOQAOVZS.js.map} +0 -0
  810. /package/dist/{isoformExpression.unit.spec-DCRPXPBY.js.map → isoformExpression.unit.spec-BMEGJNCO.js.map} +0 -0
  811. /package/dist/{junction-QYKLNXIW.js.map → junction-6NO36IPU.js.map} +0 -0
  812. /package/dist/{junction.customTerm-EHOOBR4V.js.map → junction.customTerm-N6JAOWZO.js.map} +0 -0
  813. /package/dist/{junction.unit.spec-LDNY7OFK.js.map → junction.unit.spec-UKGSQHO4.js.map} +0 -0
  814. /package/dist/{launch.adhoc-FF7B3UG6.js.map → launch.adhoc-42PUNEA6.js.map} +0 -0
  815. /package/dist/{leftlabel.sample-BTHMKLGF.js.map → leftlabel.sample-EXAUDPSB.js.map} +0 -0
  816. /package/dist/{lollipop-H3UCNMHN.js.map → lollipop-4ASTA5HO.js.map} +0 -0
  817. /package/dist/{maf-KWGUTPKO.js.map → maf-HPXANL3M.js.map} +0 -0
  818. /package/dist/{maftimeline-UD5VE4UW.js.map → maftimeline-2SXFX3HF.js.map} +0 -0
  819. /package/dist/{matrix-DLCX6GOO.js.map → matrix-DX4W5XMX.js.map} +0 -0
  820. /package/dist/{matrix-TIV42IQB.js.map → matrix-S34ITAPJ.js.map} +0 -0
  821. /package/dist/{matrix.cells-J3QZ7C6U.js.map → matrix.cells-BLULUGSZ.js.map} +0 -0
  822. /package/dist/{matrix.config-VNMS6B7J.js.map → matrix.config-Z3LWYH74.js.map} +0 -0
  823. /package/dist/{matrix.data-PIE3TLKD.js.map → matrix.data-73HY7Y2V.js.map} +0 -0
  824. /package/dist/{matrix.groups-URBU775S.js.map → matrix.groups-NOUMYNFY.js.map} +0 -0
  825. /package/dist/{matrix.integration.spec-LC6YMEKP.js.map → matrix.integration.spec-VTXYJ46U.js.map} +0 -0
  826. /package/dist/{matrix.interactivity-W5AFOAQN.js.map → matrix.interactivity-YHDIO5A2.js.map} +0 -0
  827. /package/dist/{matrix.layout-LU3NIJAL.js.map → matrix.layout-25HYKUF2.js.map} +0 -0
  828. /package/dist/{matrix.legend-LTP6ETZO.js.map → matrix.legend-IMK7DH4V.js.map} +0 -0
  829. /package/dist/{matrix.renderers-762XI65L.js.map → matrix.renderers-3RZRN6HO.js.map} +0 -0
  830. /package/dist/{matrix.serieses-FHDBRPZA.js.map → matrix.serieses-ZTVHQ7QA.js.map} +0 -0
  831. /package/dist/{matrix.sort-Q6A6UWMY.js.map → matrix.sort-EDXHT6NZ.js.map} +0 -0
  832. /package/dist/{matrix.sort.unit.spec-CTCOPKVS.js.map → matrix.sort.unit.spec-LSNY7PHU.js.map} +0 -0
  833. /package/dist/{matrix.sorterUi-4M5AU5EL.js.map → matrix.sorterUi-3DRNHG5Z.js.map} +0 -0
  834. /package/dist/{matrix.sorterUi.unit.spec-Y7GC3PM5.js.map → matrix.sorterUi.unit.spec-GNIIWGRJ.js.map} +0 -0
  835. /package/dist/{matrix.unit.spec-DROPHFTM.js.map → matrix.unit.spec-7A6ZFRXI.js.map} +0 -0
  836. /package/dist/{mavb-BWA73N3U.js.map → mavb-M5AXPLYX.js.map} +0 -0
  837. /package/dist/{mds.fimo-3UJWIH2J.js.map → mds.fimo-QE5OFA22.js.map} +0 -0
  838. /package/dist/{mds.samplescatterplot-EUS7DCSQ.js.map → mds.samplescatterplot-664EOHX2.js.map} +0 -0
  839. /package/dist/{mds.survivalplot-77UEBQIC.js.map → mds.survivalplot-H4TJD44D.js.map} +0 -0
  840. /package/dist/{multivalue-KZ2DMVIR.js.map → multivalue-JD3CNQJR.js.map} +0 -0
  841. /package/dist/{numericDictTermCluster-C2MYJYPZ.js.map → numericDictTermCluster-XPKEYXD7.js.map} +0 -0
  842. /package/dist/{oncomatrix-6LGB3M7R.js.map → oncomatrix-TX5PZQ76.js.map} +0 -0
  843. /package/dist/{oncomatrix.spec-UWMSLOHW.js.map → oncomatrix.spec-6X2WAHL7.js.map} +0 -0
  844. /package/dist/{plot.2dvaf-LZAVWH65.js.map → plot.2dvaf-5OHUFTMK.js.map} +0 -0
  845. /package/dist/{plot.app-OEWE3AYV.js.map → plot.app-XIVVJHWG.js.map} +0 -0
  846. /package/dist/{plot.barplot-VIBHGTUT.js.map → plot.barplot-PSODLAXD.js.map} +0 -0
  847. /package/dist/{plot.boxplot-NQI3PSKR.js.map → plot.boxplot-W3ASYFOG.js.map} +0 -0
  848. /package/dist/{plot.brainImaging-3MTTCZHI.js.map → plot.brainImaging-JGDLKLR7.js.map} +0 -0
  849. /package/dist/{plot.disco-HODBY7SO.js.map → plot.disco-TPMXTTZK.js.map} +0 -0
  850. /package/dist/{plot.ssgq-4URQE673.js.map → plot.ssgq-KIZIOZIF.js.map} +0 -0
  851. /package/dist/{plot.vaf2cov-QIJNEKCK.js.map → plot.vaf2cov-MSMW72IY.js.map} +0 -0
  852. /package/dist/{polar2-GVFQNSLK.js.map → polar2-LA4MSRRN.js.map} +0 -0
  853. /package/dist/{profileForms-Z22CJXI4.js.map → profileForms-BJRNB2ZF.js.map} +0 -0
  854. /package/dist/{profilePlot-IVQZBSID.js.map → profilePlot-DDO53C4T.js.map} +0 -0
  855. /package/dist/{proteinView-AUK634AU.js.map → proteinView-NFUR42XQ.js.map} +0 -0
  856. /package/dist/{proteomeCohortCompare-7G2F35H5.js.map → proteomeCohortCompare-OZVF3X66.js.map} +0 -0
  857. /package/dist/{pseudobulk-QTCUSH5I.js.map → pseudobulk-UVT5G2VL.js.map} +0 -0
  858. /package/dist/{qualitative-7ST7SSBT.js.map → qualitative-X3VXNC7X.js.map} +0 -0
  859. /package/dist/{radar2-CEE6SNBS.js.map → radar2-RTVUJ3AN.js.map} +0 -0
  860. /package/dist/{radarFacility2-OSKDYIK7.js.map → radarFacility2-ZGLZ5AKM.js.map} +0 -0
  861. /package/dist/{rememberedGvQ.unit.spec-RYFUJ2NW.js.map → rememberedGvQ.unit.spec-RLLLWU5M.js.map} +0 -0
  862. /package/dist/{render-MAD3WMVD.js.map → render-LR5BOYW6.js.map} +0 -0
  863. /package/dist/{report-6JXJVSEB.js.map → report-37W5OXUM.js.map} +0 -0
  864. /package/dist/{sampleView-SG3QYZKQ.js.map → sampleView-BDC2WPH7.js.map} +0 -0
  865. /package/dist/{samplelst-R765UFP6.js.map → samplelst-V2EIVZC5.js.map} +0 -0
  866. /package/dist/{samplematrix-EBJYE5SM.js.map → samplematrix-XOSKILUL.js.map} +0 -0
  867. /package/dist/{sc-7ZXPFDHD.js.map → sc-ZVZPWQY7.js.map} +0 -0
  868. /package/dist/{scatter-3GUL4KF3.js.map → scatter-2ZE5MCYH.js.map} +0 -0
  869. /package/dist/{selectGenomeWithTklst-K4YXGJYG.js.map → selectGenomeWithTklst-EF7WYEAJ.js.map} +0 -0
  870. /package/dist/{singleCellCellType-TU5VTPLP.js.map → singleCellCellType-TKCGC3G3.js.map} +0 -0
  871. /package/dist/{singleCellCellType.unit.spec-IRITQIGT.js.map → singleCellCellType.unit.spec-JZ6UHC5F.js.map} +0 -0
  872. /package/dist/{singleCellGeneExpression-3IL52QDK.js.map → singleCellGeneExpression-I2INGXGI.js.map} +0 -0
  873. /package/dist/{singleCellGeneExpression.unit.spec-WXC4C37T.js.map → singleCellGeneExpression.unit.spec-KL77FSHZ.js.map} +0 -0
  874. /package/dist/{singleCellPlot-XG3HZS7I.js.map → singleCellNumericValue-2X5NCEHL.js.map} +0 -0
  875. /package/dist/{snp-RMZRB426.js.map → singleCellPlot-Q6INE54V.js.map} +0 -0
  876. /package/dist/{singlecell-BRF2HAV2.js.map → singlecell-5N2P5ZAT.js.map} +0 -0
  877. /package/dist/{singlecell-KVCJF2HI.js.map → singlecell-NPSWMNI3.js.map} +0 -0
  878. /package/dist/{ssGSEA-7RKWYZKX.js.map → snp-2WPJYPDE.js.map} +0 -0
  879. /package/dist/{snp.unit.spec-JF6KR2NT.js.map → snp.unit.spec-PPWIIOX6.js.map} +0 -0
  880. /package/dist/{snplocus-AHUFHQ3Q.js.map → snplocus-T3HZFZWA.js.map} +0 -0
  881. /package/dist/{spliceevent.a53ss.diagram-OSZZ2CF2.js.map → spliceevent.a53ss.diagram-APCF4LV5.js.map} +0 -0
  882. /package/dist/{spliceevent.exonskip.diagram-AMA2D2OL.js.map → spliceevent.exonskip.diagram-TT5JGBSC.js.map} +0 -0
  883. /package/dist/{spliceevent.noeventdiagram-RKTUXH5D.js.map → spliceevent.noeventdiagram-CPXQSX3Z.js.map} +0 -0
  884. /package/dist/{summarizeMutationDiagnosis-GCL4SRON.js.map → ssGSEA-FSX6P7HA.js.map} +0 -0
  885. /package/dist/{ssGSEA.unit.spec-XLCZHH7S.js.map → ssGSEA.unit.spec-TXYT665R.js.map} +0 -0
  886. /package/dist/{stattable-NDYUCLVZ.js.map → stattable-BD64SFYV.js.map} +0 -0
  887. /package/dist/{studyCatalog-TAXRF5NS.js.map → studyCatalog-6BOWO4PO.js.map} +0 -0
  888. /package/dist/{summarizeCnvGeneexp-3QLHU6N7.js.map → summarizeCnvGeneexp-AMLYJIPU.js.map} +0 -0
  889. /package/dist/{summarizeGeneexpSurvival-ARI4MPFX.js.map → summarizeGeneexpSurvival-IDM7T333.js.map} +0 -0
  890. /package/dist/{summarizeMutationCnv-W7V7CKPI.js.map → summarizeMutationCnv-R6SYSJQC.js.map} +0 -0
  891. /package/dist/{summary-OUYDWLBF.js.map → summarizeMutationDiagnosis-XZJ4JLW2.js.map} +0 -0
  892. /package/dist/{summarizeMutationSurvival-6TTMSRRX.js.map → summarizeMutationSurvival-ABJ5RL4L.js.map} +0 -0
  893. /package/dist/{termCollection-7P3WU6X6.js.map → summary-NVYCTE6P.js.map} +0 -0
  894. /package/dist/{summary.integration.spec-4GTCG6HY.js.map → summary.integration.spec-SSLTLVNW.js.map} +0 -0
  895. /package/dist/{summaryInput-UK3TLC7M.js.map → summaryInput-SJOZETRP.js.map} +0 -0
  896. /package/dist/{sunburst-2UFHMNH3.js.map → sunburst-RU5ZPJKW.js.map} +0 -0
  897. /package/dist/{survival-SPWYSDVB.js.map → survival-BHJQMXKI.js.map} +0 -0
  898. /package/dist/{survival-TL6UZ6FQ.js.map → survival-DVG6Y2FV.js.map} +0 -0
  899. /package/dist/{svgraph-Z543MLIN.js.map → svgraph-ETFA4GRX.js.map} +0 -0
  900. /package/dist/{svmr-SZCAOAIF.js.map → svmr-AI3RU4JK.js.map} +0 -0
  901. /package/dist/{table-IAQ6J4DO.js.map → table-YCTSMLQL.js.map} +0 -0
  902. /package/dist/{termCollection-3NGHR7QN.js.map → termCollection-GMKEZR6D.js.map} +0 -0
  903. /package/dist/{termCollectionFractionSelection-YKIE6BME.js.map → termCollection-VEVKKJZD.js.map} +0 -0
  904. /package/dist/{termCollection.unit.spec-EPYC7LOA.js.map → termCollection.unit.spec-EU6YCEPX.js.map} +0 -0
  905. /package/dist/{tk-X454XH5N.js.map → termCollectionFractionSelection-UBS74X36.js.map} +0 -0
  906. /package/dist/{termCollectionFractionSelection.unit.spec-AG2CZPGZ.js.map → termCollectionFractionSelection.unit.spec-Y5OJFGDD.js.map} +0 -0
  907. /package/dist/{tk-TOXMU4GT.js.map → tk-HMF4HCNV.js.map} +0 -0
  908. /package/dist/{tvs.dt-U77PCG6X.js.map → tk-W6Z4FJMW.js.map} +0 -0
  909. /package/dist/{tp.ui-FDQ76KPL.js.map → tp.ui-NECRDJCS.js.map} +0 -0
  910. /package/dist/{vocabulary-64GO4YDB.js.map → tvs.dt-2JEH3F35.js.map} +0 -0
  911. /package/dist/{tvs.dtcnv.categorical-XYZU4XLO.js.map → tvs.dtcnv.categorical-YBXKEBR2.js.map} +0 -0
  912. /package/dist/{tvs.dtcnv.continuous-4GJILFGP.js.map → tvs.dtcnv.continuous-AD3SJ6BY.js.map} +0 -0
  913. /package/dist/{tvs.dtfusion-7YROAHVI.js.map → tvs.dtfusion-ODI3CLQS.js.map} +0 -0
  914. /package/dist/{tvs.dtitd-MIYU4ZHH.js.map → tvs.dtitd-V3LYLPJY.js.map} +0 -0
  915. /package/dist/{tvs.dtsnvindel-XLDY7KWB.js.map → tvs.dtsnvindel-R3V5LTNL.js.map} +0 -0
  916. /package/dist/{tvs.dtsv-YMLJ37YR.js.map → tvs.dtsv-ZQLKEDLJ.js.map} +0 -0
  917. /package/dist/{tvs.samplelst-KIVEXJKD.js.map → tvs.samplelst-G25A7HM6.js.map} +0 -0
  918. /package/dist/{tvs.termCollection-4CQV3EB3.js.map → tvs.termCollection-WLVCWDEJ.js.map} +0 -0
  919. /package/dist/{wsi.direct-5MQVRJZX.js.map → wsi.direct-SNPPQPVO.js.map} +0 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../plots/sc/model/SCModel.ts", "../plots/sc/viewModel/SCViewModel.ts", "../plots/sc/interactions/SCInteractions.ts", "../plots/sc/view/SampleTableRenderer.ts", "../plots/sc/view/PlotButtons.ts", "../plots/sc/view/SectionRenderer.ts", "../plots/sc/settings/Settings.ts", "../plots/sc/view/SCViewRenderer.ts", "../plots/sc/settings/defaults.ts", "../plots/sc/subplots/DynamicSubplot.ts", "../plots/sc/subplots/SubplotManager.ts", "../plots/sc/SC.ts"],
4
+ "sourcesContent": ["import type { AppApi } from '#rx'\nimport type { SCFormattedState } from '../SCTypes'\nimport { dofetch3 } from '#common/dofetch'\nimport type { SCViewer } from '../SC'\nimport { getNormalRoot } from '#filter/filter.utils'\n\n/** Fetches data for sc app */\nexport class SCModel {\n\tsc: SCViewer\n\tapp: AppApi\n\tid?: string\n\tstate: SCFormattedState\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.app = sc.app\n\t\tthis.id = sc.id\n\t\tthis.state = sc.app.getState()\n\t}\n\n\t/********** All Single Cell SAMPLES for rendering the sample table ******** */\n\tasync getAllSampleData(state) {\n\t\tconst body = {\n\t\t\tgenome: state.vocab.genome,\n\t\t\tdslabel: state.vocab.dslabel,\n\t\t\tfilter: getNormalRoot(state.termfilter.filter),\n\t\t\tfilter0: state.termfilter.filter0\n\t\t}\n\t\treturn await dofetch3('termdb/singlecellSamples', { body, signal: this.sc.api?.getAbortSignal() })\n\t}\n\n\t//Fetches optional name for ds defined columns\n\tasync getColumnLabels(dsScSamples: { [key: string]: any }) {\n\t\tif (!dsScSamples || !dsScSamples.sampleColumns) return\n\t\tconst colsCopy = structuredClone(dsScSamples.sampleColumns)\n\t\tfor (const col of colsCopy) {\n\t\t\tlet label = col.termid\n\t\t\ttry {\n\t\t\t\tlabel = (await this.app.vocabApi.getterm(col.termid)).name\n\t\t\t} catch (e: any) {\n\t\t\t\tif (e.message) {\n\t\t\t\t\t//Ignore. if statement to prevent tsc error.\n\t\t\t\t}\n\t\t\t\t/** Ignore errors and use the termid as the column header.\n\t\t\t\t * this is due to practical constrain that gdc needs to supply\n\t\t\t\t * analysis.workflow_type as 'Library', but this is not a term\n\t\t\t\t * in gdc dictionary */\n\t\t\t}\n\t\t\tcol.label = label\n\t\t}\n\t\treturn colsCopy\n\t}\n\n\t/********** Single Cell DATA for rendering plots ********\n\t * This is for the plot buttons. Returns an array plots with found files or\n\t * available data. */\n\tasync getSampleData() {\n\t\tconst body = this.getDataRequestOpts()\n\t\tif (!body) return\n\t\treturn await dofetch3('termdb/singlecellData', { body, signal: this.sc.api?.getAbortSignal() })\n\t}\n\n\t/** May provide active plots to the request and return plot data when\n\t * checkPlotAvailability is false. When checkPlotAvailability is true,\n\t * only returns which plots are available but not the actual data. */\n\tgetDataRequestOpts(_plots: any[] = [], checkPlotAvailability = true) {\n\t\tconst state = this.app.getState()\n\t\tconst singleCellTermdbConfig = state.termdbConfig?.queries?.singleCell\n\t\tif (!singleCellTermdbConfig?.data) throw new Error('No singleCell.data defined in termdbConfig.queries')\n\n\t\tconst config = state.plots.find((p: any) => p.id === this.id)\n\t\tif (!config.settings.sc.item) return\n\n\t\tconst plots = _plots?.length ? _plots : singleCellTermdbConfig.data.plots.map(p => p.name)\n\n\t\treturn {\n\t\t\tgenome: this.state.vocab.genome,\n\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t// if true, only return available plot names, but not actual plot data\n\t\t\tcheckPlotAvailability,\n\t\t\tplots,\n\t\t\tsample: {\n\t\t\t\teID: config.settings.sc.item.eID,\n\t\t\t\tsID: config.settings.sc.item.sID\n\t\t\t}\n\t\t}\n\t}\n\n\t/** whether a sample has a spatial image (with the consolidated h5ad the\n\t spatial subplot needs), keyed by sID. Successful probes are cached;\n\t failures return false for the current render and may be retried. */\n\tsampleHasSpatial: { [sID: string]: boolean } = {}\n\tasync hasSpatialImage(sID: string): Promise<boolean> {\n\t\tif (!(sID in this.sampleHasSpatial)) {\n\t\t\t// only probe datasets that can have spatial images: supportedChartTypes\n\t\t\t// advertises 'wsi' (per cohort) when ds.queries.w2 exists; without it\n\t\t\t// the wsiBySample route can only 500, so skip the request entirely\n\t\t\tconst supported = this.state.termdbConfig?.supportedChartTypes || {}\n\t\t\tif (!Object.values(supported).some((types: any) => types?.includes?.('wsi'))) return false\n\t\t\tlet r: any\n\t\t\ttry {\n\t\t\t\tr = await dofetch3('termdb/wsiBySample', {\n\t\t\t\t\t// imageType: only the spatial root is enumerated for the probe\n\t\t\t\t\tbody: {\n\t\t\t\t\t\tgenome: this.state.vocab.genome,\n\t\t\t\t\t\tdslabel: this.state.vocab.dslabel,\n\t\t\t\t\t\tsample_id: sID,\n\t\t\t\t\t\timageType: 'spatial'\n\t\t\t\t\t},\n\t\t\t\t\tsignal: this.sc.api?.getAbortSignal()\n\t\t\t\t})\n\t\t\t} catch (e: any) {\n\t\t\t\t// a superseding dispatch aborts in-flight requests: rethrow so\n\t\t\t\t// rx's stale-render handling stops this render, instead of it\n\t\t\t\t// continuing with a made-up false\n\t\t\t\tif (this.app.vocabApi?.isAbortError?.(e)) throw e\n\t\t\t\treturn false // network failure: false for this render, retried next\n\t\t\t}\n\t\t\t// dofetch3 resolves server error payloads without rejecting: treat\n\t\t\t// them like a thrown failure \u2014 false now, uncached so a later\n\t\t\t// render can retry \u2014 never as proof the sample has no image\n\t\t\tif (r?.error) return false\n\t\t\tthis.sampleHasSpatial[sID] = !!(r?.images || []).some((i: any) => i.type == 'spatial' && i.spatialData)\n\t\t}\n\t\treturn this.sampleHasSpatial[sID]\n\t}\n\n\t/** Essentially for the GDC. Maybe applied to other ds in the future. */\n\tasync getCategories(_plots: any[]): Promise<string[] | undefined> {\n\t\tconst body = this.getDataRequestOpts(_plots, false)\n\t\tif (!body) return\n\n\t\tlet res\n\t\ttry {\n\t\t\tres = await dofetch3('termdb/singlecellData', { body, signal: this.sc.api?.getAbortSignal() })\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e}`)\n\t\t}\n\n\t\treturn this.formatCategories(res)\n\t}\n\n\tformatCategories(res: any): string[] {\n\t\tconst plot = structuredClone(res.plots[0])\n\n\t\tplot.cells = [...plot.noExpCells, ...plot.expCells]\n\t\tconst clusters: Set<string> = new Set(plot.cells.map(c => c.category))\n\n\t\t/** Clean up list into an descending array */\n\t\tconst sortedClusters: string[] = Array.from(clusters).sort((a: any, b: any) => {\n\t\t\tconst num1 = parseInt(a.split(' ')[1])\n\t\t\tconst num2 = parseInt(b.split(' ')[1])\n\t\t\treturn num1 - num2\n\t\t})\n\t\treturn sortedClusters\n\t}\n}\n", "import type { AppApi } from '#rx'\nimport type { TableColumn, TableRow } from '#dom'\nimport type { SCConfig, SCFormattedState, SampleColumn, SCTableData } from '../SCTypes'\nimport type { SingleCellSample } from '#types'\n\nexport class SCViewModel {\n\tapp: AppApi\n\tstate: SCFormattedState\n\ttableData!: SCTableData\n\tsampleColumns: SampleColumn[]\n\tmetaResultIds: Set<string>\n\n\tconstructor(app: AppApi, sampleColumns?: SampleColumn[]) {\n\t\tthis.app = app\n\t\tthis.state = this.app.getState()\n\t\tthis.sampleColumns = sampleColumns || []\n\t\tthis.metaResultIds = new Set()\n\t}\n\n\tprocessData(config: SCConfig, _items: SingleCellSample[]) {\n\t\t//Sort meta analysis results to show at the beginning of the table.\n\t\t//Prevents breaking the logic for selected rows after formating the table data.\n\t\tconst items = _items.sort((a, b) => (b.isMetaResult === a.isMetaResult ? 0 : b.isMetaResult ? 1 : -1))\n\n\t\tconst [rows, columns, sampleColIdx] = this.getTabelData(config, items, this.sampleColumns)\n\t\tconst selectedRows: number[] = []\n\t\tconst sID = config.settings.sc.item?.sID\n\t\tconst i = sID\n\t\t\t? items.findIndex(item => item.sample === sID || item.experiments?.some(e => e.sampleName === sID))\n\t\t\t: -1\n\t\tif (i != -1) selectedRows.push(i)\n\n\t\t/** Returning this data separately from the eventual\n\t\t * viewData because it's static. */\n\t\tthis.tableData = {\n\t\t\trows: rows as any,\n\t\t\tcolumns: columns as any,\n\t\t\tselectedRows,\n\t\t\tsampleColIdx\n\t\t}\n\t}\n\n\t/** Shape the selected sample's plot data for the plot buttons view:\n\t * the server's plots plus flags the view only reads (hasSpatial shows\n\t * the Spatial button). */\n\tformatPlotsData(sampleData: any, hasSpatial: boolean) {\n\t\treturn { ...sampleData, hasSpatial }\n\t}\n\n\tgetTabelData(\n\t\tplotConfig: SCConfig,\n\t\titems: SingleCellSample[],\n\t\tsampleColumns?: SampleColumn[]\n\t): [TableRow[], TableColumn[], number] {\n\t\tconst rows: TableRow[] = []\n\t\tconst hasExperiments = items.some(i => i.experiments)\n\t\tlet sampleColIdx = -1\n\n\t\t/** First column may either be a list of samples or mix of samples, meta, and/or pseudobulk.\n\t\t * Only use 'Sample' or config setting if everything is a sample. */\n\t\tlet firstColLabel = plotConfig.settings.sc.columns.sample\n\t\tif (items[0]?.isMetaResult) firstColLabel = ''\n\t\tconst columns: TableColumn[] = [{ label: firstColLabel, sortable: true }]\n\t\tif (hasExperiments) {\n\t\t\tcolumns.push({ label: 'Sample', sortable: true }) //add after the case column\n\t\t\tsampleColIdx = 1\n\t\t} else sampleColIdx = 0\n\t\tcolumns.push({ label: 'Shown plots' }) //Empty column for plot buttons\n\n\t\t// add in optional sample columns\n\t\tfor (const col of sampleColumns || []) {\n\t\t\tcolumns.push({\n\t\t\t\tlabel: col.label,\n\t\t\t\twidth: '14vw',\n\t\t\t\tsortable: true\n\t\t\t})\n\t\t}\n\n\t\t// if samples are using experiments, add the hardcoded experiment column at the end\n\t\tif (hasExperiments) columns.push({ label: 'Experiment', sortable: true }) // corresponds to this.samples[].experiments[].experimentID\n\n\t\tfor (const item of items) {\n\t\t\tif (item.isMetaResult) this.metaResultIds.add(item.sample)\n\t\t\tif (hasExperiments)\n\t\t\t\t//GDC\n\t\t\t\tfor (const exp of item.experiments!) {\n\t\t\t\t\t// first cell is always sample name. sneak in experiment object to be accessed in click callback\n\t\t\t\t\t//TODO: Consider removing the experimentID as it is no longer needed.\n\t\t\t\t\tconst row: { [index: string]: any }[] = [{ value: item.sample, __experimentID: exp.experimentID }]\n\t\t\t\t\t// hardcode to expect exp.sampleName and add this as a column\n\t\t\t\t\trow.push({ value: exp.sampleName })\n\t\t\t\t\trow.push({ value: '' }) //Empty cell for shown plot buttons\n\t\t\t\t\t// optional sample and experiment columns\n\t\t\t\t\tfor (const col of sampleColumns || []) {\n\t\t\t\t\t\trow.push({ value: item[col.termid] })\n\t\t\t\t\t}\n\n\t\t\t\t\t// hardcode to always add in experiment id column. link out only if the ds declares a\n\t\t\t\t\t// url template for it (as singleCellPlot.js does)\n\t\t\t\t\tconst urlTemp = this.state.termdbConfig?.urlTemplates?.scrnaExperimentId\n\t\t\t\t\tif (urlTemp) row.push({ value: exp.experimentID, url: `${urlTemp.base}${exp.experimentID}` })\n\t\t\t\t\telse row.push({ value: exp.experimentID })\n\t\t\t\t\trows.push(row)\n\t\t\t\t}\n\t\t\telse {\n\t\t\t\t// sample does not use experiment\n\t\t\t\t// first cell is sample name\n\t\t\t\tconst row: { [index: string]: any }[] = item.isMetaResult\n\t\t\t\t\t? [{ html: item.sample.replace(/_/g, ' '), value: item.sample, elemId: 'isMetaResult' }]\n\t\t\t\t\t: [{ value: item.sample }]\n\t\t\t\t//Empty cell for shown plot buttons\n\t\t\t\trow.push({ value: '' })\n\t\t\t\t// optional sample columns\n\t\t\t\tfor (const col of sampleColumns || []) {\n\t\t\t\t\tconst value = item[col.termid]\n\t\t\t\t\tif (value == null && item.isMetaResult) row.push({ value: 'All' })\n\t\t\t\t\telse row.push({ value: item[col.termid] })\n\t\t\t\t}\n\t\t\t\trows.push(row)\n\t\t\t}\n\t\t}\n\t\treturn [rows, columns, sampleColIdx]\n\t}\n}\n", "import type { AppApi } from '#rx'\nimport type { SCModel } from '../model/SCModel.ts'\nimport type { SCViewer } from '../SC.ts'\nimport type { SCViewModel } from '../viewModel/SCViewModel.ts'\n\n/** Handles the interactivity from the view */\nexport class SCInteractions {\n\tapp: AppApi\n\tid: string\n\tmodel: SCModel\n\tviewModel: SCViewModel\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.app = sc.app\n\t\tthis.id = sc.id\n\t\tthis.model = sc.model\n\t\tthis.viewModel = sc.viewModel\n\t}\n\n\t/** Add the plot to the state.plots array with .parentId. Adding\n\t * .parentId prevents the plot from launching in a new sandbox outside SC.\n\t * Pass the .parentId to both the plotConfig and the action.\n\t * this.getState() in SC.ts will find all the subplots with the parentId==this.id\n\t * SC.main() initializes the subplots as components in chartsDiv */\n\tasync createSubplot(config) {\n\t\tconst c = Object.assign({}, config, { parentId: this.id })\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_create',\n\t\t\tparentId: this.id,\n\t\t\tconfig: c\n\t\t})\n\t}\n\n\t/** Updates the selected item in the plot settings */\n\tasync updateItem(item) {\n\t\titem.isMetaResult = this.viewModel.metaResultIds.has(item.sID)\n\t\tawait this.app.dispatch({\n\t\t\ttype: 'plot_edit',\n\t\t\tid: this.id,\n\t\t\tconfig: { settings: { sc: { item } } }\n\t\t})\n\t}\n\n\tasync getDropDownOptions(plot): Promise<string[] | undefined> {\n\t\treturn this.model.getCategories(plot)\n\t}\n}\n", "import type { SCDom, SCSampleSandbox, SCTableData } from '../SCTypes'\nimport type { TableCell } from '#dom'\nimport { renderTable } from '#dom'\nimport type { SCInteractions } from '../interactions/SCInteractions'\n\n/** Renders the sample table for selection on SC app init()\n * On selecting a sample, the plot buttons will appear and\n * the user can select a plot to render in the dashboard. */\nexport class SampleTableRenderer {\n\tdom: SCDom\n\tinteractions: SCInteractions\n\ttableData: SCTableData\n\tactiveSandboxes: Map<string, SCSampleSandbox[]> = new Map()\n\t/** Tracks rendered btns per sample to avoid unnecessary destroy/recreate pattern. */\n\trendered: Map<string, { cell: any; plotIds: string }> = new Map()\n\n\tconstructor(dom: SCDom, interactions: SCInteractions, tableData: SCTableData) {\n\t\tthis.dom = dom\n\t\tthis.interactions = interactions\n\t\tthis.tableData = tableData\n\t\tthis.renderSamplesTable(tableData)\n\t}\n\n\t/** Users select one item at a time to render the plot buttons\n\t * to init() plots in the dashboard.*/\n\trenderSamplesTable(tableData: SCTableData) {\n\t\tthis.dom.tableDiv.selectAll('*').remove()\n\n\t\trenderTable({\n\t\t\trows: tableData.rows,\n\t\t\tcolumns: tableData.columns,\n\t\t\tdiv: this.dom.tableDiv,\n\t\t\tsingleMode: true,\n\t\t\t// maxWidth: tableData.columns.length > 3 ? '95vw' : 'auto',\n\t\t\tmaxHeight: '30vh',\n\t\t\theader: {\n\t\t\t\tallowSort: true,\n\t\t\t\tstyle: { 'text-transform': 'capitalize' }\n\t\t\t},\n\t\t\tstriped: true,\n\t\t\tselectedRows: tableData.selectedRows,\n\t\t\tafterRender: () => {\n\t\t\t\tthis.reapplyAllPlotButtons()\n\t\t\t},\n\t\t\tnoButtonCallback: index => {\n\t\t\t\tconst item = this.buildItemFromRow(tableData, index)\n\t\t\t\tthis.interactions.updateItem(item)\n\t\t\t\tthis.dom.plotsBtnsDiv.style('display', 'block')\n\t\t\t}\n\t\t})\n\t}\n\n\t/** Builds an item object from a table row, mapping column labels to keys.\n\t * Converts 'sample' -> 'sID' and 'experiment' -> 'eID'.\n\t * Extracted out from noButtonCallback for testing. */\n\tbuildItemFromRow(tableData: SCTableData, index: number) {\n\t\tconst item = {} as { sID: string; eID: string; [key: string]: any }\n\t\ttableData.rows[index].forEach((r: TableCell, idx: number) => {\n\t\t\tif (!r.value) return\n\t\t\tlet key = tableData.columns[idx].label.toLowerCase()\n\t\t\t/** Convert the column labels into the required sample structure keys.\n\t\t\t * Maintains the sample obj used throughout the app whilst allowing for\n\t\t\t * dynamic column labels based on the config. */\n\t\t\tkey = key === 'sample' || key === '' ? 'sID' : key === 'experiment' ? 'eID' : key\n\t\t\titem[key] = r.value\n\t\t})\n\t\tif (!item.sID) throw new Error('Selected item must have sID property')\n\t\treturn item\n\t}\n\n\tupdateTable(tableData: SCTableData) {\n\t\tthis.tableData = tableData\n\t\tthis.dom.tableDiv.selectAll('*').remove()\n\t\tthis.renderSamplesTable(tableData)\n\t}\n\n\tupdatePlotBtns(activeSandboxes: Map<string, SCSampleSandbox[]>) {\n\t\tthis.activeSandboxes = activeSandboxes\n\t\tthis.reapplyAllPlotButtons()\n\t}\n\n\t/** Called by afterRender to re-apply buttons for all samples with subplots.\n\t * Also called in updateTable when the active sandboxes (i.e. subplots) change.*/\n\treapplyAllPlotButtons() {\n\t\t/** Check btns still apply to active sandboxes. If not delete\n\t\t * from table and tracker. */\n\t\tfor (const sampleId of this.rendered.keys()) {\n\t\t\tif (!this.activeSandboxes.has(sampleId)) {\n\t\t\t\tthis.deleteBtns(sampleId)\n\t\t\t}\n\t\t}\n\t\tfor (const sampleId of this.activeSandboxes.keys()) {\n\t\t\tthis.applyButtonsForSample(sampleId)\n\t\t}\n\t}\n\n\tdeleteBtns(sampleId: string) {\n\t\tconst cached = this.rendered.get(sampleId)\n\t\tif (cached) {\n\t\t\tcached.cell.selectAll('.sjpp-sc-table-plot-btn').remove()\n\t\t\tthis.rendered.delete(sampleId)\n\t\t}\n\t}\n\n\t/** Applies buttons for a single sample. Skips DOM work if cell and plots are unchanged. */\n\tapplyButtonsForSample(sampleId: string) {\n\t\tconst sampleIdx = this.tableData.sampleColIdx\n\n\t\t/** Rows array mutates on sort. Find the row by matching sampleId.*/\n\t\tconst row = this.tableData.rows.find(r => r[sampleIdx].value === sampleId)\n\t\tif (!row) return\n\n\t\tconst cell = row[sampleIdx + 1].__td\n\t\tconst sampleSandboxes = this.activeSandboxes.get(sampleId)\n\t\tif (!sampleSandboxes || sampleSandboxes.length === 0) return\n\n\t\tconst plotIds = sampleSandboxes.map(s => s.plotId).join(',')\n\t\tconst cached = this.rendered.get(sampleId)\n\t\t/** Guard against rerendering btns */\n\t\tif (cached && cached.cell === cell && cached.plotIds === plotIds) return\n\n\t\tcell.selectAll('.sjpp-sc-table-plot-btn').remove()\n\t\tthis.rendered.set(sampleId, { cell, plotIds })\n\t\tfor (const { div, plotName } of sampleSandboxes) {\n\t\t\tthis.appendPlotBtn(cell, div, plotName, sampleId)\n\t\t}\n\t}\n\n\tappendPlotBtn(cell: any, sandboxDiv: any, plotName: string, sampleId: string) {\n\t\tconst text = plotName.length > 25 ? plotName.slice(0, 12) + '...' : plotName\n\t\tconst label = `Scroll to ${plotName}`\n\t\tcell\n\t\t\t.append('button')\n\t\t\t.attr('class', 'sjpp-sc-table-plot-btn')\n\t\t\t.attr('data-testid', `sjpp-sc-table-${sampleId}-${plotName}-btn`)\n\t\t\t.style('padding', '2px 5px')\n\t\t\t.style('margin-left', '4px')\n\t\t\t.style('font-size', '0.8em')\n\t\t\t.style('border-radius', '20px')\n\t\t\t.style('border', '0.5px solid black')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.text(text)\n\t\t\t.attr('aria-label', label)\n\t\t\t.attr('title', label)\n\t\t\t.attr('tabindex', 0)\n\t\t\t.on('click', () => {\n\t\t\t\tsandboxDiv.node().scrollIntoView({ behavior: 'smooth', block: 'start' })\n\t\t\t})\n\t}\n}\n", "import type { Div, Elem } from '../../../types/d3'\nimport type { SCInteractions } from '../interactions/SCInteractions'\nimport { Menu } from '#dom'\nimport { digestMessage } from '#termsetting'\nimport { TermTypeGroups } from '#shared/terms.js'\nimport { SINGLECELL_CELLTYPE, SINGLECELL_GENE_EXPRESSION } from '#types'\nimport type { SCSample } from '../SCTypes'\nimport type { Settings } from '../settings/Settings'\n\n/** Rendering for the plot buttons that appear below the item\n * table. Plot buttons are rendered based on the available plots\n * for the selected sample, and the config defined in\n * termdbConfig.queries.singleCell.data.plots. Each plot config\n * in termdbConfig should define a name that matches the plot\n * names returned from the server, and can optionally define\n * colorColumns which will be used to apply color to the plot\n * if those columns are present in the data.\n *\n * Notes:\n * - The hierarchical clustering limits to the first 100 genes.\n * */\nexport class PlotButtons {\n\tplotBtnsDom: {\n\t\tholder: Div\n\t\tpromptDiv: Div\n\t\tselectPrompt: Elem\n\t\tbtnsDiv: Div\n\t\ttip: Menu\n\t}\n\tdata?: any\n\titem?: SCSample\n\tinteractions: SCInteractions\n\tscTermdbConfig: any\n\tsettings!: Settings\n\t/** Single cell cell type terms defined in the ds file and saved in the termdbConfig */\n\tscctTerms?: any[]\n\t/** Single cell numeric value terms defined in the ds file and saved in the termdbConfig */\n\tscnvTerms?: any[]\n\tavailablePlots!: Set<string>\n\n\t/** scctTerms and the scTermdbConfig are created on server init and will not change. */\n\tconstructor(interactions: SCInteractions, holder: Div, termdbConfig) {\n\t\tholder.style('padding', '10px')\n\t\tconst promptDiv = holder.append('div').style('padding', '10px 0').text('Select data from')\n\t\tthis.plotBtnsDom = {\n\t\t\tholder,\n\t\t\tpromptDiv,\n\t\t\tselectPrompt: promptDiv.append('span'),\n\t\t\tbtnsDiv: holder.append('div'),\n\t\t\ttip: new Menu({ padding: '' })\n\t\t}\n\t\tthis.interactions = interactions\n\t\tthis.scctTerms = termdbConfig?.termType2terms?.[TermTypeGroups.SINGLECELL_CELLTYPE]\n\t\tthis.scnvTerms = termdbConfig?.termType2terms?.[TermTypeGroups.SINGLECELL_NUMERIC_VALUE]\n\t\tthis.scTermdbConfig = termdbConfig.queries.singleCell\n\t}\n\n\tupdate(settings: Settings, data) {\n\t\t/** If the user has not selected a item yet but clicks\n\t\t * the select item/plots btn above the table, the prompt appears\n\t\t * unnecessarily */\n\t\tconst item = settings.sc.item\n\t\tthis.plotBtnsDom.holder.style('display', !item ? 'none' : 'block')\n\t\tif (!item) return\n\t\tif (data != null && data.plots) this.data = data\n\t\t//Show buttons for plots with found data files (see note above).\n\t\tthis.availablePlots = new Set(this.data?.plots?.map((p: any) => p.name))\n\t\tthis.settings = settings\n\t\tthis.item = item\n\t\tconst name = item.sID\n\t\tthis.plotBtnsDom.selectPrompt.text(` ${name}:`)\n\t\tthis.renderChartBtns()\n\t}\n\n\trenderChartBtns() {\n\t\tthis.plotBtnsDom.btnsDiv.selectAll('*').remove()\n\t\tconst btns = this.getChartBtnOpts()\n\n\t\tthis.plotBtnsDom.btnsDiv\n\t\t\t.selectAll('button')\n\t\t\t.data(btns.filter(b => (b.isVisible ? b.isVisible() : true)))\n\t\t\t.enter()\n\t\t\t.append('button')\n\t\t\t.attr('type', 'button')\n\t\t\t.attr('data-testid', b => `sjpp-sc-plot-btn-${b.label.toLowerCase().replace(/\\s/g, '-')}`)\n\t\t\t.style('padding', '10px 15px')\n\t\t\t.style('border-radius', '20px')\n\t\t\t.style('border-color', 'transparent')\n\t\t\t.style('background-color', '#CFE2F3')\n\t\t\t.style('margin', '0 10px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.text(b => b.label)\n\t\t\t.on('click', async (e, plot) => {\n\t\t\t\tif (plot.open) {\n\t\t\t\t\tthis.plotBtnsDom.tip.clear().showunder(e.target)\n\t\t\t\t\tplot.open(plot, this)\n\t\t\t\t} else {\n\t\t\t\t\tif (!plot.getPlotConfig)\n\t\t\t\t\t\tthrow new Error(`No getPlotConfig function defined for this plot button = ${plot.label}`)\n\t\t\t\t\tconst config = await plot.getPlotConfig()\n\t\t\t\t\tawait this.interactions.createSubplot(config)\n\t\t\t\t}\n\t\t\t})\n\t}\n\n\tgetChartBtnOpts() {\n\t\tconst btns: {\n\t\t\tlabel: string\n\t\t\tisVisible: () => boolean\n\t\t\topen?: (plot: any, self: PlotButtons) => void\n\t\t\tgetPlotConfig?: (f?: any) => any\n\t\t}[] = []\n\n\t\tfor (const plot of this.scTermdbConfig?.data?.plots || []) {\n\t\t\tif (!this.availablePlots.has(plot.name)) continue\n\t\t\tbtns.push({\n\t\t\t\tlabel: plot.name,\n\t\t\t\tisVisible: () => true,\n\t\t\t\tgetPlotConfig: async () => {\n\t\t\t\t\treturn await this.getSingleCellConfig(plot.name)\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tbtns.push(\n\t\t\t{\n\t\t\t\tlabel: 'Summary',\n\t\t\t\tisVisible: () => true,\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = { ...this.item!, plots: Array.from(this.availablePlots) }\n\t\t\t\t\tconst isMeta = sample?.isMetaResult || false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'dictionary',\n\t\t\t\t\t\tsample,\n\t\t\t\t\t\tspawnConfig: {\n\t\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\t\theaderText: this.makeHeaderText(sample, isMeta),\n\t\t\t\t\t\t\thidePlotFilter: !isMeta,\n\t\t\t\t\t\t\tsample\n\t\t\t\t\t\t},\n\t\t\t\t\t\ttree: {\n\t\t\t\t\t\t\tusecase: {\n\t\t\t\t\t\t\t\ttarget: 'dictionary',\n\t\t\t\t\t\t\t\tspecialCase: {\n\t\t\t\t\t\t\t\t\ttype: 'singleCell',\n\t\t\t\t\t\t\t\t\tconfig: { sample }\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Gene expression',\n\t\t\t\tisVisible: () => this.scTermdbConfig?.geneExpression,\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = this.item!\n\t\t\t\t\tconst isMeta = sample?.isMetaResult || false\n\t\t\t\t\tconst headerText = this.makeHeaderText(sample, isMeta)\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'GeneExpInput',\n\t\t\t\t\t\ttermType: SINGLECELL_GENE_EXPRESSION,\n\t\t\t\t\t\theaderText,\n\t\t\t\t\t\ttermProperties: { sample },\n\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\tsample,\n\t\t\t\t\t\tspawnConfig: {\n\t\t\t\t\t\t\tparentId: this.interactions.id,\n\t\t\t\t\t\t\theaderText,\n\t\t\t\t\t\t\thidePlotFilter: !isMeta,\n\t\t\t\t\t\t\t/** Must pass this to summary config in the event a continuous\n\t\t\t\t\t\t\t * overlay is applied, launching the scatter plot. Without it,\n\t\t\t\t\t\t\t * the single cell model is not used. */\n\t\t\t\t\t\t\tsingleCellPlot: {\n\t\t\t\t\t\t\t\tname: [...this.availablePlots][0],\n\t\t\t\t\t\t\t\tsample\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: 'Differential expression',\n\t\t\t\tisVisible: () => this.scTermdbConfig?.DEgenes,\n\t\t\t\topen: this.termDropdownMenu,\n\t\t\t\tgetPlotConfig: value => {\n\t\t\t\t\tconst isMeta = this.item?.isMetaResult || false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'differentialAnalysis',\n\t\t\t\t\t\ttermType: SINGLECELL_CELLTYPE,\n\t\t\t\t\t\tcategoryName: `${value}`,\n\t\t\t\t\t\theaderText: `${isMeta ? '' : 'Sample: '}${this.item!.sID}, ${this.scTermdbConfig.DEgenes.termId} ${value}`,\n\t\t\t\t\t\ttermId: this.scTermdbConfig.DEgenes.termId,\n\t\t\t\t\t\tsample: this.item!,\n\t\t\t\t\t\tplotName: 'Differential expression'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tlabel: this.scTermdbConfig?.images?.label || 'Image',\n\t\t\t\tisVisible: () =>\n\t\t\t\t\tthis.scTermdbConfig?.images && this.availablePlots.has(this.scTermdbConfig.images.label || 'Image'),\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst isMeta = this.item?.isMetaResult || false\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'imagePlot',\n\t\t\t\t\t\tsample: this.item!,\n\t\t\t\t\t\timgDir: this.scTermdbConfig?.images,\n\t\t\t\t\t\theaderText: this.makeHeaderText(this.item!, isMeta),\n\t\t\t\t\t\tsettings: { imagePlot: { width: '', height: 400 } }\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\t// spatial tissue viewer for samples with a spatial image (the model's\n\t\t\t\t// wsiBySample probe sets data.hasSpatial); spawns the w2 wsi plot in\n\t\t\t\t// fixed-sample mode, which has its own burger menu for the overlays\n\t\t\t\tlabel: 'Spatial',\n\t\t\t\tisVisible: () => !!this.data?.hasSpatial,\n\t\t\t\tgetPlotConfig: () => {\n\t\t\t\t\tconst sample = this.item!\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchartType: 'wsi',\n\t\t\t\t\t\tname: `Sample: ${sample.sID} Spatial`,\n\t\t\t\t\t\tsample\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t)\n\t\treturn btns\n\t}\n\n\tmakeHeaderText(sample: any, isMeta: boolean, plot?: string) {\n\t\t/** Case and project are GDC specific */\n\t\tconst caseText = sample.case ? ` Case: ${sample.case}` : ''\n\t\tconst projectText = sample?.['project id'] ? ` Project: ${sample['project id']}` : ''\n\t\treturn`${isMeta ? '' : 'Sample: '}${sample.sID}${caseText}${projectText}${plot ? ` (${plot})`: ''}`\n\t}\n\n\t//********** Btn Menus **********/\n\tasync termDropdownMenu(plot: any, self: PlotButtons) {\n\t\t/** An array of plots is required for the server request.\n\t\t * The data for all scRNA plots is the same. Pick the first one */\n\t\tconst _plot = Array.from(self.availablePlots)[0]\n\t\tconst options: string[] | undefined = await self.interactions.getDropDownOptions([_plot])\n\t\tif (!options?.length) throw new Error('No options found for this plot. Cannot open dropdown menu.')\n\n\t\tself.plotBtnsDom.tip.clear()\n\t\tconst wrapper = self.plotBtnsDom.tip.d.append('div').style('padding', '10px')\n\t\twrapper\n\t\t\t.append('div')\n\t\t\t.style('display', 'block')\n\t\t\t.style('width', '300px')\n\t\t\t.text(`View differentially expressed genes of a ${self.scTermdbConfig.DEgenes.termId} versus rest of the cells:`)\n\n\t\tconst select = wrapper\n\t\t\t.append('select')\n\t\t\t.style('margin', '10px 0')\n\t\t\t.style('width', 'auto')\n\t\t\t.style('padding', '5px')\n\t\t\t.on('change', async function () {\n\t\t\t\tself.plotBtnsDom.tip.hide()\n\t\t\t\tconst value = select.node()!.value\n\t\t\t\tif (value.indexOf('Select') == 0) return //ignore prompt option\n\t\t\t\tconst config = plot.getPlotConfig(value)\n\t\t\t\tawait self.interactions.createSubplot(config)\n\t\t\t})\n\n\t\tconst regex = new RegExp(self.scTermdbConfig.DEgenes.termId, 'gi')\n\t\toptions.unshift(`Select a ${self.scTermdbConfig.DEgenes.termId}...`)\n\t\tfor (const cluster of options) {\n\t\t\tselect.append('option').attr('value', cluster.replace(regex, '').trim()).text(cluster)\n\t\t}\n\t}\n\n\t//********** Plot Config Helpers **********/\n\tasync getSingleCellConfig(plotName: string): Promise<object> {\n\t\tif (!this.item) throw new Error('No item selected')\n\t\tconst plot = this.scTermdbConfig.data.plots.find(p => p.name == plotName)\n\t\tif (!plot) throw new Error(`No plot by name ${plotName} in data.plots.`)\n\t\tconst sample = this.item\n\t\tconst isMeta = sample?.isMetaResult || false\n\t\tconst config: any = {\n\t\t\tchartType: 'sampleScatter',\n\t\t\tname: this.makeHeaderText(sample, isMeta, plotName),\n\t\t\tsample,\n\t\t\tsingleCellPlot: {\n\t\t\t\tname: plotName,\n\t\t\t\tsample\n\t\t\t}\n\t\t}\n\t\tif (plot.colorColumns?.[0]) {\n\t\t\t// apply optional color term. hardcodes to 1st of the array\n\t\t\tconst key = plot.colorColumns[0]?.type == 'numeric' ? 'scnv' : 'scct'\n\t\t\tconfig.colorTW = await this.makeScTW(key, sample, plot)\n\t\t}\n\t\treturn config\n\t}\n\n\t// Quick fix. Eventually use the handler to get the proper term from the termdbConfig\n\tasync makeScTW(key, item: { sID: string; eID: string }, plot: any) {\n\t\tif (!key) throw new Error('Key is required for makeScTW')\n\t\tconst colorColName = plot.colorColumns[0].name\n\t\tconst savedTerm = this[`${key}Terms`]?.find(t => t.name == colorColName && t.plot == plot.name)\n\t\tif (!savedTerm) {\n\t\t\tconst ttg = key === 'scct' ? TermTypeGroups.SINGLECELL_CELLTYPE : TermTypeGroups.SINGLECELL_NUMERIC_VALUE\n\t\t\tthrow new Error(\n\t\t\t\t`No term found for colorColumn=${colorColName} in .termType2terms.${ttg} for plot ${plot.name}`\n\t\t\t)\n\t\t}\n\t\tconst term = Object.assign(structuredClone(savedTerm), {\n\t\t\tsample: item\n\t\t})\n\t\tconst id = await digestMessage(`${plot.name}-${item.sID}-${item.eID}`)\n\t\treturn Object.assign({ $id: id }, { term })\n\t}\n}\n", "import type { Sections } from './Sections'\nimport type { Div, Elem } from '../../../types/d3'\nimport type { SCViewer } from '../SC'\nimport type { SingleCellSample } from '#types'\nimport type { GroupByOptions } from '../settings/Settings'\n\n/** Manages the mapping and rendering of the sections based on the groupBy option.\n * sections{} maps the section key (i.e. sampleId, plotName, or none) to the section\n * wrapper, title, subplots div, and the sandboxes in that section.\n *\n * Initializing and destroying the plot components is within SC.ts\n * (i.e. sc.components.plots[plotId]). This ensures plots are responsive to state changes.\n */\nexport class SectionRenderer {\n\tsections: Sections\n\tholder: Div\n\t/** Maps the plotId to either the sampleId, plotName, or none (i.e. key in sections map)\n\t * as a reverse lookup. Used in tandem with sections{} to manage the sandboxes\n\t * within each section. */\n\tplotId2Key: Map<string, string>\n\tgroupBy: (typeof GroupByOptions)[number]\n\n\tconstructor(sectionsDiv: Div, groupBy: (typeof GroupByOptions)[number]) {\n\t\tthis.sections = {}\n\t\tthis.holder = sectionsDiv\n\t\t//Key may be either sampleId, plotName, or none\n\t\tthis.plotId2Key = new Map()\n\t\tthis.groupBy = groupBy\n\t}\n\n\t/** Send the sc with the updated state. May not be necessary long term. If not,\n\t * remove and put in the constructor. */\n\tasync update(sc: SCViewer, subplots: any, groupBy: (typeof GroupByOptions)[number]) {\n\t\tif (groupBy !== this.groupBy) {\n\t\t\tthis.groupBy = groupBy\n\t\t\tthis.regroupSections(sc, subplots)\n\t\t\treturn\n\t\t}\n\t\tconst activeSubplots = new Set(subplots.map(s => s.id))\n\n\t\t/** Reconcile stale sandbox wrappers using section state.\n\t\t * Subplot lifecycle is managed by SubplotManager. */\n\t\tfor (const plotId of Array.from(this.plotId2Key.keys())) {\n\t\t\tif (!activeSubplots.has(plotId)) this.removeSandbox(plotId)\n\t\t}\n\n\t\tfor (const subplot of subplots) {\n\t\t\tconst key = this.getKey(subplot, sc)\n\t\t\tif (!key) continue\n\t\t\tif (!this.sections[key]) this.initSection(key, sc)\n\t\t\tif (!this.sections[key].sandboxes[subplot.id]) {\n\t\t\t\tthis.plotId2Key.set(subplot.id, key)\n\t\t\t\tsc.subplotManager.setSectionKey(subplot.id, key)\n\t\t\t\tawait this.initSandbox(sc, subplot, key)\n\t\t\t}\n\t\t}\n\n\t\t/** Remove sections after iterating through subplots to avoid\n\t\t * deleting sections before they can be re-rendered with the correct plots */\n\t\tfor (const key of Object.keys(this.sections)) {\n\t\t\tif (Object.keys(this.sections[key].sandboxes).length === 0) {\n\t\t\t\tthis.removeSection(key, sc)\n\t\t\t}\n\t\t}\n\t}\n\n\t/** Reparent existing sandboxes into new section containers\n\t * without destroying/recreating plot components. */\n\tprivate regroupSections(sc: SCViewer, subplots: any[]) {\n\t\t// Detach existing sandbox from their parents before clearing\n\t\tconst detached: Map<string, any> = new Map()\n\t\tfor (const [plotId, key] of this.plotId2Key) {\n\t\t\tconst sandboxNode = this.sections[key]?.sandboxes[plotId]\n\t\t\tif (sandboxNode) {\n\t\t\t\t// Remove from current parent without destroying\n\t\t\t\tsandboxNode.remove()\n\t\t\t\tdetached.set(plotId, sandboxNode)\n\t\t\t}\n\t\t}\n\n\t\t// Clear the section wrappers since sandboxes are already detached\n\t\tthis.holder.selectAll('*').remove()\n\t\tthis.sections = {}\n\t\tthis.plotId2Key = new Map()\n\n\t\t// Regroup into new sections, reparenting existing sandbox\n\t\tfor (const subplot of subplots) {\n\t\t\tconst key = this.getKey(subplot, sc)\n\t\t\tif (!key) continue\n\t\t\tif (!this.sections[key]) this.initSection(key, sc)\n\n\t\t\tthis.plotId2Key.set(subplot.id, key)\n\t\t\tsc.subplotManager.setSectionKey(subplot.id, key)\n\t\t\tconst existing = detached.get(subplot.id)\n\t\t\tif (existing) {\n\t\t\t\t// Reparent the existing sandbox into the new section\n\t\t\t\tthis.sections[key].subplots.node()!.prepend(existing.node())\n\t\t\t\tthis.sections[key].sandboxes[subplot.id] = existing\n\t\t\t}\n\t\t}\n\t}\n\n\tgetKey(subplot: any, sc): string | undefined {\n\t\tif (this.groupBy === 'none') return 'none'\n\t\tif (this.groupBy === 'sample') return this.getSampleId(subplot)\n\t\treturn sc.subplotManager.getPlotName(subplot)\n\t}\n\n\t/** Extract sID from a subplot's config.\n\t * Actual subplots store sample as {sID, eID} at top level or on term.term.sample. */\n\tgetSampleId(subplot: any): string | undefined {\n\t\treturn subplot.sample?.sID || subplot.singleCellPlot?.sample?.sID || subplot.term?.term?.sample?.sID\n\t}\n\n\tinitSection(key: string, sc: SCViewer) {\n\t\tconst item = this.findSampleMetadata(key, sc)\n\n\t\tconst titleAttrText =\n\t\t\tthis.groupBy == 'sample' ? 'this sample section' : this.groupBy == 'plot' ? 'this plot section' : 'all plots'\n\t\tconst sectionWrapper = this.holder\n\t\t\t.insert('div', ':first-child')\n\t\t\t.style('padding', '10px')\n\t\t\t.attr('data-testid', `sjpp-sc-section-wrapper-${key}`)\n\n\t\t//delete section btn\n\t\tsectionWrapper\n\t\t\t.append('span')\n\t\t\t.attr('data-testid', `sjpp-sc-section-remove-btn-${key}`)\n\t\t\t.style('margin', '0px 5px')\n\t\t\t.style('cursor', 'pointer')\n\t\t\t.attr('title', `Remove ${titleAttrText}`)\n\t\t\t.html(\n\t\t\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"12\" height=\"12\" fill=\"#000\" class=\"bi bi-x-lg\" viewBox=\"0 0 12 12\">\n <path\n stroke=\"#000\"\n transform=\"scale(0.75)\"\n d=\"M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8 2.146 2.854Z\"/>\n </svg>`\n\t\t\t)\n\t\t\t.on('click', () => {\n\t\t\t\tthis.removeSection(key, sc)\n\t\t\t})\n\n\t\tconst titleText = this.makeSectionTitleText(key, item)\n\t\tconst titleWrapper = sectionWrapper.append('span').style('font-weight', 600).style('opacity', 0.7).text(titleText)\n\t\tif (titleText.length) {\n\t\t\tconst arrow = titleWrapper\n\t\t\t\t.append('span')\n\t\t\t\t.style('font-size', '0.8em')\n\t\t\t\t.style('padding-left', '3px')\n\t\t\t\t.attr('title', `Show/hide plots in ${titleAttrText}`)\n\t\t\t\t.text('\u25BC')\n\n\t\t\ttitleWrapper.on('click', () => {\n\t\t\t\tconst isHidden = this.sections[key].subplots.style('display') === 'none'\n\t\t\t\tthis.sections[key].subplots.style('display', isHidden ? 'block' : 'none')\n\t\t\t\tarrow.text(isHidden ? '\u25BC' : '\u25B2')\n\t\t\t})\n\t\t}\n\n\t\tthis.sections[key] = {\n\t\t\tsectionWrapper,\n\t\t\ttitle: titleWrapper,\n\t\t\tsubplots: sectionWrapper.append('div').attr('data-testid', `sjpp-sc-subplots-${key}`),\n\t\t\tsandboxes: {}\n\t\t}\n\t}\n\n\t/** Look up sample metadata from the fetched items list.\n\t * For experiment datasets, matches sID against experiments[].sampleName.\n\t * For non-experiment datasets, matches sID against item.sample. */\n\tfindSampleMetadata(sampleId: string, sc: SCViewer): SingleCellSample | undefined {\n\t\tif (!sc.items) return undefined\n\t\treturn sc.items.find(item => item.sample === sampleId || item.experiments?.some(e => e.sampleName === sampleId))\n\t}\n\n\tmakeSectionTitleText(key: string, item?: SingleCellSample) {\n\t\tif (this.groupBy === 'none') return 'All plots'\n\t\tif (this.groupBy === 'plot') return key\n\t\tconst caseText = item?.sample && item.sample !== key ? `Case: ${item.sample}` : ''\n\t\tconst isMeta = item?.isMetaResult || false\n\t\tconst itemText = `${isMeta ? '' : 'Sample: '}${key}`\n\t\tconst projectProp = item?.case?.project?.project_id || item?.['project id']\n\t\tconst projectText = projectProp ? `Project: ${projectProp}` : ''\n\t\treturn [itemText, caseText, projectText].filter(Boolean).join(' ')\n\t}\n\n\tasync initSandbox(sc: any, subplot: any, key: string) {\n\t\tconst sandboxHolder = this.sections[key].subplots\n\t\t\t.insert('div', ':first-child')\n\t\t\t.attr('data-testid', `sjpp-sc-sandbox-${subplot.id}`) as any as Elem\n\n\t\tconst sandboxDiv = await sc.subplotManager.initSubplotSandbox(sandboxHolder, subplot, {\n\t\t\tsectionKey: key\n\t\t})\n\t\tthis.sections[key].sandboxes[subplot.id] = sandboxDiv\n\t}\n\n\tremoveSection(key: string, sc: SCViewer) {\n\t\tconst subactions: { type: string; id: string; parentId: string }[] = []\n\t\tfor (const plotId of Object.keys(this.sections[key].sandboxes || {})) {\n\t\t\tthis.removeSandbox(plotId, key)\n\t\t\t/** Need to remove plots from the state to prevent main from re-rendering\n\t\t\t * and memory leak from orphaned components after the section is deleted. */\n\t\t\tsubactions.push({\n\t\t\t\ttype: 'plot_delete',\n\t\t\t\tid: plotId,\n\t\t\t\tparentId: sc.id\n\t\t\t})\n\t\t}\n\t\tif (subactions.length > 0) {\n\t\t\tsc.app.dispatch({\n\t\t\t\ttype: 'app_refresh',\n\t\t\t\tsubactions\n\t\t\t})\n\t\t}\n\t\tthis.sections[key].sectionWrapper.remove()\n\t\tdelete this.sections[key]\n\t}\n\n\tremoveSandbox(plotId: string, _key?: string) {\n\t\tconst key = _key || this.plotId2Key.get(plotId)\n\t\tif (!key) return\n\t\tconst section = this.sections[key]\n\t\tconst sandbox = section?.sandboxes?.[plotId]\n\t\tif (sandbox) sandbox.remove()\n\t\tif (section?.sandboxes?.[plotId]) delete section.sandboxes[plotId]\n\t\t//Remove the reference to the plotId in plot2Sample map to avoid memory leak\n\t\tthis.plotId2Key.delete(plotId)\n\t}\n}\n", "import type { SCSample } from '../SCTypes'\n\nexport const GroupByOptions = ['sample', 'plot', 'none'] as const\n\nexport type Settings = {\n\tsc: SCSettings\n\thierCluster: {\n\t\tunit: string\n\t\tyDendrogramHeight: number\n\t\tclusterSamples: boolean\n\t}\n}\n\nexport type SCSettings = {\n\tcolumns: {\n\t\t/** Defined column name for 'sample' column*/\n\t\tsample: string\n\t}\n\t/** Active item chosen by the user */\n\titem: SCSample | undefined\n\tgroupBy: (typeof GroupByOptions)[number]\n}\n", "import type { SCActiveSubplot, SCDom, SCFormattedState, SCTableData } from '../SCTypes'\nimport type { SCInteractions } from '../interactions/SCInteractions'\nimport { SampleTableRenderer } from './SampleTableRenderer'\nimport { PlotButtons } from './PlotButtons'\nimport { SectionRenderer } from './SectionRenderer'\nimport type { SCViewer } from '../SC.ts'\nimport type { SubplotManager } from '../subplots/SubplotManager.ts'\nimport { GroupByOptions, type SCSettings, type Settings } from '../settings/Settings'\nimport { make_radios } from '#dom'\n\n/** Manages the initial rendering of the sample table and the dynamic\n * rendering of the plot buttons and sections based on the selected sample and plots.\n * .update() from sc.main() updates the plot buttons and sections. */\nexport class SCViewRenderer {\n\t//On load, show table\n\t//Eventually maybe an app dispatch and not a flag\n\tstatic inUse: boolean = true\n\n\tsc: SCViewer\n\tdom: SCDom\n\tinteractions: SCInteractions\n\tplotBtns!: PlotButtons\n\tsectionRenderer!: SectionRenderer\n\tsampleTableRenderer!: SampleTableRenderer\n\tgroupsWrapper!: any\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.dom = sc.dom\n\t\tthis.interactions = sc.interactions\n\t\tthis.dom.controlsDiv.style('padding', '10px')\n\t}\n\n\trender(settings: SCSettings, state: SCFormattedState) {\n\t\tthis.renderSelectBtn()\n\t\tthis.renderGroupByOptions(settings)\n\t\tthis.plotBtns = new PlotButtons(this.interactions, this.dom.plotsBtnsDiv, state.termdbConfig)\n\t\tthis.sectionRenderer = new SectionRenderer(this.dom.sectionsDiv, settings.groupBy)\n\t\t// this.dom.plotsBtnsDiv.style('display', 'none')\n\t}\n\n\t/** Renders the select btn at the top of the page that\n\t * show/hides the item table and plot buttons */\n\trenderSelectBtn() {\n\t\tconst btn = this.dom.controlsDiv\n\t\t\t.append('button')\n\t\t\t.attr('data-testid', 'sjpp-sc-item-table-select-btn')\n\t\t\t.attr('title', 'Show/hide sample table and plot buttons')\n\t\t\t.style('border-radius', '20px')\n\t\t\t.style('padding', '5px 10px')\n\t\t\t.style('background-color', 'transparent')\n\t\t\t//Will need to use ds specific keys/logic here\n\t\t\t.text('Select sample and plots')\n\n\t\tconst arrowSpan = btn.append('span').style('font-size', '0.8em').style('padding-left', '3px').text('\u25BC')\n\n\t\tbtn.on('click', () => {\n\t\t\tSCViewRenderer.inUse = !SCViewRenderer.inUse\n\t\t\tarrowSpan.text(SCViewRenderer.inUse ? '\u25BC' : '\u25B2')\n\t\t\tthis.dom.tableDiv.style('display', SCViewRenderer.inUse ? 'block' : 'none')\n\t\t\tthis.dom.plotsBtnsDiv.style('display', SCViewRenderer.inUse ? 'block' : 'none')\n\t\t})\n\t}\n\n\trenderGroupByOptions(settings: SCSettings) {\n\t\tthis.groupsWrapper = this.dom.controlsDiv.append('div').style('display', 'none')\n\t\tthis.groupsWrapper\n\t\t\t.append('span')\n\t\t\t.style('padding', '3px 0px 3px 20px')\n\t\t\t.style('opacity', 0.7)\n\t\t\t.text('Group by:')\n\t\tconst optionsDiv = this.groupsWrapper.append('span').style('display', 'inline-block')\n\t\tconst options = GroupByOptions.map(option => {\n\t\t\treturn {\n\t\t\t\tlabel: `${option.charAt(0).toUpperCase() + option.slice(1)}`,\n\t\t\t\tvalue: option,\n\t\t\t\tchecked: settings.groupBy === option\n\t\t\t}\n\t\t})\n\t\tmake_radios({\n\t\t\tholder: optionsDiv,\n\t\t\tstyles: { display: 'inline-block' },\n\t\t\toptions,\n\t\t\tcallback: async value => {\n\t\t\t\tawait this.sc.app.dispatch({\n\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\tid: this.sc.id,\n\t\t\t\t\tconfig: { settings: { sc: { ...settings, groupBy: value } } }\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t}\n\n\tasync update(\n\t\tsettings: Settings,\n\t\tdata: any,\n\t\tactiveSubplots: SCActiveSubplot[],\n\t\ttableData: SCTableData,\n\t\tsubplotManager: SubplotManager\n\t) {\n\t\tthis.sampleTableRenderer = new SampleTableRenderer(this.dom, this.interactions, tableData)\n\t\tthis.plotBtns.update(settings, data)\n\t\t//Also handles when settings.sc.groupBy == 'none' to show all plots in one section\n\t\tawait this.sectionRenderer.update(\n\t\t\tthis.sc,\n\t\t\tactiveSubplots.map(s => s.subplot),\n\t\t\tsettings.sc.groupBy\n\t\t)\n\t\tconst activeSandboxes = subplotManager.getSampleSandboxes()\n\t\t//Hide grouping option until more than one sample with potentially more than one plot is available\n\t\tthis.groupsWrapper.style('display', activeSandboxes.size > 1 ? 'inline-block' : 'none')\n\t\tthis.sampleTableRenderer.updatePlotBtns(activeSandboxes)\n\t}\n}\n", "import { getGEunit } from '#tw/geneExpression'\nimport type { Settings } from './Settings'\n\n/** Define all subplot settings here */\nexport function getDefaultSCAppSettings(overrides = {}, app): Settings {\n\tconst defaults: Settings = {\n\t\tsc: {\n\t\t\tcolumns: {\n\t\t\t\tsample: 'Sample'\n\t\t\t},\n\t\t\titem: undefined,\n\t\t\tgroupBy: 'sample'\n\t\t},\n\t\thierCluster: {\n\t\t\tunit: getGEunit(app.vocabApi),\n\t\t\tyDendrogramHeight: 0,\n\t\t\tclusterSamples: false\n\t\t}\n\t}\n\treturn Object.assign(defaults, overrides)\n}\n", "import { importPlot } from '#plots/importPlot.js'\nimport { getCompInit, multiInit, type RxComponent, type ComponentApi } from '#rx'\nimport { filterRxCompInit } from '#filter'\nimport type { MassAppApi } from '#mass/types/mass'\n\n/** Wrapper for subplot sanbdoxes created dynamically.\n * Builds out the expected dom structure and extra functionality (e.g. plot filter)\n *\n * Note: #mass/app.ts expects parent plots to manage plot init for all subplots,\n * which means plotInit() and summaryInit() are never called for subplots.\n * The functionality here is sligthly different from MassPlot && plotInit()\n * in #mass/plot.js to support dynamic creation and destory within the parent */\n\nclass DynamicSubplot implements RxComponent {\n\tstatic type = 'dynamicSubplot'\n\n\ttype: string\n\topts!: { [index: string]: any }\n\tapp: MassAppApi\n\tid!: string\n\tstate: any\n\tcomponents!: { [name: string]: ComponentApi }\n\tdom: { [index: string]: any } = {}\n\tparentId?: string\n\n\tconstructor(opts) {\n\t\tthis.type = DynamicSubplot.type\n\t\tthis.opts = opts\n\t\tthis.app = opts.app\n\t\tthis.parentId = opts?.parentId\n\t}\n\n\tasync init() {\n\t\tthis.opts.holder.app_div.attr('data-testid', 'sjpp-sc-subplot-sandbox-' + this.opts.chartType)\n\n\t\t/** Summary expects the entire sandbox. No need to create dom. */\n\t\tif (this.opts.chartType == 'summary') return\n\n\t\tthis.dom = {\n\t\t\tholder: this.opts.holder,\n\t\t\tviz: this.opts.holder.body.append('div').style('position', 'relative'),\n\t\t\tpaneTitleDiv: this.opts.holder.header.append('div').style('position', 'relative'),\n\t\t\tfilterDiv: this.opts.holder.header.append('div').style('position', 'relative'),\n\t\t\terrorDiv: this.opts.holder.body.append('div').style('position', 'relative')\n\t\t}\n\t}\n\n\tgetState(appState) {\n\t\tconst config = appState.plots.find(p => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow `No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t}\n\t\treturn {\n\t\t\tconfig\n\t\t}\n\t}\n\n\tasync main() {\n\t\tif (!this.components) await this.setComponents()\n\t}\n\n\tasync setComponents() {\n\t\tconst _ = await importPlot(this.opts.chartType)\n\t\tconst chartOpts: { [index: string]: any } = {\n\t\t\tapp: this.app,\n\t\t\tid: this.id,\n\t\t\tparentId: this.parentId\n\t\t}\n\t\tif (this.opts.chartType == 'summary') {\n\t\t\tchartOpts.holder = this.opts.holder\n\t\t\tchartOpts.hidePlotFilter = this.opts.isMetaResult\n\t\t} else {\n\t\t\tchartOpts.holder = this.dom.viz\n\t\t\tchartOpts.header = this.dom.paneTitleDiv\n\t\t}\n\t\tconst promises: { [index: string]: any } = {\n\t\t\tchart: _.componentInit(chartOpts)\n\t\t}\n\n\t\t/** Summary inits its own plot filter */\n\t\tif (!this.state.config?.hidePlotFilter && this.opts.isMetaResult && this.opts.chartType != 'summary') {\n\t\t\tpromises.filter = filterRxCompInit({\n\t\t\t\tapp: this.app,\n\t\t\t\tvocabApi: this.app.vocabApi,\n\t\t\t\tparentId: this.id,\n\t\t\t\tholder: this.dom.filterDiv,\n\t\t\t\thideLabel: true,\n\t\t\t\temptyLabel: '+Add new filter',\n\t\t\t\tcallback: filter => {\n\t\t\t\t\tthis.app.dispatch({\n\t\t\t\t\t\tid: this.id,\n\t\t\t\t\t\ttype: 'plot_edit',\n\t\t\t\t\t\tconfig: { filter }\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tthis.components = await multiInit(promises)\n\t}\n\n\tdestroy() {\n\t\tconst appDiv = this.dom?.holder?.app_div\n\t\tif (appDiv) {\n\t\t\tappDiv.selectAll('*').remove()\n\t\t\tappDiv.remove()\n\t\t}\n\t\tfor (const key in this.dom) {\n\t\t\tdelete this.dom[key]\n\t\t}\n\t}\n}\n\nexport const dynamicSubplotInit = getCompInit(DynamicSubplot)\n", "import type { SCViewer } from '../SC'\nimport { newSandboxDiv } from '#dom'\nimport { dynamicSubplotInit } from './DynamicSubplot'\nimport type { SCActiveSubplot, SCSampleSandbox } from '../SCTypes'\n\n/** Instead of managing multiple maps of the subplots (e.g within the \n * SampleTableRenderer, SectionRenderer, etc.), use this manager to keep track\n * of all the subplots, their dom, sections, etc. \n) */\n\nexport class SubplotManager {\n\tsc: SCViewer\n\tscCompPlots: { [key: string]: any }\n\t/** Maps plotId to active subplot information */\n\trecords: Map<string, SCActiveSubplot>\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.scCompPlots = this.sc.components.plots\n\t\tthis.records = new Map()\n\t}\n\n\tmap(subplots: any[]): SCActiveSubplot[] {\n\t\tconst subplotIds = new Set(subplots.map(s => s.id))\n\t\tfor (const compPlotId of Object.keys(this.scCompPlots)) {\n\t\t\tif (!subplotIds.has(compPlotId)) {\n\t\t\t\tthis.removeSubplot(compPlotId)\n\t\t\t}\n\t\t}\n\n\t\tfor (const recordId of Array.from(this.records.keys())) {\n\t\t\tif (!subplotIds.has(recordId)) this.records.delete(recordId)\n\t\t}\n\n\t\tfor (const subplot of subplots) {\n\t\t\tthis.updateSubplotRecord(subplot)\n\t\t}\n\n\t\treturn this.getActiveSubplotsFlat()\n\t}\n\n\tupdateSubplotRecord(subplot) {\n\t\tconst existing = this.records.get(subplot.id)\n\t\tconst sampleId = this.getSampleId(subplot)\n\t\tconst isMeta = (sampleId && this.sc.viewModel.metaResultIds.has(sampleId)) || false\n\t\tthis.records.set(subplot.id, {\n\t\t\tplotId: subplot.id,\n\t\t\tsampleId,\n\t\t\tplotName: this.getPlotName(subplot),\n\t\t\tsectionKey: existing?.sectionKey,\n\t\t\tsubplot,\n\t\t\tsandboxDiv: existing?.sandboxDiv,\n\t\t\tisMetaResult: isMeta\n\t\t})\n\t}\n\n\tremoveSubplot(subplotId) {\n\t\tif (this.scCompPlots[subplotId]) this.scCompPlots[subplotId].destroy()\n\t\tdelete this.scCompPlots[subplotId]\n\t\tthis.records.delete(subplotId)\n\t}\n\n\tasync initSubplotSandbox(sandboxHolder, subplot, initOpts: { sectionKey?: string; onClose?: () => void } = {}) {\n\t\tconst sandbox = newSandboxDiv(sandboxHolder, {\n\t\t\tclose: () => {\n\t\t\t\t/** destroy this dom and component before app.dispatch.\n\t\t\t\t * Avoids the component attempting to update after\n\t\t\t\t * the plot is deleted from the state. */\n\t\t\t\tthis.removeSubplot(subplot.id)\n\t\t\t\tthis.sc.app.dispatch({\n\t\t\t\t\ttype: 'plot_delete',\n\t\t\t\t\tid: subplot.id,\n\t\t\t\t\tparentId: this.sc.id\n\t\t\t\t})\n\t\t\t\tif (initOpts.onClose) initOpts.onClose()\n\t\t\t},\n\t\t\tplotId: subplot.id\n\t\t})\n\n\t\tconst subplotOpts = Object.assign({}, subplot, {\n\t\t\tapp: this.sc.app,\n\t\t\tparentId: this.sc.id,\n\t\t\tid: subplot.id,\n\t\t\tholder: sandbox,\n\t\t\tisMetaResult: this.records.get(subplot.id)?.isMetaResult || false\n\t\t})\n\n\t\tthis.scCompPlots[subplot.id] = await dynamicSubplotInit(subplotOpts)\n\t\tthis.setSandbox(subplot.id, sandbox.app_div)\n\t\tif (initOpts.sectionKey) this.setSectionKey(subplot.id, initOpts.sectionKey)\n\t\treturn sandbox.app_div\n\t}\n\n\tsetSandbox(plotId: string, sandboxDiv: any) {\n\t\tconst record = this.records.get(plotId)\n\t\tif (!record) return\n\t\trecord.sandboxDiv = sandboxDiv\n\t\tthis.records.set(plotId, record)\n\t}\n\n\tsetSectionKey(plotId: string, sectionKey?: string) {\n\t\tconst record = this.records.get(plotId)\n\t\tif (!record) return\n\t\trecord.sectionKey = sectionKey\n\t\tthis.records.set(plotId, record)\n\t}\n\n\tgetActiveSubplotsFlat(): SCActiveSubplot[] {\n\t\treturn Array.from(this.records.values())\n\t}\n\n\tgetSampleId(subplot: any): string | undefined {\n\t\treturn subplot.sample?.sID || subplot.singleCellPlot?.sample?.sID || subplot.term?.term?.sample?.sID\n\t}\n\n\tgetPlotName(subplot: any): string {\n\t\t/** Hardcoding logic for some transient and parent plots for now. May consider\n\t\t * adding to the config if this becomes more complex. Must weight against\n\t\t * adding unnecessary complexity to the config for edge cases though.*/\n\t\tconst nameOverrides = new Map([\n\t\t\t['GeneExpInput', 'Gene expression'],\n\t\t\t['imagePlot', subplot?.imgDir?.label || 'Image'],\n\t\t\t['dictionary', 'Summary'],\n\t\t\t['summary', 'Summary']\n\t\t])\n\t\tlet plotName = subplot?.plotName || nameOverrides.get(subplot?.chartType) || subplot?.singleCellPlot?.name\n\t\tif (!plotName) {\n\t\t\tif (subplot?.term?.term?.plot) plotName = subplot.term.term.plot\n\t\t\telse plotName = subplot.chartType || 'Plot'\n\t\t}\n\t\treturn plotName\n\t}\n\n\tgetSampleSandboxes(activeSubplots: SCActiveSubplot[] = this.getActiveSubplotsFlat()): Map<string, SCSampleSandbox[]> {\n\t\tconst sandboxes = new Map<string, SCSampleSandbox[]>()\n\t\tfor (const active of activeSubplots) {\n\t\t\tif (!active.sampleId || !active.sandboxDiv) continue\n\t\t\tif (!sandboxes.has(active.sampleId)) sandboxes.set(active.sampleId, [])\n\t\t\tsandboxes.get(active.sampleId)!.push({ plotId: active.plotId, div: active.sandboxDiv, plotName: active.plotName })\n\t\t}\n\t\treturn sandboxes\n\t}\n}\n", "import type { BasePlotConfig, MassAppApi, MassState } from '#mass/types/mass'\nimport type { SCConfigOpts, SCDom, SCFormattedState, SCViewerOpts, SampleColumn } from './SCTypes'\nimport type { SingleCellSample } from '#types'\nimport { PlotBase } from '../PlotBase.ts'\nimport { getCompInit, copyMerge, type RxComponent, type ComponentApi } from '#rx'\nimport { SCModel } from './model/SCModel'\nimport { SCViewModel } from './viewModel/SCViewModel'\nimport { SCInteractions } from './interactions/SCInteractions'\nimport { SCViewRenderer } from './view/SCViewRenderer'\nimport { getDefaultSCAppSettings } from './settings/defaults.ts'\nimport { getCombinedTermFilter } from '#filter'\nimport { SubplotManager } from './subplots/SubplotManager.ts'\nimport { formatHeaderText } from '#dom'\n\n/** Viewer for single cell data. Renders a sample table and associated subplots for each sample.*/\nexport class SCViewer extends PlotBase implements RxComponent {\n\tstatic type = 'sc'\n\n\ttype: string\n\tcomponents: { plots: { [key: string]: any } }\n\tdom: SCDom\n\tinteractions!: SCInteractions\n\titems!: SingleCellSample[]\n\titemColumns!: SampleColumn[]\n\tmodel!: SCModel\n\tsubplotManager!: SubplotManager\n\tview!: SCViewRenderer\n\tviewModel!: SCViewModel\n\n\tconstructor(opts: SCViewerOpts, api: ComponentApi) {\n\t\tsuper(opts, api)\n\t\tthis.type = SCViewer.type\n\t\tthis.components = {\n\t\t\tplots: {}\n\t\t}\n\t\tconst div = opts.holder\n\t\t\t.classed('sjpp-sc-main', true)\n\t\t\t.append('div')\n\t\t\t.style('padding', '5px')\n\t\t\t.style('display', 'inline-block')\n\t\t\t.style('vertical-align', 'top')\n\n\t\tthis.dom = {\n\t\t\tdiv,\n\t\t\tloading: opts.holder\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'sjpp-sc-main-loading')\n\t\t\t\t.attr('data-testid', 'sjpp-sc-main-loading')\n\t\t\t\t.style('position', 'absolute')\n\t\t\t\t.style('top', '0')\n\t\t\t\t.style('left', '0')\n\t\t\t\t.style('width', '100%')\n\t\t\t\t.style('height', '100%')\n\t\t\t\t.style('background-color', 'rgba(255, 255, 255, 0.95)')\n\t\t\t\t.style('text-align', 'center'),\n\t\t\tcontrolsDiv: div.append('div').attr('id', 'sjpp-sc-controls-btn'),\n\t\t\ttableDiv: div.append('div').attr('id', 'sjpp-sc-item-table'),\n\t\t\tplotsBtnsDiv: div.append('div').attr('id', 'sjpp-sc-plot-buttons').style('display', 'none'),\n\t\t\tsectionsDiv: div.append('div').attr('id', 'sjpp-sc-sections')\n\t\t}\n\n\t\t//opts.header is the sandbox header\n\t\tif (opts.header) formatHeaderText({\n\t\t\theader: opts.header,\n\t\t\tchartType: 'SINGLE CELL'\n\t\t})\n\t}\n\n\tgetState(appState: any): SCFormattedState {\n\t\tconst config = appState.plots.find((p: BasePlotConfig) => p.id === this.id)\n\t\tif (!config) {\n\t\t\tthrow new Error(\n\t\t\t\t`No plot with id='${this.id}' found. Did you set this.id before this.api = getComponentApi(this)?`\n\t\t\t)\n\t\t}\n\t\tconst termfilter = getCombinedTermFilter(appState, config.filter)\n\n\t\treturn {\n\t\t\tconfig,\n\t\t\tsubplots: appState.plots.filter(p => p.parentId === this.id),\n\t\t\ttermfilter,\n\t\t\ttermdbConfig: appState.termdbConfig,\n\t\t\tvocab: appState.vocab\n\t\t}\n\t}\n\n\tasync init(appState: MassState) {\n\t\tconst state = this.getState(appState) as SCFormattedState\n\t\t/** ds defines defaults in termdbConfig.queries.singleCell\n\t\t * see Dataset type when resuming development */\n\t\tconst dsScSamples = state.termdbConfig.queries?.singleCell?.samples\n\t\tthis.model = new SCModel(this)\n\t\ttry {\n\t\t\tthis.itemColumns = await this.model.getColumnLabels(dsScSamples)\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e} [SC init()]`)\n\t\t\telse if (e.stack) console.log(e.stack)\n\t\t\tthrow new Error(e.message || e)\n\t\t}\n\t\tthis.viewModel = new SCViewModel(this.app, this.itemColumns)\n\t\tthis.interactions = new SCInteractions(this)\n\t\tthis.subplotManager = new SubplotManager(this)\n\t\tthis.view = new SCViewRenderer(this)\n\t\t/** Only renders the controls above the table */\n\t\tthis.view.render(state.config.settings.sc, state)\n\t}\n\n\tasync main() {\n\t\tif (!this.model) throw new Error(`Model not initialized`)\n\t\tif (!this.viewModel) throw new Error(`ViewModel not initialized`)\n\t\tif (!this.view) throw new Error(`View not initialized`)\n\t\tif (!this.interactions) throw new Error(`Interactions not initialized`)\n\n\t\tconst state = structuredClone(this.state) as SCFormattedState\n\t\tconst config = state.config\n\n\t\tsuper.toggleLoadingDiv()\n\n\t\tlet data: any\n\t\ttry {\n\t\t\tconst allSampleData = await this.model.getAllSampleData(state)\n\t\t\tif (!allSampleData || allSampleData.error) {\n\t\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\t\tsuper.printError(allSampleData?.error || 'No samples found for this dataset')\n\t\t\t\treturn\n\t\t\t}\n\t\t\tthis.items = allSampleData.samples\n\n\t\t\tthis.viewModel.processData(config, allSampleData.samples)\n\n\t\t\tif (config.settings?.sc?.item) {\n\t\t\t\tconst sampleData = await this.model.getSampleData()\n\t\t\t\tif (!sampleData || sampleData.error) {\n\t\t\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\t\t\tsuper.printError(sampleData?.error || 'No data found for this sample')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tconst hasSpatial = await this.model.hasSpatialImage(config.settings.sc.item.sID)\n\t\t\t\tdata = this.viewModel.formatPlotsData(sampleData, hasSpatial)\n\t\t\t}\n\t\t} catch (e: any) {\n\t\t\tif (e instanceof Error) console.error(`${e.message || e} [SC main()]`)\n\t\t\telse if (e.stack) console.log(e.stack)\n\t\t\tsuper.toggleLoadingDiv('none')\n\t\t\tsuper.printError(e.message || e)\n\t\t\treturn\n\t\t}\n\t\tconst activeSubplots = this.subplotManager.map(state.subplots)\n\t\tawait this.view.update(config.settings, data, activeSubplots, this.viewModel.tableData, this.subplotManager)\n\t\tsuper.toggleLoadingDiv('none')\n\t}\n}\n\nexport const SCInit = getCompInit(SCViewer)\nexport const componentInit = SCInit\n\nexport function getPlotConfig(opts: SCConfigOpts, app: MassAppApi) {\n\tconst config = {\n\t\tchartType: 'sc',\n\t\tsettings: getDefaultSCAppSettings(opts.overrides, app)\n\t} as any\n\n\treturn copyMerge(config, opts)\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }