@sjcrh/proteinpaint-client 2.192.0 → 2.194.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 (908) hide show
  1. package/dist/2dmaf-HS37GJYM.js +1373 -0
  2. package/dist/AIProjectAdmin-V5NVBBOA.js +958 -0
  3. package/dist/AppHeader-VIQ2VZPI.js +835 -0
  4. package/dist/BoxPlot-J7DPHT2N.js +1217 -0
  5. package/dist/CorrelationVolcano-ZHP7IPFD.js +619 -0
  6. package/dist/DE-VW4MQHYP.js +95 -0
  7. package/dist/DEinput-2EKXGUP3.js +301 -0
  8. package/dist/DifferentialAnalysis-H7LZWEIL.js +245 -0
  9. package/dist/Disco-5AA67AO5.js +3297 -0
  10. package/dist/Disco.UI-K4RBVRJP.js +249 -0
  11. package/dist/DmrPlot-RVJUKBOB.js +642 -0
  12. package/dist/GB-TA5LQGX6.js +1353 -0
  13. package/dist/GB-TA5LQGX6.js.map +7 -0
  14. package/dist/GeneExpInput-HHOIK6X7.js +367 -0
  15. package/dist/HicApp-YTQNK5DC.js +2250 -0
  16. package/dist/IDCViewer-T74AFWY3.js +10455 -0
  17. package/dist/IDCViewer-T74AFWY3.js.map +7 -0
  18. package/dist/NumBinaryEditor-ICZCNBRL.js +271 -0
  19. package/dist/NumBinaryEditor.unit.spec-WDJPDAVT.js +286 -0
  20. package/dist/NumContEditor-5KEM54CE.js +109 -0
  21. package/dist/NumContEditor.unit.spec-WG5QKOD3.js +169 -0
  22. package/dist/NumCustomBinEditor-MGHR7VQT.js +38 -0
  23. package/dist/NumCustomBinEditor.unit.spec-JWSHEIJJ.js +284 -0
  24. package/dist/NumDiscreteEditor-XT2GSGUR.js +179 -0
  25. package/dist/NumDiscreteEditor.unit.spec-DSCWGYBS.js +202 -0
  26. package/dist/NumRegularBinEditor-JMDBM5PU.js +38 -0
  27. package/dist/NumRegularBinEditor.unit.spec-BWRP6OO2.js +227 -0
  28. package/dist/NumSplineEditor-QJNRSORC.js +198 -0
  29. package/dist/NumSplineEditor.unit.spec-CXBTVND4.js +199 -0
  30. package/dist/NumericDensity-XQWCBSGT.js +38 -0
  31. package/dist/NumericDensity.unit.spec-7JS5R3AZ.js +221 -0
  32. package/dist/NumericHandler-QXXBEJC3.js +39 -0
  33. package/dist/NumericHandler.unit.spec-SRQJQVPP.js +219 -0
  34. package/dist/ProteomeInput-E4MJLAKF.js +396 -0
  35. package/dist/RunChart2-N6S7HBXV.js +758 -0
  36. package/dist/SC-RQ32A4YB.js +1127 -0
  37. package/dist/SC-RQ32A4YB.js.map +7 -0
  38. package/dist/Volcano-OHJPYZQE.js +1379 -0
  39. package/dist/WSIViewer-SAKVU52Z.js +48562 -0
  40. package/dist/WsiSamplesPlot-QV5GFFCR.js +165 -0
  41. package/dist/adSandbox-IE7TOJUE.js +38 -0
  42. package/dist/animatedBubbleChart-ZNEDQND3.js +555 -0
  43. package/dist/app-7MRKEE2J.js +49 -0
  44. package/dist/app-QIBNB4AA.js +37 -0
  45. package/dist/app.js +15 -15
  46. package/dist/bam-OBS5ULFF.js +860 -0
  47. package/dist/barchart-2RVEEMPK.js +47 -0
  48. package/dist/barchart.data-7OI5GZZ6.js +22 -0
  49. package/dist/barchart.events-AASSQL3J.js +47 -0
  50. package/dist/barchart.integration.spec-UU2ARJS5.js +2010 -0
  51. package/dist/barchart.integration.spec-UU2ARJS5.js.map +7 -0
  52. package/dist/barchart2-TUBYGLMC.js +314 -0
  53. package/dist/block-BYXWS7H7.js +6226 -0
  54. package/dist/block.init-QOAPDKCC.js +38 -0
  55. package/dist/block.mds.expressionrank-Q46AAYOA.js +359 -0
  56. package/dist/block.mds.geneboxplot-IC26RT7L.js +828 -0
  57. package/dist/block.mds.junction-RIUZIBFB.js +1545 -0
  58. package/dist/block.mds.svcnv-GUB2TTXQ.js +6801 -0
  59. package/dist/block.svg-I4NHMOEJ.js +164 -0
  60. package/dist/block.tk.aicheck-X57EGAOB.js +283 -0
  61. package/dist/block.tk.ase-JMBKBZAH.js +365 -0
  62. package/dist/block.tk.bam-6UAEWVVD.js +1906 -0
  63. package/dist/block.tk.bedgraphdot-7QSRLAJ7.js +384 -0
  64. package/dist/block.tk.bigwig.ui-SBD6S5SA.js +212 -0
  65. package/dist/block.tk.hicstraw-LIGPTMX7.js +823 -0
  66. package/dist/block.tk.junction-X6HFXKW7.js +2364 -0
  67. package/dist/block.tk.junction.textmatrixui-XJIUGHAX.js +199 -0
  68. package/dist/block.tk.ld-OZVW7LSL.js +99 -0
  69. package/dist/block.tk.menu-B2CEZAYR.js +1029 -0
  70. package/dist/block.tk.pgv-XAAQBQQE.js +944 -0
  71. package/dist/brainImaging-KFKM3XWD.js +423 -0
  72. package/dist/brainRegions-ZHKXILK7.js +221 -0
  73. package/dist/bubbleHeatmap-75N23URG.js +383 -0
  74. package/dist/bubbleHeatmap-75N23URG.js.map +7 -0
  75. package/dist/chunk-2IITC4V5.js +617 -0
  76. package/dist/chunk-2P3U6XTF.js +2327 -0
  77. package/dist/chunk-35UCHCOQ.js +54 -0
  78. package/dist/chunk-3LYZMOLO.js +58 -0
  79. package/dist/chunk-4E6HJ4ZW.js +98 -0
  80. package/dist/chunk-57LW6RUM.js +129 -0
  81. package/dist/chunk-5CR24RTX.js +381 -0
  82. package/dist/chunk-5DHRDF2Y.js +216 -0
  83. package/dist/chunk-5POMWXDZ.js +117 -0
  84. package/dist/chunk-5QTJUPFS.js +26 -0
  85. package/dist/chunk-5X5LI5YM.js +254 -0
  86. package/dist/chunk-67QZRGIJ.js +148 -0
  87. package/dist/chunk-6G4YOMWW.js +1825 -0
  88. package/dist/chunk-6RKL2FLA.js +14 -0
  89. package/dist/chunk-6YJCBK4J.js +2681 -0
  90. package/dist/chunk-7K6LTROG.js +190 -0
  91. package/dist/chunk-7K6LTROG.js.map +7 -0
  92. package/dist/chunk-7KRS7L4U.js +1443 -0
  93. package/dist/chunk-ADAKSWID.js +399 -0
  94. package/dist/chunk-ANKGIHCM.js +34 -0
  95. package/dist/chunk-AUP7W7MK.js +343 -0
  96. package/dist/chunk-AXKUVSXP.js +448 -0
  97. package/dist/chunk-AXKUVSXP.js.map +7 -0
  98. package/dist/chunk-B4QM73WG.js +222 -0
  99. package/dist/chunk-BKPV67UA.js +299 -0
  100. package/dist/chunk-BKPV67UA.js.map +7 -0
  101. package/dist/chunk-BMOB36XM.js +226 -0
  102. package/dist/chunk-BMOB36XM.js.map +7 -0
  103. package/dist/chunk-C6YT5EM2.js +217 -0
  104. package/dist/chunk-CD3VY5WW.js +1943 -0
  105. package/dist/chunk-CDUNE45Q.js +534 -0
  106. package/dist/chunk-COYULNJF.js +119 -0
  107. package/dist/chunk-DNVSEW6P.js +170 -0
  108. package/dist/chunk-EC3SKPQT.js +446 -0
  109. package/dist/chunk-F47X3VUC.js +95 -0
  110. package/dist/chunk-G2DLWJCB.js +37 -0
  111. package/dist/chunk-I4G4FXLO.js +302 -0
  112. package/dist/chunk-I73KUUYG.js +287 -0
  113. package/dist/chunk-INU357UG.js +230 -0
  114. package/dist/chunk-IVXCWCKS.js +317 -0
  115. package/dist/chunk-IVXCWCKS.js.map +7 -0
  116. package/dist/chunk-IZ3BPOTQ.js +833 -0
  117. package/dist/chunk-J5GTIQTL.js +2833 -0
  118. package/dist/chunk-J5GTIQTL.js.map +7 -0
  119. package/dist/chunk-JBI6P3UX.js +55 -0
  120. package/dist/chunk-JRDHTECQ.js +234 -0
  121. package/dist/chunk-JRZZ6GN3.js +102 -0
  122. package/dist/chunk-KM4JBR26.js +815 -0
  123. package/dist/chunk-KXRTPE65.js +158 -0
  124. package/dist/chunk-L5C3B7PS.js +1220 -0
  125. package/dist/chunk-L5C3B7PS.js.map +7 -0
  126. package/dist/chunk-LHNKTWFL.js +5067 -0
  127. package/dist/chunk-LHNKTWFL.js.map +7 -0
  128. package/dist/chunk-LSWU6EAQ.js +31 -0
  129. package/dist/chunk-MCYVUHEZ.js +1230 -0
  130. package/dist/chunk-MCYVUHEZ.js.map +7 -0
  131. package/dist/chunk-N6QEVQZV.js +194 -0
  132. package/dist/chunk-NLQQIVTC.js +276 -0
  133. package/dist/chunk-O4VKIC66.js +1275 -0
  134. package/dist/chunk-OWPBE2LB.js +263 -0
  135. package/dist/chunk-PWUERAAF.js +182 -0
  136. package/dist/chunk-QFSSC5VW.js +176 -0
  137. package/dist/chunk-RHGAE6PY.js +20888 -0
  138. package/dist/chunk-RHGAE6PY.js.map +7 -0
  139. package/dist/chunk-T46LHXJW.js +283 -0
  140. package/dist/chunk-T4CFXTIG.js +100 -0
  141. package/dist/chunk-T5UGVJCK.js +102 -0
  142. package/dist/chunk-TJCRAFKM.js +448 -0
  143. package/dist/chunk-TNF2LHJR.js +142 -0
  144. package/dist/chunk-U4IYNHVD.js +6364 -0
  145. package/dist/chunk-UAOPKEMR.js +482 -0
  146. package/dist/chunk-UFGV7554.js +736 -0
  147. package/dist/chunk-UV66X5JN.js +291 -0
  148. package/dist/chunk-VC642GDC.js +54 -0
  149. package/dist/chunk-VDIVDU3T.js +386 -0
  150. package/dist/chunk-VNF7DC36.js +1289 -0
  151. package/dist/chunk-VOGPIAQL.js +477 -0
  152. package/dist/chunk-VZOTKHPM.js +272 -0
  153. package/dist/chunk-YAU2Z6EN.js +4269 -0
  154. package/dist/chunk-YNAPHPMG.js +368 -0
  155. package/dist/chunk-YP2LHXFC.js +514 -0
  156. package/dist/chunk-YWF7GHUW.js +50 -0
  157. package/dist/chunk-YYZQMJLW.js +2786 -0
  158. package/dist/chunk-ZBEJVZMY.js +203 -0
  159. package/dist/chunk-ZZLBK6P6.js +1102 -0
  160. package/dist/condition-MP65K762.js +332 -0
  161. package/dist/controls-HKHMEWC7.js +41 -0
  162. package/dist/controls.config-LUPIT34L.js +39 -0
  163. package/dist/correlation-5UTW6EEI.js +102 -0
  164. package/dist/cuminc-LLUR2FLL.js +1149 -0
  165. package/dist/cuminc.integration.spec-CH5UZTIM.js +678 -0
  166. package/dist/customdata.inputui-6IGE5HCZ.js +289 -0
  167. package/dist/dataDownload-MCE2OJGZ.js +330 -0
  168. package/dist/dataDownload.integration.spec-VETU75VQ.js +193 -0
  169. package/dist/databrowser.ui-3BRSJHIW.js +433 -0
  170. package/dist/dictionary-UV43XQAU.js +118 -0
  171. package/dist/dnaMethylation-QDE3S4TV.js +38 -0
  172. package/dist/dnaMethylation.integration.spec-JBHJE47S.js +203 -0
  173. package/dist/dofetch-BMSZZAAQ.js +51 -0
  174. package/dist/e2pca-JMH74VN4.js +350 -0
  175. package/dist/ep-NDT7C2IT.js +1256 -0
  176. package/dist/expclust.gdc.spec-GZ3XLPHA.js +307 -0
  177. package/dist/facet-ABIWCCVT.js +521 -0
  178. package/dist/forms2-DRRRLG4I.js +539 -0
  179. package/dist/gb-EFZ62HCR.js +88 -0
  180. package/dist/geneExpClustering-CKH6M6KK.js +249 -0
  181. package/dist/geneExpression-CNKX7XVX.js +38 -0
  182. package/dist/geneExpression-P2ERCRXO.js +313 -0
  183. package/dist/geneExpression.unit.spec-7UJB43L3.js +102 -0
  184. package/dist/geneORA-TZOSNGRJ.js +278 -0
  185. package/dist/geneRanking-26GDRALC.js +551 -0
  186. package/dist/geneVariant-2DHMJUJL.js +39 -0
  187. package/dist/geneVariant-FOKRLND3.js +41 -0
  188. package/dist/geneVariant.integration.spec-XXNSWUOR.js +198 -0
  189. package/dist/genefusion.ui-ZJBKC2RH.js +309 -0
  190. package/dist/geneset-6FN5BFP3.js +208 -0
  191. package/dist/genomeBrowser.spec-QLHJYDRZ.js +281 -0
  192. package/dist/grin2-DR7XJIAS.js +968 -0
  193. package/dist/grin2-DR7XJIAS.js.map +7 -0
  194. package/dist/grin2-QOOJBELM.js +75 -0
  195. package/dist/grin2-QOOJBELM.js.map +7 -0
  196. package/dist/gsea-6YBRMGOC.js +47 -0
  197. package/dist/hierCluster-B3TULT27.js +59 -0
  198. package/dist/hierCluster-NF75B7MZ.js +63 -0
  199. package/dist/hierCluster.config-TEFI7M4K.js +40 -0
  200. package/dist/hierCluster.integration.spec-IUK6Q5SQ.js +395 -0
  201. package/dist/hierCluster.interactivity-MPD4AV4D.js +54 -0
  202. package/dist/hierCluster.renderers-4XWKHCNW.js +21 -0
  203. package/dist/imagePlot-HNJDBPO4.js +163 -0
  204. package/dist/importPlot-OBS55TCA.js +8 -0
  205. package/dist/isoformExpression-K4QIYBZR.js +40 -0
  206. package/dist/isoformExpression.unit.spec-INB6655U.js +208 -0
  207. package/dist/launch.adhoc-VDXES33R.js +42 -0
  208. package/dist/leftlabel.sample-R6IXXFZT.js +264 -0
  209. package/dist/leftlabel.sample-R6IXXFZT.js.map +7 -0
  210. package/dist/lollipop-O3XJC7BR.js +171 -0
  211. package/dist/maf-GLZ7KCDP.js +452 -0
  212. package/dist/maftimeline-Q4YPFSZP.js +593 -0
  213. package/dist/matrix-KVTQNDRZ.js +63 -0
  214. package/dist/matrix-QDHUX4QD.js +58 -0
  215. package/dist/matrix.cells-ED6RS5EC.js +28 -0
  216. package/dist/matrix.config-B65UXJNA.js +41 -0
  217. package/dist/matrix.data-KQFMXWRX.js +25 -0
  218. package/dist/matrix.groups-RE74EFLY.js +27 -0
  219. package/dist/matrix.integration.spec-2ITZRE4N.js +3072 -0
  220. package/dist/matrix.interactivity-3RF4YOAP.js +42 -0
  221. package/dist/matrix.layout-ERVRJAK2.js +44 -0
  222. package/dist/matrix.legend-ZST44PIB.js +22 -0
  223. package/dist/matrix.renderers-HNEUKUGS.js +38 -0
  224. package/dist/matrix.serieses-6ZKTFVWY.js +21 -0
  225. package/dist/matrix.sort-2UE47IOC.js +27 -0
  226. package/dist/matrix.sort.unit.spec-QGEVGY7M.js +472 -0
  227. package/dist/matrix.sorterUi-WC2YX7S7.js +18 -0
  228. package/dist/matrix.sorterUi.unit.spec-YNS7IVUF.js +342 -0
  229. package/dist/mavb-27VSL5LG.js +732 -0
  230. package/dist/mds.fimo-E5EXGT75.js +518 -0
  231. package/dist/mds.samplescatterplot-YDMRZFS7.js +1550 -0
  232. package/dist/mds.survivalplot-INJA2NDC.js +483 -0
  233. package/dist/numericDictTermCluster-DRIEJJSP.js +72 -0
  234. package/dist/oncomatrix-334LCTXB.js +295 -0
  235. package/dist/oncomatrix.spec-VHCJWO7S.js +448 -0
  236. package/dist/plot.2dvaf-F7GJEUMD.js +377 -0
  237. package/dist/plot.app-AKA7UVUC.js +41 -0
  238. package/dist/plot.barplot-HZAG43A5.js +102 -0
  239. package/dist/plot.boxplot-U52BJ4EP.js +152 -0
  240. package/dist/plot.brainImaging-3CB4WYQ4.js +51 -0
  241. package/dist/plot.disco-I2VLOSAU.js +102 -0
  242. package/dist/plot.dzi-K6KI52L7.js +33 -0
  243. package/dist/plot.ssgq-L67X4FUG.js +139 -0
  244. package/dist/plot.vaf2cov-PH4ZSY2K.js +259 -0
  245. package/dist/plot.wsi-Y6FZWHXT.js +36 -0
  246. package/dist/polar2-XT5QZ4VH.js +231 -0
  247. package/dist/profileForms-4LLSYMF6.js +446 -0
  248. package/dist/profilePlot-C52DDMZ4.js +54 -0
  249. package/dist/proteinView-CCL4MPXS.js +1556 -0
  250. package/dist/qualitative-DZ6JYYRS.js +43 -0
  251. package/dist/radar2-GEEOQF2A.js +326 -0
  252. package/dist/radarFacility2-OWXSKHBW.js +334 -0
  253. package/dist/regression-ZK75B4OR.js +56 -0
  254. package/dist/regression.inputs-UR7Q7HIK.js +48 -0
  255. package/dist/regression.inputs.term-PJZ7T3AI.js +48 -0
  256. package/dist/regression.inputs.values.table-CRGBKWMM.js +45 -0
  257. package/dist/regression.integration.spec-OCUFEVQS.js +784 -0
  258. package/dist/regression.results-7EHMKQ5F.js +40 -0
  259. package/dist/regression.spec-E4W3WOLI.js +708 -0
  260. package/dist/report-WWILHPI6.js +222 -0
  261. package/dist/sampleScatter.spec-VCKCJKII.js +202 -0
  262. package/dist/sampleView-STGP7UUP.js +48 -0
  263. package/dist/samplelst-U4BL6GYP.js +111 -0
  264. package/dist/samplematrix-FU3EZF6M.js +2198 -0
  265. package/dist/sc-JRLELKHN.js +86 -0
  266. package/dist/scatter-GT2VKNFG.js +851 -0
  267. package/dist/scatter.integration.spec-VDMKRPVM.js +1206 -0
  268. package/dist/selectGenomeWithTklst-F5372VC5.js +134 -0
  269. package/dist/singleCellCellType-D77PUUCZ.js +38 -0
  270. package/dist/singleCellCellType.unit.spec-J4EEZAWB.js +160 -0
  271. package/dist/singleCellGeneExpression-WCWCSHIY.js +38 -0
  272. package/dist/singleCellGeneExpression.unit.spec-CELJIAJ5.js +153 -0
  273. package/dist/singleCellPlot-2OPOJZ5U.js +54 -0
  274. package/dist/singlecell-K2SHYDHA.js +1572 -0
  275. package/dist/singlecell-K7Z6ES7B.js +86 -0
  276. package/dist/snp-ICWKGR7H.js +38 -0
  277. package/dist/snp.unit.spec-PV2UZCYO.js +176 -0
  278. package/dist/snplocus-W5D4A7QJ.js +208 -0
  279. package/dist/spliceevent.a53ss.diagram-DEQJ2C2H.js +151 -0
  280. package/dist/spliceevent.exonskip.diagram-MKA32GTK.js +277 -0
  281. package/dist/spliceevent.noeventdiagram-NFYPM4EZ.js +460 -0
  282. package/dist/ssGSEA-FAZK5FSC.js +38 -0
  283. package/dist/ssGSEA.unit.spec-S5D6JMOD.js +88 -0
  284. package/dist/summarizeCnvGeneexp-WDGJ5YOM.js +163 -0
  285. package/dist/summarizeGeneexpSurvival-J7UYKBN2.js +108 -0
  286. package/dist/summarizeMutationCnv-6ZXA32XN.js +164 -0
  287. package/dist/summarizeMutationDiagnosis-BK7QPF6A.js +40 -0
  288. package/dist/summarizeMutationSurvival-UODP6R6S.js +99 -0
  289. package/dist/summary-P6XVOWSB.js +49 -0
  290. package/dist/summary.integration.spec-XKMQ77CF.js +414 -0
  291. package/dist/summaryInput-U7XNGLGC.js +235 -0
  292. package/dist/sunburst-WHZ77REP.js +284 -0
  293. package/dist/survival-HQ5JC76V.js +46 -0
  294. package/dist/survival-QFWZNB4W.js +58 -0
  295. package/dist/survival.integration.spec-7STGYBGG.js +915 -0
  296. package/dist/survival.integration.spec-7STGYBGG.js.map +7 -0
  297. package/dist/svgraph-TYIBQ3RD.js +1387 -0
  298. package/dist/svmr-ZZIRWUVA.js +3842 -0
  299. package/dist/table-MPM3ET2V.js +200 -0
  300. package/dist/termCollection-5DF5MFBK.js +38 -0
  301. package/dist/termCollection-CQESAD6G.js +179 -0
  302. package/dist/termCollection.unit.spec-ASYBZQLO.js +208 -0
  303. package/dist/tk-NCEB2L7K.js +46 -0
  304. package/dist/tp.ui-AHTGSLBN.js +1459 -0
  305. package/dist/tvs.dt-TXG4FL3B.js +39 -0
  306. package/dist/tvs.dtcnv.categorical-7SA4PCKE.js +40 -0
  307. package/dist/tvs.dtcnv.continuous-E3VQWM5N.js +72 -0
  308. package/dist/tvs.dtfusion-F72VEUPO.js +40 -0
  309. package/dist/tvs.dtsnvindel-RAVTRO5M.js +40 -0
  310. package/dist/tvs.dtsv-ZZDBZYAJ.js +40 -0
  311. package/dist/tvs.samplelst-POTNAX4E.js +104 -0
  312. package/dist/tvs.termCollection-AHNHKJPJ.js +159 -0
  313. package/dist/violin-YR35XLAS.js +46 -0
  314. package/dist/violin.integration.spec-2VSILDUW.js +1425 -0
  315. package/dist/violin.interactivity-S7QY6HVJ.js +38 -0
  316. package/dist/violin.renderer-OUWK7EL4.js +40 -0
  317. package/dist/vocabulary-6IZJ6F7N.js +41 -0
  318. package/package.json +8 -2
  319. package/dist/2dmaf-BNMEUJVM.js +0 -1373
  320. package/dist/AIProjectAdmin-AEXQY5LY.js +0 -958
  321. package/dist/AppHeader-RXDJBHXZ.js +0 -835
  322. package/dist/BoxPlot-HDP3SIGU.js +0 -1217
  323. package/dist/CorrelationVolcano-V2E566XL.js +0 -619
  324. package/dist/DE-7YUZSW4E.js +0 -95
  325. package/dist/DEinput-P2HOQC4Z.js +0 -301
  326. package/dist/DifferentialAnalysis-2Z6BHS7A.js +0 -245
  327. package/dist/Disco-ZLC54X7T.js +0 -3297
  328. package/dist/Disco.UI-LXJJYQVV.js +0 -249
  329. package/dist/DmrPlot-OEJRGNI3.js +0 -642
  330. package/dist/GB-2GHDD3MW.js +0 -1130
  331. package/dist/GB-2GHDD3MW.js.map +0 -7
  332. package/dist/GeneExpInput-PWLPDLYT.js +0 -367
  333. package/dist/HicApp-CAYC4DPO.js +0 -2250
  334. package/dist/NumBinaryEditor-EUOYSGPM.js +0 -271
  335. package/dist/NumBinaryEditor.unit.spec-5B3W4B4F.js +0 -286
  336. package/dist/NumContEditor-7KK6CIB3.js +0 -109
  337. package/dist/NumContEditor.unit.spec-IMKGVYFZ.js +0 -169
  338. package/dist/NumCustomBinEditor-PDAF6I7B.js +0 -38
  339. package/dist/NumCustomBinEditor.unit.spec-IU3DPECJ.js +0 -284
  340. package/dist/NumDiscreteEditor-YTKUHG6Z.js +0 -179
  341. package/dist/NumDiscreteEditor.unit.spec-FUBS7Z7Z.js +0 -202
  342. package/dist/NumRegularBinEditor-LU3KLBLY.js +0 -38
  343. package/dist/NumRegularBinEditor.unit.spec-2BKOHI7L.js +0 -227
  344. package/dist/NumSplineEditor-56RJ2HT2.js +0 -198
  345. package/dist/NumSplineEditor.unit.spec-PW6VUUBZ.js +0 -199
  346. package/dist/NumericDensity-EB4H54EF.js +0 -38
  347. package/dist/NumericDensity.unit.spec-LSEM4OEY.js +0 -221
  348. package/dist/NumericHandler-VGPDXP35.js +0 -39
  349. package/dist/NumericHandler.unit.spec-NR3F7XHV.js +0 -219
  350. package/dist/ProteomeInput-AUXWUIWK.js +0 -396
  351. package/dist/RunChart2-SQ6TFOHD.js +0 -758
  352. package/dist/SC-OWJ6LYIW.js +0 -1124
  353. package/dist/SC-OWJ6LYIW.js.map +0 -7
  354. package/dist/Volcano-XHDH6UN7.js +0 -1379
  355. package/dist/WSIViewer-WT2QV747.js +0 -48562
  356. package/dist/WsiSamplesPlot-YUOAWG2A.js +0 -165
  357. package/dist/adSandbox-VMMAL22L.js +0 -38
  358. package/dist/animatedBubbleChart-Q6Z5W2UL.js +0 -555
  359. package/dist/app-FX3KZ67X.js +0 -37
  360. package/dist/app-X7ZYEOZN.js +0 -49
  361. package/dist/bam-ZYLH4U5R.js +0 -860
  362. package/dist/barchart-MXSPTKV4.js +0 -47
  363. package/dist/barchart.data-ZWF6EVJH.js +0 -22
  364. package/dist/barchart.events-XON2ANOC.js +0 -47
  365. package/dist/barchart.integration.spec-PJIENJGT.js +0 -1980
  366. package/dist/barchart.integration.spec-PJIENJGT.js.map +0 -7
  367. package/dist/barchart2-HIKBGSSE.js +0 -314
  368. package/dist/block-EGPYVWNP.js +0 -6226
  369. package/dist/block.init-IJBRPZNM.js +0 -38
  370. package/dist/block.mds.expressionrank-3DANCP7E.js +0 -359
  371. package/dist/block.mds.geneboxplot-CRGSCZMG.js +0 -828
  372. package/dist/block.mds.junction-4UIH2ZYN.js +0 -1545
  373. package/dist/block.mds.svcnv-NF4UIRR2.js +0 -6801
  374. package/dist/block.svg-AIZ47JCQ.js +0 -164
  375. package/dist/block.tk.aicheck-7HZFGE63.js +0 -283
  376. package/dist/block.tk.ase-U3VNPZEA.js +0 -365
  377. package/dist/block.tk.bam-4TQ7P2OX.js +0 -1906
  378. package/dist/block.tk.bedgraphdot-MYHKKO6K.js +0 -384
  379. package/dist/block.tk.bigwig.ui-E3YVGIDN.js +0 -212
  380. package/dist/block.tk.hicstraw-Y4XOMG7T.js +0 -823
  381. package/dist/block.tk.junction-T5C7LK6F.js +0 -2364
  382. package/dist/block.tk.junction.textmatrixui-Z3ACCVXH.js +0 -199
  383. package/dist/block.tk.ld-Y5KDA5AU.js +0 -99
  384. package/dist/block.tk.menu-EWRRISDY.js +0 -1029
  385. package/dist/block.tk.pgv-3JYGOZVQ.js +0 -944
  386. package/dist/brainImaging-P3AF3C5N.js +0 -423
  387. package/dist/brainRegions-YA2H2QOI.js +0 -221
  388. package/dist/chunk-2JR7RPB6.js +0 -1825
  389. package/dist/chunk-2U2CP2Y2.js +0 -317
  390. package/dist/chunk-2U2CP2Y2.js.map +0 -7
  391. package/dist/chunk-3BBK6A4X.js +0 -176
  392. package/dist/chunk-3FVIDQOX.js +0 -54
  393. package/dist/chunk-3K2O2NIH.js +0 -446
  394. package/dist/chunk-3RSJU6YM.js +0 -2681
  395. package/dist/chunk-3ZKD6C5S.js +0 -34
  396. package/dist/chunk-46AEH34Z.js +0 -95
  397. package/dist/chunk-4CQVC6XL.js +0 -182
  398. package/dist/chunk-5FXNI724.js +0 -216
  399. package/dist/chunk-6JHIX4RA.js +0 -4269
  400. package/dist/chunk-7PFRBGMN.js +0 -129
  401. package/dist/chunk-7R63MAPC.js +0 -448
  402. package/dist/chunk-A4Z3CI24.js +0 -276
  403. package/dist/chunk-AI2LUQS6.js +0 -119
  404. package/dist/chunk-AJYJW4LX.js +0 -6364
  405. package/dist/chunk-BMS32SNA.js +0 -37
  406. package/dist/chunk-C4BCMAIK.js +0 -188
  407. package/dist/chunk-C4BCMAIK.js.map +0 -7
  408. package/dist/chunk-CJPGYPI3.js +0 -291
  409. package/dist/chunk-CTQH7LQ6.js +0 -31
  410. package/dist/chunk-D5CVYITI.js +0 -203
  411. package/dist/chunk-DMSX5PSO.js +0 -477
  412. package/dist/chunk-E3JRW3T3.js +0 -1102
  413. package/dist/chunk-E574SMCX.js +0 -283
  414. package/dist/chunk-E76O5Z42.js +0 -98
  415. package/dist/chunk-EEW443GL.js +0 -14
  416. package/dist/chunk-EVNMW7BS.js +0 -833
  417. package/dist/chunk-F2WPS7VY.js +0 -1943
  418. package/dist/chunk-FDPWWODM.js +0 -2832
  419. package/dist/chunk-FDPWWODM.js.map +0 -7
  420. package/dist/chunk-FVHUROIJ.js +0 -446
  421. package/dist/chunk-FVHUROIJ.js.map +0 -7
  422. package/dist/chunk-FYFX42YD.js +0 -222
  423. package/dist/chunk-G6RZYGWY.js +0 -386
  424. package/dist/chunk-GTZV2UZV.js +0 -736
  425. package/dist/chunk-H34LAFGH.js +0 -142
  426. package/dist/chunk-I2R5O2XX.js +0 -263
  427. package/dist/chunk-IEYDMN3H.js +0 -26
  428. package/dist/chunk-JWBP4ZZB.js +0 -148
  429. package/dist/chunk-KUZPTJJO.js +0 -20874
  430. package/dist/chunk-KUZPTJJO.js.map +0 -7
  431. package/dist/chunk-KVIH5JPC.js +0 -1275
  432. package/dist/chunk-L5HCOTRF.js +0 -302
  433. package/dist/chunk-LHKDLWG5.js +0 -194
  434. package/dist/chunk-M7UKOCJA.js +0 -234
  435. package/dist/chunk-MHFH66I3.js +0 -1289
  436. package/dist/chunk-MP3DN6JK.js +0 -117
  437. package/dist/chunk-N5OVBS5L.js +0 -2786
  438. package/dist/chunk-NEKAGDTL.js +0 -58
  439. package/dist/chunk-NPCNDM6Y.js +0 -54
  440. package/dist/chunk-NYN2WQN3.js +0 -100
  441. package/dist/chunk-O6WL7USJ.js +0 -343
  442. package/dist/chunk-OH5I6I2D.js +0 -368
  443. package/dist/chunk-PDFCQ7AU.js +0 -5054
  444. package/dist/chunk-PDFCQ7AU.js.map +0 -7
  445. package/dist/chunk-PSJVMAWA.js +0 -294
  446. package/dist/chunk-PSJVMAWA.js.map +0 -7
  447. package/dist/chunk-PTQ774XH.js +0 -514
  448. package/dist/chunk-PXOH4ZN2.js +0 -399
  449. package/dist/chunk-QG4BJUM7.js +0 -102
  450. package/dist/chunk-R7AV73BV.js +0 -617
  451. package/dist/chunk-RITTG5WN.js +0 -158
  452. package/dist/chunk-SMSFTTEO.js +0 -272
  453. package/dist/chunk-TBZKVKR4.js +0 -50
  454. package/dist/chunk-TLTS33EY.js +0 -287
  455. package/dist/chunk-TMM7BWW7.js +0 -381
  456. package/dist/chunk-TTC4MNEM.js +0 -2327
  457. package/dist/chunk-UQ5CDHYF.js +0 -1218
  458. package/dist/chunk-UQ5CDHYF.js.map +0 -7
  459. package/dist/chunk-UXIZYI3X.js +0 -226
  460. package/dist/chunk-UXIZYI3X.js.map +0 -7
  461. package/dist/chunk-VIUATDO2.js +0 -170
  462. package/dist/chunk-VIUDFDN4.js +0 -102
  463. package/dist/chunk-W5OEFZCR.js +0 -254
  464. package/dist/chunk-WXSRK3XR.js +0 -534
  465. package/dist/chunk-XHGMDBTS.js +0 -230
  466. package/dist/chunk-XQ2OBL6R.js +0 -1205
  467. package/dist/chunk-XQ2OBL6R.js.map +0 -7
  468. package/dist/chunk-XVGS3QXS.js +0 -55
  469. package/dist/chunk-XYNYQMLH.js +0 -482
  470. package/dist/chunk-Y4JJMUWG.js +0 -217
  471. package/dist/chunk-Z457XQSX.js +0 -815
  472. package/dist/chunk-ZF6HNVYD.js +0 -1444
  473. package/dist/condition-QXTOTGZX.js +0 -332
  474. package/dist/controls-7TDB75LK.js +0 -41
  475. package/dist/controls.config-IBF5ILFP.js +0 -39
  476. package/dist/correlation-M2T5R7CM.js +0 -102
  477. package/dist/cuminc-CAHPKW7W.js +0 -1149
  478. package/dist/cuminc.integration.spec-NNSQGBRI.js +0 -678
  479. package/dist/customdata.inputui-RRTQK7OK.js +0 -289
  480. package/dist/dataDownload-SOUCBKXM.js +0 -330
  481. package/dist/dataDownload.integration.spec-C6TLWSSO.js +0 -193
  482. package/dist/databrowser.ui-KLFEU5QA.js +0 -433
  483. package/dist/dictionary-RUT5VXDD.js +0 -118
  484. package/dist/dnaMethylation-WOKGG33W.js +0 -38
  485. package/dist/dnaMethylation.integration.spec-YUPP42UK.js +0 -203
  486. package/dist/dofetch-V7PLLWSO.js +0 -51
  487. package/dist/e2pca-VT7EM4E3.js +0 -350
  488. package/dist/ep-X6B43UXE.js +0 -1256
  489. package/dist/expclust.gdc.spec-DTBFOXBC.js +0 -307
  490. package/dist/facet-T5ZX7ZGV.js +0 -521
  491. package/dist/forms2-S5OGBFKL.js +0 -539
  492. package/dist/gb-TWXREZIP.js +0 -88
  493. package/dist/geneExpClustering-2G6YDCIN.js +0 -249
  494. package/dist/geneExpression-2A4ZPT7K.js +0 -38
  495. package/dist/geneExpression-ZHQH6SNA.js +0 -313
  496. package/dist/geneExpression.unit.spec-2M223S4P.js +0 -102
  497. package/dist/geneORA-YLIRUMCZ.js +0 -278
  498. package/dist/geneRanking-JDJXNGEC.js +0 -551
  499. package/dist/geneVariant-5ZIOT5BT.js +0 -39
  500. package/dist/geneVariant-GIXIMJ2I.js +0 -41
  501. package/dist/geneVariant.integration.spec-QCROW73S.js +0 -198
  502. package/dist/genefusion.ui-56UQLUKJ.js +0 -309
  503. package/dist/geneset-ACRMGBJO.js +0 -208
  504. package/dist/genomeBrowser.spec-EDILOQON.js +0 -281
  505. package/dist/grin2-5P7CYUT7.js +0 -1560
  506. package/dist/grin2-5P7CYUT7.js.map +0 -7
  507. package/dist/grin2-GNB35CMF.js +0 -871
  508. package/dist/grin2-GNB35CMF.js.map +0 -7
  509. package/dist/gsea-2PQ5HNNT.js +0 -47
  510. package/dist/hierCluster-H5HB7FPW.js +0 -63
  511. package/dist/hierCluster-L3LCP2II.js +0 -59
  512. package/dist/hierCluster.config-6UIJWCND.js +0 -40
  513. package/dist/hierCluster.integration.spec-EVAPT2VF.js +0 -395
  514. package/dist/hierCluster.interactivity-7MW6ZT6O.js +0 -54
  515. package/dist/hierCluster.renderers-F34EVY5J.js +0 -21
  516. package/dist/imagePlot-RSFZ2OKD.js +0 -163
  517. package/dist/importPlot-DQFWY5A7.js +0 -8
  518. package/dist/isoformExpression-2KANPCBH.js +0 -40
  519. package/dist/isoformExpression.unit.spec-6FSMHT4K.js +0 -208
  520. package/dist/launch.adhoc-ZYTIRVIC.js +0 -42
  521. package/dist/leftlabel.sample-66U6MHPN.js +0 -260
  522. package/dist/leftlabel.sample-66U6MHPN.js.map +0 -7
  523. package/dist/lollipop-PJDUFWEY.js +0 -171
  524. package/dist/maf-DLJHCKHJ.js +0 -452
  525. package/dist/maftimeline-NK5QYJMJ.js +0 -593
  526. package/dist/matrix-7BFYR6QL.js +0 -63
  527. package/dist/matrix-USAB2CHO.js +0 -58
  528. package/dist/matrix.cells-OTAXAJ4N.js +0 -28
  529. package/dist/matrix.config-AL4WSFZ7.js +0 -41
  530. package/dist/matrix.data-BDHCSN2G.js +0 -25
  531. package/dist/matrix.groups-MV2D2636.js +0 -27
  532. package/dist/matrix.integration.spec-DESORC2Y.js +0 -3072
  533. package/dist/matrix.interactivity-H7EJW3P2.js +0 -42
  534. package/dist/matrix.layout-7CAS2IBO.js +0 -44
  535. package/dist/matrix.legend-JDVG2JDF.js +0 -22
  536. package/dist/matrix.renderers-PDR5FIBC.js +0 -38
  537. package/dist/matrix.serieses-QVDS5HKK.js +0 -21
  538. package/dist/matrix.sort-HCK4CSTJ.js +0 -27
  539. package/dist/matrix.sort.unit.spec-2GC4E26N.js +0 -472
  540. package/dist/matrix.sorterUi-XGBQOPG4.js +0 -18
  541. package/dist/matrix.sorterUi.unit.spec-BJQKDU2F.js +0 -342
  542. package/dist/mavb-6E6Z4LPK.js +0 -732
  543. package/dist/mds.fimo-5P2TK5U4.js +0 -518
  544. package/dist/mds.samplescatterplot-KLKOD4AS.js +0 -1550
  545. package/dist/mds.survivalplot-SWQCOFIU.js +0 -483
  546. package/dist/numericDictTermCluster-WIVO33AV.js +0 -72
  547. package/dist/oncomatrix-SDUUQZCK.js +0 -295
  548. package/dist/oncomatrix.spec-YGQYIUDT.js +0 -448
  549. package/dist/plot.2dvaf-K53KTP5W.js +0 -377
  550. package/dist/plot.app-FNJVWLPQ.js +0 -41
  551. package/dist/plot.barplot-VTC3N6BR.js +0 -102
  552. package/dist/plot.boxplot-RJFGQSLA.js +0 -152
  553. package/dist/plot.brainImaging-6KVNPPMT.js +0 -51
  554. package/dist/plot.disco-ZFH5RK6B.js +0 -102
  555. package/dist/plot.dzi-IA2SOFUD.js +0 -33
  556. package/dist/plot.ssgq-QARGQVKB.js +0 -139
  557. package/dist/plot.vaf2cov-2JUXYCPG.js +0 -259
  558. package/dist/plot.wsi-C2DULA7U.js +0 -36
  559. package/dist/polar2-3HS3QBU6.js +0 -231
  560. package/dist/profileForms-Y6ZBMZWQ.js +0 -446
  561. package/dist/profilePlot-SVI3QKMD.js +0 -54
  562. package/dist/proteinView-YPFJSBL7.js +0 -1556
  563. package/dist/qualitative-AQFKAZID.js +0 -43
  564. package/dist/radar2-TTQZLARY.js +0 -326
  565. package/dist/radarFacility2-YGS56QUA.js +0 -334
  566. package/dist/regression-DLPBCDZT.js +0 -56
  567. package/dist/regression.inputs-42LY4MEZ.js +0 -48
  568. package/dist/regression.inputs.term-TTUFFPG6.js +0 -48
  569. package/dist/regression.inputs.values.table-CJAPTSMS.js +0 -45
  570. package/dist/regression.integration.spec-UDA26OGS.js +0 -784
  571. package/dist/regression.results-IA3C7SHR.js +0 -40
  572. package/dist/regression.spec-HEXCL3QV.js +0 -708
  573. package/dist/report-4CFOWNPJ.js +0 -222
  574. package/dist/sampleScatter.spec-N6V4BQ5Q.js +0 -202
  575. package/dist/sampleView-CZF7U23I.js +0 -48
  576. package/dist/samplelst-XUGDS5TU.js +0 -111
  577. package/dist/samplematrix-R5PZLZDE.js +0 -2198
  578. package/dist/sc-WTZZA5J5.js +0 -86
  579. package/dist/scatter-EY7HQVCO.js +0 -851
  580. package/dist/scatter.integration.spec-CRMLFO4J.js +0 -1206
  581. package/dist/selectGenomeWithTklst-2S2MXVCI.js +0 -134
  582. package/dist/singleCellCellType-LJWFG7MY.js +0 -38
  583. package/dist/singleCellCellType.unit.spec-RGN2XVUR.js +0 -160
  584. package/dist/singleCellGeneExpression-IW2QXTTU.js +0 -38
  585. package/dist/singleCellGeneExpression.unit.spec-4PO3Q7TM.js +0 -153
  586. package/dist/singleCellPlot-6EZ6JXCM.js +0 -54
  587. package/dist/singlecell-3LFPQ6KO.js +0 -86
  588. package/dist/singlecell-NTTAVVMR.js +0 -1572
  589. package/dist/snp-XB4IBG4Z.js +0 -38
  590. package/dist/snp.unit.spec-HAJPM53L.js +0 -176
  591. package/dist/snplocus-HE6TITSX.js +0 -208
  592. package/dist/spliceevent.a53ss.diagram-TCZMBMD7.js +0 -151
  593. package/dist/spliceevent.exonskip.diagram-VESOF6UC.js +0 -277
  594. package/dist/spliceevent.noeventdiagram-4K7FMO4F.js +0 -460
  595. package/dist/ssGSEA-2XYMX36P.js +0 -38
  596. package/dist/ssGSEA.unit.spec-J36KM2HO.js +0 -88
  597. package/dist/summarizeCnvGeneexp-LYVDZXXD.js +0 -163
  598. package/dist/summarizeGeneexpSurvival-Y52TGAHF.js +0 -108
  599. package/dist/summarizeMutationCnv-6EEJT3PV.js +0 -164
  600. package/dist/summarizeMutationDiagnosis-HZKXHOOQ.js +0 -40
  601. package/dist/summarizeMutationSurvival-TU7TQYFQ.js +0 -99
  602. package/dist/summary-4QQZUAMU.js +0 -49
  603. package/dist/summary.integration.spec-SLIIM4HN.js +0 -414
  604. package/dist/summaryInput-6HROPKCE.js +0 -235
  605. package/dist/sunburst-MBJJPERL.js +0 -284
  606. package/dist/survival-CXLMQSV2.js +0 -58
  607. package/dist/survival-QSL2KDKD.js +0 -46
  608. package/dist/survival.integration.spec-EUAAALVW.js +0 -821
  609. package/dist/survival.integration.spec-EUAAALVW.js.map +0 -7
  610. package/dist/svgraph-JM5MHQDX.js +0 -1387
  611. package/dist/svmr-MCMST2FL.js +0 -3842
  612. package/dist/table-MVX3IMAL.js +0 -200
  613. package/dist/termCollection-FZ2SCVA7.js +0 -38
  614. package/dist/termCollection-IGC7REFK.js +0 -179
  615. package/dist/termCollection.unit.spec-VY2EZZIP.js +0 -208
  616. package/dist/tk-5F3TWZ2G.js +0 -46
  617. package/dist/tp.ui-IURWTMAS.js +0 -1459
  618. package/dist/tvs.dt-BPZCFPYK.js +0 -39
  619. package/dist/tvs.dtcnv.categorical-UFS62DTR.js +0 -40
  620. package/dist/tvs.dtcnv.continuous-R6YXNNLA.js +0 -72
  621. package/dist/tvs.dtfusion-FGXXS4XX.js +0 -40
  622. package/dist/tvs.dtsnvindel-DR43K7X3.js +0 -40
  623. package/dist/tvs.dtsv-NO34GIOL.js +0 -40
  624. package/dist/tvs.samplelst-2QP7IV2Y.js +0 -104
  625. package/dist/tvs.termCollection-UEJDG22G.js +0 -159
  626. package/dist/violin-NBZTGGYF.js +0 -46
  627. package/dist/violin.integration.spec-5CLYJSAR.js +0 -1425
  628. package/dist/violin.interactivity-KXVKTT22.js +0 -38
  629. package/dist/violin.renderer-37OF6K7Q.js +0 -40
  630. package/dist/vocabulary-GR6J3VKW.js +0 -41
  631. /package/dist/{2dmaf-BNMEUJVM.js.map → 2dmaf-HS37GJYM.js.map} +0 -0
  632. /package/dist/{AIProjectAdmin-AEXQY5LY.js.map → AIProjectAdmin-V5NVBBOA.js.map} +0 -0
  633. /package/dist/{AppHeader-RXDJBHXZ.js.map → AppHeader-VIQ2VZPI.js.map} +0 -0
  634. /package/dist/{BoxPlot-HDP3SIGU.js.map → BoxPlot-J7DPHT2N.js.map} +0 -0
  635. /package/dist/{CorrelationVolcano-V2E566XL.js.map → CorrelationVolcano-ZHP7IPFD.js.map} +0 -0
  636. /package/dist/{DE-7YUZSW4E.js.map → DE-VW4MQHYP.js.map} +0 -0
  637. /package/dist/{DEinput-P2HOQC4Z.js.map → DEinput-2EKXGUP3.js.map} +0 -0
  638. /package/dist/{DifferentialAnalysis-2Z6BHS7A.js.map → DifferentialAnalysis-H7LZWEIL.js.map} +0 -0
  639. /package/dist/{Disco-ZLC54X7T.js.map → Disco-5AA67AO5.js.map} +0 -0
  640. /package/dist/{Disco.UI-LXJJYQVV.js.map → Disco.UI-K4RBVRJP.js.map} +0 -0
  641. /package/dist/{DmrPlot-OEJRGNI3.js.map → DmrPlot-RVJUKBOB.js.map} +0 -0
  642. /package/dist/{GeneExpInput-PWLPDLYT.js.map → GeneExpInput-HHOIK6X7.js.map} +0 -0
  643. /package/dist/{HicApp-CAYC4DPO.js.map → HicApp-YTQNK5DC.js.map} +0 -0
  644. /package/dist/{NumBinaryEditor-EUOYSGPM.js.map → NumBinaryEditor-ICZCNBRL.js.map} +0 -0
  645. /package/dist/{NumBinaryEditor.unit.spec-5B3W4B4F.js.map → NumBinaryEditor.unit.spec-WDJPDAVT.js.map} +0 -0
  646. /package/dist/{NumContEditor-7KK6CIB3.js.map → NumContEditor-5KEM54CE.js.map} +0 -0
  647. /package/dist/{NumContEditor.unit.spec-IMKGVYFZ.js.map → NumContEditor.unit.spec-WG5QKOD3.js.map} +0 -0
  648. /package/dist/{NumCustomBinEditor-PDAF6I7B.js.map → NumCustomBinEditor-MGHR7VQT.js.map} +0 -0
  649. /package/dist/{NumCustomBinEditor.unit.spec-IU3DPECJ.js.map → NumCustomBinEditor.unit.spec-JWSHEIJJ.js.map} +0 -0
  650. /package/dist/{NumDiscreteEditor-YTKUHG6Z.js.map → NumDiscreteEditor-XT2GSGUR.js.map} +0 -0
  651. /package/dist/{NumDiscreteEditor.unit.spec-FUBS7Z7Z.js.map → NumDiscreteEditor.unit.spec-DSCWGYBS.js.map} +0 -0
  652. /package/dist/{NumRegularBinEditor-LU3KLBLY.js.map → NumRegularBinEditor-JMDBM5PU.js.map} +0 -0
  653. /package/dist/{NumRegularBinEditor.unit.spec-2BKOHI7L.js.map → NumRegularBinEditor.unit.spec-BWRP6OO2.js.map} +0 -0
  654. /package/dist/{NumSplineEditor-56RJ2HT2.js.map → NumSplineEditor-QJNRSORC.js.map} +0 -0
  655. /package/dist/{NumSplineEditor.unit.spec-PW6VUUBZ.js.map → NumSplineEditor.unit.spec-CXBTVND4.js.map} +0 -0
  656. /package/dist/{NumericDensity-EB4H54EF.js.map → NumericDensity-XQWCBSGT.js.map} +0 -0
  657. /package/dist/{NumericDensity.unit.spec-LSEM4OEY.js.map → NumericDensity.unit.spec-7JS5R3AZ.js.map} +0 -0
  658. /package/dist/{NumericHandler-VGPDXP35.js.map → NumericHandler-QXXBEJC3.js.map} +0 -0
  659. /package/dist/{NumericHandler.unit.spec-NR3F7XHV.js.map → NumericHandler.unit.spec-SRQJQVPP.js.map} +0 -0
  660. /package/dist/{ProteomeInput-AUXWUIWK.js.map → ProteomeInput-E4MJLAKF.js.map} +0 -0
  661. /package/dist/{RunChart2-SQ6TFOHD.js.map → RunChart2-N6S7HBXV.js.map} +0 -0
  662. /package/dist/{Volcano-XHDH6UN7.js.map → Volcano-OHJPYZQE.js.map} +0 -0
  663. /package/dist/{WSIViewer-WT2QV747.js.map → WSIViewer-SAKVU52Z.js.map} +0 -0
  664. /package/dist/{WsiSamplesPlot-YUOAWG2A.js.map → WsiSamplesPlot-QV5GFFCR.js.map} +0 -0
  665. /package/dist/{adSandbox-VMMAL22L.js.map → adSandbox-IE7TOJUE.js.map} +0 -0
  666. /package/dist/{animatedBubbleChart-Q6Z5W2UL.js.map → animatedBubbleChart-ZNEDQND3.js.map} +0 -0
  667. /package/dist/{app-FX3KZ67X.js.map → app-7MRKEE2J.js.map} +0 -0
  668. /package/dist/{app-X7ZYEOZN.js.map → app-QIBNB4AA.js.map} +0 -0
  669. /package/dist/{bam-ZYLH4U5R.js.map → bam-OBS5ULFF.js.map} +0 -0
  670. /package/dist/{barchart-MXSPTKV4.js.map → barchart-2RVEEMPK.js.map} +0 -0
  671. /package/dist/{barchart.data-ZWF6EVJH.js.map → barchart.data-7OI5GZZ6.js.map} +0 -0
  672. /package/dist/{barchart.events-XON2ANOC.js.map → barchart.events-AASSQL3J.js.map} +0 -0
  673. /package/dist/{barchart2-HIKBGSSE.js.map → barchart2-TUBYGLMC.js.map} +0 -0
  674. /package/dist/{block-EGPYVWNP.js.map → block-BYXWS7H7.js.map} +0 -0
  675. /package/dist/{block.init-IJBRPZNM.js.map → block.init-QOAPDKCC.js.map} +0 -0
  676. /package/dist/{block.mds.expressionrank-3DANCP7E.js.map → block.mds.expressionrank-Q46AAYOA.js.map} +0 -0
  677. /package/dist/{block.mds.geneboxplot-CRGSCZMG.js.map → block.mds.geneboxplot-IC26RT7L.js.map} +0 -0
  678. /package/dist/{block.mds.junction-4UIH2ZYN.js.map → block.mds.junction-RIUZIBFB.js.map} +0 -0
  679. /package/dist/{block.mds.svcnv-NF4UIRR2.js.map → block.mds.svcnv-GUB2TTXQ.js.map} +0 -0
  680. /package/dist/{block.svg-AIZ47JCQ.js.map → block.svg-I4NHMOEJ.js.map} +0 -0
  681. /package/dist/{block.tk.aicheck-7HZFGE63.js.map → block.tk.aicheck-X57EGAOB.js.map} +0 -0
  682. /package/dist/{block.tk.ase-U3VNPZEA.js.map → block.tk.ase-JMBKBZAH.js.map} +0 -0
  683. /package/dist/{block.tk.bam-4TQ7P2OX.js.map → block.tk.bam-6UAEWVVD.js.map} +0 -0
  684. /package/dist/{block.tk.bedgraphdot-MYHKKO6K.js.map → block.tk.bedgraphdot-7QSRLAJ7.js.map} +0 -0
  685. /package/dist/{block.tk.bigwig.ui-E3YVGIDN.js.map → block.tk.bigwig.ui-SBD6S5SA.js.map} +0 -0
  686. /package/dist/{block.tk.hicstraw-Y4XOMG7T.js.map → block.tk.hicstraw-LIGPTMX7.js.map} +0 -0
  687. /package/dist/{block.tk.junction-T5C7LK6F.js.map → block.tk.junction-X6HFXKW7.js.map} +0 -0
  688. /package/dist/{block.tk.junction.textmatrixui-Z3ACCVXH.js.map → block.tk.junction.textmatrixui-XJIUGHAX.js.map} +0 -0
  689. /package/dist/{block.tk.ld-Y5KDA5AU.js.map → block.tk.ld-OZVW7LSL.js.map} +0 -0
  690. /package/dist/{block.tk.menu-EWRRISDY.js.map → block.tk.menu-B2CEZAYR.js.map} +0 -0
  691. /package/dist/{block.tk.pgv-3JYGOZVQ.js.map → block.tk.pgv-XAAQBQQE.js.map} +0 -0
  692. /package/dist/{brainImaging-P3AF3C5N.js.map → brainImaging-KFKM3XWD.js.map} +0 -0
  693. /package/dist/{brainRegions-YA2H2QOI.js.map → brainRegions-ZHKXILK7.js.map} +0 -0
  694. /package/dist/{chunk-R7AV73BV.js.map → chunk-2IITC4V5.js.map} +0 -0
  695. /package/dist/{chunk-TTC4MNEM.js.map → chunk-2P3U6XTF.js.map} +0 -0
  696. /package/dist/{chunk-NPCNDM6Y.js.map → chunk-35UCHCOQ.js.map} +0 -0
  697. /package/dist/{chunk-NEKAGDTL.js.map → chunk-3LYZMOLO.js.map} +0 -0
  698. /package/dist/{chunk-E76O5Z42.js.map → chunk-4E6HJ4ZW.js.map} +0 -0
  699. /package/dist/{chunk-7PFRBGMN.js.map → chunk-57LW6RUM.js.map} +0 -0
  700. /package/dist/{chunk-TMM7BWW7.js.map → chunk-5CR24RTX.js.map} +0 -0
  701. /package/dist/{chunk-5FXNI724.js.map → chunk-5DHRDF2Y.js.map} +0 -0
  702. /package/dist/{chunk-MP3DN6JK.js.map → chunk-5POMWXDZ.js.map} +0 -0
  703. /package/dist/{chunk-IEYDMN3H.js.map → chunk-5QTJUPFS.js.map} +0 -0
  704. /package/dist/{chunk-W5OEFZCR.js.map → chunk-5X5LI5YM.js.map} +0 -0
  705. /package/dist/{chunk-JWBP4ZZB.js.map → chunk-67QZRGIJ.js.map} +0 -0
  706. /package/dist/{chunk-2JR7RPB6.js.map → chunk-6G4YOMWW.js.map} +0 -0
  707. /package/dist/{chunk-EEW443GL.js.map → chunk-6RKL2FLA.js.map} +0 -0
  708. /package/dist/{chunk-3RSJU6YM.js.map → chunk-6YJCBK4J.js.map} +0 -0
  709. /package/dist/{chunk-ZF6HNVYD.js.map → chunk-7KRS7L4U.js.map} +0 -0
  710. /package/dist/{chunk-PXOH4ZN2.js.map → chunk-ADAKSWID.js.map} +0 -0
  711. /package/dist/{chunk-3ZKD6C5S.js.map → chunk-ANKGIHCM.js.map} +0 -0
  712. /package/dist/{chunk-O6WL7USJ.js.map → chunk-AUP7W7MK.js.map} +0 -0
  713. /package/dist/{chunk-FYFX42YD.js.map → chunk-B4QM73WG.js.map} +0 -0
  714. /package/dist/{chunk-Y4JJMUWG.js.map → chunk-C6YT5EM2.js.map} +0 -0
  715. /package/dist/{chunk-F2WPS7VY.js.map → chunk-CD3VY5WW.js.map} +0 -0
  716. /package/dist/{chunk-WXSRK3XR.js.map → chunk-CDUNE45Q.js.map} +0 -0
  717. /package/dist/{chunk-AI2LUQS6.js.map → chunk-COYULNJF.js.map} +0 -0
  718. /package/dist/{chunk-VIUATDO2.js.map → chunk-DNVSEW6P.js.map} +0 -0
  719. /package/dist/{chunk-3K2O2NIH.js.map → chunk-EC3SKPQT.js.map} +0 -0
  720. /package/dist/{chunk-46AEH34Z.js.map → chunk-F47X3VUC.js.map} +0 -0
  721. /package/dist/{chunk-BMS32SNA.js.map → chunk-G2DLWJCB.js.map} +0 -0
  722. /package/dist/{chunk-L5HCOTRF.js.map → chunk-I4G4FXLO.js.map} +0 -0
  723. /package/dist/{chunk-TLTS33EY.js.map → chunk-I73KUUYG.js.map} +0 -0
  724. /package/dist/{chunk-XHGMDBTS.js.map → chunk-INU357UG.js.map} +0 -0
  725. /package/dist/{chunk-EVNMW7BS.js.map → chunk-IZ3BPOTQ.js.map} +0 -0
  726. /package/dist/{chunk-XVGS3QXS.js.map → chunk-JBI6P3UX.js.map} +0 -0
  727. /package/dist/{chunk-M7UKOCJA.js.map → chunk-JRDHTECQ.js.map} +0 -0
  728. /package/dist/{chunk-QG4BJUM7.js.map → chunk-JRZZ6GN3.js.map} +0 -0
  729. /package/dist/{chunk-Z457XQSX.js.map → chunk-KM4JBR26.js.map} +0 -0
  730. /package/dist/{chunk-RITTG5WN.js.map → chunk-KXRTPE65.js.map} +0 -0
  731. /package/dist/{chunk-CTQH7LQ6.js.map → chunk-LSWU6EAQ.js.map} +0 -0
  732. /package/dist/{chunk-LHKDLWG5.js.map → chunk-N6QEVQZV.js.map} +0 -0
  733. /package/dist/{chunk-A4Z3CI24.js.map → chunk-NLQQIVTC.js.map} +0 -0
  734. /package/dist/{chunk-KVIH5JPC.js.map → chunk-O4VKIC66.js.map} +0 -0
  735. /package/dist/{chunk-I2R5O2XX.js.map → chunk-OWPBE2LB.js.map} +0 -0
  736. /package/dist/{chunk-4CQVC6XL.js.map → chunk-PWUERAAF.js.map} +0 -0
  737. /package/dist/{chunk-3BBK6A4X.js.map → chunk-QFSSC5VW.js.map} +0 -0
  738. /package/dist/{chunk-E574SMCX.js.map → chunk-T46LHXJW.js.map} +0 -0
  739. /package/dist/{chunk-NYN2WQN3.js.map → chunk-T4CFXTIG.js.map} +0 -0
  740. /package/dist/{chunk-VIUDFDN4.js.map → chunk-T5UGVJCK.js.map} +0 -0
  741. /package/dist/{chunk-7R63MAPC.js.map → chunk-TJCRAFKM.js.map} +0 -0
  742. /package/dist/{chunk-H34LAFGH.js.map → chunk-TNF2LHJR.js.map} +0 -0
  743. /package/dist/{chunk-AJYJW4LX.js.map → chunk-U4IYNHVD.js.map} +0 -0
  744. /package/dist/{chunk-XYNYQMLH.js.map → chunk-UAOPKEMR.js.map} +0 -0
  745. /package/dist/{chunk-GTZV2UZV.js.map → chunk-UFGV7554.js.map} +0 -0
  746. /package/dist/{chunk-CJPGYPI3.js.map → chunk-UV66X5JN.js.map} +0 -0
  747. /package/dist/{chunk-3FVIDQOX.js.map → chunk-VC642GDC.js.map} +0 -0
  748. /package/dist/{chunk-G6RZYGWY.js.map → chunk-VDIVDU3T.js.map} +0 -0
  749. /package/dist/{chunk-MHFH66I3.js.map → chunk-VNF7DC36.js.map} +0 -0
  750. /package/dist/{chunk-DMSX5PSO.js.map → chunk-VOGPIAQL.js.map} +0 -0
  751. /package/dist/{chunk-SMSFTTEO.js.map → chunk-VZOTKHPM.js.map} +0 -0
  752. /package/dist/{chunk-6JHIX4RA.js.map → chunk-YAU2Z6EN.js.map} +0 -0
  753. /package/dist/{chunk-OH5I6I2D.js.map → chunk-YNAPHPMG.js.map} +0 -0
  754. /package/dist/{chunk-PTQ774XH.js.map → chunk-YP2LHXFC.js.map} +0 -0
  755. /package/dist/{chunk-TBZKVKR4.js.map → chunk-YWF7GHUW.js.map} +0 -0
  756. /package/dist/{chunk-N5OVBS5L.js.map → chunk-YYZQMJLW.js.map} +0 -0
  757. /package/dist/{chunk-D5CVYITI.js.map → chunk-ZBEJVZMY.js.map} +0 -0
  758. /package/dist/{chunk-E3JRW3T3.js.map → chunk-ZZLBK6P6.js.map} +0 -0
  759. /package/dist/{condition-QXTOTGZX.js.map → condition-MP65K762.js.map} +0 -0
  760. /package/dist/{controls-7TDB75LK.js.map → controls-HKHMEWC7.js.map} +0 -0
  761. /package/dist/{controls.config-IBF5ILFP.js.map → controls.config-LUPIT34L.js.map} +0 -0
  762. /package/dist/{correlation-M2T5R7CM.js.map → correlation-5UTW6EEI.js.map} +0 -0
  763. /package/dist/{cuminc-CAHPKW7W.js.map → cuminc-LLUR2FLL.js.map} +0 -0
  764. /package/dist/{cuminc.integration.spec-NNSQGBRI.js.map → cuminc.integration.spec-CH5UZTIM.js.map} +0 -0
  765. /package/dist/{customdata.inputui-RRTQK7OK.js.map → customdata.inputui-6IGE5HCZ.js.map} +0 -0
  766. /package/dist/{dataDownload-SOUCBKXM.js.map → dataDownload-MCE2OJGZ.js.map} +0 -0
  767. /package/dist/{dataDownload.integration.spec-C6TLWSSO.js.map → dataDownload.integration.spec-VETU75VQ.js.map} +0 -0
  768. /package/dist/{databrowser.ui-KLFEU5QA.js.map → databrowser.ui-3BRSJHIW.js.map} +0 -0
  769. /package/dist/{dictionary-RUT5VXDD.js.map → dictionary-UV43XQAU.js.map} +0 -0
  770. /package/dist/{dnaMethylation-WOKGG33W.js.map → dnaMethylation-QDE3S4TV.js.map} +0 -0
  771. /package/dist/{dnaMethylation.integration.spec-YUPP42UK.js.map → dnaMethylation.integration.spec-JBHJE47S.js.map} +0 -0
  772. /package/dist/{dofetch-V7PLLWSO.js.map → dofetch-BMSZZAAQ.js.map} +0 -0
  773. /package/dist/{e2pca-VT7EM4E3.js.map → e2pca-JMH74VN4.js.map} +0 -0
  774. /package/dist/{ep-X6B43UXE.js.map → ep-NDT7C2IT.js.map} +0 -0
  775. /package/dist/{expclust.gdc.spec-DTBFOXBC.js.map → expclust.gdc.spec-GZ3XLPHA.js.map} +0 -0
  776. /package/dist/{facet-T5ZX7ZGV.js.map → facet-ABIWCCVT.js.map} +0 -0
  777. /package/dist/{forms2-S5OGBFKL.js.map → forms2-DRRRLG4I.js.map} +0 -0
  778. /package/dist/{gb-TWXREZIP.js.map → gb-EFZ62HCR.js.map} +0 -0
  779. /package/dist/{geneExpClustering-2G6YDCIN.js.map → geneExpClustering-CKH6M6KK.js.map} +0 -0
  780. /package/dist/{geneExpression-2A4ZPT7K.js.map → geneExpression-CNKX7XVX.js.map} +0 -0
  781. /package/dist/{geneExpression-ZHQH6SNA.js.map → geneExpression-P2ERCRXO.js.map} +0 -0
  782. /package/dist/{geneExpression.unit.spec-2M223S4P.js.map → geneExpression.unit.spec-7UJB43L3.js.map} +0 -0
  783. /package/dist/{geneORA-YLIRUMCZ.js.map → geneORA-TZOSNGRJ.js.map} +0 -0
  784. /package/dist/{geneRanking-JDJXNGEC.js.map → geneRanking-26GDRALC.js.map} +0 -0
  785. /package/dist/{geneVariant-5ZIOT5BT.js.map → geneVariant-2DHMJUJL.js.map} +0 -0
  786. /package/dist/{geneVariant-GIXIMJ2I.js.map → geneVariant-FOKRLND3.js.map} +0 -0
  787. /package/dist/{geneVariant.integration.spec-QCROW73S.js.map → geneVariant.integration.spec-XXNSWUOR.js.map} +0 -0
  788. /package/dist/{genefusion.ui-56UQLUKJ.js.map → genefusion.ui-ZJBKC2RH.js.map} +0 -0
  789. /package/dist/{geneset-ACRMGBJO.js.map → geneset-6FN5BFP3.js.map} +0 -0
  790. /package/dist/{genomeBrowser.spec-EDILOQON.js.map → genomeBrowser.spec-QLHJYDRZ.js.map} +0 -0
  791. /package/dist/{gsea-2PQ5HNNT.js.map → gsea-6YBRMGOC.js.map} +0 -0
  792. /package/dist/{hierCluster-H5HB7FPW.js.map → hierCluster-B3TULT27.js.map} +0 -0
  793. /package/dist/{hierCluster-L3LCP2II.js.map → hierCluster-NF75B7MZ.js.map} +0 -0
  794. /package/dist/{hierCluster.config-6UIJWCND.js.map → hierCluster.config-TEFI7M4K.js.map} +0 -0
  795. /package/dist/{hierCluster.integration.spec-EVAPT2VF.js.map → hierCluster.integration.spec-IUK6Q5SQ.js.map} +0 -0
  796. /package/dist/{hierCluster.interactivity-7MW6ZT6O.js.map → hierCluster.interactivity-MPD4AV4D.js.map} +0 -0
  797. /package/dist/{hierCluster.renderers-F34EVY5J.js.map → hierCluster.renderers-4XWKHCNW.js.map} +0 -0
  798. /package/dist/{imagePlot-RSFZ2OKD.js.map → imagePlot-HNJDBPO4.js.map} +0 -0
  799. /package/dist/{importPlot-DQFWY5A7.js.map → importPlot-OBS55TCA.js.map} +0 -0
  800. /package/dist/{isoformExpression-2KANPCBH.js.map → isoformExpression-K4QIYBZR.js.map} +0 -0
  801. /package/dist/{isoformExpression.unit.spec-6FSMHT4K.js.map → isoformExpression.unit.spec-INB6655U.js.map} +0 -0
  802. /package/dist/{launch.adhoc-ZYTIRVIC.js.map → launch.adhoc-VDXES33R.js.map} +0 -0
  803. /package/dist/{lollipop-PJDUFWEY.js.map → lollipop-O3XJC7BR.js.map} +0 -0
  804. /package/dist/{maf-DLJHCKHJ.js.map → maf-GLZ7KCDP.js.map} +0 -0
  805. /package/dist/{maftimeline-NK5QYJMJ.js.map → maftimeline-Q4YPFSZP.js.map} +0 -0
  806. /package/dist/{matrix-7BFYR6QL.js.map → matrix-KVTQNDRZ.js.map} +0 -0
  807. /package/dist/{matrix-USAB2CHO.js.map → matrix-QDHUX4QD.js.map} +0 -0
  808. /package/dist/{matrix.cells-OTAXAJ4N.js.map → matrix.cells-ED6RS5EC.js.map} +0 -0
  809. /package/dist/{matrix.config-AL4WSFZ7.js.map → matrix.config-B65UXJNA.js.map} +0 -0
  810. /package/dist/{matrix.data-BDHCSN2G.js.map → matrix.data-KQFMXWRX.js.map} +0 -0
  811. /package/dist/{matrix.groups-MV2D2636.js.map → matrix.groups-RE74EFLY.js.map} +0 -0
  812. /package/dist/{matrix.integration.spec-DESORC2Y.js.map → matrix.integration.spec-2ITZRE4N.js.map} +0 -0
  813. /package/dist/{matrix.interactivity-H7EJW3P2.js.map → matrix.interactivity-3RF4YOAP.js.map} +0 -0
  814. /package/dist/{matrix.layout-7CAS2IBO.js.map → matrix.layout-ERVRJAK2.js.map} +0 -0
  815. /package/dist/{matrix.legend-JDVG2JDF.js.map → matrix.legend-ZST44PIB.js.map} +0 -0
  816. /package/dist/{matrix.renderers-PDR5FIBC.js.map → matrix.renderers-HNEUKUGS.js.map} +0 -0
  817. /package/dist/{matrix.serieses-QVDS5HKK.js.map → matrix.serieses-6ZKTFVWY.js.map} +0 -0
  818. /package/dist/{matrix.sort-HCK4CSTJ.js.map → matrix.sort-2UE47IOC.js.map} +0 -0
  819. /package/dist/{matrix.sort.unit.spec-2GC4E26N.js.map → matrix.sort.unit.spec-QGEVGY7M.js.map} +0 -0
  820. /package/dist/{matrix.sorterUi-XGBQOPG4.js.map → matrix.sorterUi-WC2YX7S7.js.map} +0 -0
  821. /package/dist/{matrix.sorterUi.unit.spec-BJQKDU2F.js.map → matrix.sorterUi.unit.spec-YNS7IVUF.js.map} +0 -0
  822. /package/dist/{mavb-6E6Z4LPK.js.map → mavb-27VSL5LG.js.map} +0 -0
  823. /package/dist/{mds.fimo-5P2TK5U4.js.map → mds.fimo-E5EXGT75.js.map} +0 -0
  824. /package/dist/{mds.samplescatterplot-KLKOD4AS.js.map → mds.samplescatterplot-YDMRZFS7.js.map} +0 -0
  825. /package/dist/{mds.survivalplot-SWQCOFIU.js.map → mds.survivalplot-INJA2NDC.js.map} +0 -0
  826. /package/dist/{numericDictTermCluster-WIVO33AV.js.map → numericDictTermCluster-DRIEJJSP.js.map} +0 -0
  827. /package/dist/{oncomatrix-SDUUQZCK.js.map → oncomatrix-334LCTXB.js.map} +0 -0
  828. /package/dist/{oncomatrix.spec-YGQYIUDT.js.map → oncomatrix.spec-VHCJWO7S.js.map} +0 -0
  829. /package/dist/{plot.2dvaf-K53KTP5W.js.map → plot.2dvaf-F7GJEUMD.js.map} +0 -0
  830. /package/dist/{plot.app-FNJVWLPQ.js.map → plot.app-AKA7UVUC.js.map} +0 -0
  831. /package/dist/{plot.barplot-VTC3N6BR.js.map → plot.barplot-HZAG43A5.js.map} +0 -0
  832. /package/dist/{plot.boxplot-RJFGQSLA.js.map → plot.boxplot-U52BJ4EP.js.map} +0 -0
  833. /package/dist/{plot.brainImaging-6KVNPPMT.js.map → plot.brainImaging-3CB4WYQ4.js.map} +0 -0
  834. /package/dist/{plot.disco-ZFH5RK6B.js.map → plot.disco-I2VLOSAU.js.map} +0 -0
  835. /package/dist/{plot.dzi-IA2SOFUD.js.map → plot.dzi-K6KI52L7.js.map} +0 -0
  836. /package/dist/{plot.ssgq-QARGQVKB.js.map → plot.ssgq-L67X4FUG.js.map} +0 -0
  837. /package/dist/{plot.vaf2cov-2JUXYCPG.js.map → plot.vaf2cov-PH4ZSY2K.js.map} +0 -0
  838. /package/dist/{plot.wsi-C2DULA7U.js.map → plot.wsi-Y6FZWHXT.js.map} +0 -0
  839. /package/dist/{polar2-3HS3QBU6.js.map → polar2-XT5QZ4VH.js.map} +0 -0
  840. /package/dist/{profileForms-Y6ZBMZWQ.js.map → profileForms-4LLSYMF6.js.map} +0 -0
  841. /package/dist/{profilePlot-SVI3QKMD.js.map → profilePlot-C52DDMZ4.js.map} +0 -0
  842. /package/dist/{proteinView-YPFJSBL7.js.map → proteinView-CCL4MPXS.js.map} +0 -0
  843. /package/dist/{qualitative-AQFKAZID.js.map → qualitative-DZ6JYYRS.js.map} +0 -0
  844. /package/dist/{radar2-TTQZLARY.js.map → radar2-GEEOQF2A.js.map} +0 -0
  845. /package/dist/{radarFacility2-YGS56QUA.js.map → radarFacility2-OWXSKHBW.js.map} +0 -0
  846. /package/dist/{regression-DLPBCDZT.js.map → regression-ZK75B4OR.js.map} +0 -0
  847. /package/dist/{regression.inputs-42LY4MEZ.js.map → regression.inputs-UR7Q7HIK.js.map} +0 -0
  848. /package/dist/{regression.inputs.term-TTUFFPG6.js.map → regression.inputs.term-PJZ7T3AI.js.map} +0 -0
  849. /package/dist/{regression.inputs.values.table-CJAPTSMS.js.map → regression.inputs.values.table-CRGBKWMM.js.map} +0 -0
  850. /package/dist/{regression.integration.spec-UDA26OGS.js.map → regression.integration.spec-OCUFEVQS.js.map} +0 -0
  851. /package/dist/{regression.results-IA3C7SHR.js.map → regression.results-7EHMKQ5F.js.map} +0 -0
  852. /package/dist/{regression.spec-HEXCL3QV.js.map → regression.spec-E4W3WOLI.js.map} +0 -0
  853. /package/dist/{report-4CFOWNPJ.js.map → report-WWILHPI6.js.map} +0 -0
  854. /package/dist/{sampleScatter.spec-N6V4BQ5Q.js.map → sampleScatter.spec-VCKCJKII.js.map} +0 -0
  855. /package/dist/{sampleView-CZF7U23I.js.map → sampleView-STGP7UUP.js.map} +0 -0
  856. /package/dist/{samplelst-XUGDS5TU.js.map → samplelst-U4BL6GYP.js.map} +0 -0
  857. /package/dist/{samplematrix-R5PZLZDE.js.map → samplematrix-FU3EZF6M.js.map} +0 -0
  858. /package/dist/{sc-WTZZA5J5.js.map → sc-JRLELKHN.js.map} +0 -0
  859. /package/dist/{scatter-EY7HQVCO.js.map → scatter-GT2VKNFG.js.map} +0 -0
  860. /package/dist/{scatter.integration.spec-CRMLFO4J.js.map → scatter.integration.spec-VDMKRPVM.js.map} +0 -0
  861. /package/dist/{selectGenomeWithTklst-2S2MXVCI.js.map → selectGenomeWithTklst-F5372VC5.js.map} +0 -0
  862. /package/dist/{singleCellCellType-LJWFG7MY.js.map → singleCellCellType-D77PUUCZ.js.map} +0 -0
  863. /package/dist/{singleCellCellType.unit.spec-RGN2XVUR.js.map → singleCellCellType.unit.spec-J4EEZAWB.js.map} +0 -0
  864. /package/dist/{singleCellGeneExpression-IW2QXTTU.js.map → singleCellGeneExpression-WCWCSHIY.js.map} +0 -0
  865. /package/dist/{singleCellGeneExpression.unit.spec-4PO3Q7TM.js.map → singleCellGeneExpression.unit.spec-CELJIAJ5.js.map} +0 -0
  866. /package/dist/{singleCellPlot-6EZ6JXCM.js.map → singleCellPlot-2OPOJZ5U.js.map} +0 -0
  867. /package/dist/{singlecell-NTTAVVMR.js.map → singlecell-K2SHYDHA.js.map} +0 -0
  868. /package/dist/{singlecell-3LFPQ6KO.js.map → singlecell-K7Z6ES7B.js.map} +0 -0
  869. /package/dist/{snp-XB4IBG4Z.js.map → snp-ICWKGR7H.js.map} +0 -0
  870. /package/dist/{snp.unit.spec-HAJPM53L.js.map → snp.unit.spec-PV2UZCYO.js.map} +0 -0
  871. /package/dist/{snplocus-HE6TITSX.js.map → snplocus-W5D4A7QJ.js.map} +0 -0
  872. /package/dist/{spliceevent.a53ss.diagram-TCZMBMD7.js.map → spliceevent.a53ss.diagram-DEQJ2C2H.js.map} +0 -0
  873. /package/dist/{spliceevent.exonskip.diagram-VESOF6UC.js.map → spliceevent.exonskip.diagram-MKA32GTK.js.map} +0 -0
  874. /package/dist/{spliceevent.noeventdiagram-4K7FMO4F.js.map → spliceevent.noeventdiagram-NFYPM4EZ.js.map} +0 -0
  875. /package/dist/{ssGSEA-2XYMX36P.js.map → ssGSEA-FAZK5FSC.js.map} +0 -0
  876. /package/dist/{ssGSEA.unit.spec-J36KM2HO.js.map → ssGSEA.unit.spec-S5D6JMOD.js.map} +0 -0
  877. /package/dist/{summarizeCnvGeneexp-LYVDZXXD.js.map → summarizeCnvGeneexp-WDGJ5YOM.js.map} +0 -0
  878. /package/dist/{summarizeGeneexpSurvival-Y52TGAHF.js.map → summarizeGeneexpSurvival-J7UYKBN2.js.map} +0 -0
  879. /package/dist/{summarizeMutationCnv-6EEJT3PV.js.map → summarizeMutationCnv-6ZXA32XN.js.map} +0 -0
  880. /package/dist/{summarizeMutationDiagnosis-HZKXHOOQ.js.map → summarizeMutationDiagnosis-BK7QPF6A.js.map} +0 -0
  881. /package/dist/{summarizeMutationSurvival-TU7TQYFQ.js.map → summarizeMutationSurvival-UODP6R6S.js.map} +0 -0
  882. /package/dist/{summary-4QQZUAMU.js.map → summary-P6XVOWSB.js.map} +0 -0
  883. /package/dist/{summary.integration.spec-SLIIM4HN.js.map → summary.integration.spec-XKMQ77CF.js.map} +0 -0
  884. /package/dist/{summaryInput-6HROPKCE.js.map → summaryInput-U7XNGLGC.js.map} +0 -0
  885. /package/dist/{sunburst-MBJJPERL.js.map → sunburst-WHZ77REP.js.map} +0 -0
  886. /package/dist/{survival-QSL2KDKD.js.map → survival-HQ5JC76V.js.map} +0 -0
  887. /package/dist/{survival-CXLMQSV2.js.map → survival-QFWZNB4W.js.map} +0 -0
  888. /package/dist/{svgraph-JM5MHQDX.js.map → svgraph-TYIBQ3RD.js.map} +0 -0
  889. /package/dist/{svmr-MCMST2FL.js.map → svmr-ZZIRWUVA.js.map} +0 -0
  890. /package/dist/{table-MVX3IMAL.js.map → table-MPM3ET2V.js.map} +0 -0
  891. /package/dist/{termCollection-FZ2SCVA7.js.map → termCollection-5DF5MFBK.js.map} +0 -0
  892. /package/dist/{termCollection-IGC7REFK.js.map → termCollection-CQESAD6G.js.map} +0 -0
  893. /package/dist/{termCollection.unit.spec-VY2EZZIP.js.map → termCollection.unit.spec-ASYBZQLO.js.map} +0 -0
  894. /package/dist/{tk-5F3TWZ2G.js.map → tk-NCEB2L7K.js.map} +0 -0
  895. /package/dist/{tp.ui-IURWTMAS.js.map → tp.ui-AHTGSLBN.js.map} +0 -0
  896. /package/dist/{tvs.dt-BPZCFPYK.js.map → tvs.dt-TXG4FL3B.js.map} +0 -0
  897. /package/dist/{tvs.dtcnv.categorical-UFS62DTR.js.map → tvs.dtcnv.categorical-7SA4PCKE.js.map} +0 -0
  898. /package/dist/{tvs.dtcnv.continuous-R6YXNNLA.js.map → tvs.dtcnv.continuous-E3VQWM5N.js.map} +0 -0
  899. /package/dist/{tvs.dtfusion-FGXXS4XX.js.map → tvs.dtfusion-F72VEUPO.js.map} +0 -0
  900. /package/dist/{tvs.dtsnvindel-DR43K7X3.js.map → tvs.dtsnvindel-RAVTRO5M.js.map} +0 -0
  901. /package/dist/{tvs.dtsv-NO34GIOL.js.map → tvs.dtsv-ZZDBZYAJ.js.map} +0 -0
  902. /package/dist/{tvs.samplelst-2QP7IV2Y.js.map → tvs.samplelst-POTNAX4E.js.map} +0 -0
  903. /package/dist/{tvs.termCollection-UEJDG22G.js.map → tvs.termCollection-AHNHKJPJ.js.map} +0 -0
  904. /package/dist/{violin-NBZTGGYF.js.map → violin-YR35XLAS.js.map} +0 -0
  905. /package/dist/{violin.integration.spec-5CLYJSAR.js.map → violin.integration.spec-2VSILDUW.js.map} +0 -0
  906. /package/dist/{violin.interactivity-KXVKTT22.js.map → violin.interactivity-S7QY6HVJ.js.map} +0 -0
  907. /package/dist/{violin.renderer-37OF6K7Q.js.map → violin.renderer-OUWK7EL4.js.map} +0 -0
  908. /package/dist/{vocabulary-GR6J3VKW.js.map → vocabulary-6IZJ6F7N.js.map} +0 -0
