@sjcrh/proteinpaint-client 2.192.0 → 2.193.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 (903) hide show
  1. package/dist/2dmaf-US2ZAJJJ.js +1373 -0
  2. package/dist/AIProjectAdmin-QQO2PNAJ.js +958 -0
  3. package/dist/AppHeader-UKB344GC.js +835 -0
  4. package/dist/BoxPlot-JEBLRKBY.js +1217 -0
  5. package/dist/CorrelationVolcano-J3IFVSZB.js +619 -0
  6. package/dist/DE-PAPJP6AH.js +95 -0
  7. package/dist/DEinput-YON466QQ.js +301 -0
  8. package/dist/DifferentialAnalysis-DEUODXGG.js +245 -0
  9. package/dist/Disco-OZM4S7HF.js +3297 -0
  10. package/dist/Disco.UI-VIHYJGYU.js +249 -0
  11. package/dist/DmrPlot-DSELMC4E.js +642 -0
  12. package/dist/GB-MUPI6RL5.js +1151 -0
  13. package/dist/GB-MUPI6RL5.js.map +7 -0
  14. package/dist/GeneExpInput-3AQEPTFZ.js +367 -0
  15. package/dist/HicApp-BP7PSXY2.js +2250 -0
  16. package/dist/NumBinaryEditor-CHWQT445.js +271 -0
  17. package/dist/NumBinaryEditor.unit.spec-MXRNK7XH.js +286 -0
  18. package/dist/NumContEditor-XS3RA7GY.js +109 -0
  19. package/dist/NumContEditor.unit.spec-662MHSP4.js +169 -0
  20. package/dist/NumCustomBinEditor-LUVIAXMZ.js +38 -0
  21. package/dist/NumCustomBinEditor.unit.spec-3D3GY3F4.js +284 -0
  22. package/dist/NumDiscreteEditor-24W2A5IN.js +179 -0
  23. package/dist/NumDiscreteEditor.unit.spec-B5T42Z5S.js +202 -0
  24. package/dist/NumRegularBinEditor-AING4HZ5.js +38 -0
  25. package/dist/NumRegularBinEditor.unit.spec-UKSVZH2S.js +227 -0
  26. package/dist/NumSplineEditor-54KNKHJX.js +198 -0
  27. package/dist/NumSplineEditor.unit.spec-5FTST3Y5.js +199 -0
  28. package/dist/NumericDensity-C7DQZ5Q5.js +38 -0
  29. package/dist/NumericDensity.unit.spec-HV6SD3ZS.js +221 -0
  30. package/dist/NumericHandler-FV3L23EC.js +39 -0
  31. package/dist/NumericHandler.unit.spec-E72DXVBB.js +219 -0
  32. package/dist/ProteomeInput-3XTK74SN.js +396 -0
  33. package/dist/RunChart2-X5FBZVRX.js +758 -0
  34. package/dist/SC-WE5DG2CQ.js +1127 -0
  35. package/dist/SC-WE5DG2CQ.js.map +7 -0
  36. package/dist/Volcano-2USCTLKO.js +1379 -0
  37. package/dist/WSIViewer-U6VSJUFF.js +48562 -0
  38. package/dist/WsiSamplesPlot-VIKSG63U.js +165 -0
  39. package/dist/adSandbox-VXUJGPD3.js +38 -0
  40. package/dist/animatedBubbleChart-4P7XLKSB.js +555 -0
  41. package/dist/app-KHZT2BVF.js +49 -0
  42. package/dist/app-XLYH3YPL.js +37 -0
  43. package/dist/app.js +15 -15
  44. package/dist/bam-C23ZARYE.js +860 -0
  45. package/dist/barchart-KGXLYEIP.js +47 -0
  46. package/dist/barchart.data-7OI5GZZ6.js +22 -0
  47. package/dist/barchart.events-3KDNIFBG.js +47 -0
  48. package/dist/barchart.integration.spec-OQYY54AQ.js +2010 -0
  49. package/dist/barchart.integration.spec-OQYY54AQ.js.map +7 -0
  50. package/dist/barchart2-AT5FXOUY.js +314 -0
  51. package/dist/block-TCWYUB4R.js +6226 -0
  52. package/dist/block.init-7FHXQJNE.js +38 -0
  53. package/dist/block.mds.expressionrank-UGZQK7Z3.js +359 -0
  54. package/dist/block.mds.geneboxplot-2CQLB4YN.js +828 -0
  55. package/dist/block.mds.junction-JHPHWVOS.js +1545 -0
  56. package/dist/block.mds.svcnv-E7P2SVKK.js +6801 -0
  57. package/dist/block.svg-MVRR3C6V.js +164 -0
  58. package/dist/block.tk.aicheck-KX46G4TR.js +283 -0
  59. package/dist/block.tk.ase-WMXI47BF.js +365 -0
  60. package/dist/block.tk.bam-KFEGVEQQ.js +1906 -0
  61. package/dist/block.tk.bedgraphdot-P4DBCWFK.js +384 -0
  62. package/dist/block.tk.bigwig.ui-WJPH2Z7F.js +212 -0
  63. package/dist/block.tk.hicstraw-RSD6I2NX.js +823 -0
  64. package/dist/block.tk.junction-VZS2DEDO.js +2364 -0
  65. package/dist/block.tk.junction.textmatrixui-UCWGHZDI.js +199 -0
  66. package/dist/block.tk.ld-ERSIIBM2.js +99 -0
  67. package/dist/block.tk.menu-2ZNXE7CE.js +1029 -0
  68. package/dist/block.tk.pgv-EJLACCFR.js +944 -0
  69. package/dist/brainImaging-BMZJY6OT.js +423 -0
  70. package/dist/brainRegions-RZEBXPAS.js +221 -0
  71. package/dist/bubbleHeatmap-ERJFMLPK.js +383 -0
  72. package/dist/bubbleHeatmap-ERJFMLPK.js.map +7 -0
  73. package/dist/chunk-27FPMFP2.js +54 -0
  74. package/dist/chunk-3LYZMOLO.js +58 -0
  75. package/dist/chunk-455XZIIA.js +222 -0
  76. package/dist/chunk-474DTKP7.js +263 -0
  77. package/dist/chunk-4AP3O3JW.js +226 -0
  78. package/dist/chunk-4JWN7E7Q.js +117 -0
  79. package/dist/chunk-55MOHL3P.js +158 -0
  80. package/dist/chunk-5CR24RTX.js +381 -0
  81. package/dist/chunk-5QTJUPFS.js +26 -0
  82. package/dist/chunk-5TJQ6633.js +291 -0
  83. package/dist/chunk-5X5LI5YM.js +254 -0
  84. package/dist/chunk-6G4YOMWW.js +1825 -0
  85. package/dist/chunk-6SCBPP4C.js +95 -0
  86. package/dist/chunk-6YVEYTNH.js +4269 -0
  87. package/dist/chunk-73R5BVCY.js +5067 -0
  88. package/dist/chunk-73R5BVCY.js.map +7 -0
  89. package/dist/chunk-74XVBQF7.js +55 -0
  90. package/dist/chunk-7I3LST7R.js +272 -0
  91. package/dist/chunk-7KRS7L4U.js +1443 -0
  92. package/dist/chunk-ATUYZWHV.js +1289 -0
  93. package/dist/chunk-B6U3EDAF.js +448 -0
  94. package/dist/chunk-B6U3EDAF.js.map +7 -0
  95. package/dist/chunk-BO47H3VP.js +477 -0
  96. package/dist/chunk-BOO4W7WD.js +482 -0
  97. package/dist/chunk-C6YT5EM2.js +217 -0
  98. package/dist/chunk-CDUNE45Q.js +534 -0
  99. package/dist/chunk-CLN7ANNL.js +216 -0
  100. package/dist/chunk-CLNSNNQU.js +302 -0
  101. package/dist/chunk-COYULNJF.js +119 -0
  102. package/dist/chunk-DBFKUPM6.js +1275 -0
  103. package/dist/chunk-DNVSEW6P.js +170 -0
  104. package/dist/chunk-E6XLLQCG.js +299 -0
  105. package/dist/chunk-E6XLLQCG.js.map +7 -0
  106. package/dist/chunk-EC3SKPQT.js +446 -0
  107. package/dist/chunk-EDXQKDVQ.js +368 -0
  108. package/dist/chunk-EY253UB7.js +448 -0
  109. package/dist/chunk-FABY3ISP.js +176 -0
  110. package/dist/chunk-FOPHIWFD.js +100 -0
  111. package/dist/chunk-FVX76DZS.js +203 -0
  112. package/dist/chunk-FXGE233W.js +2681 -0
  113. package/dist/chunk-GBXX3AHJ.js +343 -0
  114. package/dist/chunk-GVCQGWN7.js +34 -0
  115. package/dist/chunk-HXNUQOGN.js +234 -0
  116. package/dist/chunk-HXZSSHEB.js +37 -0
  117. package/dist/chunk-I73KUUYG.js +287 -0
  118. package/dist/chunk-IKDWQJZE.js +736 -0
  119. package/dist/chunk-IVXCWCKS.js +317 -0
  120. package/dist/chunk-IVXCWCKS.js.map +7 -0
  121. package/dist/chunk-JEZUPG4J.js +617 -0
  122. package/dist/chunk-JWHFMFF2.js +142 -0
  123. package/dist/chunk-K3OJJZCQ.js +230 -0
  124. package/dist/chunk-KM4JBR26.js +815 -0
  125. package/dist/chunk-KNOFEVOJ.js +54 -0
  126. package/dist/chunk-L7VDSIM7.js +20881 -0
  127. package/dist/chunk-L7VDSIM7.js.map +7 -0
  128. package/dist/chunk-LLX3NKB4.js +148 -0
  129. package/dist/chunk-LSWU6EAQ.js +31 -0
  130. package/dist/chunk-MQJVDIQK.js +2786 -0
  131. package/dist/chunk-N25ENPO3.js +14 -0
  132. package/dist/chunk-N3JT3KCV.js +399 -0
  133. package/dist/chunk-N6QEVQZV.js +194 -0
  134. package/dist/chunk-NJDW6ZQP.js +102 -0
  135. package/dist/chunk-NLQQIVTC.js +276 -0
  136. package/dist/chunk-NU2W6B7I.js +833 -0
  137. package/dist/chunk-OR43PGBV.js +98 -0
  138. package/dist/chunk-PWUERAAF.js +182 -0
  139. package/dist/chunk-PXCFA4ZQ.js +2327 -0
  140. package/dist/chunk-QSEGY3U5.js +129 -0
  141. package/dist/chunk-SC6IPDJR.js +6364 -0
  142. package/dist/chunk-SDMOLIEU.js +1205 -0
  143. package/dist/chunk-T46LHXJW.js +283 -0
  144. package/dist/chunk-UDL2DEBB.js +50 -0
  145. package/dist/chunk-UXDVUCXU.js +190 -0
  146. package/dist/chunk-UXDVUCXU.js.map +7 -0
  147. package/dist/chunk-VDIVDU3T.js +386 -0
  148. package/dist/chunk-VRLC7DAU.js +2833 -0
  149. package/dist/chunk-VRLC7DAU.js.map +7 -0
  150. package/dist/chunk-XQSQQSGB.js +1102 -0
  151. package/dist/chunk-XVXAQ3FI.js +1943 -0
  152. package/dist/chunk-Y45JIQ5Y.js +1219 -0
  153. package/dist/chunk-Y45JIQ5Y.js.map +7 -0
  154. package/dist/chunk-YQMENK5H.js +102 -0
  155. package/dist/chunk-ZUC4XNWU.js +514 -0
  156. package/dist/condition-ZPFBPMEZ.js +332 -0
  157. package/dist/controls-LIVMV2GV.js +41 -0
  158. package/dist/controls.config-2EOMBN5E.js +39 -0
  159. package/dist/correlation-D6GAPOP5.js +102 -0
  160. package/dist/cuminc-GPFDRNUP.js +1149 -0
  161. package/dist/cuminc.integration.spec-V4JYKLA6.js +678 -0
  162. package/dist/customdata.inputui-DSEUS3CT.js +289 -0
  163. package/dist/dataDownload-KT6K3M7Q.js +330 -0
  164. package/dist/dataDownload.integration.spec-VEX2RTSA.js +193 -0
  165. package/dist/databrowser.ui-VJKNMIXA.js +433 -0
  166. package/dist/dictionary-B27BMR5H.js +118 -0
  167. package/dist/dnaMethylation-BWQGUXVR.js +38 -0
  168. package/dist/dnaMethylation.integration.spec-YMGT2HYZ.js +203 -0
  169. package/dist/dofetch-BMSZZAAQ.js +51 -0
  170. package/dist/e2pca-KSY4DP53.js +350 -0
  171. package/dist/ep-4PAYGMWK.js +1256 -0
  172. package/dist/expclust.gdc.spec-XXFP2HHE.js +307 -0
  173. package/dist/facet-VCJQ7QPE.js +521 -0
  174. package/dist/forms2-IUD2SNOQ.js +539 -0
  175. package/dist/gb-JDH242LG.js +88 -0
  176. package/dist/geneExpClustering-L23JB7XA.js +249 -0
  177. package/dist/geneExpression-P2ERCRXO.js +313 -0
  178. package/dist/geneExpression-QGPVFAN4.js +38 -0
  179. package/dist/geneExpression.unit.spec-6BQBM6VL.js +102 -0
  180. package/dist/geneORA-XIMJP665.js +278 -0
  181. package/dist/geneRanking-AJH5G22J.js +551 -0
  182. package/dist/geneVariant-AUUZ7S2B.js +41 -0
  183. package/dist/geneVariant-H6BGRRON.js +39 -0
  184. package/dist/geneVariant.integration.spec-FRCH6VI4.js +198 -0
  185. package/dist/genefusion.ui-AAJ37VFA.js +309 -0
  186. package/dist/geneset-5ARBBUYH.js +208 -0
  187. package/dist/genomeBrowser.spec-RV7YBSMZ.js +281 -0
  188. package/dist/grin2-4MYLICII.js +75 -0
  189. package/dist/grin2-4MYLICII.js.map +7 -0
  190. package/dist/grin2-RBK4NI6W.js +967 -0
  191. package/dist/grin2-RBK4NI6W.js.map +7 -0
  192. package/dist/gsea-XUMCVLFK.js +47 -0
  193. package/dist/hierCluster-HXOTNMC5.js +63 -0
  194. package/dist/hierCluster-PEDY7OTZ.js +59 -0
  195. package/dist/hierCluster.config-RKYCGNWW.js +40 -0
  196. package/dist/hierCluster.integration.spec-YKMAT7UU.js +395 -0
  197. package/dist/hierCluster.interactivity-LPTHVWHR.js +54 -0
  198. package/dist/hierCluster.renderers-4XWKHCNW.js +21 -0
  199. package/dist/imagePlot-3DF7ZH3U.js +163 -0
  200. package/dist/importPlot-N74SV3TL.js +8 -0
  201. package/dist/isoformExpression-FU7Y4OGU.js +40 -0
  202. package/dist/isoformExpression.unit.spec-BLQDKV37.js +208 -0
  203. package/dist/launch.adhoc-Y35FZV6H.js +42 -0
  204. package/dist/leftlabel.sample-ERJGAYTF.js +264 -0
  205. package/dist/leftlabel.sample-ERJGAYTF.js.map +7 -0
  206. package/dist/lollipop-DU37Q5E2.js +171 -0
  207. package/dist/maf-NRLSNDOT.js +452 -0
  208. package/dist/maftimeline-GRXGOOSJ.js +593 -0
  209. package/dist/matrix-G3BULZ7Y.js +58 -0
  210. package/dist/matrix-TCTX26A4.js +63 -0
  211. package/dist/matrix.cells-ED6RS5EC.js +28 -0
  212. package/dist/matrix.config-QHO2YNOT.js +41 -0
  213. package/dist/matrix.data-KQFMXWRX.js +25 -0
  214. package/dist/matrix.groups-RE74EFLY.js +27 -0
  215. package/dist/matrix.integration.spec-Y4FCZ2Q2.js +3072 -0
  216. package/dist/matrix.interactivity-3DW5WAM3.js +42 -0
  217. package/dist/matrix.layout-W57D765I.js +44 -0
  218. package/dist/matrix.legend-ZST44PIB.js +22 -0
  219. package/dist/matrix.renderers-NFRKXO7Y.js +38 -0
  220. package/dist/matrix.serieses-6ZKTFVWY.js +21 -0
  221. package/dist/matrix.sort-2UE47IOC.js +27 -0
  222. package/dist/matrix.sort.unit.spec-5CMWEXPE.js +472 -0
  223. package/dist/matrix.sorterUi-WC2YX7S7.js +18 -0
  224. package/dist/matrix.sorterUi.unit.spec-Y2HXWHJN.js +342 -0
  225. package/dist/mavb-BI4XKI5P.js +732 -0
  226. package/dist/mds.fimo-UJYESPNC.js +518 -0
  227. package/dist/mds.samplescatterplot-JKU5B4QR.js +1550 -0
  228. package/dist/mds.survivalplot-OP7Y4D3L.js +483 -0
  229. package/dist/numericDictTermCluster-DRIEJJSP.js +72 -0
  230. package/dist/oncomatrix-A3IE47HV.js +295 -0
  231. package/dist/oncomatrix.spec-TDWB2ROF.js +448 -0
  232. package/dist/plot.2dvaf-XY34TDSM.js +377 -0
  233. package/dist/plot.app-WRCBLYGO.js +41 -0
  234. package/dist/plot.barplot-RXGOUNHM.js +102 -0
  235. package/dist/plot.boxplot-GBZGSS3D.js +152 -0
  236. package/dist/plot.brainImaging-DYPKMNHL.js +51 -0
  237. package/dist/plot.disco-5K2SCKJ4.js +102 -0
  238. package/dist/plot.dzi-THJIFHIS.js +33 -0
  239. package/dist/plot.ssgq-FSIUIV3A.js +139 -0
  240. package/dist/plot.vaf2cov-HP6KEBVJ.js +259 -0
  241. package/dist/plot.wsi-MR6JMOXW.js +36 -0
  242. package/dist/polar2-IT3OF5DX.js +231 -0
  243. package/dist/profileForms-XXGJVF2T.js +446 -0
  244. package/dist/profilePlot-J2C35OEY.js +54 -0
  245. package/dist/proteinView-7FDCILPH.js +1556 -0
  246. package/dist/qualitative-N7S2JHZM.js +43 -0
  247. package/dist/radar2-CDDOQGQX.js +326 -0
  248. package/dist/radarFacility2-ZQTHO2ON.js +334 -0
  249. package/dist/regression-PBGAMZAV.js +56 -0
  250. package/dist/regression.inputs-54E5YKI4.js +48 -0
  251. package/dist/regression.inputs.term-52MBTMVM.js +48 -0
  252. package/dist/regression.inputs.values.table-F3FOAYFV.js +45 -0
  253. package/dist/regression.integration.spec-M4RPJUE4.js +784 -0
  254. package/dist/regression.results-JOK6I2ZD.js +40 -0
  255. package/dist/regression.spec-O4HZB2HQ.js +708 -0
  256. package/dist/report-BDDTM7SV.js +222 -0
  257. package/dist/sampleScatter.spec-272GLYEK.js +202 -0
  258. package/dist/sampleView-E6OHEEP4.js +48 -0
  259. package/dist/samplelst-3LNF3DBG.js +111 -0
  260. package/dist/samplematrix-HL445X7I.js +2198 -0
  261. package/dist/sc-4LELHVIS.js +86 -0
  262. package/dist/scatter-IZIZURQD.js +851 -0
  263. package/dist/scatter.integration.spec-BBEWMA7M.js +1206 -0
  264. package/dist/selectGenomeWithTklst-5LQGT4Z7.js +134 -0
  265. package/dist/singleCellCellType-T3ZT64EK.js +38 -0
  266. package/dist/singleCellCellType.unit.spec-AE4IAHOF.js +160 -0
  267. package/dist/singleCellGeneExpression-SRJXSDEB.js +38 -0
  268. package/dist/singleCellGeneExpression.unit.spec-EPL73UUO.js +153 -0
  269. package/dist/singleCellPlot-P2BHFTYZ.js +54 -0
  270. package/dist/singlecell-32SSD7VN.js +1572 -0
  271. package/dist/singlecell-7KRD5DP7.js +86 -0
  272. package/dist/snp-LE5R377N.js +38 -0
  273. package/dist/snp.unit.spec-UY6KQ5NJ.js +176 -0
  274. package/dist/snplocus-CP34ABUJ.js +208 -0
  275. package/dist/spliceevent.a53ss.diagram-JWLWQDNJ.js +151 -0
  276. package/dist/spliceevent.exonskip.diagram-C5526P7P.js +277 -0
  277. package/dist/spliceevent.noeventdiagram-352M63YB.js +460 -0
  278. package/dist/ssGSEA-BFTCECV3.js +38 -0
  279. package/dist/ssGSEA.unit.spec-4OUCKRDQ.js +88 -0
  280. package/dist/summarizeCnvGeneexp-Y3AWFIZA.js +163 -0
  281. package/dist/summarizeGeneexpSurvival-U5JSPG22.js +108 -0
  282. package/dist/summarizeMutationCnv-KCOVQEBC.js +164 -0
  283. package/dist/summarizeMutationDiagnosis-EQXEQABW.js +40 -0
  284. package/dist/summarizeMutationSurvival-4VGLG4SC.js +99 -0
  285. package/dist/summary-DXYCBNI4.js +49 -0
  286. package/dist/summary.integration.spec-MZTJISLP.js +414 -0
  287. package/dist/summaryInput-5Z3XVIL6.js +235 -0
  288. package/dist/sunburst-WVSQJYP2.js +284 -0
  289. package/dist/survival-3R3J2JBE.js +46 -0
  290. package/dist/survival-XQWFVGCJ.js +58 -0
  291. package/dist/survival.integration.spec-EBDPIBYM.js +821 -0
  292. package/dist/svgraph-SY2HVMYL.js +1387 -0
  293. package/dist/svmr-TIIMFKG7.js +3842 -0
  294. package/dist/table-5RFTXIQL.js +200 -0
  295. package/dist/termCollection-23QXTZDN.js +38 -0
  296. package/dist/termCollection-7KXABWVW.js +179 -0
  297. package/dist/termCollection.unit.spec-4AN2Z4PQ.js +208 -0
  298. package/dist/tk-WW6PJGPQ.js +46 -0
  299. package/dist/tp.ui-S5PO3MPH.js +1459 -0
  300. package/dist/tvs.dt-O7LUM5TK.js +39 -0
  301. package/dist/tvs.dtcnv.categorical-2OUFOD3W.js +40 -0
  302. package/dist/tvs.dtcnv.continuous-NOOUY5SZ.js +72 -0
  303. package/dist/tvs.dtfusion-KXQMP3UF.js +40 -0
  304. package/dist/tvs.dtsnvindel-PWHFTWZU.js +40 -0
  305. package/dist/tvs.dtsv-25FLS572.js +40 -0
  306. package/dist/tvs.samplelst-FLXNJFIV.js +104 -0
  307. package/dist/tvs.termCollection-PSVOMJE4.js +159 -0
  308. package/dist/violin-SWMEFWRA.js +46 -0
  309. package/dist/violin.integration.spec-6EQ6GC2N.js +1425 -0
  310. package/dist/violin.interactivity-WBIWPLSM.js +38 -0
  311. package/dist/violin.renderer-3WARZUOH.js +40 -0
  312. package/dist/vocabulary-WLHYHDX7.js +41 -0
  313. package/package.json +2 -2
  314. package/dist/2dmaf-BNMEUJVM.js +0 -1373
  315. package/dist/AIProjectAdmin-AEXQY5LY.js +0 -958
  316. package/dist/AppHeader-RXDJBHXZ.js +0 -835
  317. package/dist/BoxPlot-HDP3SIGU.js +0 -1217
  318. package/dist/CorrelationVolcano-V2E566XL.js +0 -619
  319. package/dist/DE-7YUZSW4E.js +0 -95
  320. package/dist/DEinput-P2HOQC4Z.js +0 -301
  321. package/dist/DifferentialAnalysis-2Z6BHS7A.js +0 -245
  322. package/dist/Disco-ZLC54X7T.js +0 -3297
  323. package/dist/Disco.UI-LXJJYQVV.js +0 -249
  324. package/dist/DmrPlot-OEJRGNI3.js +0 -642
  325. package/dist/GB-2GHDD3MW.js +0 -1130
  326. package/dist/GB-2GHDD3MW.js.map +0 -7
  327. package/dist/GeneExpInput-PWLPDLYT.js +0 -367
  328. package/dist/HicApp-CAYC4DPO.js +0 -2250
  329. package/dist/NumBinaryEditor-EUOYSGPM.js +0 -271
  330. package/dist/NumBinaryEditor.unit.spec-5B3W4B4F.js +0 -286
  331. package/dist/NumContEditor-7KK6CIB3.js +0 -109
  332. package/dist/NumContEditor.unit.spec-IMKGVYFZ.js +0 -169
  333. package/dist/NumCustomBinEditor-PDAF6I7B.js +0 -38
  334. package/dist/NumCustomBinEditor.unit.spec-IU3DPECJ.js +0 -284
  335. package/dist/NumDiscreteEditor-YTKUHG6Z.js +0 -179
  336. package/dist/NumDiscreteEditor.unit.spec-FUBS7Z7Z.js +0 -202
  337. package/dist/NumRegularBinEditor-LU3KLBLY.js +0 -38
  338. package/dist/NumRegularBinEditor.unit.spec-2BKOHI7L.js +0 -227
  339. package/dist/NumSplineEditor-56RJ2HT2.js +0 -198
  340. package/dist/NumSplineEditor.unit.spec-PW6VUUBZ.js +0 -199
  341. package/dist/NumericDensity-EB4H54EF.js +0 -38
  342. package/dist/NumericDensity.unit.spec-LSEM4OEY.js +0 -221
  343. package/dist/NumericHandler-VGPDXP35.js +0 -39
  344. package/dist/NumericHandler.unit.spec-NR3F7XHV.js +0 -219
  345. package/dist/ProteomeInput-AUXWUIWK.js +0 -396
  346. package/dist/RunChart2-SQ6TFOHD.js +0 -758
  347. package/dist/SC-OWJ6LYIW.js +0 -1124
  348. package/dist/SC-OWJ6LYIW.js.map +0 -7
  349. package/dist/Volcano-XHDH6UN7.js +0 -1379
  350. package/dist/WSIViewer-WT2QV747.js +0 -48562
  351. package/dist/WsiSamplesPlot-YUOAWG2A.js +0 -165
  352. package/dist/adSandbox-VMMAL22L.js +0 -38
  353. package/dist/animatedBubbleChart-Q6Z5W2UL.js +0 -555
  354. package/dist/app-FX3KZ67X.js +0 -37
  355. package/dist/app-X7ZYEOZN.js +0 -49
  356. package/dist/bam-ZYLH4U5R.js +0 -860
  357. package/dist/barchart-MXSPTKV4.js +0 -47
  358. package/dist/barchart.data-ZWF6EVJH.js +0 -22
  359. package/dist/barchart.events-XON2ANOC.js +0 -47
  360. package/dist/barchart.integration.spec-PJIENJGT.js +0 -1980
  361. package/dist/barchart.integration.spec-PJIENJGT.js.map +0 -7
  362. package/dist/barchart2-HIKBGSSE.js +0 -314
  363. package/dist/block-EGPYVWNP.js +0 -6226
  364. package/dist/block.init-IJBRPZNM.js +0 -38
  365. package/dist/block.mds.expressionrank-3DANCP7E.js +0 -359
  366. package/dist/block.mds.geneboxplot-CRGSCZMG.js +0 -828
  367. package/dist/block.mds.junction-4UIH2ZYN.js +0 -1545
  368. package/dist/block.mds.svcnv-NF4UIRR2.js +0 -6801
  369. package/dist/block.svg-AIZ47JCQ.js +0 -164
  370. package/dist/block.tk.aicheck-7HZFGE63.js +0 -283
  371. package/dist/block.tk.ase-U3VNPZEA.js +0 -365
  372. package/dist/block.tk.bam-4TQ7P2OX.js +0 -1906
  373. package/dist/block.tk.bedgraphdot-MYHKKO6K.js +0 -384
  374. package/dist/block.tk.bigwig.ui-E3YVGIDN.js +0 -212
  375. package/dist/block.tk.hicstraw-Y4XOMG7T.js +0 -823
  376. package/dist/block.tk.junction-T5C7LK6F.js +0 -2364
  377. package/dist/block.tk.junction.textmatrixui-Z3ACCVXH.js +0 -199
  378. package/dist/block.tk.ld-Y5KDA5AU.js +0 -99
  379. package/dist/block.tk.menu-EWRRISDY.js +0 -1029
  380. package/dist/block.tk.pgv-3JYGOZVQ.js +0 -944
  381. package/dist/brainImaging-P3AF3C5N.js +0 -423
  382. package/dist/brainRegions-YA2H2QOI.js +0 -221
  383. package/dist/chunk-2JR7RPB6.js +0 -1825
  384. package/dist/chunk-2U2CP2Y2.js +0 -317
  385. package/dist/chunk-2U2CP2Y2.js.map +0 -7
  386. package/dist/chunk-3BBK6A4X.js +0 -176
  387. package/dist/chunk-3FVIDQOX.js +0 -54
  388. package/dist/chunk-3K2O2NIH.js +0 -446
  389. package/dist/chunk-3RSJU6YM.js +0 -2681
  390. package/dist/chunk-3ZKD6C5S.js +0 -34
  391. package/dist/chunk-46AEH34Z.js +0 -95
  392. package/dist/chunk-4CQVC6XL.js +0 -182
  393. package/dist/chunk-5FXNI724.js +0 -216
  394. package/dist/chunk-6JHIX4RA.js +0 -4269
  395. package/dist/chunk-7PFRBGMN.js +0 -129
  396. package/dist/chunk-7R63MAPC.js +0 -448
  397. package/dist/chunk-A4Z3CI24.js +0 -276
  398. package/dist/chunk-AI2LUQS6.js +0 -119
  399. package/dist/chunk-AJYJW4LX.js +0 -6364
  400. package/dist/chunk-BMS32SNA.js +0 -37
  401. package/dist/chunk-C4BCMAIK.js +0 -188
  402. package/dist/chunk-C4BCMAIK.js.map +0 -7
  403. package/dist/chunk-CJPGYPI3.js +0 -291
  404. package/dist/chunk-CTQH7LQ6.js +0 -31
  405. package/dist/chunk-D5CVYITI.js +0 -203
  406. package/dist/chunk-DMSX5PSO.js +0 -477
  407. package/dist/chunk-E3JRW3T3.js +0 -1102
  408. package/dist/chunk-E574SMCX.js +0 -283
  409. package/dist/chunk-E76O5Z42.js +0 -98
  410. package/dist/chunk-EEW443GL.js +0 -14
  411. package/dist/chunk-EVNMW7BS.js +0 -833
  412. package/dist/chunk-F2WPS7VY.js +0 -1943
  413. package/dist/chunk-FDPWWODM.js +0 -2832
  414. package/dist/chunk-FDPWWODM.js.map +0 -7
  415. package/dist/chunk-FVHUROIJ.js +0 -446
  416. package/dist/chunk-FVHUROIJ.js.map +0 -7
  417. package/dist/chunk-FYFX42YD.js +0 -222
  418. package/dist/chunk-G6RZYGWY.js +0 -386
  419. package/dist/chunk-GTZV2UZV.js +0 -736
  420. package/dist/chunk-H34LAFGH.js +0 -142
  421. package/dist/chunk-I2R5O2XX.js +0 -263
  422. package/dist/chunk-IEYDMN3H.js +0 -26
  423. package/dist/chunk-JWBP4ZZB.js +0 -148
  424. package/dist/chunk-KUZPTJJO.js +0 -20874
  425. package/dist/chunk-KUZPTJJO.js.map +0 -7
  426. package/dist/chunk-KVIH5JPC.js +0 -1275
  427. package/dist/chunk-L5HCOTRF.js +0 -302
  428. package/dist/chunk-LHKDLWG5.js +0 -194
  429. package/dist/chunk-M7UKOCJA.js +0 -234
  430. package/dist/chunk-MHFH66I3.js +0 -1289
  431. package/dist/chunk-MP3DN6JK.js +0 -117
  432. package/dist/chunk-N5OVBS5L.js +0 -2786
  433. package/dist/chunk-NEKAGDTL.js +0 -58
  434. package/dist/chunk-NPCNDM6Y.js +0 -54
  435. package/dist/chunk-NYN2WQN3.js +0 -100
  436. package/dist/chunk-O6WL7USJ.js +0 -343
  437. package/dist/chunk-OH5I6I2D.js +0 -368
  438. package/dist/chunk-PDFCQ7AU.js +0 -5054
  439. package/dist/chunk-PDFCQ7AU.js.map +0 -7
  440. package/dist/chunk-PSJVMAWA.js +0 -294
  441. package/dist/chunk-PSJVMAWA.js.map +0 -7
  442. package/dist/chunk-PTQ774XH.js +0 -514
  443. package/dist/chunk-PXOH4ZN2.js +0 -399
  444. package/dist/chunk-QG4BJUM7.js +0 -102
  445. package/dist/chunk-R7AV73BV.js +0 -617
  446. package/dist/chunk-RITTG5WN.js +0 -158
  447. package/dist/chunk-SMSFTTEO.js +0 -272
  448. package/dist/chunk-TBZKVKR4.js +0 -50
  449. package/dist/chunk-TLTS33EY.js +0 -287
  450. package/dist/chunk-TMM7BWW7.js +0 -381
  451. package/dist/chunk-TTC4MNEM.js +0 -2327
  452. package/dist/chunk-UQ5CDHYF.js +0 -1218
  453. package/dist/chunk-UQ5CDHYF.js.map +0 -7
  454. package/dist/chunk-UXIZYI3X.js +0 -226
  455. package/dist/chunk-VIUATDO2.js +0 -170
  456. package/dist/chunk-VIUDFDN4.js +0 -102
  457. package/dist/chunk-W5OEFZCR.js +0 -254
  458. package/dist/chunk-WXSRK3XR.js +0 -534
  459. package/dist/chunk-XHGMDBTS.js +0 -230
  460. package/dist/chunk-XQ2OBL6R.js +0 -1205
  461. package/dist/chunk-XVGS3QXS.js +0 -55
  462. package/dist/chunk-XYNYQMLH.js +0 -482
  463. package/dist/chunk-Y4JJMUWG.js +0 -217
  464. package/dist/chunk-Z457XQSX.js +0 -815
  465. package/dist/chunk-ZF6HNVYD.js +0 -1444
  466. package/dist/condition-QXTOTGZX.js +0 -332
  467. package/dist/controls-7TDB75LK.js +0 -41
  468. package/dist/controls.config-IBF5ILFP.js +0 -39
  469. package/dist/correlation-M2T5R7CM.js +0 -102
  470. package/dist/cuminc-CAHPKW7W.js +0 -1149
  471. package/dist/cuminc.integration.spec-NNSQGBRI.js +0 -678
  472. package/dist/customdata.inputui-RRTQK7OK.js +0 -289
  473. package/dist/dataDownload-SOUCBKXM.js +0 -330
  474. package/dist/dataDownload.integration.spec-C6TLWSSO.js +0 -193
  475. package/dist/databrowser.ui-KLFEU5QA.js +0 -433
  476. package/dist/dictionary-RUT5VXDD.js +0 -118
  477. package/dist/dnaMethylation-WOKGG33W.js +0 -38
  478. package/dist/dnaMethylation.integration.spec-YUPP42UK.js +0 -203
  479. package/dist/dofetch-V7PLLWSO.js +0 -51
  480. package/dist/e2pca-VT7EM4E3.js +0 -350
  481. package/dist/ep-X6B43UXE.js +0 -1256
  482. package/dist/expclust.gdc.spec-DTBFOXBC.js +0 -307
  483. package/dist/facet-T5ZX7ZGV.js +0 -521
  484. package/dist/forms2-S5OGBFKL.js +0 -539
  485. package/dist/gb-TWXREZIP.js +0 -88
  486. package/dist/geneExpClustering-2G6YDCIN.js +0 -249
  487. package/dist/geneExpression-2A4ZPT7K.js +0 -38
  488. package/dist/geneExpression-ZHQH6SNA.js +0 -313
  489. package/dist/geneExpression.unit.spec-2M223S4P.js +0 -102
  490. package/dist/geneORA-YLIRUMCZ.js +0 -278
  491. package/dist/geneRanking-JDJXNGEC.js +0 -551
  492. package/dist/geneVariant-5ZIOT5BT.js +0 -39
  493. package/dist/geneVariant-GIXIMJ2I.js +0 -41
  494. package/dist/geneVariant.integration.spec-QCROW73S.js +0 -198
  495. package/dist/genefusion.ui-56UQLUKJ.js +0 -309
  496. package/dist/geneset-ACRMGBJO.js +0 -208
  497. package/dist/genomeBrowser.spec-EDILOQON.js +0 -281
  498. package/dist/grin2-5P7CYUT7.js +0 -1560
  499. package/dist/grin2-5P7CYUT7.js.map +0 -7
  500. package/dist/grin2-GNB35CMF.js +0 -871
  501. package/dist/grin2-GNB35CMF.js.map +0 -7
  502. package/dist/gsea-2PQ5HNNT.js +0 -47
  503. package/dist/hierCluster-H5HB7FPW.js +0 -63
  504. package/dist/hierCluster-L3LCP2II.js +0 -59
  505. package/dist/hierCluster.config-6UIJWCND.js +0 -40
  506. package/dist/hierCluster.integration.spec-EVAPT2VF.js +0 -395
  507. package/dist/hierCluster.interactivity-7MW6ZT6O.js +0 -54
  508. package/dist/hierCluster.renderers-F34EVY5J.js +0 -21
  509. package/dist/imagePlot-RSFZ2OKD.js +0 -163
  510. package/dist/importPlot-DQFWY5A7.js +0 -8
  511. package/dist/isoformExpression-2KANPCBH.js +0 -40
  512. package/dist/isoformExpression.unit.spec-6FSMHT4K.js +0 -208
  513. package/dist/launch.adhoc-ZYTIRVIC.js +0 -42
  514. package/dist/leftlabel.sample-66U6MHPN.js +0 -260
  515. package/dist/leftlabel.sample-66U6MHPN.js.map +0 -7
  516. package/dist/lollipop-PJDUFWEY.js +0 -171
  517. package/dist/maf-DLJHCKHJ.js +0 -452
  518. package/dist/maftimeline-NK5QYJMJ.js +0 -593
  519. package/dist/matrix-7BFYR6QL.js +0 -63
  520. package/dist/matrix-USAB2CHO.js +0 -58
  521. package/dist/matrix.cells-OTAXAJ4N.js +0 -28
  522. package/dist/matrix.config-AL4WSFZ7.js +0 -41
  523. package/dist/matrix.data-BDHCSN2G.js +0 -25
  524. package/dist/matrix.groups-MV2D2636.js +0 -27
  525. package/dist/matrix.integration.spec-DESORC2Y.js +0 -3072
  526. package/dist/matrix.interactivity-H7EJW3P2.js +0 -42
  527. package/dist/matrix.layout-7CAS2IBO.js +0 -44
  528. package/dist/matrix.legend-JDVG2JDF.js +0 -22
  529. package/dist/matrix.renderers-PDR5FIBC.js +0 -38
  530. package/dist/matrix.serieses-QVDS5HKK.js +0 -21
  531. package/dist/matrix.sort-HCK4CSTJ.js +0 -27
  532. package/dist/matrix.sort.unit.spec-2GC4E26N.js +0 -472
  533. package/dist/matrix.sorterUi-XGBQOPG4.js +0 -18
  534. package/dist/matrix.sorterUi.unit.spec-BJQKDU2F.js +0 -342
  535. package/dist/mavb-6E6Z4LPK.js +0 -732
  536. package/dist/mds.fimo-5P2TK5U4.js +0 -518
  537. package/dist/mds.samplescatterplot-KLKOD4AS.js +0 -1550
  538. package/dist/mds.survivalplot-SWQCOFIU.js +0 -483
  539. package/dist/numericDictTermCluster-WIVO33AV.js +0 -72
  540. package/dist/oncomatrix-SDUUQZCK.js +0 -295
  541. package/dist/oncomatrix.spec-YGQYIUDT.js +0 -448
  542. package/dist/plot.2dvaf-K53KTP5W.js +0 -377
  543. package/dist/plot.app-FNJVWLPQ.js +0 -41
  544. package/dist/plot.barplot-VTC3N6BR.js +0 -102
  545. package/dist/plot.boxplot-RJFGQSLA.js +0 -152
  546. package/dist/plot.brainImaging-6KVNPPMT.js +0 -51
  547. package/dist/plot.disco-ZFH5RK6B.js +0 -102
  548. package/dist/plot.dzi-IA2SOFUD.js +0 -33
  549. package/dist/plot.ssgq-QARGQVKB.js +0 -139
  550. package/dist/plot.vaf2cov-2JUXYCPG.js +0 -259
  551. package/dist/plot.wsi-C2DULA7U.js +0 -36
  552. package/dist/polar2-3HS3QBU6.js +0 -231
  553. package/dist/profileForms-Y6ZBMZWQ.js +0 -446
  554. package/dist/profilePlot-SVI3QKMD.js +0 -54
  555. package/dist/proteinView-YPFJSBL7.js +0 -1556
  556. package/dist/qualitative-AQFKAZID.js +0 -43
  557. package/dist/radar2-TTQZLARY.js +0 -326
  558. package/dist/radarFacility2-YGS56QUA.js +0 -334
  559. package/dist/regression-DLPBCDZT.js +0 -56
  560. package/dist/regression.inputs-42LY4MEZ.js +0 -48
  561. package/dist/regression.inputs.term-TTUFFPG6.js +0 -48
  562. package/dist/regression.inputs.values.table-CJAPTSMS.js +0 -45
  563. package/dist/regression.integration.spec-UDA26OGS.js +0 -784
  564. package/dist/regression.results-IA3C7SHR.js +0 -40
  565. package/dist/regression.spec-HEXCL3QV.js +0 -708
  566. package/dist/report-4CFOWNPJ.js +0 -222
  567. package/dist/sampleScatter.spec-N6V4BQ5Q.js +0 -202
  568. package/dist/sampleView-CZF7U23I.js +0 -48
  569. package/dist/samplelst-XUGDS5TU.js +0 -111
  570. package/dist/samplematrix-R5PZLZDE.js +0 -2198
  571. package/dist/sc-WTZZA5J5.js +0 -86
  572. package/dist/scatter-EY7HQVCO.js +0 -851
  573. package/dist/scatter.integration.spec-CRMLFO4J.js +0 -1206
  574. package/dist/selectGenomeWithTklst-2S2MXVCI.js +0 -134
  575. package/dist/singleCellCellType-LJWFG7MY.js +0 -38
  576. package/dist/singleCellCellType.unit.spec-RGN2XVUR.js +0 -160
  577. package/dist/singleCellGeneExpression-IW2QXTTU.js +0 -38
  578. package/dist/singleCellGeneExpression.unit.spec-4PO3Q7TM.js +0 -153
  579. package/dist/singleCellPlot-6EZ6JXCM.js +0 -54
  580. package/dist/singlecell-3LFPQ6KO.js +0 -86
  581. package/dist/singlecell-NTTAVVMR.js +0 -1572
  582. package/dist/snp-XB4IBG4Z.js +0 -38
  583. package/dist/snp.unit.spec-HAJPM53L.js +0 -176
  584. package/dist/snplocus-HE6TITSX.js +0 -208
  585. package/dist/spliceevent.a53ss.diagram-TCZMBMD7.js +0 -151
  586. package/dist/spliceevent.exonskip.diagram-VESOF6UC.js +0 -277
  587. package/dist/spliceevent.noeventdiagram-4K7FMO4F.js +0 -460
  588. package/dist/ssGSEA-2XYMX36P.js +0 -38
  589. package/dist/ssGSEA.unit.spec-J36KM2HO.js +0 -88
  590. package/dist/summarizeCnvGeneexp-LYVDZXXD.js +0 -163
  591. package/dist/summarizeGeneexpSurvival-Y52TGAHF.js +0 -108
  592. package/dist/summarizeMutationCnv-6EEJT3PV.js +0 -164
  593. package/dist/summarizeMutationDiagnosis-HZKXHOOQ.js +0 -40
  594. package/dist/summarizeMutationSurvival-TU7TQYFQ.js +0 -99
  595. package/dist/summary-4QQZUAMU.js +0 -49
  596. package/dist/summary.integration.spec-SLIIM4HN.js +0 -414
  597. package/dist/summaryInput-6HROPKCE.js +0 -235
  598. package/dist/sunburst-MBJJPERL.js +0 -284
  599. package/dist/survival-CXLMQSV2.js +0 -58
  600. package/dist/survival-QSL2KDKD.js +0 -46
  601. package/dist/survival.integration.spec-EUAAALVW.js +0 -821
  602. package/dist/svgraph-JM5MHQDX.js +0 -1387
  603. package/dist/svmr-MCMST2FL.js +0 -3842
  604. package/dist/table-MVX3IMAL.js +0 -200
  605. package/dist/termCollection-FZ2SCVA7.js +0 -38
  606. package/dist/termCollection-IGC7REFK.js +0 -179
  607. package/dist/termCollection.unit.spec-VY2EZZIP.js +0 -208
  608. package/dist/tk-5F3TWZ2G.js +0 -46
  609. package/dist/tp.ui-IURWTMAS.js +0 -1459
  610. package/dist/tvs.dt-BPZCFPYK.js +0 -39
  611. package/dist/tvs.dtcnv.categorical-UFS62DTR.js +0 -40
  612. package/dist/tvs.dtcnv.continuous-R6YXNNLA.js +0 -72
  613. package/dist/tvs.dtfusion-FGXXS4XX.js +0 -40
  614. package/dist/tvs.dtsnvindel-DR43K7X3.js +0 -40
  615. package/dist/tvs.dtsv-NO34GIOL.js +0 -40
  616. package/dist/tvs.samplelst-2QP7IV2Y.js +0 -104
  617. package/dist/tvs.termCollection-UEJDG22G.js +0 -159
  618. package/dist/violin-NBZTGGYF.js +0 -46
  619. package/dist/violin.integration.spec-5CLYJSAR.js +0 -1425
  620. package/dist/violin.interactivity-KXVKTT22.js +0 -38
  621. package/dist/violin.renderer-37OF6K7Q.js +0 -40
  622. package/dist/vocabulary-GR6J3VKW.js +0 -41
  623. /package/dist/{2dmaf-BNMEUJVM.js.map → 2dmaf-US2ZAJJJ.js.map} +0 -0
  624. /package/dist/{AIProjectAdmin-AEXQY5LY.js.map → AIProjectAdmin-QQO2PNAJ.js.map} +0 -0
  625. /package/dist/{AppHeader-RXDJBHXZ.js.map → AppHeader-UKB344GC.js.map} +0 -0
  626. /package/dist/{BoxPlot-HDP3SIGU.js.map → BoxPlot-JEBLRKBY.js.map} +0 -0
  627. /package/dist/{CorrelationVolcano-V2E566XL.js.map → CorrelationVolcano-J3IFVSZB.js.map} +0 -0
  628. /package/dist/{DE-7YUZSW4E.js.map → DE-PAPJP6AH.js.map} +0 -0
  629. /package/dist/{DEinput-P2HOQC4Z.js.map → DEinput-YON466QQ.js.map} +0 -0
  630. /package/dist/{DifferentialAnalysis-2Z6BHS7A.js.map → DifferentialAnalysis-DEUODXGG.js.map} +0 -0
  631. /package/dist/{Disco-ZLC54X7T.js.map → Disco-OZM4S7HF.js.map} +0 -0
  632. /package/dist/{Disco.UI-LXJJYQVV.js.map → Disco.UI-VIHYJGYU.js.map} +0 -0
  633. /package/dist/{DmrPlot-OEJRGNI3.js.map → DmrPlot-DSELMC4E.js.map} +0 -0
  634. /package/dist/{GeneExpInput-PWLPDLYT.js.map → GeneExpInput-3AQEPTFZ.js.map} +0 -0
  635. /package/dist/{HicApp-CAYC4DPO.js.map → HicApp-BP7PSXY2.js.map} +0 -0
  636. /package/dist/{NumBinaryEditor-EUOYSGPM.js.map → NumBinaryEditor-CHWQT445.js.map} +0 -0
  637. /package/dist/{NumBinaryEditor.unit.spec-5B3W4B4F.js.map → NumBinaryEditor.unit.spec-MXRNK7XH.js.map} +0 -0
  638. /package/dist/{NumContEditor-7KK6CIB3.js.map → NumContEditor-XS3RA7GY.js.map} +0 -0
  639. /package/dist/{NumContEditor.unit.spec-IMKGVYFZ.js.map → NumContEditor.unit.spec-662MHSP4.js.map} +0 -0
  640. /package/dist/{NumCustomBinEditor-PDAF6I7B.js.map → NumCustomBinEditor-LUVIAXMZ.js.map} +0 -0
  641. /package/dist/{NumCustomBinEditor.unit.spec-IU3DPECJ.js.map → NumCustomBinEditor.unit.spec-3D3GY3F4.js.map} +0 -0
  642. /package/dist/{NumDiscreteEditor-YTKUHG6Z.js.map → NumDiscreteEditor-24W2A5IN.js.map} +0 -0
  643. /package/dist/{NumDiscreteEditor.unit.spec-FUBS7Z7Z.js.map → NumDiscreteEditor.unit.spec-B5T42Z5S.js.map} +0 -0
  644. /package/dist/{NumRegularBinEditor-LU3KLBLY.js.map → NumRegularBinEditor-AING4HZ5.js.map} +0 -0
  645. /package/dist/{NumRegularBinEditor.unit.spec-2BKOHI7L.js.map → NumRegularBinEditor.unit.spec-UKSVZH2S.js.map} +0 -0
  646. /package/dist/{NumSplineEditor-56RJ2HT2.js.map → NumSplineEditor-54KNKHJX.js.map} +0 -0
  647. /package/dist/{NumSplineEditor.unit.spec-PW6VUUBZ.js.map → NumSplineEditor.unit.spec-5FTST3Y5.js.map} +0 -0
  648. /package/dist/{NumericDensity-EB4H54EF.js.map → NumericDensity-C7DQZ5Q5.js.map} +0 -0
  649. /package/dist/{NumericDensity.unit.spec-LSEM4OEY.js.map → NumericDensity.unit.spec-HV6SD3ZS.js.map} +0 -0
  650. /package/dist/{NumericHandler-VGPDXP35.js.map → NumericHandler-FV3L23EC.js.map} +0 -0
  651. /package/dist/{NumericHandler.unit.spec-NR3F7XHV.js.map → NumericHandler.unit.spec-E72DXVBB.js.map} +0 -0
  652. /package/dist/{ProteomeInput-AUXWUIWK.js.map → ProteomeInput-3XTK74SN.js.map} +0 -0
  653. /package/dist/{RunChart2-SQ6TFOHD.js.map → RunChart2-X5FBZVRX.js.map} +0 -0
  654. /package/dist/{Volcano-XHDH6UN7.js.map → Volcano-2USCTLKO.js.map} +0 -0
  655. /package/dist/{WSIViewer-WT2QV747.js.map → WSIViewer-U6VSJUFF.js.map} +0 -0
  656. /package/dist/{WsiSamplesPlot-YUOAWG2A.js.map → WsiSamplesPlot-VIKSG63U.js.map} +0 -0
  657. /package/dist/{adSandbox-VMMAL22L.js.map → adSandbox-VXUJGPD3.js.map} +0 -0
  658. /package/dist/{animatedBubbleChart-Q6Z5W2UL.js.map → animatedBubbleChart-4P7XLKSB.js.map} +0 -0
  659. /package/dist/{app-FX3KZ67X.js.map → app-KHZT2BVF.js.map} +0 -0
  660. /package/dist/{app-X7ZYEOZN.js.map → app-XLYH3YPL.js.map} +0 -0
  661. /package/dist/{bam-ZYLH4U5R.js.map → bam-C23ZARYE.js.map} +0 -0
  662. /package/dist/{barchart-MXSPTKV4.js.map → barchart-KGXLYEIP.js.map} +0 -0
  663. /package/dist/{barchart.data-ZWF6EVJH.js.map → barchart.data-7OI5GZZ6.js.map} +0 -0
  664. /package/dist/{barchart.events-XON2ANOC.js.map → barchart.events-3KDNIFBG.js.map} +0 -0
  665. /package/dist/{barchart2-HIKBGSSE.js.map → barchart2-AT5FXOUY.js.map} +0 -0
  666. /package/dist/{block-EGPYVWNP.js.map → block-TCWYUB4R.js.map} +0 -0
  667. /package/dist/{block.init-IJBRPZNM.js.map → block.init-7FHXQJNE.js.map} +0 -0
  668. /package/dist/{block.mds.expressionrank-3DANCP7E.js.map → block.mds.expressionrank-UGZQK7Z3.js.map} +0 -0
  669. /package/dist/{block.mds.geneboxplot-CRGSCZMG.js.map → block.mds.geneboxplot-2CQLB4YN.js.map} +0 -0
  670. /package/dist/{block.mds.junction-4UIH2ZYN.js.map → block.mds.junction-JHPHWVOS.js.map} +0 -0
  671. /package/dist/{block.mds.svcnv-NF4UIRR2.js.map → block.mds.svcnv-E7P2SVKK.js.map} +0 -0
  672. /package/dist/{block.svg-AIZ47JCQ.js.map → block.svg-MVRR3C6V.js.map} +0 -0
  673. /package/dist/{block.tk.aicheck-7HZFGE63.js.map → block.tk.aicheck-KX46G4TR.js.map} +0 -0
  674. /package/dist/{block.tk.ase-U3VNPZEA.js.map → block.tk.ase-WMXI47BF.js.map} +0 -0
  675. /package/dist/{block.tk.bam-4TQ7P2OX.js.map → block.tk.bam-KFEGVEQQ.js.map} +0 -0
  676. /package/dist/{block.tk.bedgraphdot-MYHKKO6K.js.map → block.tk.bedgraphdot-P4DBCWFK.js.map} +0 -0
  677. /package/dist/{block.tk.bigwig.ui-E3YVGIDN.js.map → block.tk.bigwig.ui-WJPH2Z7F.js.map} +0 -0
  678. /package/dist/{block.tk.hicstraw-Y4XOMG7T.js.map → block.tk.hicstraw-RSD6I2NX.js.map} +0 -0
  679. /package/dist/{block.tk.junction-T5C7LK6F.js.map → block.tk.junction-VZS2DEDO.js.map} +0 -0
  680. /package/dist/{block.tk.junction.textmatrixui-Z3ACCVXH.js.map → block.tk.junction.textmatrixui-UCWGHZDI.js.map} +0 -0
  681. /package/dist/{block.tk.ld-Y5KDA5AU.js.map → block.tk.ld-ERSIIBM2.js.map} +0 -0
  682. /package/dist/{block.tk.menu-EWRRISDY.js.map → block.tk.menu-2ZNXE7CE.js.map} +0 -0
  683. /package/dist/{block.tk.pgv-3JYGOZVQ.js.map → block.tk.pgv-EJLACCFR.js.map} +0 -0
  684. /package/dist/{brainImaging-P3AF3C5N.js.map → brainImaging-BMZJY6OT.js.map} +0 -0
  685. /package/dist/{brainRegions-YA2H2QOI.js.map → brainRegions-RZEBXPAS.js.map} +0 -0
  686. /package/dist/{chunk-3FVIDQOX.js.map → chunk-27FPMFP2.js.map} +0 -0
  687. /package/dist/{chunk-NEKAGDTL.js.map → chunk-3LYZMOLO.js.map} +0 -0
  688. /package/dist/{chunk-FYFX42YD.js.map → chunk-455XZIIA.js.map} +0 -0
  689. /package/dist/{chunk-I2R5O2XX.js.map → chunk-474DTKP7.js.map} +0 -0
  690. /package/dist/{chunk-UXIZYI3X.js.map → chunk-4AP3O3JW.js.map} +0 -0
  691. /package/dist/{chunk-MP3DN6JK.js.map → chunk-4JWN7E7Q.js.map} +0 -0
  692. /package/dist/{chunk-RITTG5WN.js.map → chunk-55MOHL3P.js.map} +0 -0
  693. /package/dist/{chunk-TMM7BWW7.js.map → chunk-5CR24RTX.js.map} +0 -0
  694. /package/dist/{chunk-IEYDMN3H.js.map → chunk-5QTJUPFS.js.map} +0 -0
  695. /package/dist/{chunk-CJPGYPI3.js.map → chunk-5TJQ6633.js.map} +0 -0
  696. /package/dist/{chunk-W5OEFZCR.js.map → chunk-5X5LI5YM.js.map} +0 -0
  697. /package/dist/{chunk-2JR7RPB6.js.map → chunk-6G4YOMWW.js.map} +0 -0
  698. /package/dist/{chunk-46AEH34Z.js.map → chunk-6SCBPP4C.js.map} +0 -0
  699. /package/dist/{chunk-6JHIX4RA.js.map → chunk-6YVEYTNH.js.map} +0 -0
  700. /package/dist/{chunk-XVGS3QXS.js.map → chunk-74XVBQF7.js.map} +0 -0
  701. /package/dist/{chunk-SMSFTTEO.js.map → chunk-7I3LST7R.js.map} +0 -0
  702. /package/dist/{chunk-ZF6HNVYD.js.map → chunk-7KRS7L4U.js.map} +0 -0
  703. /package/dist/{chunk-MHFH66I3.js.map → chunk-ATUYZWHV.js.map} +0 -0
  704. /package/dist/{chunk-DMSX5PSO.js.map → chunk-BO47H3VP.js.map} +0 -0
  705. /package/dist/{chunk-XYNYQMLH.js.map → chunk-BOO4W7WD.js.map} +0 -0
  706. /package/dist/{chunk-Y4JJMUWG.js.map → chunk-C6YT5EM2.js.map} +0 -0
  707. /package/dist/{chunk-WXSRK3XR.js.map → chunk-CDUNE45Q.js.map} +0 -0
  708. /package/dist/{chunk-5FXNI724.js.map → chunk-CLN7ANNL.js.map} +0 -0
  709. /package/dist/{chunk-L5HCOTRF.js.map → chunk-CLNSNNQU.js.map} +0 -0
  710. /package/dist/{chunk-AI2LUQS6.js.map → chunk-COYULNJF.js.map} +0 -0
  711. /package/dist/{chunk-KVIH5JPC.js.map → chunk-DBFKUPM6.js.map} +0 -0
  712. /package/dist/{chunk-VIUATDO2.js.map → chunk-DNVSEW6P.js.map} +0 -0
  713. /package/dist/{chunk-3K2O2NIH.js.map → chunk-EC3SKPQT.js.map} +0 -0
  714. /package/dist/{chunk-OH5I6I2D.js.map → chunk-EDXQKDVQ.js.map} +0 -0
  715. /package/dist/{chunk-7R63MAPC.js.map → chunk-EY253UB7.js.map} +0 -0
  716. /package/dist/{chunk-3BBK6A4X.js.map → chunk-FABY3ISP.js.map} +0 -0
  717. /package/dist/{chunk-NYN2WQN3.js.map → chunk-FOPHIWFD.js.map} +0 -0
  718. /package/dist/{chunk-D5CVYITI.js.map → chunk-FVX76DZS.js.map} +0 -0
  719. /package/dist/{chunk-3RSJU6YM.js.map → chunk-FXGE233W.js.map} +0 -0
  720. /package/dist/{chunk-O6WL7USJ.js.map → chunk-GBXX3AHJ.js.map} +0 -0
  721. /package/dist/{chunk-3ZKD6C5S.js.map → chunk-GVCQGWN7.js.map} +0 -0
  722. /package/dist/{chunk-M7UKOCJA.js.map → chunk-HXNUQOGN.js.map} +0 -0
  723. /package/dist/{chunk-BMS32SNA.js.map → chunk-HXZSSHEB.js.map} +0 -0
  724. /package/dist/{chunk-TLTS33EY.js.map → chunk-I73KUUYG.js.map} +0 -0
  725. /package/dist/{chunk-GTZV2UZV.js.map → chunk-IKDWQJZE.js.map} +0 -0
  726. /package/dist/{chunk-R7AV73BV.js.map → chunk-JEZUPG4J.js.map} +0 -0
  727. /package/dist/{chunk-H34LAFGH.js.map → chunk-JWHFMFF2.js.map} +0 -0
  728. /package/dist/{chunk-XHGMDBTS.js.map → chunk-K3OJJZCQ.js.map} +0 -0
  729. /package/dist/{chunk-Z457XQSX.js.map → chunk-KM4JBR26.js.map} +0 -0
  730. /package/dist/{chunk-NPCNDM6Y.js.map → chunk-KNOFEVOJ.js.map} +0 -0
  731. /package/dist/{chunk-JWBP4ZZB.js.map → chunk-LLX3NKB4.js.map} +0 -0
  732. /package/dist/{chunk-CTQH7LQ6.js.map → chunk-LSWU6EAQ.js.map} +0 -0
  733. /package/dist/{chunk-N5OVBS5L.js.map → chunk-MQJVDIQK.js.map} +0 -0
  734. /package/dist/{chunk-EEW443GL.js.map → chunk-N25ENPO3.js.map} +0 -0
  735. /package/dist/{chunk-PXOH4ZN2.js.map → chunk-N3JT3KCV.js.map} +0 -0
  736. /package/dist/{chunk-LHKDLWG5.js.map → chunk-N6QEVQZV.js.map} +0 -0
  737. /package/dist/{chunk-QG4BJUM7.js.map → chunk-NJDW6ZQP.js.map} +0 -0
  738. /package/dist/{chunk-A4Z3CI24.js.map → chunk-NLQQIVTC.js.map} +0 -0
  739. /package/dist/{chunk-EVNMW7BS.js.map → chunk-NU2W6B7I.js.map} +0 -0
  740. /package/dist/{chunk-E76O5Z42.js.map → chunk-OR43PGBV.js.map} +0 -0
  741. /package/dist/{chunk-4CQVC6XL.js.map → chunk-PWUERAAF.js.map} +0 -0
  742. /package/dist/{chunk-TTC4MNEM.js.map → chunk-PXCFA4ZQ.js.map} +0 -0
  743. /package/dist/{chunk-7PFRBGMN.js.map → chunk-QSEGY3U5.js.map} +0 -0
  744. /package/dist/{chunk-AJYJW4LX.js.map → chunk-SC6IPDJR.js.map} +0 -0
  745. /package/dist/{chunk-XQ2OBL6R.js.map → chunk-SDMOLIEU.js.map} +0 -0
  746. /package/dist/{chunk-E574SMCX.js.map → chunk-T46LHXJW.js.map} +0 -0
  747. /package/dist/{chunk-TBZKVKR4.js.map → chunk-UDL2DEBB.js.map} +0 -0
  748. /package/dist/{chunk-G6RZYGWY.js.map → chunk-VDIVDU3T.js.map} +0 -0
  749. /package/dist/{chunk-E3JRW3T3.js.map → chunk-XQSQQSGB.js.map} +0 -0
  750. /package/dist/{chunk-F2WPS7VY.js.map → chunk-XVXAQ3FI.js.map} +0 -0
  751. /package/dist/{chunk-VIUDFDN4.js.map → chunk-YQMENK5H.js.map} +0 -0
  752. /package/dist/{chunk-PTQ774XH.js.map → chunk-ZUC4XNWU.js.map} +0 -0
  753. /package/dist/{condition-QXTOTGZX.js.map → condition-ZPFBPMEZ.js.map} +0 -0
  754. /package/dist/{controls-7TDB75LK.js.map → controls-LIVMV2GV.js.map} +0 -0
  755. /package/dist/{controls.config-IBF5ILFP.js.map → controls.config-2EOMBN5E.js.map} +0 -0
  756. /package/dist/{correlation-M2T5R7CM.js.map → correlation-D6GAPOP5.js.map} +0 -0
  757. /package/dist/{cuminc-CAHPKW7W.js.map → cuminc-GPFDRNUP.js.map} +0 -0
  758. /package/dist/{cuminc.integration.spec-NNSQGBRI.js.map → cuminc.integration.spec-V4JYKLA6.js.map} +0 -0
  759. /package/dist/{customdata.inputui-RRTQK7OK.js.map → customdata.inputui-DSEUS3CT.js.map} +0 -0
  760. /package/dist/{dataDownload-SOUCBKXM.js.map → dataDownload-KT6K3M7Q.js.map} +0 -0
  761. /package/dist/{dataDownload.integration.spec-C6TLWSSO.js.map → dataDownload.integration.spec-VEX2RTSA.js.map} +0 -0
  762. /package/dist/{databrowser.ui-KLFEU5QA.js.map → databrowser.ui-VJKNMIXA.js.map} +0 -0
  763. /package/dist/{dictionary-RUT5VXDD.js.map → dictionary-B27BMR5H.js.map} +0 -0
  764. /package/dist/{dnaMethylation-WOKGG33W.js.map → dnaMethylation-BWQGUXVR.js.map} +0 -0
  765. /package/dist/{dnaMethylation.integration.spec-YUPP42UK.js.map → dnaMethylation.integration.spec-YMGT2HYZ.js.map} +0 -0
  766. /package/dist/{dofetch-V7PLLWSO.js.map → dofetch-BMSZZAAQ.js.map} +0 -0
  767. /package/dist/{e2pca-VT7EM4E3.js.map → e2pca-KSY4DP53.js.map} +0 -0
  768. /package/dist/{ep-X6B43UXE.js.map → ep-4PAYGMWK.js.map} +0 -0
  769. /package/dist/{expclust.gdc.spec-DTBFOXBC.js.map → expclust.gdc.spec-XXFP2HHE.js.map} +0 -0
  770. /package/dist/{facet-T5ZX7ZGV.js.map → facet-VCJQ7QPE.js.map} +0 -0
  771. /package/dist/{forms2-S5OGBFKL.js.map → forms2-IUD2SNOQ.js.map} +0 -0
  772. /package/dist/{gb-TWXREZIP.js.map → gb-JDH242LG.js.map} +0 -0
  773. /package/dist/{geneExpClustering-2G6YDCIN.js.map → geneExpClustering-L23JB7XA.js.map} +0 -0
  774. /package/dist/{geneExpression-ZHQH6SNA.js.map → geneExpression-P2ERCRXO.js.map} +0 -0
  775. /package/dist/{geneExpression-2A4ZPT7K.js.map → geneExpression-QGPVFAN4.js.map} +0 -0
  776. /package/dist/{geneExpression.unit.spec-2M223S4P.js.map → geneExpression.unit.spec-6BQBM6VL.js.map} +0 -0
  777. /package/dist/{geneORA-YLIRUMCZ.js.map → geneORA-XIMJP665.js.map} +0 -0
  778. /package/dist/{geneRanking-JDJXNGEC.js.map → geneRanking-AJH5G22J.js.map} +0 -0
  779. /package/dist/{geneVariant-5ZIOT5BT.js.map → geneVariant-AUUZ7S2B.js.map} +0 -0
  780. /package/dist/{geneVariant-GIXIMJ2I.js.map → geneVariant-H6BGRRON.js.map} +0 -0
  781. /package/dist/{geneVariant.integration.spec-QCROW73S.js.map → geneVariant.integration.spec-FRCH6VI4.js.map} +0 -0
  782. /package/dist/{genefusion.ui-56UQLUKJ.js.map → genefusion.ui-AAJ37VFA.js.map} +0 -0
  783. /package/dist/{geneset-ACRMGBJO.js.map → geneset-5ARBBUYH.js.map} +0 -0
  784. /package/dist/{genomeBrowser.spec-EDILOQON.js.map → genomeBrowser.spec-RV7YBSMZ.js.map} +0 -0
  785. /package/dist/{gsea-2PQ5HNNT.js.map → gsea-XUMCVLFK.js.map} +0 -0
  786. /package/dist/{hierCluster-H5HB7FPW.js.map → hierCluster-HXOTNMC5.js.map} +0 -0
  787. /package/dist/{hierCluster-L3LCP2II.js.map → hierCluster-PEDY7OTZ.js.map} +0 -0
  788. /package/dist/{hierCluster.config-6UIJWCND.js.map → hierCluster.config-RKYCGNWW.js.map} +0 -0
  789. /package/dist/{hierCluster.integration.spec-EVAPT2VF.js.map → hierCluster.integration.spec-YKMAT7UU.js.map} +0 -0
  790. /package/dist/{hierCluster.interactivity-7MW6ZT6O.js.map → hierCluster.interactivity-LPTHVWHR.js.map} +0 -0
  791. /package/dist/{hierCluster.renderers-F34EVY5J.js.map → hierCluster.renderers-4XWKHCNW.js.map} +0 -0
  792. /package/dist/{imagePlot-RSFZ2OKD.js.map → imagePlot-3DF7ZH3U.js.map} +0 -0
  793. /package/dist/{importPlot-DQFWY5A7.js.map → importPlot-N74SV3TL.js.map} +0 -0
  794. /package/dist/{isoformExpression-2KANPCBH.js.map → isoformExpression-FU7Y4OGU.js.map} +0 -0
  795. /package/dist/{isoformExpression.unit.spec-6FSMHT4K.js.map → isoformExpression.unit.spec-BLQDKV37.js.map} +0 -0
  796. /package/dist/{launch.adhoc-ZYTIRVIC.js.map → launch.adhoc-Y35FZV6H.js.map} +0 -0
  797. /package/dist/{lollipop-PJDUFWEY.js.map → lollipop-DU37Q5E2.js.map} +0 -0
  798. /package/dist/{maf-DLJHCKHJ.js.map → maf-NRLSNDOT.js.map} +0 -0
  799. /package/dist/{maftimeline-NK5QYJMJ.js.map → maftimeline-GRXGOOSJ.js.map} +0 -0
  800. /package/dist/{matrix-7BFYR6QL.js.map → matrix-G3BULZ7Y.js.map} +0 -0
  801. /package/dist/{matrix-USAB2CHO.js.map → matrix-TCTX26A4.js.map} +0 -0
  802. /package/dist/{matrix.cells-OTAXAJ4N.js.map → matrix.cells-ED6RS5EC.js.map} +0 -0
  803. /package/dist/{matrix.config-AL4WSFZ7.js.map → matrix.config-QHO2YNOT.js.map} +0 -0
  804. /package/dist/{matrix.data-BDHCSN2G.js.map → matrix.data-KQFMXWRX.js.map} +0 -0
  805. /package/dist/{matrix.groups-MV2D2636.js.map → matrix.groups-RE74EFLY.js.map} +0 -0
  806. /package/dist/{matrix.integration.spec-DESORC2Y.js.map → matrix.integration.spec-Y4FCZ2Q2.js.map} +0 -0
  807. /package/dist/{matrix.interactivity-H7EJW3P2.js.map → matrix.interactivity-3DW5WAM3.js.map} +0 -0
  808. /package/dist/{matrix.layout-7CAS2IBO.js.map → matrix.layout-W57D765I.js.map} +0 -0
  809. /package/dist/{matrix.legend-JDVG2JDF.js.map → matrix.legend-ZST44PIB.js.map} +0 -0
  810. /package/dist/{matrix.renderers-PDR5FIBC.js.map → matrix.renderers-NFRKXO7Y.js.map} +0 -0
  811. /package/dist/{matrix.serieses-QVDS5HKK.js.map → matrix.serieses-6ZKTFVWY.js.map} +0 -0
  812. /package/dist/{matrix.sort-HCK4CSTJ.js.map → matrix.sort-2UE47IOC.js.map} +0 -0
  813. /package/dist/{matrix.sort.unit.spec-2GC4E26N.js.map → matrix.sort.unit.spec-5CMWEXPE.js.map} +0 -0
  814. /package/dist/{matrix.sorterUi-XGBQOPG4.js.map → matrix.sorterUi-WC2YX7S7.js.map} +0 -0
  815. /package/dist/{matrix.sorterUi.unit.spec-BJQKDU2F.js.map → matrix.sorterUi.unit.spec-Y2HXWHJN.js.map} +0 -0
  816. /package/dist/{mavb-6E6Z4LPK.js.map → mavb-BI4XKI5P.js.map} +0 -0
  817. /package/dist/{mds.fimo-5P2TK5U4.js.map → mds.fimo-UJYESPNC.js.map} +0 -0
  818. /package/dist/{mds.samplescatterplot-KLKOD4AS.js.map → mds.samplescatterplot-JKU5B4QR.js.map} +0 -0
  819. /package/dist/{mds.survivalplot-SWQCOFIU.js.map → mds.survivalplot-OP7Y4D3L.js.map} +0 -0
  820. /package/dist/{numericDictTermCluster-WIVO33AV.js.map → numericDictTermCluster-DRIEJJSP.js.map} +0 -0
  821. /package/dist/{oncomatrix-SDUUQZCK.js.map → oncomatrix-A3IE47HV.js.map} +0 -0
  822. /package/dist/{oncomatrix.spec-YGQYIUDT.js.map → oncomatrix.spec-TDWB2ROF.js.map} +0 -0
  823. /package/dist/{plot.2dvaf-K53KTP5W.js.map → plot.2dvaf-XY34TDSM.js.map} +0 -0
  824. /package/dist/{plot.app-FNJVWLPQ.js.map → plot.app-WRCBLYGO.js.map} +0 -0
  825. /package/dist/{plot.barplot-VTC3N6BR.js.map → plot.barplot-RXGOUNHM.js.map} +0 -0
  826. /package/dist/{plot.boxplot-RJFGQSLA.js.map → plot.boxplot-GBZGSS3D.js.map} +0 -0
  827. /package/dist/{plot.brainImaging-6KVNPPMT.js.map → plot.brainImaging-DYPKMNHL.js.map} +0 -0
  828. /package/dist/{plot.disco-ZFH5RK6B.js.map → plot.disco-5K2SCKJ4.js.map} +0 -0
  829. /package/dist/{plot.dzi-IA2SOFUD.js.map → plot.dzi-THJIFHIS.js.map} +0 -0
  830. /package/dist/{plot.ssgq-QARGQVKB.js.map → plot.ssgq-FSIUIV3A.js.map} +0 -0
  831. /package/dist/{plot.vaf2cov-2JUXYCPG.js.map → plot.vaf2cov-HP6KEBVJ.js.map} +0 -0
  832. /package/dist/{plot.wsi-C2DULA7U.js.map → plot.wsi-MR6JMOXW.js.map} +0 -0
  833. /package/dist/{polar2-3HS3QBU6.js.map → polar2-IT3OF5DX.js.map} +0 -0
  834. /package/dist/{profileForms-Y6ZBMZWQ.js.map → profileForms-XXGJVF2T.js.map} +0 -0
  835. /package/dist/{profilePlot-SVI3QKMD.js.map → profilePlot-J2C35OEY.js.map} +0 -0
  836. /package/dist/{proteinView-YPFJSBL7.js.map → proteinView-7FDCILPH.js.map} +0 -0
  837. /package/dist/{qualitative-AQFKAZID.js.map → qualitative-N7S2JHZM.js.map} +0 -0
  838. /package/dist/{radar2-TTQZLARY.js.map → radar2-CDDOQGQX.js.map} +0 -0
  839. /package/dist/{radarFacility2-YGS56QUA.js.map → radarFacility2-ZQTHO2ON.js.map} +0 -0
  840. /package/dist/{regression-DLPBCDZT.js.map → regression-PBGAMZAV.js.map} +0 -0
  841. /package/dist/{regression.inputs-42LY4MEZ.js.map → regression.inputs-54E5YKI4.js.map} +0 -0
  842. /package/dist/{regression.inputs.term-TTUFFPG6.js.map → regression.inputs.term-52MBTMVM.js.map} +0 -0
  843. /package/dist/{regression.inputs.values.table-CJAPTSMS.js.map → regression.inputs.values.table-F3FOAYFV.js.map} +0 -0
  844. /package/dist/{regression.integration.spec-UDA26OGS.js.map → regression.integration.spec-M4RPJUE4.js.map} +0 -0
  845. /package/dist/{regression.results-IA3C7SHR.js.map → regression.results-JOK6I2ZD.js.map} +0 -0
  846. /package/dist/{regression.spec-HEXCL3QV.js.map → regression.spec-O4HZB2HQ.js.map} +0 -0
  847. /package/dist/{report-4CFOWNPJ.js.map → report-BDDTM7SV.js.map} +0 -0
  848. /package/dist/{sampleScatter.spec-N6V4BQ5Q.js.map → sampleScatter.spec-272GLYEK.js.map} +0 -0
  849. /package/dist/{sampleView-CZF7U23I.js.map → sampleView-E6OHEEP4.js.map} +0 -0
  850. /package/dist/{samplelst-XUGDS5TU.js.map → samplelst-3LNF3DBG.js.map} +0 -0
  851. /package/dist/{samplematrix-R5PZLZDE.js.map → samplematrix-HL445X7I.js.map} +0 -0
  852. /package/dist/{sc-WTZZA5J5.js.map → sc-4LELHVIS.js.map} +0 -0
  853. /package/dist/{scatter-EY7HQVCO.js.map → scatter-IZIZURQD.js.map} +0 -0
  854. /package/dist/{scatter.integration.spec-CRMLFO4J.js.map → scatter.integration.spec-BBEWMA7M.js.map} +0 -0
  855. /package/dist/{selectGenomeWithTklst-2S2MXVCI.js.map → selectGenomeWithTklst-5LQGT4Z7.js.map} +0 -0
  856. /package/dist/{singleCellCellType-LJWFG7MY.js.map → singleCellCellType-T3ZT64EK.js.map} +0 -0
  857. /package/dist/{singleCellCellType.unit.spec-RGN2XVUR.js.map → singleCellCellType.unit.spec-AE4IAHOF.js.map} +0 -0
  858. /package/dist/{singleCellGeneExpression-IW2QXTTU.js.map → singleCellGeneExpression-SRJXSDEB.js.map} +0 -0
  859. /package/dist/{singleCellGeneExpression.unit.spec-4PO3Q7TM.js.map → singleCellGeneExpression.unit.spec-EPL73UUO.js.map} +0 -0
  860. /package/dist/{singleCellPlot-6EZ6JXCM.js.map → singleCellPlot-P2BHFTYZ.js.map} +0 -0
  861. /package/dist/{singlecell-NTTAVVMR.js.map → singlecell-32SSD7VN.js.map} +0 -0
  862. /package/dist/{singlecell-3LFPQ6KO.js.map → singlecell-7KRD5DP7.js.map} +0 -0
  863. /package/dist/{snp-XB4IBG4Z.js.map → snp-LE5R377N.js.map} +0 -0
  864. /package/dist/{snp.unit.spec-HAJPM53L.js.map → snp.unit.spec-UY6KQ5NJ.js.map} +0 -0
  865. /package/dist/{snplocus-HE6TITSX.js.map → snplocus-CP34ABUJ.js.map} +0 -0
  866. /package/dist/{spliceevent.a53ss.diagram-TCZMBMD7.js.map → spliceevent.a53ss.diagram-JWLWQDNJ.js.map} +0 -0
  867. /package/dist/{spliceevent.exonskip.diagram-VESOF6UC.js.map → spliceevent.exonskip.diagram-C5526P7P.js.map} +0 -0
  868. /package/dist/{spliceevent.noeventdiagram-4K7FMO4F.js.map → spliceevent.noeventdiagram-352M63YB.js.map} +0 -0
  869. /package/dist/{ssGSEA-2XYMX36P.js.map → ssGSEA-BFTCECV3.js.map} +0 -0
  870. /package/dist/{ssGSEA.unit.spec-J36KM2HO.js.map → ssGSEA.unit.spec-4OUCKRDQ.js.map} +0 -0
  871. /package/dist/{summarizeCnvGeneexp-LYVDZXXD.js.map → summarizeCnvGeneexp-Y3AWFIZA.js.map} +0 -0
  872. /package/dist/{summarizeGeneexpSurvival-Y52TGAHF.js.map → summarizeGeneexpSurvival-U5JSPG22.js.map} +0 -0
  873. /package/dist/{summarizeMutationCnv-6EEJT3PV.js.map → summarizeMutationCnv-KCOVQEBC.js.map} +0 -0
  874. /package/dist/{summarizeMutationDiagnosis-HZKXHOOQ.js.map → summarizeMutationDiagnosis-EQXEQABW.js.map} +0 -0
  875. /package/dist/{summarizeMutationSurvival-TU7TQYFQ.js.map → summarizeMutationSurvival-4VGLG4SC.js.map} +0 -0
  876. /package/dist/{summary-4QQZUAMU.js.map → summary-DXYCBNI4.js.map} +0 -0
  877. /package/dist/{summary.integration.spec-SLIIM4HN.js.map → summary.integration.spec-MZTJISLP.js.map} +0 -0
  878. /package/dist/{summaryInput-6HROPKCE.js.map → summaryInput-5Z3XVIL6.js.map} +0 -0
  879. /package/dist/{sunburst-MBJJPERL.js.map → sunburst-WVSQJYP2.js.map} +0 -0
  880. /package/dist/{survival-QSL2KDKD.js.map → survival-3R3J2JBE.js.map} +0 -0
  881. /package/dist/{survival-CXLMQSV2.js.map → survival-XQWFVGCJ.js.map} +0 -0
  882. /package/dist/{survival.integration.spec-EUAAALVW.js.map → survival.integration.spec-EBDPIBYM.js.map} +0 -0
  883. /package/dist/{svgraph-JM5MHQDX.js.map → svgraph-SY2HVMYL.js.map} +0 -0
  884. /package/dist/{svmr-MCMST2FL.js.map → svmr-TIIMFKG7.js.map} +0 -0
  885. /package/dist/{table-MVX3IMAL.js.map → table-5RFTXIQL.js.map} +0 -0
  886. /package/dist/{termCollection-FZ2SCVA7.js.map → termCollection-23QXTZDN.js.map} +0 -0
  887. /package/dist/{termCollection-IGC7REFK.js.map → termCollection-7KXABWVW.js.map} +0 -0
  888. /package/dist/{termCollection.unit.spec-VY2EZZIP.js.map → termCollection.unit.spec-4AN2Z4PQ.js.map} +0 -0
  889. /package/dist/{tk-5F3TWZ2G.js.map → tk-WW6PJGPQ.js.map} +0 -0
  890. /package/dist/{tp.ui-IURWTMAS.js.map → tp.ui-S5PO3MPH.js.map} +0 -0
  891. /package/dist/{tvs.dt-BPZCFPYK.js.map → tvs.dt-O7LUM5TK.js.map} +0 -0
  892. /package/dist/{tvs.dtcnv.categorical-UFS62DTR.js.map → tvs.dtcnv.categorical-2OUFOD3W.js.map} +0 -0
  893. /package/dist/{tvs.dtcnv.continuous-R6YXNNLA.js.map → tvs.dtcnv.continuous-NOOUY5SZ.js.map} +0 -0
  894. /package/dist/{tvs.dtfusion-FGXXS4XX.js.map → tvs.dtfusion-KXQMP3UF.js.map} +0 -0
  895. /package/dist/{tvs.dtsnvindel-DR43K7X3.js.map → tvs.dtsnvindel-PWHFTWZU.js.map} +0 -0
  896. /package/dist/{tvs.dtsv-NO34GIOL.js.map → tvs.dtsv-25FLS572.js.map} +0 -0
  897. /package/dist/{tvs.samplelst-2QP7IV2Y.js.map → tvs.samplelst-FLXNJFIV.js.map} +0 -0
  898. /package/dist/{tvs.termCollection-UEJDG22G.js.map → tvs.termCollection-PSVOMJE4.js.map} +0 -0
  899. /package/dist/{violin-NBZTGGYF.js.map → violin-SWMEFWRA.js.map} +0 -0
  900. /package/dist/{violin.integration.spec-5CLYJSAR.js.map → violin.integration.spec-6EQ6GC2N.js.map} +0 -0
  901. /package/dist/{violin.interactivity-KXVKTT22.js.map → violin.interactivity-WBIWPLSM.js.map} +0 -0
  902. /package/dist/{violin.renderer-37OF6K7Q.js.map → violin.renderer-3WARZUOH.js.map} +0 -0
  903. /package/dist/{vocabulary-GR6J3VKW.js.map → vocabulary-WLHYHDX7.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
- }