@@ -1,7 +0,0 @@
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'\n\n/** Fetches data for sc app */\nexport class SCModel {\n\tapp: AppApi\n\tid?: string\n\tstate: SCFormattedState\n\n\tconstructor(sc: SCViewer) {\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: state.termfilter.filter || null,\n\t\t\tfilter0: state.termfilter.filter0 || null\n\t\t}\n\t\treturn await dofetch3('termdb/singlecellSamples', { body })\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 })\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/** 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 })\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\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 is sample and is hardcoded\n\t\tconst columns: TableColumn[] = [{ label: plotConfig.settings.sc.columns.sample, 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\n\t\t\t\t\tif (this.state.vocab.dslabel == 'GDC')\n\t\t\t\t\t\trow.push({ value: exp.experimentID, url: `https://portal.gdc.cancer.gov/files/${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 { SCDom } from '../SCTypes'\n\n/** Handles the interactivity from the view */\nexport class SCInteractions {\n\tapp: AppApi\n\tdom: SCDom\n\tid: string\n\tmodel: SCModel\n\n\tconstructor(sc: SCViewer) {\n\t\tthis.app = sc.app\n\t\tthis.dom = sc.dom\n\t\tthis.id = sc.id\n\t\tthis.model = sc.model\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 item in the plot settings */\n\tasync updateItem(item) {\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\ttoggleLoading(on: boolean) {\n\t\tif (on) {\n\t\t\tthis.dom.loading.selectAll('*').remove()\n\t\t\tthis.dom.loading\n\t\t\t\t.style('display', 'block')\n\t\t\t\t.append('div')\n\t\t\t\t.style('position', 'relative')\n\t\t\t\t.style('top', '50%')\n\t\t\t\t.append('span')\n\t\t\t\t.attr('class', 'sjpp-spinner')\n\t\t\tthis.dom.loading.style('display', '')\n\t\t} else {\n\t\t\tthis.dom.loading.selectAll('.sjpp-spinner').remove()\n\t\t\tthis.dom.loading.style('display', 'none')\n\t\t}\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' ? 'sID' : key === 'experiment' ? 'eID' : key\n\t\t\titem[key] = r.value\n\t\t\tif (r.elemId == 'isMetaResult') item.isMetaResult = true\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 { SINGLECELL_CELLTYPE, SINGLECELL_GENE_EXPRESSION, TermTypeGroups } from '#shared/terms.js'\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\tscctTerms?: 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.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\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: `${isMeta ? '' : 'Sample: '}${this.item!.sID}`,\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 = `${isMeta ? '' : 'Sample: '}${this.item!.sID}`\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}\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: `${isMeta ? '' : 'Sample: '}${this.item!.sID}`,\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)\n\t\treturn btns\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: `${isMeta ? '' : 'Sample: '}${this.item.sID}`,\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\tconfig.colorTW = await this.makeScctTW(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 makeScctTW(item: { sID: string; eID: string }, plot: any) {\n\t\tconst colorColName = plot.colorColumns[0].name\n\t\tconst savedTerm = this.scctTerms?.find(t => t.name == colorColName && t.plot == plot.name)\n\t\tif (!savedTerm)\n\t\t\tthrow new Error(\n\t\t\t\t`No term found for colorColumn=${colorColName} in .termType2terms.[TermTypeGroups.SINGLECELL_CELLTYPE] for plot ${plot.name}`\n\t\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/** Repeat the destory from the close button, as mass/app.ts\n\t\t * cannot remove components from within a parent plot */\n\t\tfor (const plotId of Object.keys(sc.components.plots)) {\n\t\t\tif (!activeSubplots.has(plotId)) {\n\t\t\t\tthis.removeSandbox(plotId, sc)\n\t\t\t}\n\t\t}\n\n\t\tfor (const subplot of subplots) {\n\t\t\tconst key = this.getKey(subplot)\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\tconst activeSubplots = new Set(subplots.map(s => s.id))\n\n\t\t// Remove components that are no longer active\n\t\tfor (const plotId of Object.keys(sc.components.plots)) {\n\t\t\tif (!activeSubplots.has(plotId)) {\n\t\t\t\tsc.subplotManager.removeSubplot(plotId)\n\t\t\t\tdetached.delete(plotId)\n\t\t\t}\n\t\t}\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)\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): string | undefined {\n\t\tif (this.groupBy === 'none') return 'none'\n\t\tif (this.groupBy === 'sample') return this.getSampleId(subplot)\n\t\treturn this.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\tgetPlotName(subplot: any): string {\n\t\tlet plotName = subplot?.plotName || subplot?.singleCellPlot?.name\n\t\tif (!plotName) {\n\t\t\t/** Harcoding logic for some transient and parent plots for now. May consider\n\t\t\t * adding to the config if this becomes more complex. Must weight against\n\t\t\t * adding unnecessary complexity to the config for edge cases though.*/\n\t\t\tif (subplot.chartType === 'dictionary') plotName = 'Summary'\n\t\t\telse if (subplot.chartType === 'summary') plotName = 'Summary'\n\t\t\telse if (subplot.chartType === 'GeneExpInput') plotName = 'Gene expression'\n\t\t\telse if (subplot?.term?.term?.plot) plotName = subplot.term.term.plot\n\t\t}\n\t\treturn plotName\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 projectText = item?.['project id'] ? `Project: ${item['project id']}` : ''\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\tonClose: () => {\n\t\t\t\tthis.removeSandbox(subplot.id, sc)\n\t\t\t}\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, sc, 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, sc: SCViewer, _key?: string) {\n\t\tconst key = _key || this.plotId2Key.get(plotId)\n\t\tif (!key) return\n\t\tthis.sections[key].sandboxes[plotId].remove()\n\t\tdelete this.sections[key].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 = ['none', 'sample', 'plot'] 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// import type { SingleCellDataGdc, SingleCellDataNative } from '#types'\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\n\tconstructor(sc: SCViewer) {\n\t\tthis.sc = sc\n\t\tthis.dom = sc.dom\n\t\tthis.interactions = sc.interactions\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\tthis.dom.controlsDiv.style('padding', '10px')\n\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.dom.controlsDiv\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 plots by:')\n\t\tconst optionsDiv = this.dom.controlsDiv.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\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\n\tconstructor(opts) {\n\t\tthis.type = DynamicSubplot.type\n\t\tthis.opts = opts\n\t\tthis.app = opts.app\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.opts.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\tthis.dom.holder.app_div.selectAll('*').remove()\n\t\tthis.dom.holder.app_div.remove()\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.initSubplot(subplot)\n\t\t}\n\n\t\treturn this.getActiveSubplotsFlat()\n\t}\n\n\tinitSubplot(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\tlet plotName = subplot?.plotName || subplot?.singleCellPlot?.name\n\t\tif (!plotName) {\n\t\t\tif (subplot.chartType === 'dictionary') plotName = 'Summary'\n\t\t\telse if (subplot.chartType === 'summary') plotName = 'Summary'\n\t\t\telse if (subplot.chartType === 'GeneExpInput') plotName = 'Gene expression'\n\t\t\telse if (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 } 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'\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: any) {\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) opts.header.html(`SINGLE CELL`).style('font-size', '0.9em')\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.interactions = new SCInteractions(this)\n\t\tthis.viewModel = new SCViewModel(this.app, this.itemColumns)\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\tthis.interactions.toggleLoading(true)\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\tthis.interactions.toggleLoading(false)\n\t\t\t\tthis.app.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\tthis.interactions.toggleLoading(false)\n\t\t\t\t\tthis.app.printError(sampleData?.error || 'No data found for this sample')\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tdata = sampleData\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\tthis.app.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\tthis.interactions.toggleLoading(false)\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
- }